クリーンなCで書かれたWebサーバ「Mongrel2」を読んでみた。コードの内外ともにドキュメントはしっかりしているし、関連ブログエントリもあって、非常に勉強になる。何より、毒舌のZed Shawの書く文章は面白くて飽きないのがいい。 例えば、src/adt以下にはユーティリティ関連のライブラリが入っている。伸び縮みするdarray.cや、ディクショナリ、ハッシュテーブル、リストといった車輪の猛発明なところが、Cを使ったデータ構造の基本という感じ。リストの実装で、各関数の先頭にassertを並べて条件を満たしているかをチェックすることで、整合性を取るのを呼び出しコード側の責任にしているアプローチになるほどなぁと思った。クライアントコードが変なことしたら、ごっそり落ちるべきってことだろうか。 /* * Insert the node ``new'' into the list immedia