01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
217.70.109.248 - - [29/Dec/2004:08:18:11 +0900] "POST /nile/ HTTP/1.1" 302 5 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Fuck you (+http://www.go-to-the-nahuy.com); .NET CLR 1.1.4322)"217.70.109.248 - - [29/Dec/2004:08:18:16 +0900] "GET /nile/?FrontPage HTTP/1.1" 200 38404 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Fuck you (+http://www.go-to-the-nahuy.com); .NET CLR 1.1.4322)"<Limit POST> Order Deny,Allow Deny from 209.242.128.0/24 219.128.0.0/14 219.136.0.0/15 61.140.0.0/14 61.144.0.0/15 61.146.0.0/16</Limit>../src/mkmecabdic(1/5): reading connection matrix ... done!(2/5): writing connection matrix (5 x 1145 x 371 = 2123975) ... done!make: *** [da.me] セグメント例外 (core dumped)% sudo zabom --cuiValue too large for defined data typeとかエラーを出す。 どうやらファイルサイズが 2G を越えているのが原因らしい。 UNIX では「2G の壁」というものが存在する。 これは lseek() など、ファイル内の読み出し位置を移動する関数に 与えるオフセット値が伝統的に signed long であるためである。 signed long では 2147483647 、要するに 2G バイトまでしか表現できないので これを越えると単に fseek()に渡せないだけでなく、 内部の位置計算処理に多大な混乱が起こる (ちなみに相対位置指定のために負の値も必要)。 最近の UNIX では 2G を越えるファイルもサポートしている。 ただし、従来のプログラムが混乱することを防ぐために 2G を越えるファイルは 通常の open() では開けない (エラーになる)ようになっている。 前述のエラーメッセージは 2G を越えるファイルを開こうとしたときに perror() が返すエラーメッセージである。 んで、2G を越えるファイルを使いたいときは 以下のような definition を入れてコンパイルすればいいらしい。 gcc hoge.c -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 こうすると、stdio.h の中で、 open() や lseek() とかを 2G 以上のファイル対応の関数にマップしなおしてくれるようだ。 オフセット指定の型は off_t 型となっていて、これに対応する実際の型も従来の long から long longになる。 long long 型はまだ ANSI 規格にはないらしいのだが、 gcc では 64 bit の整数型として実装されている。 多分ほかのコンパイラにもあるのだろう。 これで、コンパイルし直せばなんでも OK かというとその辺はちょっと怪しい。 off_t 型を int や long に代入するというようなコードは十分あり得るからだ、 まあこういう場合はおそらく警告が出るだろう。 % cat $GETAROOT/etc/ci.confhandle: test.masao.nii.ac.jpshort: test% $GETAROOT/sbin/mkw $handle $GETAROOT/data/$handle/freqfile% $GETAROOT/bin/dumpwam $handle cw_row% $GETAROOT/bin/dumpwam $handle cw_col% $GETAROOT/bin/dumpwam $handle xr_row% $GETAROOT/bin/dumpwam $handle xr_col夜の携帯メールは迷惑?? 04.11.19 10:05:30 りんご友人の携帯に、夜の11時ごろメールを送りました。 次の朝、少し怒ったようなメールが届きました。 「11時過ぎのメールは勘弁してください。もう寝てます」と。私は携帯でメールはしていないので、パソコンと 同じ感覚で、24時間オーケーなものだと思っていましたが、携帯だと、少し感覚が違うようですね。 個人差もあるのかもしれませんが、、。今後携帯メールを送る際には、送っていい時間帯とか確認しなくちゃいけないなぁなんて思いました。皆さんはいかがですか?% ./configure --with-gmake --prefix=$DIR% make