.「GLOBAL GARDEN(7) / 日渡 早紀」 「道端の天使(4) / 絵夢羅」 を読んで寝た。しかしそれにしてもよく死ぬ。 |
.神保町。数学書を眺めてたら マンガでわかる統計学とな。オーム社よお前もか。 |
.「しおんの王(1) / 安藤 慈朗, かとり まさる」 「Ns’あおい(2) / こしの りょう」を読んで寝た。 |
.そろそろやらんといかんかのう。まあ、難しいのは LC_COLLATE だけなんだが。 .LC_COLLATE も localedef(1) に関して言えば大して難しくないが、 libc 側の実装がややこしいし、それにデータフォーマットが引きずられる。 ユニバーサルな照合を実装すると、そういう機能が必要のない locale では無駄が多くなるので、ここもプラグインにするのかな、まぁ。 とりあえず単一ウェイト 1-to-1 マッピングしかサポートしないモジュールの シングルバイト版とマルチバイト版は簡単なので書くとして、 それ以外はどうしよう。 .その他の locale data に関しては、 大昔 Berkeley DB を使おうかと思ってた時期があったのだが、 iconv の時にソースを眺めてみて、あれは読み込み専用に使うにしては ちょっと重いことがわかったので、簡単な DB フレームワークを追加した。 これは ESDB とか *.alias.db とか *.dir.db とかに使われてる。 localedef にもそれが流用できるな。 Citrus の DB フレームワークは mmap して on-disk フォーマットのままで 扱えるように考えられた読み込み専用の hash 表になってる。 入れ子にもできる(はず)。 読み込み専用なのでエントリを追加したりするには一旦 dump しないといけないけど、locale のデータベースでエントリを 直接書き換える必要が生じることはまずあるまい。 .確か大昔 yamt さんが書きかけてた localedef があるので、 少なくともパーサに関してはそれを流用するのがよさそうだな。 .locdef-20010912.tgz というのが出てきたので見てみた。 collation element は multibyte 文字列に変換した後最長一致探索をかけてるが、 これって ISO2202 で困らないんだろうか。 しかしながら思ったよりはややこしくない模様。 |
.「お迎えです。 (3) / 田中 メカ」を読んで寝た。 |
.「dear(5) / 藤原 ここあ」 「機工魔術士-enchanter(6) / 河内 和泉」 「GET LOVE!!フィールドの王子さま(5) / 池山田 剛」 「天使じゃない!!(1) / しげまつ 貴子」 「天使じゃない!!(2) / しげまつ 貴子」 「天使じゃない!!(3) / しげまつ 貴子」 を読んで寝た。 |
.C で opaque なオブジェクトへのポインタを定義したいとき、 void * を使うとなんでも暗黙のうちにキャストされてしまって 検出の難しいプログラミングエラーを招きやすくなるので、 struct __foo_tag; /* 宣言だけで一切定義しない */ typedef struct __foo_tag *foo_t;などとするのは常套手段。これは基本的には C++ でも使えるイディオム。 実体のない型でも、そのポインタ変数は自由に定義できる: struct __foo_tag entity; /* 許されない */ foo_t pointer; /* 許される */ .ところが C++ でこれでは困るケースがある。 例外処理まわりでは、不完全な型を使えないのは当然として、 そのポインタまでも禁止されてる: void bar() throw (foo_t); /* 許されない */ void hoge() { try { throw (foo_t)0; /* 許されない */ } catch (foo_t ptr) { /* 許されない */ ... }ただし、void * 系だけは例外的に使える。 .これが問題になるようなケースでは、(1)void * に typedef するか、 (2)__foo_tag の本体のダミーを定義する: もちろん一長一短があって、(1) だと foo_t 型の変数にどんなポインタでも キャストなしで代入できてしまうし(foo_t 型の変数値を他のポインタへ 暗黙のうちに代入することができないのは C よりもマシだが)、 (2) だと __foo_tag な変数を作られてしまうことを禁止できない。 まあ、(1) は意図せず起こりがちであるのに対し、 (2) は(タグの命名規則にさえ注意すれば) 意図せずに __foo_tag な変数を作ってしまうということはないだろうから、 多少美しさに目をつぶっても後者にするほうが無難だと思う。 .ちなみに元ネタは NetBSD の iconv_t がこのテクニックを使ってるせいで AbiWord がコンパイルできないという話なのだが、 「そもそも iconv_t を throw するのがポータブルではない」 という soda さんの指摘がもっともであろう。 |
.高山本線(高山駅〜猪谷駅間)バスによる代行輸送について 。 ううむ、こないだ行っておいてよかった。 .平成16年新潟県中越地震 交通情報 。 臨時快速列車に用もないのに乗りに行くのはやめましょう。 .山陰本線 運転再開見込み 。 明日始発から。ちなみに出雲号はたぶん今日まで伯備線経由。 |
.「秋やすみ / CooRie」 「ケンタッキー・フライド・ムービー」 「リマスター版 トップをねらえ!「スクール・オブ・ロック / サントラ」 をポチっとな。 |