Code Complete の上巻を読んだ
Code Complete の上巻を読み終えた.本書は,設計,コーディングの際に,保守性高く,かつバグが減らせるようにプログラムを書くにはどのようにしたら良いか,ということをテーマにした本である.
これまで自分が暗黙のうちに行っていた,もしくは(恥ずかしながら)全く意識できていなかったクラス設計や構文に関する bad practice,best practice が書いてあり,大変参考になった.コーディングやレビューを行う際に大変有用であるように思う.
コーディングやレビューは,感覚や好みがあるため,筆者の思いが入りがちだが,この本は可能な限り客観的に書こうとしているところが良い.また,深いテーマ(例えば,オブジェクト指向を用いたソフトウェア設計に関してなど,)については,深入りしすぎず,参照元を明らかにして必要最低限の量の説明にとどめている点も気に入った.(おかげさまで,何冊か本を購入することとなった.)
この記事を書くにあたって気付いたのだが,Kindle で上下巻セットになった電子書籍版がでている.これから購入する場合はこちらの方がお買い得のようだ(2016/9/20 現在).
輪講と Timeline Server
Timeline Server の Writer に実装が完成して投稿.よくよくみたら設計が決まっていたので作るだけだった.Reader はどうもインタフェース自体が存在しないように見える...これから設計しないとかな.
輪講に備えて Designing Distributed Systems Using Approximate Synchrony in Data Center Networksを読む.アプリケーションを Datacenter topology-aware にすることで paxos が高速になるという内容.非常に面白い.
フルーツざんまい
Timeline Server の Writer を実装.フルーツでお腹がいっぱいになった.
Hadoop の ShutdownHook
Hadoop はプロセス終了時の cleanup を行うために,ShutdownHookManager というクラスを用いている.このクラスは,JVM の Runtime#addShutdownHook を用いて実装されている.スレッド終了時に停止する順番は指定できないので,複数のスレッドが一気に停止すると,race condition になりやすい.