9 月から使っているパソコン(DELL の Vostro 200)はいろいろアレで大変なんだけど、PS/2 コネクタがないのには参った。なので、以前買った PS/2 キーボードとマウスをUSB にするアダプタを使っていたんだけど、先週くらいからキーの反応が悪くなってしまって、連続して打ったキーのいくつかが入らなくなっていた。「よろしくおねがいsます」みたいな。
で、今日健康診断のついでに新宿ヨドに行ってきて、バッファローコクヨサプライ(旧アーベル)の AU01PSG というのを買ってきたら、問題なく動いてるようだ。これは、コネクタがひとつしかないもので、マウスかキーボードのどちらかしか変換できないんだけど、マウスは USB のを使ってるので問題なし。これで快適なキー入力が戻ってきた。
前回の日記の続きみたいなもの。
検索ワードの日本語対応をまじめにやろうと考えて、いろいろ試行錯誤していたんだけど、パフォーマンスや正確さ・コストを考えて、nkf を使って文字コード判別 & 変換を行うことにした。参考にしたのは、libnkf-ruby のコード。C なんて滅多に使わないから、いろいろハマったけど、なんとかうまく変換できるところまでいった(これに一日かかるっていうのはどうよ… orz)。
それはいいんだけど、最終的に html ファイルに書くところで SEGV で落ちてしまうようになった。何が悪いんだか全くわからなくて、ソースとにらめっこ。どうやら、書いたコードが悪いのではなくて、nkf のソースを include するだけでこうなってしまうことがわかった。
gdb で落ちるところをみてみると、こんな感じ。
Program received signal SIGSEGV, Segmentation fault.
0xb7e036c9 in vfprintf () from /lib/libc.so.6
(gdb) bt
#0 0xb7e036c9 in vfprintf () from /lib/libc.so.6
#1 0xb7e0c8e2 in fprintf () from /lib/libc.so.6
#2 0x08050792 in td_transfer_str (value=0x80ce900 "3.05 Kb")
at output.c:149
#3 0x08051d92 in hourly_total_table () at output.c:957
#4 0x0805b5a9 in write_month_html () at output.c:539
#5 0x0806c457 in main (argc=Cannot access memory at address 0x0
) at awffull.c:1096
(gdb)
「libc の中かよ!」と思いつつも、原因がわからず途方にくれていたんだけど、ぐぐってみたら「libc6: Segmentation fault in printf()/vfprintf()/strlen()」というのがあった。この件は全く違う話なんだけど、もしかして libc のバグかも!? と思って etch 環境で同じソースをビルドして実行したら全く問題なし…。gotom 先生なんとかしてくれよとか思ったけど(ヒドい)、試しにこの etch バイナリを unstable に持ってきて動かしたら…動くんだなこれが。ということは、gcc のバグなのかなぁ? それとも、gcc がまともになったから動かなくなったのか…。
apache のログ解析を行うときに、時間を localtime にあわせるためにsugi 氏のパッチを使ってみたんだけど、ノーマル状態より極端に遅い。
ノーマル状態: 1466667 records (23 bad) in 35.72 seconds, 41060 l/sec force localtime パッチをあてた状態: 1466667 records (23 bad) in 657.49 seconds, 2230 l/sec
で、調べてみたら mktime() が遅いみたい。
mktime() を呼び出しているところを定数にした場合: 1466667 records (23 bad) in 40.45 seconds, 36258 l/sec
で、同じのを unstable(ほぼ同じ性能のマシン)で実行すると
1466667 records (23 bad) in 61.25 seconds, 23945 l/sec
なので、etch の mktime() の性能が極端に悪いようだ。
ひさびさの日記.
最新の iiimf 関連のパッケージのできがよくなくて,libgtk のアップグレードにともない,gtk immodule が使えなくなってしまった.しばらく xim(iiimf-client-xim)を使っていたんだけど,これが超不安定.ときどき入力が変になることがあって,復旧させるにはアプリの再起動しかない(結局,X のログインセッションからやりなおしたりとか…).
なので,この不安定さに嫌気が差して,scim-anthy を使っていたんだけど….これは自分の使い方ではストレスがたくさんたまってしまう….助詞立ち上がりとかをよく使うので,最初の候補が悲惨な変換になってしまう.しばらく学習させればいけるかなと思ったけど,そう言うレベルではなさそう.なので,強引に問題を解決させて,ATOK を使うことにした.
最新の iiimf deb package で atokx2 を使うには以下の問題がある.
3. はともかく,1. 2. だけでも直したいので,古い im-sdk のソースをちょっといじって,あたらしいパッケージを作ってみた.
deb http://ftp.arege.jp/debian-arege unstable im-sdk deb-src http://ftp.arege.jp/debian-arege unstable im-sdk
とりあえずこれを使えば,なんとか使えるようにはなった.やっぱりこれじゃないとダメだねぇ.
_ Momokuri's Memo - Code readers daily [Japanese]:IIIMF/ATOK/SCIM 最近のiiimf関係の活動は、放置気味で、かつdebian packageのメ..
_ 富山 解体工事:富山 解体工事 富山 解体工事