1.0.5 を試してみてどうも RSS がおかしい。
feed.template の item 要素の中の description で EntryBody テンプレートタグを使うわけだが次のようになってしまう。
| 指定した属性 | HTML タグ | 日本語 |
|---|---|---|
| (無指定) | そのまま | 実体参照になる |
strip_html="1" |
なくなる | 実体参照になる |
encode_html="1" |
HTML 予約文字が実体参照になる | 実体参照にした上で、& が & になる。 |
close_empty_tags="1" |
そのまま(若干修正されるケースあり) | 実体参照になる |
tidy_html="1" |
そのまま(若干修正されるケースあり) | 実体参照になる |
つまり属性の処理とは関係なく日本語が実体参照にされてしまっている。このこと自体も凄く嫌だが、encode_html 属性と組み合わせると悲惨なことになる。UTF-8 を使用している場合、3 バイトの日本語文字が、実体参照になって 8 バイトくらい、更に & が実体参照にされて 12 バイトくらいになってしまうからだ。
因に EntryBody テンプレートタグを feed.template 内で使用するときに strip_html="1" も encode_html="1" も指定しないときは <![CDATA[<$EntryBody$>]]> と書かないとならない。そしてエントリのソースに ]]> と書くようなことはしてはならない。
もういい加減にアップデートしないとと思い 1.0.2 から 1.0.5 に Thingamalog をアップデートしてみた。テンプレートもそれに合わせて改造する必要もあるし。
ところがダウンロードした1.0.5 を起動してブログの設定パネルを開こうとしても開かない。メニューからやってみても開かない。これは段階を踏んでやらないといけないのかもしれないと思い、以前ダウンロードしておいた 1.0.3 を起動して設定パネルを開いてみた。1.0.4 はダウンロードしていなかったから飛ばして、もう一度 1.0.5 を起動して設定パネルを開こうとしたがやっぱり駄目だった。
これはデバッグが必要かなと思いながら、取り敢えずソースから一式をビルドした。ビルドしてできた thingamablog.jar を使ってみたらあっさり設定パネルが開いた。
Mac OS X ユーザはもしかするとダウンロードしたバイナリでは同様のことが起るかもしれない。もし起きたらソースからビルドしてみるとよい。希望があればそのやり方をエントリにするので、ビルドの仕方がわからない人はコメントで知らせてほしい。Mac OS X ならば簡単にできる。
1.0.3 からカテゴリ毎の RSS を生成できるようになり、RSS の拡張子を選択する設定ができるようになった。この拡張子のデフォルトは .rss になっている。しかし、この拡張子では大抵の web サーバは MIME タイプを text/xml などにはしてくれないだろう。
だからカテゴリの RSS を生成する人は拡張子を使っている web サーバに合わせて変えるか、web サーバの設定を変えるかをする必要があるケースが多いだろう。メインの RSS に合わせておくのがよい。
ブログの設定パネルには各種ページのファイル名や拡張子を指定する欄があるのには Thingamablog を使っていればすぐに気付くと思う。これってあまり言及されたところを見たことがないけれど凄いよね。
何が凄いかって、例えばこういう使い方ができるからだ。
php にして PHP が利用できるサーバでやりたい放題。
PHP でデータベースと統合するなど動的な内容を持ったブログが作れてしまうのだ。
いや、.Mac で PHP なんて当然のごとく使えないんですけどね。
shtml にして SSI で楽をする。
1.0.3 で <Include> ディレクティブを使って URL 指定でリソースを取り込めるようになったが、それはあくまでテンプレートの拡張のはずだ。でも SSI なら動的に変わってゆく内容を始めから書いてあったかのように取り込める。これはコメントのページへの埋め込みなどに使える優れものなのだ。
いや、.Mac で SSI なんて当然のごとく使えないんですけどね。
jsp にして Tomcat でやりたい放題。
別に Tomcat でなくてもよいが、とにかく Java による Web アプリケーションとなるようなブログまで作れてしまう。もうここまでやったら無敵だ。
いや、.Mac で jsp なんて当然のごとく使えないんですけどね。
cgi や plにしてテンプレートも Perl スクリプトのテンプレートにする。
要するに Thingamablog が Perl のデータファイルを生成するようにしておいて、あとは CGI でやりたい放題というアイデア。PHP で十分じゃんという感じもするけれど、CGI じゃないと辛いことだってあるかもしれない。
いや、.Mac で CGI なんて当然のごとく使えないんですけどね。
xml や xhtml に、内容を XHTML にしてブラウザに HTML としてではなく XHTML として解釈させる。
XHTML 文書の拡張子を html にしていると大抵の HTTP サーバはその mime type を text/html にする。そうすると XHTML を XHTML として解釈できるブラウザでも HTML 流の解釈をしてしまう。サーバが適切に設定されていれば拡張子を xhtml にすると XHTML 文書の mime type が HTTP レスポンスヘッダーに書き込まれるから気持ちがよくなるかもしれない。
因に .Mac では拡張子を xml にすると mime type は text/xml、xhtml にするとなんと application/xhtml+xml になってくれる。半年くらい前はそうはならなかったけれどいつの間にかちゃんとしている。偉いぞ .Mac。
だけど Internet Explorer が application/xhtml+xml をちゃんと解釈できずに自分が表示できるものだとは思わないでダウンロードするかどうかなんて訊いてくるのだ。Internet Explorer はもうレトロなブラウザになりつつある。
Homepage 機能でお手軽にスライドショーなど色々が作成できるけれど一般の HTTP サーバでもはや当たり前の機能群(JSP は当たり前じゃない)が使えない .Mac で唯一偉いところだったのだけれど役に立たなくて残念だ。
あ、でも application/xhtml+xml だったら JavaScript の XMLDocumemnt の load メソッドとか、XMLHttpRequest オブジェクトが使えるかもしれない。それらを使って Ajax なページを見せれば面白いかも。
このように HTTP サーバに機能があれば Thingamablog は凄いことができてしまうのだ。ファイル名や拡張子をユーザが指定できるというちょっとした機能だが、それだけで使い方の幅が猛烈に広がる。
だけどこれを活用している人はいるのかなあ?
先日、iBlog の出力を補正したりカスタマイズを加えるツール iblogPatcher を使って個々のエントリについてコメントやトラックバックを disable にする方法について書いた。iBlog + iblogPatcher の組み合わせはこういうことが楽に行えるところが魅力だ。
しかし Thingamalog の場合そうはいかない。iBlog と比べると格段にテンプレートが自由に書ける反面、それ以上のことをしようとするとソースを弄って、機能と UI を付けなければならないからだ。そこで Thingamablog にどんな機能があれば自由度が増すかを考えてみた。
最も欲しいのはこれだ。Perl 程度の柔軟な正規表現で各ページの内容を置換できるようにするもの。
これはページの種類毎に正規表現による置換を記述するのではなく、正規表現による置換に対してページの種類を割り当てるようにしたほうがよい。というのは同じ置換が複数種類のページで使えることが多いからだ。
これがあるとエントリに特別な記述を加えることによってコメントを表示させないというようなこと、つまり条件毎にタグ付けを制御したりすることが容易になる。そういうことをいちいちソースに手を加えて UI を作っていると切りがないし UI も複雑になってしまう。
Thingamablog が生成するファイルを置くディレクトリには次の四種類がある。
このそれぞれについて複数の拡張ファイルを生成する機能とその UI があるとよい。そして、それぞれのディレクトリのページ(例えば Entry Page とか)と同じコンテナーがその拡張ファイルのテンプレートの中で使えるようにする。
そうすると例えば各標準ページに対応した XML ファイルを生成しておいて JavaScript で様々な処理が行えたりするようになる。特に Front Page が置かれるところは全エントリを総嘗めするようなコンテナがあると便利だ。
テンプレートが XHTML になっていればページをそのまま読み込んでもよさそうだが、拡張子が html だと Content-Type が text/html になるサーバが多いのであまり汎用性がない。
エントリ「作者にメールを書いてみた」で述べたメールに反応がなかった。そりゃそうだ。いくらなんでも機械翻訳結果は僕が読んでもわからないから。
それで考えてみた。バグや問題点の指摘内容を英語にするのは項目も多いし僕にはちょっと難しい。でもパッチファイルで修正/変更した内容の主旨なら項目も少ないし、第一 Java という共通言語を参照することができる。「よし! それならその路線でもう一度書いてみようじゃないか」と書いておくってみた。それが 11 月 13 日 午前 0 時。
そうしたらその日の午前 8 時にはもう返信が来た!
I'll integrate your fixes into the next bug-fix release.
感激です。Bob さんありがとう。
Thingamablog の作者に Thingamablog 1.0.2-OKAMURA-20051102 の patch ファイルの URL とエントリ「Thingamablog 1.0.2 への要望」の翻訳ページの URL を書いてメールを出してみた。
この altavista による翻訳は原文を書いた僕自身が読んでもむちゃくちゃだと思う。意味を汲み取ってもらえるかどうか心配だ。わからなかったらメールで質問してくれるといいなあ。