_ [comp] mozilla history.dat どうにかして

mozilla の history は netscape 時代から 9999 日保存する設定になっているので、現在 50M 近くある。このため、mozilla を起動した後、history の処理に膨大な時間がかかってしまう。で、常々ダイエットしなければと思っているのだけれども、mozilla の history.dat に使われている mork とかいう format はひどすぎる。さっぱり理解できない。 で、ここのところ mork に関する文献やらプログラムやらを探していたが、ようやく見つけた。when the database worms eat into your brain に mork.pl という perl script が置いてあるので、食わせてみた。めっちゃスラッシングして OOM Killer に perl が殺された。さすがに 50M 近くは無謀だったか…。とりあえず足掛りは見つけたので、自分で何とか作ってみるか…。 あと直接関係ないけど、そこの weblog の BBS では、mork とその作者について下品な 4 文字言葉を用いてボロクソに書いてあるなぁ。当たり前か。

_ [debian] timidity 2.13.0-rc1-CVS20040221-1

これになって libgtk1.2 を要求しなくなったので、あれ?いつの間にか GTK+2 対応になってた?と思ったら、timidity-interfaces-extra のほうで libgtk1.2 を持つようになってただけだった。ちぇ。

_ [debian] lm-sensors 2.8.5-3vd1

とりあえず CVS から引っ張ってきて作成。CVS source に lm-sensors_2.8.5-3.diff.gz を当てると、2.8.5 と CVS の差分が一部含まれているようで rej が出るが無視して OK。

_ [debian] include/linux/version.h 消滅問題

2.6.4-mm1 and -mm2: include/linux/version.h missing (vanilla ok) によると、2.6.4-mm* では make clean で include/linux/version.h を消すようになっていて、make-kpkg がコンパイル完了後に make clean を実行するから、ということのようだ。ということで、書かれている通り、/etc/kernel-pkg.conf に

do_clean := NO

を追加してみた。

_ [debian] tdiary 1.5.6+20040315-0vd1

作成。 ついでにレイアウトとかちょっと変えてみる。カテゴリ一覧を出力できるようになったので早速追加。ん、debain って何だ… typo 発見、ということで修正。

_ [comp] timidity GTK+2 対応

結構大変だ…。まずは gtk-config を pkg-config gtk+-x11-2.0 に交換しただけで make し、コンパイルエラーやら警告やらを潰す。よくわからない部分は、他の GTK+1 アプリに対する GTK+2 移行 patch とか、GTK+2 なアプリのコードを参考に手探りで。

  • GTK_SIGNAL_FUNC を G_CALLBACK に変更。
  • gtk_accel_group_get_default を gtk_accel_group_new に変更。
  • gtk_tooltips_set_colors は消滅したので削除。
  • GtkText は depracated につき、GtkTextView に変更。

と、他にもまだまだあるんだろうけど、ここで GtkTextView にはまる。うまいこと描画できなかったり、自動でスクロールしてくれなかったり。いいもの見つけた。> Scroll to the end of a TextView ここで例示されているコードをそのままぶち込んだら一部おかしいようだが、スクロールはするようになった。あとできちんとチェックすることにして次。コメントとかに含まれてる日本語を表示しようとする際に、

(<unknown>:14614): Gtk-CRITICAL **: file gtktextbuffer.c: line 543 (gtk_text_buffer_emit_insert):
assertion `g_utf8_validate (text, len, NULL)' failed

とか出るし、日本語部分も表示されない。g_utf8_validate について調べてみると、文字列が UTF-8 かどうかを調べる関数のようだ。GTK+2 のウィジェットに渡す際は UTF-8 じゃないと駄目ってことらしい。MIDI に含まれてる日本語は(多分) Shift-JIS ばっかりだろうなー。ということで、変換してやる。

gchar *message_u8;
:
message_u8 = g_locale_to_utf8( message, -1, NULL, NULL, NULL );
:
gtk_text_buffer_insert(textbuf, &end_iter, message_u8, -1);
:
g_free( message_u8 );

こんな感じ。Gtk-CRITICAL も出なくなったし、日本語も表示されるようになった。 でもまだまだ終わらない。