熊の家族
いつのまにか家族になってる。
最近分かったこと
今日やっと、Struts で、
- 検証、適切なエラーメッセージ
- フォームビーンの生成スコープ
- トークン処理
- キャンセル処理
が自信をもって書けるようになりました。
また、Action クラスでは finally を使って、トークンの保存と解除をすると、スッキリまとまるようです。
数日前は Hibernate の .hbm.xml について、プロパティの記述を今より簡潔にできることを知りました。 もう、varchar のサイズを指定するために、醜いネストと sql-type を使うことはありません。length 属性を指定しておけば、SchemaExport は適切な DDL スクリプトを生成してくれます。
いままで分からなかったことが分かるようになるのが、楽しいです。
ViewVC のインストール
あとでブログに書こうと思って残しておいた ViewVC の設定メモ。今日、仕事中に思わず、ファイルを上書きしてしまった。
ネタはその日のうちに書いておけ、という教訓。
もっとも、インストールや設定自体は、ほぼ INSTALL ファイルの手順どおりでいけたので、ブログに書くまでもない気がする。気をつける部分といえば、セキュリティ的な理由から、Apache の DocumentRoot 以下にはインストールしないことくらいだろうか(INSTALL ファイルにも書いてあるけど)。
これだけじゃなんなので、httpd.conf も載せておく(パスなどは変えてある)。要点は:
- mod_python で動かしている
- 付属の .htaccess は使っていない
- /viewvc でアクセスできるように ScriptAlias を使う
LoadModule python_module modules/mod_python.so
<VirtualHost *:80>
ServerName svn.metareal.org
DocumentRoot /sites/viewvc
ScriptAlias /viewvc /sites/viewvc/viewvc.py
<Directory "/sites/viewvc">
DirectoryIndex viewvc.py
AddHandler python-program .py
PythonHandler handler
PythonDebug On
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
svn.metareal.org に ViewVC を導入
ここ数週間、サイトに Subversion へのインターフェースを追加しようとしていた。それは Apache に倣い svn.metareal.org として公開され、個人的プロジェクトのレポジトリとして機能するはずだった。公開に向けて、暇をみてはコンパイルとインストールを繰り返していた。
そして、待っていたのは挫折の連続だった。
まずは、Trac に挑戦してみた。これは流行っているし、仕事でも使っているので安心感がある(仕事では同僚がインストールしてくれたので、まさか、あれほど多くのライブラリが必要だとは夢にも思わなかったのだ)。
しかし、延々とつづく configure, make, make install がやっと終わったと思ったら、結局動かない。
mod_python にしようが、mod_fastcgi, mod_fcgi にしようが結果は同じ。それはとにかく動かないのだ(ちなみに、遭遇した問題は Ticket:2969 で報告されているものと同様だが、DarwinPort ではなく、すべてソースからコンパイルした)。
Trac は諦めて、SVN::Web を試してみる。SVN::Web を選んだ理由は単純で、見た目が Trac と同じだったから。見た目重要。
しかし、こいつも依存モジュールのいくつか(WWW::Mechanize と Template::Plugin::Clickable::Email)がインストールできずに断念。CPAN しか試してないけど、それ以上追求する根気がない。
なんだかんだで、最終的には ViewVC に落ち着いた(いや、インストールできたのがこれだけなんですけどね)。他にも色々設定しないといけないけど、今日はとりあえず公開だけしておしまい。
あー、疲れた。
Java の軽量 XML パーサ
ユニットテストの実行に XML パーサが必要になった。
org.xml.sax.helpers.XMLReaderFactory.createXMLReader() を使っているので、SAX2 に準拠したパーサが必要だ。
また、ユニットテストのためだけに Xerces のような横綱級ライブラリを含めたくはない。パーサのライブラリは軽くなくてはいけない。
探してみると、条件に当てはまりそうなライブラリがふたつ見つかった。
.jar の容量だけでいえば NanoXML の圧勝。
SAX サポートを追加するための nanoxml-sax-2.2.3.jar を含めても、40KB に満たないコンパクトさだ(なお、NanoXML Lite というバージョンもあり、こちらは 6KB 以下)。ただ、残念なことに SAX 2 が実装されていないようだった。
他方、Piccolo では SAX2 が実装されているようなので、こちらを使うことにする。ドキュメントをよると、 開発に構文解析器 (JFlex)とコンパイラ・コンパイラ (BYACC/J) を用いているのがユニークな点らしい。
SAX パーサは java コマンドに -D オプションで指定するのが一般的だが、今回は System.setProperty で指定した。Piccolo の SAX2 パーサは com.bluecast.xml.Piccolo になる。
System.setProperty("org.xml.sax.driver", "com.bluecast.xml.Piccolo");
...
これで無事、ユニットテストが動作した。
