法楽日記

デジタル散策記&マインド探訪記

tech

The Design and Implementation of the FreeBSD Operating System, Second Edition

表題の本を読んでいます。 筆頭著者のホームページによると、このシリーズは 4.3BSD (1991-04), 4.4BSD (1996-04), FreeBSD (2005-04), FreeBSD 2nd Edition (2014-09) と、これまでに4冊出版されているそうです(参考: https://www.mckusick.com/books.html…

www.ietf.org

去る 1/11(木) 17:30 UTC に www.ietf.org のデザインが一新されました。 これを機会に、十余年ぶりの復習を兼ねて www.ietf.org に掲載されている文章を少しずつ読んでみたいと思っています。意外と分量が多いので全部読むには何週間もかかりそうです。サイ…

SPDX License Identifier

今日は十数年ぶりに FreeBSD のカーネル・コードを眺めています。ディレクトリ構成は確かこんなだったなぁ、ファイル名の付け方は確かこんなルールだったなぁ、システム・コール xxx() のカーネル内の入口関数は sys_xxx() でカーネル内呼び出し用は kern_xx…

Asynchronous DNS resolver

名前解決に標準ライブラリの関数を使おうと思ったら、getaddrinfo() も gethostbyname() も DNS resolving が完了するまで block するのですね。DNS 名前解決のたびに thread を起こすのもなんなので、、おそらく久々に非同期 DNS resolver を書くことになる…

GNU make と依存関係

ソースファイルの依存関係を Makefile に丁寧に手書きしていくのは非現実的になってきたので、Cコンパイラのオプションを利用して依存関係ファイルを自動生成しています。とは言え、今日の時点ではファイル数が少ないのでかなり手抜きしています。 真面目に…

IPV6_V6ONLY

随分昔のこと、Linux 上で IPv6 で TCP の listen をすると、何故だか同じポートで IPv4 も受け付けてしまうという経験をしました。元々 IPv4 と IPv6 で socket を1つずつ使って listen するつもりだったので、IPv6 の socket を1つだけ使って IPv4 と IPv6…

やや汎用的にデザインした方がシンプルになる

プログラミングにおいては、やや汎用的にデザインした方がシンプルに書けるように思います。 例えるなら、乗用車を設計するにあたっては、一人一人の目的に合わせて毎回オーダーメイドで最適化設計するよりも、やや汎用的に設計しておいた方が、却ってシンプ…

Socket Programming

何年かぶりに socket programming を楽しんでいます。 socket 管理はクライアント管理でもあるので、そういえばあんなことしてたなぁ、こんなことしてたなぁなどと、昔のことを思い出しながら書いています。 また、single thread で書くと non-blocking mode…