pbzip2は標準入出力を扱っても速い(ただし1.1.0以降)

feed消化していて思い出したけど pbzip2 を試そうと思っていたんだった。

Parallel BZIP2 (PBZIP2)

いろいろな都合でディスクを節約したいということで tar アーカイブを転送しながら pbzip2 で圧縮するという想定で、cpio と組み合わせて以下のように試してみた。(フォーマットを tar にしていないのは長過ぎるファイル名のものがあるため。)

ちなみに stdin から入力を与えて正しく並列に処理できるのは 1.1.0 かららしい。今(2010-07-31)のところ Debian は unstable にしか該当バージョンがないので、lenny の人も squeeze の人も恩恵には与れないはず。

試したのは MacBook ( Core 2 Duo ) + MacPorts の pbzip2 1.1.1 で対象はPC説教講座の素材とか。

結果、生成済みのファイルではなく標準入出力を使った場合でも pbzip2 の方が速かった。当たり前なんだろうけど、一応確認しないとね。

ということは

find FOO | cpio -o -H ustar | pbzip2 > FOO.tbz2

ってやると

tar jxf FOO.tbz2

で、展開できるアーカイブができあがる。こうなればある程度 portable と言っていいんじゃないかな?

なお、できあがる圧縮ファイルは bzip2 より微妙に pbzip2 の方が大きい。と言ってもほんとに微妙。gzip とは比べるまでもないので、この程度の差でスピードが確保できるなら十分すぎるほど実用的だと思う。

展開も pbzip2 を使った方が速いんだろうけど、最後は tar などに集約されてしまうので、どれだけ速くなるんだろう? これを書いているときは空いててそれなりの性能の出る機械がなかったので試してない。


実際に想定しているケースは

nc -l -p PORT | pbzip2 > FOO.tbz2

で待ってるホストに対して

find FOO | cpio -o -H ustar | nc HOST PORT

で飛ばして処理しようと思っている。rsync の方が転送効率はいいし安心なんだろうけど、ベタにディスクスペースを食っちゃうのを避けたいという、とても姑息なことを考えている状態。

※ と思ったら想定していた remote の機械はマルチプロセッサ、マルチコアじゃないから速くならなかった! あほか!

timezone という文字を見て

いきなり男闘呼組が頭の中を巡り始めた。

この連想は今までしたことなかった。

今日は何かがおかしいらしい。

つかどうしよう、今後ずっとこれが出てきそうだ。

<blockquote>Wow...Wow...<br>It's Time Zone</blockquote>

トシですかそうですか。

あーどうしよう。もうぐるんぐるん。

ビデオレコーダのシェアはトップ4で9割

ニュース・特集 | BCNランキング - 上位4社でシェア9割、寡占化進むHDD-DVDレコーダー

うーん。一時 blog とかでよく見かけた東芝 RD はギリギリトップ10か。やっぱ Geek 向けなの? というかデジタル向けの商品はまだ何もチェックしてないんだよな。デジタルになると RD ならではのとんがった機能はどうなっちゃうのというのはやはり気になるので、早めにチェックしておいた方がよいのかしらん。基本的には停波間際まで静観しようと思ってたんだけど。

『データベース村へようこそ』読了

ほんとに初心者向けの本から取り組んでいる。わっはっは。

要素的には確かにかなり網羅されているような気がするんだけど、前々から感じていたが自分はこの対話形式の本がとても苦手だ。順を追った説明にも一覧性にも無理があるし、なんで教えてもらう側がそんなに詳しいんだというか、つか先生二人おるやんけとか気になってしょうがない。会話にするとどうしても単位面積当たりの文章量も落ちるし。

自分としてはもっと淡々と一方的に書いてくれる方が気持ちいいんだなってことが分かった。あともっと図を増やしてほしかった。

まぁ好みの問題ではあるんだけど。

PukiWiki の calendar_viewer でページ内のプラグインを無視してみる

4番目の引数を与えると # から始まる行を無視する。4番目の引数は false 以外ならあるだけで ok

action プラグインとして使うときは ignore_blockplugin という引数を与えるとブロックレベルプラグインを無視します。

68a69
>         $ignore_blockplugin = false;
101a103,106
>         if ($func_args[4]) {
>           $ignore_blockplugin = true;
>         }
>
179a185,187
>                   if ( $ignore_blockplugin ) {
>                     $body = convert_html(strip_blockplugin(get_source($page)));
>                   } else {
180a189
>                   }
254a264,266
>                 if ( $ignore_blockplugin ) {
>                   $link .= 'ignore_blockplugin&amp;';
>                 }
288a301
>         $ignore_blockplugin = isset( $vars['ignore_blockplugin'] );
296c309
< 	$args_array = array($vars['page'], $page_YM, $mode, $date_sep);
---
> 	$args_array = array($vars['page'], $page_YM, $mode, $date_sep, $ignore_blockplugin );
325a339,352
> /**
>  * ブロックレベルプラグインを取り除く
>  *
>  * @param array $src Wiki ソース
>  */
> function strip_blockplugin( $src ) {
>   $result = array();
>   foreach ( $src as $line ) {
>     if ( !preg_match( '/^#/', $line ) ) {
>       array_push( $result, $line );
>     }
>   }
>   return $result;
> }

うん、見やすくなった。細かいことはまた今度考えよう。

にわか管理者奮闘記 補遺編1 (@IT)

正直、やっとまともな内容が出てきたと感じる。

問題は経営層にこの「実態」が理解される下地はどうやったら作ることができるか、ということだが、これは一般論では語れないものなぁ。

その他 Win アプリ

あとは WindowsUpdate 号外の告知と。そんなもんか。

Lhasa 0.18 忘れないように

多くの解凍ソフトに指定外の場所へファイルが解凍されてしまう脆弱性が存在 (窓の杜)

月曜は心当たりのマシンを入れ替えないと。

About

例によって個人のなんちゃらです