2007年02月12日(月) [過去の今日]
#1 たまに壊れるext3
cronのレポートメール見てみたら、なぜかfj日報が出てきたもんでびっくりしましたよ?
どうもファイルシステムがおかしいみたいなので、再起動してfsck。なんか自動だと失敗しやがるんで手でやるはめに。
そしたらちゃんとcronのリポートメールが読めた。うーん、何で壊れたんかなあ。やっぱし2.6.18使ってるのがわるいのか? debianパッチ当ててないはずだが。
そろそろ2.6.20にしたほうがいいかのう。
(@056)
#2 オーラやら前世とカルト教団
ゴールデンタイムにオーラやら前世やら、本気ですか? という記事。
うーん、別にTV番組のことなどどうでもいいのだが、霊能者とカルト教団を同一視しちゃうってのはどうなんだろ。
霊の存在というのは宗教的ではあるが、宗教以前の日本人の世界観の中に深く入り込んでる存在だと思う。だから子供たちは心霊写真が大好きだし、墓に手をあわせるのもよいことだとされている。それは霊の存在を感覚的に肯定してるからだろう。
そういう日本人の世界観にあるものを否定しないとカルト教団のテロが再発するっていうなら、それは日本民族の欠陥としか言いようが無い。
非科学的なものを捨て去った世界がいかにどうしょうもない世界か、理解しているならいいんだけどね。
って「ニセ科学」ってカテゴリーで書いてるのか、この人。そもそも科学以外を全部ニセ科学でくくってるのか?
(@711)
#3 unzipのファイル名がばける
たまにunzipで解凍したファイルの名前が化けることがある。Shift_JISでもUTF-8でもEUC-JPでもISO-2022-JPでもない妙なコードになる。 たぶんunzipのバグでマルチバイトなファイル名の取り扱いに問題があるんだと思うが、さすがにCで書かれたものをおっかけてる暇も無い。
で、CPANを探したら Archive::Zip を見つけたので、 ここらへん とArchive::Zip(3pm)を見ながら適当に書いてみた。
#!/usr/bin/perl use strict; use warnings; use utf8; use Archive::Zip qw/:ERROR_CODES/; use Encode::Guess qw/ascii euc-jp shiftjis 7bit-jis utf8/; use File::Basename; use File::Path; use Term::ReadKey; my $encoding = $ENV{LANG} =~ /euc-?jp/i ? 'euc-jp' : 'utf-8'; binmode STDOUT, ":encoding($encoding)"; binmode STDERR, ":encoding($encoding)"; my $file = $ARGV[0]; my $zip = new Archive::Zip; $zip->read($file) == AZ_OK or die "Cannot read $file\n"; my $str; foreach my $f ($zip->members) { $str .= $f->fileName; } my $dec = Encode::Guess->guess($str); ref $dec or die "Cannot recognize files charset\n"; ReadMode 3; foreach my $f ($zip->members) { my $utf8file = $dec->decode($f->fileName); my $outfile = Encode::encode($encoding, $utf8file); $outfile =~ s/\/\.\.+//g; my $outdir = dirname($outfile); mkpath $outdir if (!-d $outdir); if(-f $outfile) { print "$utf8file exist. overwrite?(Y/n)"; my $char = ReadKey(); if ($char eq 'n') { print "\n$utf8file skip!\n"; next; } } print "extract " . $utf8file . " ..."; $zip->extractMember($f->fileName, $outfile); print "done.\n"; }
むう、日記に張るにはちと長いかな。まあいいや。
とりあえずこれで普通に解凍できるってことは、zipファイルには問題無しだな。やっぱunzipのバグかー。どこにそんなバグあるんだろ。debianのsid環境なんだが、etchにも同じバージョン入ってるのかな。だとしたらリリース前にBTSしないとまずいかなあ。
しかし再現データ作れないんだよな……。Shift_JISのファイル名ってだけなら別に問題無いみたいだし……。
(@996)