上京エンジニアの葛藤

都会に染まる日々

システム設計の面接試験を読んだ

印象に残った点 高トラフィックで大規模なサービスの設計について考える機会を与えてくれる レートリミッターの設計が面白い まとめ 1月は毎日少しずつ「システム設計の面接試験」を読んでいました。 とても良い本だったので感想をまとめておきます。 目的は…

ALB のアクセスログを JSON に変換するコマンドラインツールを作ったので紹介する

Go

概要 使い方 補足 感想 概要 albconv という ALB のアクセスログを JSON に変換するコマンドラインツールを作ったので、紹介です。 github.com demo albconv きっかけは ALB のアクセスログを少し解析する必要があり、量も少ないので手元で確認しようとした…

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); 個人情報の利用目的 当ブログでは、お問い合わせ…

「技術書」の読書術 達人が教える選び方・読み方・情報発信&共有のコツとテクニック を読んだ

TL に流れてきて気になりざっくり読んだので忘れないうちに感想を書く。 前提 自分はソフトウェアエンジニアを本業にしていて、平均すると2ヶ月に1冊は技術書を読んでいる。 課題感はいざ学ぼうと技術書を手に取るが、難しくて途中で投げ出すことが多い。 だ…

プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則 を読んだ

表題の通り プリンシプル オブ プログラミング を読んだので忘れないように感想文を書く。 「3年目にまで身につけたい」とタイトルでは謳われていて、ソフトウェアエンジニアになって7年近く経った気がするけど読み物として面白そうだったので手にとってみた…

husky コードリーディングメモ

今まで雰囲気で TypeScript (node.js) を書き続けていたので OSS のコードを読みながら少し真面目に勉強しようと思いました。 早速 husky のコードリーディングをしたので、記録としてメモを残します。 github.com husky は Git Hooks を簡単に設定できるよ…

FILCO 漆塗りリストレストを買った

FILCO 漆塗りリストレスト 摺漆塗り Sサイズを購入しました。 こんな感じです。 写真の通りいつも HHKB を使っているのですが、最近手首のだるい気がしたので初めてリストレスト (パームレスト) を導入しました。 電子バードから出ている公式の物と迷いまし…

「魚偏漢字神経衰弱」というアプリを作った

iOS, Android 向けに「魚偏漢字神経衰弱」というアプリを作ってリリースしました。 魚偏神経衰弱Shota Okunakaゲーム無料apps.apple.com play.google.com どんなアプリか タイトルから予想がつくと思いますが、魚偏の漢字のカードで神経衰弱ができるミニゲー…

2020年12月振り返り

まだ今月は3日残っているが、先月から引き続き今月の振り返り。 エンジニアリング 今月は本業でガッツリコードを書くことが少なかったが Ruby は少し書いた。 Ruby 3.0.0 はまだ触れていないので近々触ってみるつもり。 予定では、今月 Golang をしっかりキ…

2020年11月振り返り

前回の更新は5月なので約半年ぶりになるが、最近特に物忘れもひどく朝食べた物までも平気で忘れてしまうレベルなので、最近やったことを簡単にまとめておく。 これから毎月振り返りしたい気持ちも込めてタイトルは2020年11月振り返りにしてみた。 (まあ次は…

simplecov を流し読み

simplecov の流し読みをしたのでまとめておきます。 simplecov simplecov とはテストカバレッジを計測する gem で、計測結果をあらゆるフォーマットで出力してくれます。 Rails と親和性も高く簡単に導入することができます。 github.com コードリーディング…

dotenv-rails を流し読み

前回の記事からかなり期間が空いてしまいました。 dotenv の Gem のコードリーディングをしたので、まとめておきたいと思います。 github.com dotenvとは 説明不要だと思いますが、環境変数をファイル管理することができる Gem で rails 以外の WAF や素のRu…

Base64 Encode を Ruby で再実装する

最近業務でよく Base64 に変換をしているが、A–Z, a–z, 0–9, +, / の文字列に変換されるという程度の知識しかなかった。 良い機会なので、もう少し踏み込んでアルゴリズムを自分で実装して理解を深めていこうと思う。 Base64 とは データを64種類の印字可能…

MySQL InnoDB のインデックスについて再入門

アプリケーション開発する上で、MySQL をよく使っているけれど DB設計やパフォーマンスチューニングを行う際にインデックスについてふわっとした理解だったので再入門した。 インデックス DB から特定の条件でデータを検索する時に効率よく、条件に一致する…

「現場で困らない! ITエンジニアのための英語リーディング」を読んだ

週末に積ん読を消化しようと思い、以前友人にお勧めされてポチっていた、 「現場で困らない!ITエンジニアのための英語リーディング」という本を、読んだので感想をまとめておきます。 所用時間 薄い本なので2時間ほどでサクッと読むことができました。 特に…

CloudNative Days Tokyo 2019 Day2 に行きました

CloudNative Days Tokyo 2019 Day2 のレポートです。 Day1 についての記事はこちらです。 okkun-sh.hatenablog.com 今日は雨も降っていて、満員電車が辛いので昨日より遅めで、会場へは 9:50 に到着しましたが、Keynote の席は空いていたので無事着席するこ…

CloudNative Days Tokyo 2019 Day1 に行きました

CloudNative Days Tokyo 2019 Day1 レポート?感想?です。 ※OpenStack, k8s 周りの知識不足の為、捉え間違えてる可能性がありますので、その場合はご指摘いただけたら嬉しいです cloudnativedays.jp 登録者数は、約1600人で、スポンサーが約50、セッション…

ruby v2.6.x に上げたら mysql2 も5.x に上げないといけない

最近ようやくruby 2.6.3 に上げました。 一先ず RSpec を走らせてみるとこんな感じでコケたので、まとめておきます。 vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.3/lib/active_record/connection_adapters/mysql/database_statements.rb:34: warning: …

Rails と Cloud Datastore Emulator の接続方法をまとめる

Rails と Cloud Datastore Emulator を接続するのに少し嵌ったのでまとめておきます。 Cloud Datastore Emulator とは GCP のサービスの一つである Cloud Datastore (以下 GCD) をローカル環境で動かすことができるものです。 通常 GCD を動かす場合お金がか…

Enumerable の メソッドを Ruby でいくつか再実装する

先日、銀座rails#9 にお邪魔したところ、とても興味深い LT を見ることができた LT をされていたのは @okuramasafumi さんで、Enumerable モジュール内のメソッドを Ruby で再実装(ライブコーディング)し、どのメソッドを実装するのかもその場で募集して決…