2004-06-10 [長年日記]

_1 [Security] cvs-1.11.17, cvs-1.12.9 出ました

直したつもりがまだ他にもセキュリティホールが見つかったということで、cvs がバージョンアップされています。

_2 [Ruby][Wiki] mod_ruby Hiki

Hiki with mod_ruby

今度こそ本気で Hiki の mod_ruby 化に取り組みはじめました。「本気で」というからには、Hikifarm みたいに複数の Hiki をまとめて mod_ruby で動かすことも可能にするのが大前提です。

今日のところの作業は、以下のとおり。

  • 設定を保持するのはグローバル変数から Hiki::Config クラスのインスタンス変数に変更
  • conf を渡せるように (かなりの数の) メソッド定義の変更
  • プラグインの中で設定を参照している部分を変更

とりあえず、それなりに動くところまで持って行けました。それにしても、めちゃくちゃ速い。

なお、この作業の途中に設定の保存まわりでバグを見つけたので、とりあえずそれだけはバックポートしておきます。

さて、ToDo もそれなりにたくさんあります。

  • とりあえず default スタイル決めうちに書き換えているのでまともに書き直す (現状は require の引数にグローバル変数が来ているので、ちょっとロード順を整理しないとだめそう) 完了
  • 残っているプラグインの修正 完了
  • hikifarm の修正 完了

そういうわけで、まだ実戦投入は先になりそうです。

_3 [Ruby] puts CGI#header はダメ

mod_ruby hiki で、rss.rb の出力の先頭に空行が入るのなんでだろ〜、と悩んだのですが、そういう理由でした。mod_ruby じゃないときは問題なかったのも不思議ですが、とにかく他のプラグインも含めて puts の代りに print CGI#header するように修正しました。あと、$site_name と $author_name の escapeHTML 忘れも修正しました。

何かプログラムを改造しようと思い立ったら、それなりにあちこちのコードを読みまくるので、結果として予想外のバグ修正もしちゃったりするんですよね。

_4 [Ad] 今日の Amazon

音楽: マツケンサンバII

こ、これは!

本日のツッコミ(全3件) [ツッコミを入れる]
_ mopia (2004-06-11 15:58)

ども、VikiWiki作者です(で通じるのか?)。
Windowsでは\rがCGI#headerに含まれているせいか\r\n\nになるので悩んだ挙句以下のようにしています。
print cgi.header(〜).gsub(/\r/, '')

_ かずひこ (2004-06-12 00:00)

↑tdiary や hiki では CGI の先頭に
BEGIN { $defout.binmode }
と書くことで対処しています。

_ mopia (2004-06-12 13:03)

気をつけないと\r\nと\nが混在してHTTPヘッダを正しく認識してくれなかったり(hiki.cgiのExceptionとか)。

[]