The Man Who Fell From The Wrong Side Of The Sky:2009年1月中旬

[最新版] [一覧] [前月] [今月] [翌月]

2009/1/10(Sat)

昨日

花屋、不況の影響か知らんが切花の鮮度保持剤をくれなくなった、ぶー。
そもそもこの花屋、営業終了後には冷蔵庫で温度管理してないので
ちゃんとやってる店より痛みが早いのよな(そのかわり若干安い)。
次からは別の店にしよう。

SONY VAIO type Pがデモ機置いてあったので触ってきた、パンフ持って帰る人結構いた。
俺は現場にPC持込禁止になってからモバイラ足洗ったので買わんけど。
つかThinkPad X61のローンまだ残ってるしなー。

ジャンク箱から後玉汚れなMinolta MD 50mm/F1.7拾ってきた。
中性洗剤で汚れ落としたら全く問題ないレベル。
一緒にあったMinola X-500も気になったんだけど、汚れがヒドいのと
高速シャッターが速度変わってない気がしたのでヤメ、どうせX-700持ってるし。

風邪が相変わらず治ってないので連休は寝てる予定、これは欝だ…

OpenBSD + Citrusな環境でxenocara作ろうとしたらlibXpmがgettext-toolがねぇって
怒られた、X11がgettext呼ぶってーのもおっさんからすると感慨深いものあるが
まぁ中途半端にlibintlだけつっこんだおいらが悪いということで。
Makefile.bsd-wrapperのお作法知らんのとGNU gettextとか読むと胃に穴が開きそうなので
放置してたんだけど、NetBSDでもpgettextネタでpkgsrc方面で困ってるという話もあるし
そろそろ首突っ込まんといけんのかも。


2009/1/11(Sun)

今日

christos-time_tハジマタな。

ctype.hの_ctype_ tableの8bit → 32bit化作業をしなきゃならないんだよな。
ちゅうかあれ32bitだと大き過ぎてホントは16bitで充分なんだよな。

#define _CTYPE_A        UINT16_C(0x0001)        /* Alpha        */
#define _CTYPE_C        UINT16_C(0x0002)        /* Control      */
#define _CTYPE_D        UINT16_C(0x0004)        /* Digit        */
#define _CTYPE_G        UINT16_C(0x0008)        /* Graph        */
#define _CTYPE_L        UINT16_C(0x0010)        /* Lower        */
#define _CTYPE_P        UINT16_C(0x0020)        /* Punct        */
#define _CTYPE_S        UINT16_C(0x0040)        /* Space        */
#define _CTYPE_U        UINT16_C(0x0080)        /* Upper        */
#define _CTYPE_X        UINT16_C(0x0100)        /* Xdigit       */
#define _CTYPE_B        UINT16_C(0x0200)        /* Blank        */
#define _CTYPE_R        UINT16_C(0x0400)        /* Print        */
#define _CTYPE_I        UINT16_C(0x0800)        /* Ideogram     */
#define _CTYPE_T        UINT16_C(0x1000)        /* Special      */
#define _CTYPE_Q        UINT16_C(0x2000)        /* Phonogram    */

extern const uint16_t *_ctype_ __RENAME(___ctype_r50);

なぜ今の_RuneTypeが32bitなのかっちゅーと、wcwidth(3)用の情報まで
抱え込んでるからで、そもそもありゃ 先日修正したバグで判明したとおり
実装としてはマチガイなのよな。

どーせbinary compatibility気にしなくていいタイミングなので
_RuneTypeを16bit化して_ctype_とunifyするのと、wcwidth(3)用の情報は
別途8bitでフィールド追加するって感じか、めんどくさいだけで面白くもなんとも無い作業だ…

でもLC_CTYPE locale-dbは互換性の問題で16bitに変更できないので
_FileRune*から_Rune*作るときにon the flyで32bit(_RuneType)から
16bit(_NewRuneType)にしなきゃならんのか、それはそれで無駄なコストで
ケチケチな俺としては了承しかねるな、どうすんべや。

いっそ全部/usr/lib/localeに移してMDなデータにしてlocale-db formatも
Runeよりもっとマシなもんに再構成して一から出直したい気分だ…
せめてアレがcitrus_dbなkey/value形式だったらもっと柔軟に変更できるのだが。

やぱし/var/cache/localeかなー、on the flyでの変換コストはここで吸収しちまうと。
でも断(以下略

やはりRuneつーだけあって呪いの効果は絶大だ…

Please Kill Me読了、Lou Reed先生(the Velvet Underground)のアレっぷりには
いつも心が洗われる。 この顔

「俺の口にク○させてやる、どうだい、そういうの?」

と初対面の男をナンパし、断られると

「じゃあ俺が顔に皿載せるから、そこへ○ソしてもいい、それならどうだ?」

と斜め上な妥協点を提案するとか、HENTAI過ぎて神々しくもある。

斜め上な妥協点を提案するといえば、 どっかの党首はもうワンパターン過ぎで秋田。

Lou Reedですら売れない頃、タブロイド誌で殺人犯や性犯罪者の
写真モデルのアルバイトやってたんだから、仕事を選り好みしてちゃダメだよね。
ってどんな仕事だwwwそれwww


2009/1/12(Mon)

今日

某100円ショップのアイヨーなSR44酸化銀電池詰めて冬空に撮影に出たら
性能低下でシャッター切れねぇでやんの、ちっくしょー(アナゴさんAA略)
資本主義だろーが社会主義共産主義無政府主義だろーが結局は粗悪品ばかりの世の中よ。
世界地図でソ連を探したが見つからない、それは地図がソ連製で不良品だからだってジョークかよ。
アッカはリョーカをクチクする、おおなんかおそロシア風だ。

格差社会?社会主義国家日本が、やっとこさソ連に続いて崩壊しようとしてるだけですよ。
it's the end of the world as we know it, and i feel fine.

猫探してますのチラシ、見つかるといいですね、俺もまだ探してます。
もう10回目の満月がとてもキレイ。

満月の晩、モビィ・グレイプのように解散総選挙を祈願してCall Mr. Leeを
カラオケで熱唱する小沢民のジェスチャークイズ。

そういやTelevision(アナログ)、再結成Television(デジタル)って
いつの間にやらRichard Lloydは脱退して、Jimmy Rippが加入してんのね。
この人のギターは Wandering Spirits by Mick Jaggerの頃からファンなんだけど、この組合せはちょっと微妙な悪寒。
Tom Verlaineのソロに参加した奴はまだちゃんと聴いてないんでそのうちチェック。

「服を買いに行く服がない」からthe Velvet Undergroundの"All Tomorrow's Parties"の
歌詞を連想し、更にParties → Pantiesに誤変換されるこの幸せな脳味噌をどうにかしたい。


2009/1/14(Wed)

[NetBSD] nvi-1.81.6

uebayasiさんとこ読んで気になったのでnvi-1.81.6 + uim-fep でしばらく生活することにした。

いきなりLANG=ja_JP.eucJPの場合、NEC特殊文字0xADA1〜0xADFC(丸囲み数字など)が
uim-fep側から入力可能(つまりCP51932相当)なのに対して
当然のことながらlibc側のLC_CTYPEはそんな文字は機種依存文字(笑)で知らねぇもんで
libcursesの動作が不安定になって落ちたりするバグを発見してしもうた、orz

#0  0xbbacc920 in ?? () from /usr/lib/i18n/libEUC.so.4.4
#1  0xbbacd326 in _citrus_EUC_ctype_getops () from /usr/lib/i18n/libEUC.so.4.4
#2  0xbbb5ba96 in mbrtowc () from /usr/lib/libc.so.12
#3  0xbbbd5f3b in __waddbytes () from /usr/lib/libcurses.so.6
#4  0xbbbd600b in waddbytes () from /usr/lib/libcurses.so.6
#5  0xbbbcf972 in waddnstr () from /usr/lib/libcurses.so.6
#6  0x0804c785 in addstr4 ()
#7  0x080811b5 in vs_line ()
#8  0x08083281 in vs_paint ()

誰だ、cannaの辞書にCanna36p4/dic/ideo/words/necgaiji.tを入れたのは(海原雄山AA略
ってこれ最初っからだろな、そもそもcannaはNEC製だし。
でもkinput2 -cannaだと候補に出てこないんだよなー、丸付き数字。

nvi側でのillegal byte sequenceの場合の処理がダサいのだろうけどなぁ。
emacsならInvalid code point for charsetエラーで落ちたりはしないわけで。
さてどうやって直すか…

最近のHEADではkinput2が動いてない、なんぞこれ。

Program received signal SIGSEGV, Segmentation fault.
0xbb95a032 in _malloc_prefork () from /usr/lib/libc.so.12
(gdb) bt
#0  0xbb95a032 in _malloc_prefork () from /usr/lib/libc.so.12
#1  0xbb95a2e3 in free () from /usr/lib/libc.so.12
#2  0x08089096 in js_open_lang ()
#3  0x0808e865 in jl_connect_lang ()
#4  0x0808e9ce in jl_open_lang ()
#5  0x08060840 in jcOpen2 ()
#6  0x0805c158 in jcInitialize ()
#7  0x0805c6cd in Initialize ()
#8  0xbbafaf22 in CallInitialize () from /usr/pkg/lib/libXt.so.6
#9  0xbbafb850 in xtCreate () from /usr/pkg/lib/libXt.so.6
#10 0xbbafbf9a in _XtCreateWidget () from /usr/pkg/lib/libXt.so.6
#11 0xbbafc28f in XtCreateWidget () from /usr/pkg/lib/libXt.so.6
#12 0x0804bbce in main ()
(gdb)

つかこれWnn見に行ってるのか。

inputmethodといやー、SCIMももういちど調べんとなー、 前書いたpatchだとGTKで動作が変で
gtk-query-immodules-2.0が刺さったりしやがるからなぁ。

IIIMFの状況見ようとwww.openi18n.orgいったらサイトごと消えとる、なーむー。
svnリポジトリはまだ見えてるのでIIIMF SDKとかは大丈夫みたいだけど。


2009/1/15(Thu)

[NetBSD] netbsd-5

うはーcross build breakageの件、snj氏がcommit mailから判断してpull-upしてくれたわ。
ありがたや〜なんまんだぶ、releng teamカッコヨス。
ちゅうか内部では17 Jan 2009にはRC1出したいゆうとったから痺れ切らしたんだろ、ごめんよ…
俺も本業が4月リリースに向けて盛り上がってまいってるので
時間なくていろんな人からのメールの返事とか書いてないのだった。

[NetBSD] pkgsrc/wip/scim 他

scim_iconv.cppのお行儀があんま宜しくない、MB_LEN_MAXとか使っとるし。
iconv(3)を使うアプリが正しい使い方をするはずがない!

gtkimmodule周りのコードをちら見したところ、preedit_stringが
WideStringで定義されてるんだが、これ非__ISO_STDC_10646__環境では
wchar_tでなくucs4_tになるので、gtk2がこいつを何も考慮せずに
wcrtomb(3)なんかに渡したりするとアウトになりそうな悪寒、この辺から追ってみるかー。

utf8_wcstombs()でUCS4 -> UTF-8変換してからgtk2だかpangoだかに渡しとる。
glib2のgcharってUTF-8 hardwiredなんだっけ?

しかしFreeBSDでも-D__STDC_ISO10646__とか 勝手に定義しとるんで
同じような問題が出てもおかしくないんだが、そういう話も聞かんよな。
みんなja_JP.UTF-8 locale使ってるんだろけ…

つかscimはなんでわざわざ内部UCS4で書く必要があるのか理解に苦しむ。
普通にCSIで書けばいいのに、Unicodeなんぞ銀の弾丸どころか悪魔そのものだろ(ぉ

そいやnvi-1.81.6でもgtk frontendでucs2utf8()とかアレな部分を放置しとったな。
あと32bit clean patchをpkgsrc/editors/nviにmergeしてもらわんと。
いやほんとは以前ちょっとメールやりとりしたメンテナの方にpatch投げんとならんのだが。

それとvi.recoverが/usr/bin/viがbdb1で/usr/pkg/bin/nviがbdb3なもんで
同じ/var/tmp/vi.recoverを使われると混ぜるな危険になる件もどうしたもんやら。


2009/1/17(Sat)

[NetBSD] PR/40411

ひゃー。_DefaultRuneLocaleのwctrans tableでlazy initializeしとったか。
なのでconstにしちゃまずかったってこった、おいらのミステイク。

にしてもchristos氏がつっこんだ修正だと盛大にmemory leakするんですが(笑)
もうね(以下略
つかpull-upめんどくせぇなぁ…

これconstはずすよりも_DefaultRuneLocaleのlazy initialize止めるだよな。
そうすりゃ_DefaultRuneLocaleが_wctrans_initされることもないっちゅう。
でもextなfieldで困るんだっけ?そもそもなぜlazyしとるか良く判らん。

週明けくらいに直すか、いちお patch。
つかchristos-time_tこわい!

つかsend-prした人、直ってないってstatically linked なtcshをリコンパイルしてないっぽ。

あと昔locale -aでlocale.aliasも読む対応したときに off by oneやとったかヒドイw
locale -aの出力がところどころくっついとるわ。
やっぱり必ずstrndup(3)使おうぜってことですな(当時まだlibcに無かった)。


2009/1/18(Sun)

[NetBSD] 続PR/40411

patch作り直し、_wctrans_init()自体をnukeしてしまえちゅう感じ。
ただいまテスト中。

余談だけどlint(1)にC99の指示付初期化子を喰わせると、高確率で内部エラーになるのが困る。
今回runetable.cをC99スタイルで書き直そうとしたら↑にひっかかってしまった。

今日

手元にあるHDDがすべてSeagate製でした…さあ逝こうか…
つかまだ夏に買った500GB×2まだ封も切ってないのだが。

strndup(3)はGNU拡張ですが ISO/IEC TR24731-2にあるので、C1Xには入りそうな予感。

ちなみにGNU拡張にはstrdup(3)のワイド文字版wcsdup(3)はあれど
なぜかwcsndup(3)はないとゆー中途半端な状態、ふしぎ!

strdup(3)のalloca(3)版、strdupa(3)とかになるともう勘弁してちゅーかんじ。

ホワーイnvi 32bit clean patchのreleng-5 pullup requestはstallにされとるのだろ。
まぁ困るのはzh_CN.GB18030で4byte code入力する必要のある人だけなので
個人的にはどーでもいい、ちゅうかISO-2022-JP localeでまともに動かない件の調査を
そのうちやらんとならん方が先。

シゲッといえばthe Doorsですが(最近のリマスタだとシゲッハ〜イか)
うちのSeagateはとりあえず全部問題無しだった模様、ちゅうことで放置。
そういや大昔、某スタジオでAKAI DR4dにMicroPolice製のSCSI HDD新品をつけて
慣らし運転はじめたら、半日持たずにぶっ壊れて激しくふいたな。
あれテストせずに本番のレコーディングに使ってたら死ねたわ。
もう一台の方につけたQuantumは未だに壊れることなく動いてる。


2009/1/19(Mon)

[NetBSD] 続々PR/40411

朝起きたら('A`) constはずされてた、_Default*は書込み禁止が筋だろJK。
おちけつって、なんかもうほんと勘弁してくださいよ…。手元でconflictしまくリング。
5枝に対するpull-upとかもうマンドクセ。

ちゅうか前の修正で落ちなくなるはずなんだが(memory leakすっけど)
このsend-pr主、standalone(=static linked)なtcshを作り直してないだろ…
そりゃ永遠にダメだわ。

ちゅうわけであと半月は見(けん)を決め込もうと思ってたHEADをpost 64bit time_tに
入れ替える羽目になてしもた、こわいよー。

つかkernelとkmodだけ入れ替えた状態だとかなり怪しい動きするの。
この状態でscim-helper-managerを起動するとcore吐く死によるのだが
gdbで追ってみるとgettext(3) → open(2)で死んでたりしよる。
libcも入れ替えたら落ちなくなったけど、COMPAT_50が変なのかもしれず。

[NetBSD] pkgsrc/wip/scim

さっきのやつ、5.99.4に戻してみるとこう。

#0  0xbb05c126 in open () from /usr/lib/libpthread.so.0
#1  0xbbb0d46f in dcngettext () from /usr/lib/libintl.so.0
#2  0xbbb0e2e0 in dgettext () from /usr/lib/libintl.so.0
#3  0xbb90d01e in anthy_imengine_helper_LTX_scim_module_init ()
   from /usr/pkg/lib/scim-1.0/1.4.0/Helper/anthy-imengine-helper.so
#4  0xbbb73ec5 in scim::Module::load () from /usr/pkg/lib/libscim-1.0.so.8
#5  0xbbb66410 in scim::HelperModule::load ()
   from /usr/pkg/lib/libscim-1.0.so.8

うーんCOMPAT_50でなしに、libpthread絡みっぽ。
いいや5.99.7にしちまったし忘れんべ。

今日

※ただしイケメンに限る
※ただし美少女に限る
※ただしMMUのあるarchに限る

忘れないうちにTODO

  1. _ctype_ table as 32(or 16)bit
  2. LC_COLLATE
  3. multibyte regex(3)
  4. correct src/share/locale/* data
  5. more locale(1) work (escape when locale -k currency_symbol is 0x5C)
  6. more LC_TIME work (strftime %+ spec, ERA etc...)
  7. scanf(3) positional order
  8. iconv(3) M:N conversion
  9. multi-locale
  10. hide sys/localedef.h
  11. upgrade GNU gettext-0.17, or BSDL gettext-tools :-)
  12. wcurses audit
  13. nvi-1.81 audit
  14. locale specific wctype/wctrans supports
  15. iconv GNU emulation?(//TRANSLIT, //IGNORE, iconv_hook etc...)
  16. localedef(1)
  17. pcc(1) wchar_t supports
  18. documentation

あたりか、全部終わるのはいつになるやら…


[ホームへ] [ページトップへ]