トップ «前の日記(2007年05月14日 (月)) 最新 次の日記(2007年05月16日 (水))» 編集

*Messages*

Search

書いてる人: しまだみつのぶ (aka. simm, saica)

最新情報URL: https://gouketsu.net/simm/d/

"8024402C"でたどり着かれた方はこちら: 「壁の内側からWindowsUpdateに失敗する


2007年05月15日 (火) [長年日記]

1 [tDiary] 入力内容が消える?

gouketsu.netで使用しているtDiary(ほぼCVS最新)で、追記や編集で本文に

麻婆豆腐、野菜炒め、しめじと玉葱とわかめのみそ汁

入力すると、 なぜか入力内容が消えてしまう現象が発生。 プレビューを行っても、何も表示されない。

「野菜炒め、」の部分がなければ問題がない模様。「炒」の字が怪しそうなので、試しに「炒飯」とだけ本文に入力したところ、同様に何も表示されなかった。

とりあえずは、「野菜炒め」と「、」の間に半角スペースをはさむことで回避できたのだが、気持ち悪い現象なので、調査。

printデバッグ

プレビューでも発生するため、まずは

class TDiaryPreview

のあたりに適当にprintをはさんで一時ファイルに変数の内容を書き出す。 eval_rhtml の変換でどうなっているか確認したところ、すでに内容が消えている。最初、do_eval_rhtml での変換が怪しいのかと考えたのだが、どうやら do_eval_rhtml での変換以前に、すでに入力は消えてしまっていることが判明。

そこで、initialize の

@body = @conf.to_native( @cgi.params['body'][0] )

に注目。本文に「炒飯」があれば、@cgi.params['body'][0]も@bodyも「炒飯」のはず。前者は「炒飯」で間違いなかったが、後者が空文字になってしまっていた。どうやら、to_native が怪しいらしい。

to_native

grep で探したところ、どうやら tdiary/lang の下にある各言語向けの実装で定義されているらしい。日本語の場合は ja.rb だが、この to_native の実装を見ると、NKFライブラリを利用している模様。to_native の第二引数は存在しないので、

NKF::nkf( "-m0 -#{from}e", str )

の from は空文字、したがって

NKF::nkf( "-m0 -e", str )

と呼ばれる。どうも、この変換が偏食家らしく、「野菜炒め」や「炒飯」が嫌いらしい。試しに、to_nativeの第二引数がない場合、fromに'E'を与えるようにする、すなわち

NKF::nkf( "-m0 -Ee", str )

となるようにしたところ、「野菜炒め」も「炒飯」も好き嫌いなく処理するようになった。

こんな対処方法でいいのか、よくわからないが、しばらくは、これで様子を見ることに。

2 [rail] 乗車車両 (2007-05-15)

出勤

L90(8590) → X69(8119)

帰宅: 天理駅まで徒歩

E05+EE38(8405) → VL22(1122)


Information

更新情報取得方法

*Messages* の更新情報取得には、antenna.lirs もしくは index.rdfをご利用ください。 豪傑アンテナLIRSからも取得可能です。