50万ほどレコードのある DB のテーブルから、1レコードずつ読み出して、ひとつのフィールドの値(10桁の10進数)を1秒に1回ずつインターネットの向こうに投げる。
ひとつだけなら良いのだが、同時に何本も走ると DB への負荷が重たくなりすぎるので、最初にまとめて読み出して、DB へのアクセスを減らすことにした。
10進で10桁だから 4byte の int に収まる。500,000 × 4 = 2,000,000。メモリ 4G の Linux で動いているのだからこれぐらいは問題ないだろうと配列に放り込んでいったら、途中でインタープリターがひとつのプログラムに割り当てるメモリの最大値 16M を使い切ったとエラーが出てくる。
PHP ってフツーの配列も連想配列として扱ってるの ???
フツーの Linux 屋さんなら使い捨ての名前のテンポラリファイルを作ってそこに吐き出させるのだろうが、面倒くさいのでバイナリー変換して文字列として並べた。要は C の配列を自前で作った。久しぶりのバイナリ操作だったので嵌るかと思ったが、意外とあっさり動く。
この辺は組み込み屋の血だろう。
一緒にコードをメンテしている相方は元 Java プログラマ。こういうロジックを見たらなんというか...。
ま、ツールだから良いことにしよう (^^;
金曜日, 1月 14, 2011
火曜日, 1月 11, 2011
月曜日, 1月 10, 2011
彼の国の DIY
古い AV アンプの調子が悪くなって、あれこれ弄り回していたのだが、昨日、壊す覚悟で大修理(?)を決行した。
そのとき、メインアンプに使われているハイブリッド IC の型番で検索をかけたら結構な数のページが出てきたのだが、これが全部英語のページ。
最初のページを開くと、この石をまだ売っていて、且つ三洋の OEM であることがわかる。三洋の品番で調べたらデータシートまで出てきた。修理のための部品が手に入らないか?などという書き込みも掲示板にある。中古部品として流通もしているようだ。本体を壊してしまったので、パワーアンプの IC だけ外してただであげる、という人までいる。
決して高級とは言えないし、新しくもない AV アンプを修理して使っている人がそれなりにいる。
彼の国の DIY は層が厚い。
そのとき、メインアンプに使われているハイブリッド IC の型番で検索をかけたら結構な数のページが出てきたのだが、これが全部英語のページ。
最初のページを開くと、この石をまだ売っていて、且つ三洋の OEM であることがわかる。三洋の品番で調べたらデータシートまで出てきた。修理のための部品が手に入らないか?などという書き込みも掲示板にある。中古部品として流通もしているようだ。本体を壊してしまったので、パワーアンプの IC だけ外してただであげる、という人までいる。
決して高級とは言えないし、新しくもない AV アンプを修理して使っている人がそれなりにいる。
彼の国の DIY は層が厚い。
登録:
投稿 (Atom)