理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

おいしい珈琲を淹れる旅

妻とともにコーヒーがとにかく好きなのでコーヒーの味には気を使っているのですが、コーヒーメーカーでドリップしてもイマイチな味で何とかしたいと思っていました。 具体的な不満点は、ドリップのスピードが早すぎて、どうにも味が薄くなるという点になりま…

Dash を VS Code から使える拡張 Visual Studio Code Dash

VS Code を使用しているんですが、今の今まで知らなかった拡張が Visual Studio Code Dash です。 Dash プログラムを書いている際リファレンスを探すことも多いですが、そういうときに使用するアプリケーションとして Dash があります。 Java や Golang を始…

GitHub Actions・blogsync・textlint で実現するはてなブログ投稿のオートメーション

以前、blogsync と textlint を使ったブロク投稿について書きました。 そこに登場したのが、GitHub Actions です。 そこでぼくは考えました。おや、エントリを GitHub のリポジトリで管理しておきさえすれば、以下のようなエントリの PUSH による自動投稿が…

tar ボールの中から特定のファイルのみを抽出する

tar ボールの中から特定の「ファイルのみ」を抽出したいケースがあります。 たとえば、GitHub Releases で公開された tar ボールから、シングルバイナリのみを抽出して PATH の通った場所に置きたいケースです。 これをシンプルに行う方法についてです。 フ…

Macでのアプリケーションインストールの自動化

先述の通り、新年を迎えたことをきっかけに Mac を初期化しました。 面倒なのは、使っているソフトウェアのインストールなのですが、皆さんと同様 homebrew を使っています。 そういえばと思い立ったのですが、この homebrew で各種 CUI アプリケーションと…

英語キーボードでGoogle日本語入力を楽に使いたい

新年なので、自宅の Mac を完全初期化しました。新年になるとこういうの整理したくなるよね。そうだよね。 そういうわけで、毎年のように Mac を完全初期化しているわけなのですが、そこで毎回問題になるのが IME です。 もともと僕は AquaSKK を使っていた…

「エラスティックリーダーシップ -自己組織化チームの育て方-」を読んだ

「エラスティックリーダーシップ」を読みました。 前書きの言葉を借りれば、この本は、リーダーシップを取る立場を引き受けようと考えている人、あるいは、実際にリーダーシップを取る立場にいる人を対象にしていて、 自分の仕事に行き詰まってしまっている…

json schema を jq で再帰的に処理し、省略されている `"type": "object"` を付与する

jq

Qiita の json schema に"type": "object" がない "type": "object" の付与 jq での再帰的な処理戦略 参考文献 Qiita の json schema に"type": "object" がない Qiita の API レスポンスは json schema で表現されています。 https://qiita.com/api/v2/sche…

PRへの修正内容をReviewer側で提示できるsuggested changes

Github で上で PR をレビューしている方も多いと思います。 その中で、よくあるのが typo への指摘です。 Typo を指摘する際、 `type` は `typo` の誤りではないでしょうか? というような形で指摘することになると思うのですが、これをやっていると reviewer…

「進化的アーキテクチャ」を読んだ

今年もあまり本が読めなかったけど、それでも今年に読んだ本の中でピカイチのものでした。 進化的アーキテクチャ ―絶え間ない変化を支える作者: Neal Ford,Rebecca Parsons,Patrick Kua,島田浩二出版社/メーカー: オライリージャパン発売日: 2018/08/18メデ…

merpay Backend Engineer Meetup #6~技術的負債について~

現在のプロジェクトでも様々な技術的負債が出てきていて、出るだけならまだしもなかなか返済を計画化できず、どうしたものかと思っています。 そんなとき、 merpay Backend Engineer Meetup #6~技術的負債について~ - connpass が開催されるというのを目にし…

散骨について

実は親族が海への散骨を希望してます。切羽詰まった状況ではないのですが、一体散骨ってどう進めれば良いのだろう、という点がわからなかったので、一応調べてみた次第です。 法制度 散骨自体は法律的でどうのこうの定義されているわけではありません。1991…

携帯・スマフォに送信される緊急速報通知の仕組み

台風19号、そして一昨日の関東圏での大雨等で、最近はスマフォに緊急速報が届くことが多くなりました。 PUSH 通知とは異なる仕組みで届いていることは明らかなのですが、イマイチきちんと理解していなかったので、今日はそのあたりを調べてみます。 緊急速報…

Gitでの各種操作の取り消し・修正方法

VCS を使ったときのメリットは多々ありますが、そのうちの一つは、いつでも修正内容をもとに戻せることだと思います。 ローカルで修正した内容をもとに戻したい git checkout git restore 直前の commit の内容を変更したい commit を取り消したい git reset…

LinuC 303 Security

昨日 Linuc 303 (Security) を受験してきました。いわゆる資格試験はかなり久しぶり、特に Linux 系の試験となると 5 年ぶりになります。そう、なぜ 5 年ぶりに Linux 系試験を受けたのかというと、ぼくの LPIC Level 3 の有意性期限が迫っているためでした…

「Kubernetes 完全ガイド」を読んだ

k8s を本格的に使うことになり、プロジェクト内でも、Helm Docs | Helm だの Spinnaker だの Kustomize - Kubernetes native configuration management だの Skaffoldという言葉がどんどん slack 上に登場してきています。 しかしですね、ぼくは時代を読み間…

EC2 Instance Connect とは何なのか

通常のプロジェクトにおいては踏み台サーバを用意するのが一般的だと思います。 この踏み台サーバにおいて面倒なのは鍵の扱いです。多くの場合、公開鍵認証を用いると思いますが、ユーザを追加する都度、当該ユーザの公開鍵を踏み台サーバに登録するのは面倒…

はじめての ISUCON 体験記

先週の日曜日、ISUCON の予選に@kkasai さんと @hondaYoshitaka さんと参加しました。 記憶が確かなうちに書いておきたかったのですが、なかなかそういうわけにもいかなかったので、記憶とログを頼りに記載します。 当日 サーバ構築とログイン システム構成…

非JSONの文字列が含まれるファイルに対してjqを使いたい

jq は CLI で使用できる JSON processor でみなさんも日々お使いのことと存じます。 stedolan.github.io 問題 解法 解説 問題 jq は標準入力に対して様々なフィルタや加工を行えるわけですが、基本的にはその入力フォーマットが JSON になっていることがベー…

logrusでナノ秒まで時刻を出力したい

golang の構造化ロガーのうち有名なものの一つに logrus があります。構造化ログとして JSON フォーマットを指定するとするとだいたいこんな感じになります {"level":"info","msg":"hello world","time":"2019-09-01T06:56:59+09:00","user":"kiririmode"} …

.ssh/configの記述量を減らしたいしホスト鍵警告メッセージも減らしたい

今日もみなさんどんどん ssh でどっかのホストにログインするのにお忙しい事と思います。最近のプロジェクトでは、ぼくもどんどん ssh でどっかのホストにログインするのにお忙しくて、ログインし続けていたら一日が終わる。 さて、ssh を使うときの個人用設…

gRPC と HTTP/2 と ALPN

gRPC の TLS を NLBで終端しようと思っていたらずいぶんとトラブってしまいました。 結局のところその原因は ALPN にあったのですが、ぼく自身が ALPN に詳しくないため、なかなかよくわからなかった。 このため、きちんと ALPN を理解しようというのが本エ…

gRPC におけるタイムアウト時の挙動

gRPC には、当然ながらクライアントサイドでタイムアウトが設定できます。このとき、HTTP/2 上でどういうフレームが流れるのかを整理してみます。 タイムアウト設定 golang node HTTP/2 での挙動 まとめ タイムアウト設定 golang Golang の場合は、 context.…

gRPCにおけるmetadata、そしてそれを node.js client から取得する

gRPC には metadata という概念が存在します。 これは RPC においての付加情報ということになっており、golang からの扱いは簡単です。ただし、node.js を client として使う場合にどのようにして metadata を「取得する」かあまり情報がなく苦しみました。 …

TCPのTIME-WAITを温かく見守る

このエントリは、 Qiita に投稿したエントリのマルチポストです。 tl;dr TIME-WAIT を含む状態遷移 TIME-WAIT の存在目的 Wandering Duplicate 問題への対策 その時間って TCP 切断に至るフローの最後の ACK が届かないケースへの対策 A の立場 B の立場 問…

gRPC で golang server/node client を SSL に対応させる

今回は、gRPC で SSL 通信を行おうと思います。 環境としては、サーバは golang、クライアントは node.js という構成です。 ルート認証局、証明書を作成する。 golang の gRPC サーバに組み込む Node.js client を SSL に対応させる node のソース ルート認…

node.js の gRPC clientで client side keep-alive (定期的な PING frame 送出)を実現する

gRPC では HTTP/2 を使っており、HTTP/2 では 1 本の TCP のコネクションの上で stream を多重化します。このため、TCP のコネクションはずっと張りっぱなしになることが多く、どのようにしてこのコネクションを維持するかが重要な場合があります。 問題とな…

gRPC 関連でデバッグを行うときに指定すると便利かもしれない環境変数たち

Go で gRPC 周りをデバッグするときに設定しているとデバッグするのが楽になる環境変数がいくつかあります。このあたり、情報が色んな所に散財しているので、ちょっとまとめますね。 GODEBUG その他 GRPC_VERBOSITY, GRPC_TRACE GRPC_GO_LOG_SEVERITY_LEVEL,…

golang でのデバッグに非常に便利な go tool trace

なぜかおかしな振る舞いをするサーバプログラムをデバッグするというのは、それなりに骨の折れる作業です。大量のソースを前に「ここが怪しい」と言いながらデバッグログを埋め込むこともあるでしょう。また、lsof や ss といったコマンドやスタックトレース…

zshのターミナル環境を変更したらモチベーションアップした

雑談ネタです。 4 月に入り、自宅の Mac をクリーンインストールし直しました。 最近どうも多忙にかまけてしまい、この Blog も含めて自宅での IT 関連のモチベーションが湧かない状況でした。全てを一新することで、もう一度あの熱い想いを思い出せないか、…