上京エンジニアの葛藤

都会に染まる日々

2023-01-01から1年間の記事一覧

iPad 用のペーパーライクフィルムが想像以上によかった

買ってよかったものを書いた後に届いたんですが、iPad 用のペーパーライクフィルムがめちゃくちゃよかったです。 僕が買ったのはこれです。Amazon のレビューが高いのを適当に選びました。 PCフィルター専門工房 iPad Pro 11インチ (2022 第4世代 M2)/ iPad …

買ってよかったもの2023

今年も残り僅かですね。 恒例の今年買ってよかったものです。(今回書くのが初めてかも知れない...) 骨盤職人 ScanSnap iX1600 & DURODEX パーソナル断裁機 200DX DAVE THE DIVER ジョン・フルシアンテ・ファイル Ubisoft 90’s ロゴ キャップ 骨盤職人 ペルビ…

localstack のボリュームマウントは /var/lib/localstack にしよう

タイトルの通りですが結論だけ先に書きます。 localstack のボリュームマウントは /tmp/localstack ではなく /var/lib/localstack にしましょう。 詳細 docker-compose を使ってローカル開発をしていたところ、ある日 localstack が立ち上がらなくなりました…

Go で Graceful Shutdown な Web サーバーを書く

Go

概要 Go で Graceful Shutdown な Web サーバーを書きたかったのでその備忘録です。 結論 net/http パッケージの Server.Shutdown() を使え http package - net/http - Go Packages それだけなんですが、動作確認しながら挙動を追いたいので Web サーバーを…

初めての Go 言語でテストについて学んだ

Go

概要 初めての Go 言語の テスト の章が勉強になったのでそのまとめです。 まとめ テストは製品版と同じディレクトリ、パッケージに置く エクスポートされていない関数や変数にもアクセスしてテストが可能 ファイル名は xxx_test.go とする テスト関数は Tes…

connect-go の interceptor に外部から context を渡す

Go

概要 connect-go の interceptor に外部から context を渡す方法についてです。 あまりすることは無さそうですが、context に値をセットするような interceptor を書いていて、単体テストを書く際に今回のような方法が有用だったので紹介します。 intercepto…

golang-jwt/jwt で JWT の発行、検証を行う

Go

golang-jwt/jwt を使って JWT の発行、検証を試したので残しておきます。 github.com サンプルコードはこちら。 github.com JWT の発行 func generate() (string, error) { token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.RegisteredClaims{ Issue…

go install で落とした binary に PATH を通す

Go

asdf でバージョン管理をしているため GOPATH が動的に変わるので以下のように PATH を通した。 export PATH="$(go env GOPATH)/bin:$PATH" .zprofile だと上手く読み込めなかったので .zlogin に記述した。

Retryable コードリーディング

今年に入ってまた Ruby をメインで書くようになりました。 少しずつ Ruby 力を高めたいので、今回は Retryable という Gem をコードリーディングします。 github.com コード量も少なくて読みやすいです。 概要 Retryable は例外発生時に指定した回数 retry …

お問い合わせ

var newMeta = document.createElement("meta"); newMeta.setAttribute("name", "robots"); newMeta.setAttribute("content", "noindex"); document.getElementsByTagName("head")[0].appendChild(newMeta); 読み込んでいます…

プライバシーポリシー

var newMeta = document.createElement("meta"); newMeta.setAttribute("name", "robots"); newMeta.setAttribute("content", "noindex"); document.getElementsByTagName("head")[0].appendChild(newMeta); 個人情報の利用目的 当ブログでは、お問い合わせ…