熊の家族

いつのまにか家族になってる。

最近分かったこと

今日やっと、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::MechanizeTemplate::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");
...

これで無事、ユニットテストが動作した。

Want fries with that?

Open Source Projects