31 May 2021

最近読んだもの 2

記事

  • A robust distributed locking algorithm based on Google Cloud Storage – Joyful Bikeshedding
    • ちょっとしたロックを実装するのに gcs にロックオブジェクトを置くという例
    • ここで言う「ちょっとしたロック」のユースケースは、例えば CICD プロセスが複数走っている中でワークフローの本体処理自体を更新したい (何も実行されていないときに更新したい) といったもの
    • こういうユースケースに対してかなりしっかり実装されていて (TTL とかロックの延長とか etc)、全然手軽ではなかった
  • Biases in AI Systems - ACM Queue
    • 門外漢なのでへーという感想しかないが
    • 教師データの偏りなど種々の理由で、AI がいわゆる差別的な挙動をしてしまう問題について
    • 未解決の問題だが、問題の要因を分類・整理するアプローチは良いなと思った (問題解決一般として)
  • A Second Conversation with Werner Vogels - ACM Queue
    • Amazon CTO Werner Vogels のインタビュー
    • Amazon 規模になると十年以上ずっと事業もシステムもスケールし続けたわけで、そうなるとシステムをいかに進化させやすくするかが最重要になる
    • また一般的に API のインタフェースは一度定義すると容易に変えられない
    • この 2 点から導き出されるのは、システムをシンプルにつくり拡張していくことがいかに大事かということ
    • 単に機能不足の製品を作るのではなく、本質的にユーザーが求めるとこをだけを実現するそぎ落とした mvp からはじめること、それを突き詰めることが大事になる
    • というようなことが書かれていた気がする
  • John Gall (author) - Wikipedia)
    • Gall’s law という経験則「複雑なシステムはシンプルなシステムからしか作れない。最初から複雑なシステムは作れない」
    • 何かの本で見かけて出典がわからず一年くらい探していた。やっと見つけられて嬉しい
  • よくないエンジニアリングカルチャー - Google Docs
    • 職人信仰 はほんとにそうで、不具合や障害が最初から起きないのが地味だけど一番すごい。自分もできていない
    • レビュー遅れ の不味そうなコードをレビューをしっかりやって何も起こらないよりは、ノールックでマージして壊れて直したほうがまだマシと言う考え方は全く新鮮だった
      • 後者はその分試行回数が増やせて学習機会が増えてよいということ
  • How to Monitor Sidekiq Process Uptime in Rails Apps
    • 定期的にある URL にリクエスト、リクエストが来なかったら通知してくれる監視サービスを cron monitoring というらしい
    • 面白いアイデア
  • How to look at the stack with gdb
    • gdb を使ってスタックとヒープにそれぞれ格納したデータがメモリ上どうなっているか、ステップバイステップで見ていく
    • gets であえてバッファオーバーフローを起こしたり
  • Understanding Ruby Method Lookup - Honeybadger Developer Blog
    • ruby のメソッド呼び出しの解決ロジックの解説
    • 特異メソッド => mix in された module => インスタンスメソッド => 親クラスを同じ順で => 最終的に Object, Kernel, BasicObject へ
      • prepend は include と似ているが、メソッド解決チェーン? の手前に挿入される点が違う

読み終わった本

舞踏会へ向かう三人の農夫 上 (河出文庫)
リチャード・パワーズ (著), 柴田元幸 (翻訳) 形式: Kindle版
  • まだ上巻を読み終えたところだけど面白い
  • 最初は真面目に内容を理解しようとしてなかなかページが進まなかったけど、アメリカ?の文化資本に深く触れていないとよくわからないところが多かった。諦めて流し読みにするといい感じ