Displaying posts written in

5月 2009

Mac OS X で Erlang/OTP R13B

いつの間にか MacPorts で R13B が提供されていたので、port upgrade erlang してみた。すると X を含む大量のパッケージのアップデートが始まってしまい、予想外の大仕事になってしまった。

途中、tiffパッケージのアップグレードで次のようなエラーが出た。

--->  Extracting tiff
Error: Target org.macports.extract returned: can't read "macosx_version": no such variable
Error: Status 1 encountered during processing.

検索してもズバリな情報は出てこなかったのだが、お手入れ tiff 3.8.2の場合 – 逃走航路@hatena を参考に XCode のバージョンを 3.1.2 に上げたら解消された。

Ubuntu で散々苦労した wxWidgets もあっさりインストールされた。素晴らしい…。またこのバージョンからは標準で smp オプションが入るようだ。

erl を起動して Unicode 対応をチェック。日本語を入力してダイレクトに Unicode コードポイントが返される様はちょっと感動的だ。

1> "日本語".
[26085,26412,35486]

io:format 等で Unicode 文字列を表示する場合は、修飾子の前に t を付ければうまく処理される。

4> io:format("~s~n", ["日本語"]).
** exception exit: {badarg,[{io,format,[<0.26.0>,"~s~n",[[26085,26412,35486]]]},
                            {erl_eval,do_apply,5},
                            {shell,exprs,6},
                            {shell,eval_exprs,6},
                            {shell,eval_loop,3}]}
     in function  io:o_request/3
5> io:format("~ts~n", ["日本語"]).
日本語
ok

久しぶりにまた Erlang で遊ぼうかなあ。

mod_dosdetector 改造一段落

mod_dosdetectorの改造は、先日の共有メモリ処理の改善をもって一段落。今後は実際に運用しながらバグを取りつつ、ドキュメントでも書きつつ、またオリジナルの mod_dosdetector に対するフィードバックも考えていこうと思う。

やり残したこと。

ディレクティブ有効範囲の矛盾の解消

mod_dosdetector はクライアント情報を管理するのに共有メモリを使用している。共有メモリ・セグメントはサーバ中に唯一つしか存在しないので、DoS判定の閾値や継続時間などの設定値も当然サーバ中で唯一になっているべきである。ところが実際には、ディレクティブはどこにでも(.htaccessにでも)何度でも書くことができる。

この矛盾した状況を解消するには、設定は全て httpd.conf のグローバルスコープにしか書けないように変更すれば良い。しかし「設定は一箇所にまとめておいてね!」という紳士規定によって得られる「どこにでも設定を書くことができる」というメリットを捨ててまで、そうする価値があるかと言われると…よく分からない。

Apache 2.0 対応

参考:mod_dosdetector を Apache 2.0 系で動かすパッチ

こちらは技術的には特に難しくない。しかしきちんとした配布物としてまとめようとすると、途端に面倒くさくなる。というのも、2.0 に足りていない一部の機能を 2.2 のソースコードからバックポートしてくる必要があるために、ライセンス/ファイル構成/アーキテクチャ判定の面で一気に複雑になってしまうからだ。機能の本質とは関係のない部分で、そういった複雑さを持ち込むのは、やはり気が進まない。

(この点、mod_fcgid は Apache License に違反しているのではないだろうか…)

これらやり残したことは、いつか良いアイデアが浮かんだら、取り組むつもり。