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 --cui
Value 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.conf
handle: test.masao.nii.ac.jp
short: 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