基本的に落書き帳/メモ帳/備忘録なので、 わりと間違っていたり、 数分後とか後日とかに見たら、 いきなり消えていたり書き換わっていたりとかあります。
(firefox-bin:62357): Pango-WARNING **: failed to create cairo scaled font, expect ugly output. the offending font is 'M+2VM+IPAG circle 10.263671875' (firefox-bin:62357): Pango-WARNING **: failed to create cairo scaled font, expect ugly output. the offending font is 'M+2VM+IPAG circle 9' (firefox-bin:62357): Pango-WARNING **: shaping failure, expect ugly output. shape-engine='BasicEngineFc', font='M+2VM+IPAG circle 9', text='Japanese (' (firefox-bin:62357): Pango-WARNING **: shaping failure, expect ugly output. shape-engine='BasicEngineFc', font='M+2VM+IPAG circle 10.263671875', text=' ' (firefox-bin:62357): Pango-WARNING **: failed to create cairo scaled font, expect ugly output. the offending font is 'M+2VM+IPAG circle Bold 12.0029296875' (firefox-bin:62357): Pango-WARNING **: failed to create cairo scaled font, expect ugly output. the offending font is 'M+2VM+IPAG circle Bold 10.5244140625' (firefox-bin:62357): Pango-WARNING **: shaping failure, expect ugly output. shape-engine='BasicEngineFc', font='M+2VM+IPAG circle Bold 10.5244140625', text='Japanese (' (firefox-bin:62357): Pango-WARNING **: shaping failure, expect ugly output. shape-engine='BasicEngineFc', font='M+2VM+IPAG circle Bold 12.0029296875', text=' 'とか出て、 IPA M-plus TrueType Font と Sazanami Bitmap Font を ~/.fonts.conf で連結した 自作オリジナルフォントがこけた(文字が全て空白になる)。 web で検索してみた所、 「Linux の Firefox 3.0 Beta で、 --enable-native-uconv を付けるとそうなる」、 とか言う記事が見つかったが、 そもそも FreeBSD の ports だと --enable-native-uconv が付いていないらしい?、 試しに --disable-native-uconv してみたが変化無し。 chrome 回りが変わっているらしく、カスタマイズがふっとんでいる。 locale が英語のみ。 一部の add-on が動かない……、 Petname Tool とか Tab Mix Plus とか痛いかも。
kernel: usb2: host controller process error kernel: usb2: host controller halted kernel: DCRH: Restarting USB controller kernel: DCRH: USB controller restartedまで行った所で、丸ごとフリーズした。 駄目らしい。 でも、 USB コントローラのリセットした所までをログに記録できている辺りが……。
err:wineconsole:WCUSER_SetFont wrong font err:wineconsole:WINECON_Fatal Couldn't find a decent font, abortingとか出て、全く動かない。 でも env LANG=C とかやると動いた。 どうやら「MS ゴシック」フォントをみつけられていない気がする。 気がするだけ、根拠無し。
Assign( FP, LOGFILE ); {$i-} Append( FP ); {$i+} if 0 <> IoResult then begin Rewrite( FP ); end;とか言う、コンパイラ依存していそうな方法しか見つからなかった。 どうすればいいのだろう。
あれ、またなんか Anthy の変換がおばかになっている。
辞書溢れにはまだたっぷり余裕がある筈なのだが。
私の文体の傾向が変わったのか?。
Procedure Mark_GG_AbsolutelyNothing( GP: GearPtr ); type TCAP_proc = Procedure( Part: GearPtr ); Procedure CheckAlongPath( GP: GearPtr; SubProc: TCAP_proc ); var Part: GearPtr; begin Part := GP; while (NIL <> Part) do begin SubProc( Part ); CheckAlongPath( Part^.SubCom, SubProc ); CheckAlongPath( Part^.InvCom, SubProc ); Part := Part^.Next; end; end; Procedure Set_GG_AbsolutelyNothing( Part: GearPtr ); begin CheckAndNIL_Grabbed_Gear('Mark_GG_AbsolutelyNothing()', Part); Part^.G := GG_AbsolutelyNothing; end; var Part: GearPtr; SubProc: TCAP_proc = TCAP_proc(Set_GG_AbsolutelyNothing); begin Part := GP; SubProc( Part ); CheckAlongPath( Part^.SubCom, SubProc ); CheckAlongPath( Part^.InvCom, SubProc ); end;デバッガで追いかけたら、
Breakpoint 1, MARK_GG_ABSOLUTELYNOTHING (GP=0x289c6360) at arenascript.pp:299 299 SubProc( Part ); (gdb) p part $1 = (GEARPTR) 0x289c6360 (gdb) p part^ $2 = {G = 13, S = 0, V = 12, SCALE = 0, STAT = {0, 0, 0, 0, 0, 0, 0, 0}, SA = 0x28a4bce0, NA = 0x290fe4a0, NEXT = 0x289c63a0, SUBCOM = 0x0, INVCOM = 0x0, PARENT = 0x0} (gdb) s SET_GG_ABSOLUTELYNOTHING (PART=0x80e47d0, parentfp=0x289c6360) at arenascript.pp:284 284 if DEBUG_DONOT_NIL_Grabbed_Gear_when_Mark_GG_AbsolutelyNothing then begin (gdb)だそうだ。 関数内関数だと parentfp が余計に付いてこけるみたい。 Set_GG_AbsolutelyNothing を Mark_GG_AbsolutelyNothing の外に出して、 普通の関数を引数にすると、
Breakpoint 1, MARK_GG_ABSOLUTELYNOTHING (GP=0x289c6360) at arenascript.pp:299 299 SubProc( Part ); (gdb) p part $1 = (GEARPTR) 0x289c6360 (gdb) p part^ $2 = {G = 13, S = 0, V = 12, SCALE = 0, STAT = {0, 0, 0, 0, 0, 0, 0, 0}, SA = 0x28a4bce0, NA = 0x290fe4a0, NEXT = 0x289c63a0, SUBCOM = 0x0, INVCOM = 0x0, PARENT = 0x0} (gdb) s SET_GG_ABSOLUTELYNOTHING (PART=0x289c6360) at arenascript.pp:284 284 if DEBUG_DONOT_NIL_Grabbed_Gear_when_Mark_GG_AbsolutelyNothing then begin (gdb)で通った。 試しに
Procedure Mark_GG_AbsolutelyNothing( GP: GearPtr ); type TCAP_proc = Procedure( Part: GearPtr; dummy: GearPtr ); Procedure CheckAlongPath( GP: GearPtr; SubProc: TCAP_proc ); var Part: GearPtr; begin Part := GP; while (NIL <> Part) do begin SubProc( Part, Part ); CheckAlongPath( Part^.SubCom, SubProc ); CheckAlongPath( Part^.InvCom, SubProc ); Part := Part^.Next; end; end; Procedure Set_GG_AbsolutelyNothing( Part: GearPtr ); begin CheckAndNIL_Grabbed_Gear('Mark_GG_AbsolutelyNothing()', Part); Part^.G := GG_AbsolutelyNothing; end; var Part: GearPtr; SubProc: TCAP_proc = TCAP_proc(Set_GG_AbsolutelyNothing); begin Part := GP; SubProc( Part, Part ); CheckAlongPath( Part^.SubCom, SubProc ); CheckAlongPath( Part^.InvCom, SubProc ); end;とかやってみたら、
Breakpoint 1, MARK_GG_ABSOLUTELYNOTHING (GP=0x289c6360) at arenascript.pp:299 299 SubProc( Part, Part ); (gdb) s SET_GG_ABSOLUTELYNOTHING (PART=0x289c6360, parentfp=0x289c6360) at arenascript.pp:284 284 if DEBUG_DONOT_NIL_Grabbed_Gear_when_Mark_GG_AbsolutelyNothing the (gdb) p part $1 = (GEARPTR) 0x289c6360 (gdb) p part^ $2 = {G = 13, S = 0, V = 12, SCALE = 0, STAT = {0, 0, 0, 0, 0, 0, 0, 0}, SA = 0x28a4bce0, (gdb)……通った。でもまずいだろうなぁ。 思いっきりコンパイラ依存だろうし。 クラスの継承を使うのが、真っ当な方法だろうなぁ……。
AllowOverride Optionsして、適当な .htaccess で
AddLanguage ja .ja AddLanguage en .en LanguagePriority en ja Options +MultiViewsすれば、 クライアントが日本語ページを要求した場合は index.html.ja を、 クライアントが英語ページを要求した場合は index.html.en を、 クライアントがそれ以外の言語ページを要求した場合は index.html.en を、 送信する様になるらしい。 クライアントが index.html.ja か index.html.en を直接指定した場合は、 それが拡張子 .html のコンテンツタイプとして送られる。
AllowOverride Options Indexesして、適当な .htaccess で
DirectoryIndex index index.html AddLanguage ja .ja AddLanguage en .en LanguagePriority en ja Options +MultiViewsすれば、 クライアントが日本語ページを要求した場合は index.html.ja(優先)か index.ja.html を、 クライアントが英語ページを要求した場合は index.html.en(優先)か index.en.html を、 クライアントがそれ以外の言語ページを要求した場合は index.html.en(優先)か index.en.html を、 送信する様になるらしい。 どちらも、index.html があると、index.html が最優先で送られている気がする。
usb2: host controller process error usb2: host controller halted usb2 regs: cmd=0080, sts=0030, intr=000f, frnum=06c2, flbase=3e10ab08, sof=0040, portsc1=0095, portsc2=0080 intrs=41171 QH(0xc4fc6f80) at 3dfdaf80: hlink=3dfdafa2 elink=00000001……、見かたが判らない。 そう言えば FreeBSD/amd64 でも、 負荷が高い時に ugen とか ucom とか言ったデバイスが頻繁に落ちるのだよな。
printf("pthread:%p", pthread_self() );とかやっていたら、 GNU/Linux で 「pthread_t はポインタ型じゃねぇ」 とか言ってコンパイルしてくれなかった。
printf("pthread:%p", static_cast<void*>(pthread_self()) );とかやったら、今度は 「pthread_t から void* への変換は static_cast じゃねぇ」 とか言ってコンパイルしてくれなかった、 ちなみにこれを reinterpret_cast にしてしまうと BSD系でコンパイルできない。
printf("pthread:%"PRIuPTR", reinterpret_cast<uintptr_t>(pthread_self()) );とかやったら、今度は 「pthread_t から uintptr_t への変換は reinterpret_cast じゃねぇ」 とか言ってコンパイルしてくれなかった、 ちなみにこれを static_cast にしてしまうと BSD系でコンパイルできない。
printf("pthread:%"PRIuMAX", reinterpret_cast<uintmax_t>(pthread_self()) );とかやったら、今度は 「pthread_t から uintmax_t への変換は reinterpret_cast じゃねぇ」 とか言ってコンパイルしてくれなかった、 ちなみにこれを static_cast にしてしまうと BSD系でコンパイルできない。 ……。 もう策が思いつかなかったので、 configure で、 "p" と PRIuMAX と PRIu64 から PRIu8 までと "l"PRIu32 での printf() を試して、ウォーニングが出ない奴を使う様にした。 …… configure 使わない環境だと、 BSD系と SysV系の両対応にできないよなぁ……。
% ./configure --prefix=working_directory --build=i386-portbld-freebsd6.3 % gmake % gmake installして、
% env LD_LIBRARY_PATH=working_directory/lib gdb working_directory/bin/anthy-agent --personality=testする。
aiueo (space) (esc)(space) PRINT_CONTEXTとかやると、 「あいうえお」と入力されて、 変換して、 キャンセルしてまた変換して、 変換候補一覧の判定状況が表示される。
「かな漢字変換 anthy で、個人用学習データを活用して変換結果の改善を目指すパッチ」
更新。
patch0, patch1, patch2 完成。
「かな漢字変換 anthy で、個人用学習データを活用して変換結果の改善を目指すパッチ」
更新。
patch3 完成。
patch4は開発・デバッグ中。
DirectoryIndex index index.html index.shtmlとかやっていると、 クライアントが "http://www.example.jp/~hoge/moge/" にアクセスした時の Request_URI が "/~hoge/moge/index" になっているっぽい。
オリジナルの Anthy にバグを見つけた。
xstr型のファイル出力(たぶん学習データの記録)を行う際に、
中身の文字列ポインタが NULL とか文字列が 0文字の時に、
メモリの不正アクセスを行ってしまう。
まぁ通常ならば、そんな文字列は扱わないんだけれど。
オリジナルの Anthy に2匹目のバグを見つけた。
学習データに
--- OCHAIRE +あみめのてんが 2 4 "網目の" 3 "点が" +あみめじょうのうえに 2 7 "網目状の" 3 "上に"とか言う項目がある状態で「あい」と入力して変換すると、 valgrind でメモリの不正アクセス警報が出る。
ADD "OCHAIRE" S"あああ" N1 N3 S"あ" ADD "OCHAIRE" S"ああい" N1 N3 S"あ"だけある状態で「あ」を変換しても発症した。
ADD "OCHAIRE" S"ああ" N1 N3 S"あ" ADD "OCHAIRE" S"あい" N1 N3 S"あ"だけある状態で「あ」を変換すると発症しないが、 これは単純に、 オーバーランがメモリ割り当てのブロックサイズの中に収まっているので 発見できない、 と言う理由だと思われる。
src-worddic/record.c:762 で xs.str = name->str; しているのに、
src-worddic/record.c:767 で name->len を無視して xs.len = i; している。
for () の開始を name->len でも切らんと駄目だろうな。
オリジナルの Anthy に3匹目のバグを見つけた。
anthy-agent を使って変換を行った時に注目文節の移動をすると、
未初期化のメモリから読み出しを行っている。
これは多分、valgrind の様な検査ツールを使わないと検出できない
(BSD系の malloc.conf の J でも無理)。
ただ、anthy-agent を使っていなければ発症しない。
「かな漢字変換 anthy で、個人用学習データを活用して変換結果の改善を目指すパッチ」
更新。
patch4 が動作確認&デバッグへ移行。
「かな漢字変換 anthy で、個人用学習データを活用して変換結果の改善を目指すパッチ」
patch4 の大まかな動作確認は完了。
あとは実地で試すのみ。
Anthy 個人学習データ重視版。
CAND_HISTORY の重み付け調整をしくじったらしい、順位がたまに間違っている。
あと、記号を単文節とする OCHAIRE を記録しない様にした為に、
4文節未満で必ず句読点や記号を入れた連文節で変換すると、
全く OCHAIRE を記録しなくなる……、
これは予想通り。
↑ オリジナル版の Anthy からこのかたずっと、 OCHAIRE のスコアリングがちと軽い気がする。
「かな漢字変換 anthy で、個人用学習データを活用して変換結果の改善を目指すパッチ」 patch4 修正。
「かな漢字変換 anthy で、個人用学習データを活用して変換結果の改善を目指すパッチ」 patch4 修正。
Mailbox = Local-part "@" Domain Local-part = Dot-string / Quoted-string Dot-string = Atom *("." Atom)なので、 .@ だと Local-part の Dot-string にマッチしないから RFC 違反だ。 gmail で拒否するのは「正しい」。 Quoted-string にすれば、RFC準拠だと思う。
"User-Agent: Mozilla/4.07 [ja_JP.EUC] (X11; I; MarkAgent FreeBSD 2.2.8-RELEASE i386; Nav)"とか言う物が。 今更本当に FreeBSD 2.2.8 ?。 確かに、コンパクトで安定していてバランス良かったけどさ。
% sleep 1 ; xset dpms force off ;xset qしてみたら、
DPMS (Energy Star): Standby: 1920 Suspend: 1980 Off: 2100 DPMS is Enabled Monitor is Offだと。 DPMS でモニタが切れた後に、誰かが入れ直しているのか……。 そういえば、green_saver.ko でも DPMS が有効にならないんだよな……。