Code As Designを支える二つの機能

gccの開発環境を探してみた。結論:EclipseのCDTはかなり良い。

僕は、C++では「リアルタイム静的エラーチェック」(ていうのかな?ようするに、コード入力時に静的エラーチェックを行うこと)は無理なのかとあきらめていた。しかし、CDTではその機能が実装されている。そして、信じられないことに、ちゃんと実用レベルで動作する。

この機能があれば、抽象度の高い部分のコーディングによって、より抽象度の低い実装部分のモデリングを行うことができる。また、ソースコードをいじりながら、理想的な設計を追求することができる。こうしたプログラミングが、僕にとっての「Code As Design」だ。これは、僕の生産性を飛躍的に高めてくれる。

もう一つ重要な機能は、「ソースコードフォーマッター」の機能だ。良い設計は、シンプルな構造をもった可読性の高いコードを生む。したがって、ソースコード上で設計を行う場合、常に、整えられたソースコード上で思考することは、設計に対する意識を高めてくれることにもなる。

残念ながらCDTにはコードフォーマッターがついていない。なので自分で組み込む必要がある(組み込むための拡張ポイントは定義されている)。そこで、僕は、AstyleというツールとCDTを連動させるプラグインを作った。でも、Astyleはもう少しだということも分かってきた。JDTに付いているような、めちゃくちゃおせっかいだけれど、完全に一貫性のあるフォーマットをするツールはないだろうか。

リチャード・スティーヴンス三冊目

4.4BSDのTCP/IPの実装を解説した本。

1994年に出た本なので内容は少し古いが、かなりの破壊力がある本だ。デバイスドライバからTCP輻輳回避アルゴリズムまで、幅広くかつ詳細に記述されている。正直、読んでいて眠くなるところもあるが、さすがはリチャード・スティーヴンスの本だ。良く読んだら必ず理解できるようになっている。

詳解TCP/IP〈Vol.2〉実装

詳解TCP/IP〈Vol.2〉実装

Debianインストール

最近、フラッシュメディアLinuxを調べてDebianに興味が出てきたところだ。1.8インチUSBハードディスクが余っていたのを思い出し、Debianをインストールした。

いや〜はまった。インストールしても、起動時kernel panicになって立ち上がらない。ネットで調べていたところ、USBのデバイスドライバがロードされていなかったらしい。http://lists.debian.org/debian-boot/2004/11/msg01601.html の情報の通りにして、ようやく立ち上がるようになった。

本のお勧め環境+Gnomeをインストールしたら、容量は2Gを超えた。フラッシュメディア化の道のりはまだまだ遠いな。とりあえず、このハードディスクを持ち歩き用にして、他のマシンからでも起動できるようにすることを目指して見ようと思う。Xの設定も自動認識だったし、ハードルはそんなに高くはなさそう。

Debian GNU/Linux徹底入門第3版 Sarge対応

Debian GNU/Linux徹底入門第3版 Sarge対応

なんか、この本を読みながらDebianと格闘していたら、97年にFreeBSDを始めて入れたときを思い出した。あまり変わっていないねー。

FreeBSD徹底入門―初めての人でも安心 PC‐UNIXのインストールと完全活用 FreeBSD2.2.1‐RELEASE

RFC読書続き

RFCダイジェストの続きを読んだ。

RFC3135は、今の仕事に関係あるかも。時代は違うし、背景も違うが、技術は似ている。

その他は、ミドルボックス関連は一通り抑えておかなければいけない。これまで僕がやってきたことに技術があるとすると、どれも、ミドルボックスに関連する技術ということになりそうだ。

創造性の刺激が勉強のモチベーションになる

最近、うちのチームでは、iptablesLinuxファイアウォールを構築し、それでお金を取ろうと目論んでいる。しかし、僕も含めてみんなが素人なので、たまに、微妙におかしいことをやってしまうことがある。つまり、技術の複雑さに目を取られ、本質を外したものを作ってしまうことだ。

というわけで、僕は、自分たちの作ったセキュリティを突破する方法を考えることにした。こうすることで、僕は、我々のシステムに根本的な見落としがないか、常に疑問を持ち続けることができる。それに、正直言うと、守るよりも突破することを考える方が、創造性が刺激される。

関連しそうな本を買った。

以前、Unixネットワークプログラミングを読んだときに、「libpcap」というライブラリがあることを知った。このライブラリを使えば、プログラマは、データリンクに直接アクセスするプログラムが簡単に作れる。

最近はそういうライブラリも進化してきているのかな、と思ってこの本を買ってみた。しかし、この本はあまり新しいことは書いていなかった。というわけで、1時間で読み飛ばしてしまった。うちの会社のMACアドレスベンダーコードが分かったくらいが収穫か(笑)。

基礎からわかるTCP/IP アナライザ作成とパケット解析―Linux/FreeBSD対応

基礎からわかるTCP/IP アナライザ作成とパケット解析―Linux/FreeBSD対応

フラッシュのLinuxが欲しい

フラッシュメディアで動くLinuxが欲しいなあと思って探してみた。出張先で、PCをお借りして、自分の環境を復元できればかっこいいと思ったのがその動機(現実に可能かどうかは別だが)。

ここに、iPodからKNOPPIXをブートする方法が載っていた。

さらに、USB-Linuxシン・クライアントというのが最近流行っていることが分かった。これは、会社のサーバにだけアクセスするのが目的(リモートデスクトップクライアントやVNCクライアントとしてだけ使う)で、データも持ち歩かないという思想だな。

あともう一つ。BlackDogというものを見つけた。これは、単なるフラッシュメディアではなくCPUを積んでいるので、Windowsを起動したまま動作させることができる。仕組みは、http://www.610net.info/etc/archives/2005/08/realmsystems_mo.html の説明によると、「CD-ROMとして認識された後にX Windows クライアントとネットワークTunnelを接続先OSで立ち上げて、USBネットワークを自動検出して本体につなぎ、画面を表示する」ということらしい。この決定的なメリットをすぐに挙げることはできないのだが、欲しくなった。

RFC

TCP/IPつながりでRFCの本を読み出した。

1997年〜2003年までの毎月のRFCについて紹介されている本。雑誌記事をくっつけただけの本に多少とまどったが、中身は個人的には興味深い。

1997年といったら、TCP/IPの基本技術はすでに確立し、世界中にインターネットが普及しつつあった年だ。したがって、RFCも、インターネットの応用技術に関するものがメインになってきている。また、インターネットの脅威についても認識されてきた時期で、セキュリティについての考察がかなり多くなってきている。

今の職場は、毎年言っていることが違うのだが、今年のテーマは、セキュリティだ。当然誰もRFCなんか読んでいないが、一人くらいは、RFCをまじめに勉強している人がいても良いのではないかと思う。

それにしても、おもしろい技術やアイデアがたくさんあるなあ。こういう世の中の動向に、時間があった学生のときに興味を持っていれば、楽しかっただろう。

RFCダイジェスト―標準化の森を歩くための地図とコンパス (UNIX MAGAZINE COLLECTION)

RFCダイジェスト―標準化の森を歩くための地図とコンパス (UNIX MAGAZINE COLLECTION)