ハトネコエ Web がくしゅうちょう

プログラミングやサーバー関連、チームマネジメントなど得た技術のまとめ

プログラミング系

CircleCI 2.0 で deploygate に Android アプリをアップロード

Android アプリを DeployGate へ CircleCI を使って簡単にデプロイしたいな〜、と記事を探したら、 1.0 の記事が多かったので CircleCI 2.0 向けの記事を書くことにしました。 異なる証明書で署名されたアプリと言われ、deploygate に毎回アンインストールを…

AndroidのgRPCクライアントをKotlinで実装しました

このあいだの記事では、Go 言語による gRPC サーバーの実装を完了させました。 また、 Go 言語によるクライアント実装についても触れました。 実運用としてクライアント(データの受け取り手)となるものは、Web の他に、 Android や iOS などのスマートフォ…

gRPCのクライアント実装でサーバー証明書の検証を入れる方法

このあいだの gRPC の記事の「失敗5」の項で サーバー側の証明書の正当性を検証するステップはスキップするという方向の実装 にしたのですが、サーバー証明書の検証をおこなう方法がわかったので書いておきます。 なお、今回言う「サーバー証明書」というの…

GOPATH 以下にシンボリックリンクを置いて楽できる!

Go 言語での開発のしんどいところ私的 No. 1 は、 ソースを GOPATH 以下のディレクトリで管理しないといけないところです。 alias cdgo='cd $(echo "$GOPATH" | awk -F "[:]" "{print $1}")' とエイリアスを振ったとしても、(ちなみに上は GOPATH を複数定…

ufw のログの読み方(SPT, DPT など)

1. ufw とは ufw は Ubuntu Firewall の略……ではなく、 Uncomplicated Firewall (複雑じゃないファイアウォール)の略です。 「昔は Ubuntu Firewall の略だったんじゃないの?」と邪推したんですが、 2008年1月24日時点の Wiki に 『Name: ufw (Uncomplica…

gRPC x Go x nginx での失敗談

Go による gRPC サーバーへ、 nginx をプロキシーにして HTTPS 通信をおこなおうとしたらいろいろ失敗した話。grpcurl の使い方やサーバー・クライアントの実装例など記載。

http2 設定で cert renew に失敗

80番ポートの設定に http2 を付けると cert renew --dry-run に失敗する

Makefile の変数は大文字を使う? 小文字を使う?

Makefile の変数って、大文字のスネークケース(Screaming snake case)が使われているのをよく見ます。 しかし、公式ドキュメントを読んでいると小文字のスネークケース(Snake case)のパターンもあり、 果たしてどちらを使うべきかわからないでいました。 例…

DNSサーバ引っ越し時のメモ

また忘れそうなのでメモ書き。 基本的に引っ越しは、NS レコードを書き換えて 移行先のDNSサーバに誘導するようにするんだけど、ConoHa はトップドメインの NS レコードを変更できない。 でもそもそも、ドメイン取得サービスの DNS サーバが起点となっている…

ConoHa ちゃんを裏切って DigitalOcean に移行した話

約2年に渡って使ってきた ConoHa から、メインのサーバを DigitalOcean に移行した話。美雲このはちゃんがこんなにもかわいいのに、それを失ってまで VPS サービスを DigitalOcean に変えた理由とは……

Docker の ARG の宣言箇所に注意

ARG の宣言を FROM の後に書くようにすべき話と、ADD や COPY でソースとして扱えるファイルは特定ディレクトリ以下だよ、って話

Makefile の = と := と ?= (makeの基礎)

Makefile の変数定義で扱われる演算子 = , := , ?= の違いを解説。例があるのでわかりやすい

Docker で Ansible の実行環境を作る(Ubuntu 18.04)

Ansible を簡単に何度も流せる Docker イメージを作成します。 また、Makefile を活用し、コンテナの開始・終了もおこないやすく。 --cap-add NET_ADMIN オプションなど、ハマりどころも解説。

gRPC チュートリアルで入門しようぜ!

gRPC 公式の Quick Start Guide をベースにしつつ、より深く掘り下げられるよう追加・変更を施した、gRPC 入門のためのチュートリアルです

期日(完了予定日)の作り方

0. 最初はわからなかった 働き始めた頃は、「いつ頃終わりそうですか? 完了予定日を設定してください」と言われると「うーん、全然わからない」と困ってしまっていたのですが、 しだいに慣れてきた気がするので、自分の中での期日設定の方法(工数の概算)…

ブログをMixed Content対応しつつHTTPS化しました 🎉

今年の4月から、はてなブログのドメインを使用している全ブログが HTTPS 化に対応しました。 (2月の時点ではまだ段階的に提供開始というステータスだった) 対応したいなと思いつつも、 「Mixed Content 対応のためには記事をひとつずつ保存し直してね、て…

Docker Swarm モードはわかりやすい!

Docker Swarm モードのひととおりの流れを解説しています。 Kubernetes に比べ、非常に簡単な方法で、Dockerクラスタの管理ができることがわかると思います。

macOS の再インストールに苦労した話

久しぶりの、設定に苦労した系の日記です。 友人にMacを貸す必要があったため、 MacBook Pro Early 2015 をクリーンインストールしようとしました。 1. macOS Utilities を削除する失敗 Mac は起動時に Command + R を押しっぱなしにすることで OSユーティリ…

マネジメント半年やったので良かったことと改善すべきこと

エンジニアでありながらもマネジメントポジションを経験させていただき、 だいたい半年が経ちました。 前回のマネジメント関連記事がこちら。 これができて良かったなぁ、と自己満足ながら良かったことを振り返りたいと思います。 Good 1: なんでも情報共有 …

【CircleCI 2.0】GitHub Pages へ指定ディレクトリ内だけを push するための config.yml

約2年前に上のような記事を書いたのですが、 いよいよ CircleCI ver.1 も今月をもって廃止ということで、 CircleCI 2.0 向けに書いたものを貼りつけておきます。 1. config.yml の設定 以前と同じように、結果から貼りつける形にしようと思います。 このよう…

Wi-Fiの接続先が変化した際にシェルスクリプトを走らせる(Mac OSX)

すごく稀なユースケースだと思うんですが、 例えば研究室の無線LANに接続しているときだけプロキシ設定を有効にし、それ以外のときは無効にしたい場合を考えます。 通常であれば、研究室のWi-Fiに繋いだら export http_proxy="http://www-proxy.waseda.jp:80…

DiscordのbotをRubyで簡単に作成したのでコード晒します

同僚と松屋で食べてたら盛り上がって、 Discord の部屋を立てました。 Slackと違ってアプリ連携できないよな〜と思ってたら bot は作れると知ったので「よっしゃ! 作るしかない!」と Ruby で作りました。 1. 完成形 こんなものができました。 2. 必要なも…

エンジニアマネージャーに必要なことってなんだろう?

最近、ありがたいことにチームリーダーをやらせてもらっているのですが、 経験が無いのでどうすればいいのか手探りでやっています。 今後どうしていけばいいのか、 今の時点で得られていることを頭の整理としてまとめておきたいと思います。 インプットを続…

Googleスプレッドシートでセルの文字列の文字列結合(IFの活用)

スプレッドシート関数の書き方わからなくて困ること多いのでメモ。 こんなふうに、右の列に "/releases" と文字列をくっつけた行が続く場合には関数で書きたい。 文字列の結合は & で書ける。 なので、C2 には =B2&"/releases" と書けばいい。 ただ、これで…

Datadog のメモリ監視に関するダッシュボード設定

「君のアカウント、試用版だから有料版にアップグレードするか無料版にダウングレードするかしないと消すね」 と Datadog から警告が来たので、もし設定しなおす場合の参考用に。 1. メモリを used, buffers, cached, free の分け方で見る場合 free コマンド…

CygWin 環境に nokogiri , ffi, mysql2 をインストールできるようになるまで

Windows で Rails アプリを動かしたくて CygWin で bundle install したら nokogiri で止まってしまうので、必要なものをまとめた。 なお、 Windows 10 64bit 環境に CygWin64 をインストール、 apt-cyg mirror には http://cygwin.mirror.constant.com/ を…

ちょっとしたWindows向けウィルスをPythonで作ろう

プログラマーはたまに「ハッカー」と呼ばれることなんてあります。 ハッカーって言葉のイメージと言えばウィルスです。 そうだ、ウィルスを作ろう! これが今回のテーマです。 と言っても悪いことしたら捕まってしまうので、 友達にメールでexeファイルを送…

letsencrypt renew 後に nginx restart が必要

久しぶりにメモ。 自分で管理してるサイトにアクセスしようとしたら SSL証明書の有効期限切れエラーを見ることに。 で、なんか設定忘れてるのでは、という気がして他の人の renew のやり方見ていたら、(Let's Encrypt で Nginx にSSLを設定する - Qiita) …

エンジニアが辞めない組織について本気出して考えてみた

いつもは技術系の記事ばかりですが、最近ビジネス書を読んで「なるほどなー」と思ったので、 エンジニアが居続けてくれる組織についてあれこれ考えてみます。 読んだ本↓ 辞めない採用、即戦力の育成で儲かる会社になる!作者: 小山昇出版社/メーカー: あさ出…

プログラマのための数学LT会 2! 開催しました

プログラマのための数学LT会 2! ふたたび主催やらせていただきました! 『プログラマのための数学LT会 2!』 です。 https://techplay.jp/event/624044 場所は dots. あらため TECH PLAY さんで開催させていただきました。 2回目ですが、1回目開催の時は開催…