今さらながら Sircam なメールがやってきた。この Excel の sheet って、どうやると読めるんだろぉ。幾つか Sircam を採取して、binary diff 取って共通していない部分だけ抽出すれば読めるのかなぁ。
こんなことをしてみた。 0x00 で埋めたデータを bzip2 で圧縮するんだけど、片方は約2GB (1024 の 3乗 × 2) で、もう一方は 2MB (1024 の2乗 × 2) っていうのを圧縮するようにしてみた。
dd if=/dev/zero of=- bs=1024 count=$((1024**2 * 2)) | \
bzip2 > $((1024 ** 3 * 2)).bz2
dd if=/dev/zero of=- bs=1024 count=$((1024 * 2)) | \
bzip2 > $((1024 ** 2 * 2)).bz2
結果はともに 14byte になった。
# ls -lh *.bz2 -rw-r--r-- 1 root root 14 Jan 26 xx:xx 2097152.bz2 -rw-r--r-- 1 root root 14 Jan 26 xx:xx 2147483648.bz2
柴咲コウは「柴崎コウ」ではありません。 ドラマ「TRICK」で「シバサキ香」なんていうのが出てきたな。
CGI/1.1 Interface だけで IMAP サーバみたいな機能を提供することはできないものだろうか。 Web Server で Mail spool の read/write する interface を CGI/1.1 で提供して、localhost でその interface と IMAP4 rev1 との convertion するっていう方法。 Mail spool を Web Server に保存して、一般的な MUA で read/write できるようにするために IMAP を採用するっていう考えなんだけど。
昨日はほぼ定時退社して途中でご飯食べて帰宅後バタンキューだったので、変な時間におきてしまった。いま朝の3時ごろなのですが、なんだかスッキリ。
気になったので注文してみて今日届いた。 Objective-C の B.J.コックスがオブジェクト指向プログラムについて書いている本みたい。これから読みます。
社内表彰でいただいたお食事券を現金化してその分を募金しようってことで、今日の帰りに新宿の金券屋に行ったのですが、店員のおじさん曰く「これ買い取れないねぇ」だって。さてどうするか。
二日酔いだ。仕事にならん。
二日酔いから復活。シャキーン@16時
っていうか今朝の出勤は死にそうだった。地下鉄に乗ったものの気持ち悪くなり麻布十番で下車。また地下鉄乗ったものの大門で下車。あの地下鉄の轟音と揺れが良くないです。っていうか最近睡眠不足なところもあるので今日は定時に帰ります。
どこかから coss の調査してみてはどうよ、といわれたのでちまちま調べることにしてみました。 HTTPなどのキャッシュサーバとして用いられている squid に、coss (Cyclic Object storage system) というキャッシュの記憶機構がついており、これのパフォーマンスが良いのって本当かよとか yamazさんのところで語られている のですが、この文章のなかにこんなやり取りが
xxxxx : 3年ぐらい前、apacheをプロファイリングしたら、select()の次にopen()がコストを食ってました。で、そのときは、open("/home/xxxx/hoge/hoge/hoge.gif") とかしたとき、/home, /home/xxxx,...のディレクトリファイルを読みに行って、そこでDISK IOが詰まってるんじゃないか?と思ってました。
yamaz : なかなか説得力あるなw
これのなかの、そもそもディレクトリ階層的に深いところにあるとパフォーマンス落ちるのかどうかを調べてました。 対象のシステムは FedoraCore6 (Linux kernel 2.6.18-1.2798.fc6) というものです。
まずは、こんなPerlスクリプトでディレクトリを適当に掘ってみました。
#!/usr/bin/perl
use Digest::MD5; # set dirname entries my @dirnames; my $depth = 10; my $num_in_dir = 3; for (my $i = 0; $i < $num_in_dir; $i ++) { push(@dirnames, $i); }
mkdir ("./nest"); make_nest_dir("./nest", $depth);
sub make_nest_dir ($$) { my $curdir = shift; my $curnestnum = shift; $curnestnum -= 1; if ($curnestnum) { foreach my $each (@dirnames) { my $dir_mk = "$curdir/$each"; if (!mkdir($dir_mk)) { print STDERR "Can't make directory($dir_mk) : $!\n"; next; } make_nest_dir($dir_mk, $curnestnum); } } system("touch $curdir/file"); print "make : $curdir\n" }
そすると、こんな感じのディレクトリが nest/ 内にできます
0/file 0/0/file 0/0/0/file .... 0/0/0/0/0/0/0/0/0/file 0/0/0/0/0/0/0/0/1/file .....
この状態で shell の glob の wildcard を使って任意の数のディレクトリとか取ればよい状態にします。 たとえば 0/?/?/?/?/file と 0/0/0/0/0/?/?/?/?/file でのファイルの open/close をジャンジャンやらせた時の時間の比較をすると。 ちなみにこんなコード使って、open|close の繰り返しをしてみました。
#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> #include <stdio.h>
void usage (){ printf("openclose_test [count] [files....]\n count: number of open/close for one file\n"); } int main (int argc, char** argv) { int loopc = 0, fd, i, j; if (argc < 3) { usage(); exit(1); } loopc = atoi(argv[1]); if (loopc < 1) { usage(); exit(1); } for (i = 0; i < loopc; i++) { for (j = 2; j < argc; j++) { fd = open(argv[j], O_RDONLY); if (fd < 0) { fprintf(stderr, "Failed to open %s : %s\n", argv[j], strerror(errno)); continue; } close(fd); } } }
で、これで、nest/?/?/?/?/file を 16384回 open/close した場合は8.381秒ぐらいで、nest/0/0/0/0/0/?/?/?/?/file を 16384回 open/close した場合は11秒ぐらいでした。 ディレクトリの深さによってパフォーマンスに変化あることは確かなようです。
先週はのめこい湯で温泉入れなかったのでリベンジ。 といっても15時頃に家をマッタリ出発するやる気のなさ。 青梅街道を走っているときにトイレに入りたくなったので、山の中のガソリンスタンドで「ハイオク満タン」とか言ってトイレ借りるついでにガソリン入れてもらった。 あとでガソリンのレシート見たら、1Lあたり171円だった。 ふつうのガソリンスタンドだと1Lあたり155円ぐらいなので、15円ほど高い計算。 18リッターはいったのでトイレ1回300円ぐらいと思うとチト損した気分。 のめこい湯に到着したのが18時近くで、受付が17時までってことなので、当然入れず。 サマータイヤを装着している車なので道中アイスバーンになっていないか気をつけながら走りましたが、アイスバーンなところはありませんでした。
温泉入りたかったのにー、ってことだったので稲城の季乃彩(ときのいろどり)で温泉つかってきた。 うぅやっぱり硫黄臭い温泉入りたかったよーとか思いながらもマッサージ受けて昇天。(笑)
・ yuki [人集めて食事券が使えそうな店で飲み食いし支払いは食事券、相当分を参加者から現金徴収。という形で疑似換金してはいかが?..]
・ まさる [たしかにその手も考えています。自分たちで消費するのが一番換金率よいですからねぇ。]