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 が高速になるという内容.非常に面白い.

Debian サーバをアップデート

うるう秒もあるので debian サーバをアップグレード.基本的には以下のコマンドを実行すれば良い.

$ apt-get update
$ apt-get upgrade

久々にはてなブログにアクセスしたら,プレビューの方法が変わっている気がする.画面が小さいと見づらいけど,基本的には便利な感じ.

Hadoop の ShutdownHook

Hadoop はプロセス終了時の cleanup を行うために,ShutdownHookManager というクラスを用いている.このクラスは,JVMRuntime#addShutdownHook を用いて実装されている.スレッド終了時に停止する順番は指定できないので,複数のスレッドが一気に停止すると,race condition になりやすい.