2007-01-01から1年間の記事一覧

バックグラウンドジョブを開始して、その終了を待たないでCGIの処理を終了する

問題。 普通に、PerlのCGIスクリプトで system( 'some_command &' ); exit;とか書けば、裏で some_command が実行されつつ、ブラウザ側からはCGI処理が完了したように見えるんじゃね、と思ったが、なぜか some_command の実行終了まで待たされた。原因。 som…

Thinkpad X60 + 外部ディスプレイ

最近、1024×768じゃ狭いんじゃないかという気がしてきたので、液晶ディスプレイを外付けしてみることにした。 構築したい環境は以下の通り: Thinkpad液晶 1024×768 + 外付け 1280×1024 の拡張デスクトップ 外付けの方が右側でかつプライマリモニタ Thinkpad…

Shift_JIS、能、1行コメント

なんかプログラムの挙動がおかしい。 cerrに吐かれるはずのログすら一部出ない。でも最終結果を見ると実行はされているようだ。 で、その原因切り分けたら以下のようなものだった。 Shift_JISで int main(){ // 利用可能 printf("hoge\n"); printf("fuga\n")…

HDDの電源オフからの復帰時のエラー(timeout)の対処法

背景と問題 FreeBSDでアイドル時のHDDの電源を切る方法としては、BIOSで設定するとか、ataidleを使うとかがあります。 ただ、HDDの電源を切った後、HDDにアクセスするとHDDの電源が入りますが、その際 ad0: TIMEOUT - READ_DMA48 retrying (1 retry left) LB…

doubleを一度メモリに入れると値がずれる

よくある話です。 浮動小数点演算ではまった話 - bkブログにあるのと本質的には同じ。 要約すると #include<stdio.h> double a[100]; int main(int argc, char *argv[]) { volatile union{ long long a; double d; } A, B; A.a = 0xfff0000000000001LL; B.d = A.d; //</stdio.h>…

Pervasives.compareしてはいけない型 (2): Set.S.t, Map.S.t, Big_int.big_int

Pervasives.compare というか、 = で比較できない、あるいはしても意味がない型について。 OCaml 3.10.0 (Cygwin) にてテスト。 Set.S.t Set.S.compare を使いましょう。Pervasives.compareで比較すると、集合として正しく比較できません。 module IntSet = …

華麗に型推論をすり抜ける

誤: print_string( (Printf.sprintf "%s = %s;\n" "a" "b") ^ (Printf.sprintf "%s = %s + %s;\n" "a" "b") (Printf.sprintf "%s = %s;\n" "a" "b") )正: print_string( (Printf.sprintf "%s = %s;\n" "a" "b") ^ (Printf.sprintf "%s = %s + %s;\n" "a" "b"…

list_map_and_concat

リストの各要素に0要素以上を対応させてつなぎたい時。

list_map_partial

type t = A of int | B of stringみたいな場合に、t listから A(i)のiだけ取り出して int list を作りたい時など。

Pervasives.compareできない型

let a = Big_int.succ_big_int Big_int.zero_big_int in let b = Big_int.unit_big_int in a = bとかすると Fatal error: exception Invalid_argument("equal: abstract value")と実行時に出る。 コンパイル時に型推論的にはじいてくれないだろうか。ちなみ…