ドスパラのCore i3マシンでLinuxを動かしていることは以前も書きましたが... ときどきemacsなどでファイル編集していると saveすると帰ってこない ことがあるのに気付いた。そんなしんどい作業をさせている訳ではないのに。
/var/log/messagesを読むとぽつぽつこんなエラーが。
May 25 06:42:05 debian kernel: [58768.492839] updatedb.mloc D 0000000000000000 0 10355 10351 0x00000000 May 25 06:42:05 debian kernel: [58768.492845] ffff880137a7d4c0 0000000000000086 0000000000000000 ffff880037bda690 May 25 06:42:05 debian kernel: [58768.492851] ffff8801330d8000 00000000012400a0 000000000000f8a0 ffff880037bebfd8 May 25 06:42:05 debian kernel: [58768.492856] 00000000000155c0 00000000000155c0 ffff880135083170 ffff880135083468 May 25 06:42:05 debian kernel: [58768.492860] Call Trace: May 25 06:42:05 debian kernel: [58768.492873] [<ffffffff81176f6f>] ? generic_make_request+0x299/0x2f9 May 25 06:42:05 debian kernel: [58768.492920] [<ffffffffa018ecfa>] ? __ext3_get_inode_loc+0x24a/0x29f [ext3]
kernel panicにこそなっていないものの、ext3の スタックダンプは尋常な事態じゃない...さらに調べてみると ディスクのランダムアクセスが混んだ時だけ起きていることがわかった。 udpatedb動いたくらいでダメとかどういうことなの.....
これはディスクがイカれたかな?と思って
# hdparm -t /dev/sda
などとシーケンシャルベンチをかけてみると5400rpmのHDDにも関わらず、 80MB/s以上出ており 、特段不具合が起きてるとは考えにくい。
マシンが壊れたかな?と思って、Windows7で動いていた(ぉ)マシンを 潰してDebianを再インスコしたんだが、しばらく使っていると(ここポイント) やはり同様のエラーを吐くようになる。
困ったなあ。同時期に買ったサーバ用のAMD 785G群は全く問題なく動いてる わけだが。H55は、CentOSもDebian lennyも入らなくて、 仕方なくDebian Squeeze(testing)をインスコした経緯もあって チップセットばかりを無下に責められないわけであるが、 それにしても困った。やはり新しいチップセットにLinuxは鬼門か。
こんな便利な ものがあったとは....。 Regexp::Assembleは正規表現を動的に組み立ててくれるPerlモジュール。 しかも最適化も行ってくれるらしい。
use Regexp::Assemble; use utf8; my $ra = Regexp::Assemble->new; $ra->add('大丈夫'); $ra->add('大事'); $ra->add('きた'); $ra->add('きたあああ'); print $ra->re; (?-xism:(?:きた(?:あああ)?|大(?:丈夫|事)))
..... これはすごい!!
インターネット上のテキストデータを扱っていると、 あらかじめNGワード集を作っておいてフィルタリングしたい場合が多々ある。 Regexp::Assembleで、addの部分をwhile/foreachで回せば、 外部ファイルからNGワードを読み込むことができる上、自前で 形態素解析してから1ワードずつマッチ処理するより断然速いわけだ。
やべえ、ちゃんと読んでないのモロバレ...
Perl Hacks ―プロが教えるテクニック & ツール101選(chromatic/Damian Conway/Curtis "Ovid" Poe/株式会社ロングテール/長尾 高弘) |