書きかけ(だったはず)の import の記述を読み直す。 なんか問題ないような気がするので commit する。
コバルト文庫 1/12
cvsbookmarks ねぇ。
補完とどっちがいいだろうか。
ホワイトハート 1/7
ImageMagick の display は(馬鹿でっかい画像を扱う時に)馬鹿でっかい容量(メモリ・テンポラリファイル)を消費するので困る。
表示に必要なぶんだけの容量しか消費しないようなのはないだろうか?
SOCKS4 がすごくシンプルなプロトコルであることに気がつく。
いままで複数の connection を multiplex してくれるようなものかと思っていた...
うぅむ。authorized_keys{,2} の書き方を誤解していたらしい。
それはそれとしていつのまにか OpenSSH でも SSH_ORIGINAL_COMMAND が設定されるようになっていることに気がつく。
ssh の port forwarding を unix domain socket で、 というのは local はともかく remote は厄介なことに気がつく。
Apache 2.0.16 を試す。 mod_dav や mod_tls が附属しているとは...
電撃文庫 3/6
うぅむ。未踏かぁ。
trunk と branch を(過去の log も含めて)入れ換えるにはどうしたらいいか相談される。
bash-2.05 の NEWS を読む。 うぅむ。/dev/{tcp,udp} なんぞというものがあったのか。
しかし、(zsh もやっている) /dev/fd もそうだが、shell の段階で扱うのはあまり正しくないような気もする。 かといってデバイスドライバというのも厄介な気がするので、 間をとって LD_PRELOAD というのはどうだろうか? NFS という選択肢もあるかもしれないが。
strongly connected component を求めるアルゴリズムを調べ直す。 今度は(そらで実装できる程度に)理解できた、と思う。
もう一回調べ直す。 じつは微妙に違ったらしい。 が、同時にそれでも問題ないことも理解する。
と、思ったのだがやっぱり問題があった。 うぅむ。なぜ問題があるのか良くわからない。
ViewCVS を in-place で動かすようにする。 LIBRARY_DIR と CONF_PATHNAME を None のままにできて これでやっとまともに commit ができる。
branch と non-branch tag は別々に sort することにする。 しかし、逆アルファベット順なのにはなにか意図があるのだろうか? cvsweb からしてそのようだが。
ついでに、tag が指定された時は Attic の中にあろうが (dead でなければ)表示するようにしてみる。
そーか。back edge ひとつでは問題が出ないんだな。 すくなくともふたつはないといけないのか。
講談社文庫 1/? および IN★POCKET
時系列としては後者が先。
ひさしぶりに CVSsuck を手動で動かす。
エラーが出る。
ソースを確認するがそんなことは起こるはずがない(と思う)。 処理系(ruby-1.6.2)を疑うが、 とりあえず再現性を確保しないことには話にならない。
エラーが出たサブモジュールだけを指定して再実行する。 エラーが出ない。
全体を指定してもう一度。 別のサブモジュールでエラーが出る。
デバッグコードを入れてもう一度。 エラーが出ない。
異なるディレクトリで最初から実行する。 エラーが出ない。
とってきたリポジトリを消してもう一度。 エラーが出ない。
最初のエラーの時と同じワーキングディレクトリでもう一度。 エラーが出ない。
デバッグコードをコメントアウトしてもう一度。 エラーが出ない。
コメントアウト済のデバッグコードを削除してもう一度。 エラーが出る。最初のエラーと同じ症状。 エラーが出るタイミング(ファイル・リビジョン)も同じ。
念のため同条件でもう一度。 エラーが出ない。
同条件でもう一度。 エラーが出ない。
同条件でもう一度。 エラーは出ない。
とってきたリポジトリを :fork: で参照して試す。 エラーが出ない。
:fork: で繰り返し試すようにして寝るか...
25回ほど試したようだがエラーがでない。
ワーキングディレクトリを最初の時のものに合わせてもう一度繰り返し試す。
しかし、再現性のない問題は厄介だ。 それも、ネットワークが絡んでいるとなればなおさら。
せめて、ネットワークをうまく外せないだろうか? (問題が出た時の)通信を記録して、それを再現できるような proxy があるといいかもしれない。
単に記録した server からの送信を垂れ流せばいいのか、 client からの送信と同期するべきか、 client からの送信が記録と等しいことも確認するべきか...
確認まですると、 純粋な state machine として動作するサーバを通信から生成するということになるのかも知れない。 いや、観測された通信だけから state machine を作ると cycle は生成されないから tree になるか。
6回めの繰り返しでエラーが出る。最初のエラーと同じ症状。 エラーが出るタイミングも同じ。
ruby -d でもう一度。 エラーが出る。同じタイミング。
デバッグコードを(控えめに)入れてもう一度。 エラーが出ない。
繰り返す。31回繰り返したがエラーが出ない。
デバッグコードをコメントアウトして繰り返す。 15回繰り返したがエラーが出ない。
デバッグコードを削除して繰り返す。 1回めでエラーが出る。
うぅむ。
繰り返し実行してエラーが出る率を調べる。 エラーは25回中 2回。
更に繰り返して エラーは39回中 5回。
ひさしぶりに RFC の解釈論議。case-sensitivity について。
確率的な改善でお茶を濁すことにするため、 ruby 1.7 の先端で繰り返し試してみる。33回やってエラーがでない。
やはり jar を直接 cvs で管理するのは無謀だったのか、たった 7つしか revision がないのにすごく遅い。 でも bootstrap するには必要になるしなぁ。
ファイル名を毎回変えるべきだろうか?
Acrobat Reader で reload するにはどうしたらいいのだろう?
ファミ通文庫 4/7
ふと POSIX を眺め、 cpio には(tar のような)ファイル名の制限がない(というのは嘘だが実用上問題ない)ことに気がつく。
いつのまにか SourceForge に ViewCVS ができていることを知る。
SourceForge の cvs リポジトリは 50GB くらいあるらしい。
富士見ファンタジア文庫 2/8
情報... compctl を使っている開発者はもはやいない、とか?
それはそれとして、 あのファイルディスクリプタ切り替えは csh 由来なうえ bash でも使えるので、zsh では、といわれるとなんだかなぁ、と思わないでもない。
ぐぁ。 最初の一発めだけしか入っていない... あれだと複数のリポジトリを扱えない上、 消したはずのファイルが入ったりするのだが。
まぁ、前者はともかく後者の修正はまだ ML に送っていないのでなんだが。
冒頭の
目標 $ (command 3>&1 >/dev/null 2>&3) | wc が何を意図したコードか分かり、かつ内部的な動作を説明できること。
というのを読んでいきなり当惑する。 内部的な動作は説明できるが、何を意図しているかわからない。なんで 3 が出てくるのか? command というのは 3を使うような特殊な奴なのか?
読み進める。結局「2番だけコマンド」なるものがやりたいらしい。なぜ
$ (command 2>&1 >/dev/null) | wc
ではいけないのだろう?
つづきも読む。
「Unixの最初のプロセスinit(プロセスID 1番)は、0,1,2をオープンします(これもUnixの仕様)。 シェルもそのまま0,1,2を引き継ぎ、(シェルが明示的にクローズしない限り)そこから起動されるプロセスもやはり0,1,2を引き継ぎます。」 というのを読んで違和感を覚える。
% sudo lsof -p1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd VDIR 116,196608 512 2 / init 1 root rtd VDIR 116,196608 512 2 / init 1 root txt VREG 116,196608 260732 457 /sbin/init %
オープンしてないじゃないか。 一応 init(8) も descriptor や standard でサーチしてみるがそれらしき記述はない。 (FreeBSD だから正式には Unix ではないということはあるかも知れないが。) 考えてみれば Unix には端末をたくさんぶら下げておくことができるわけで (ログイン)シェルがつながる可能性のある端末は複数あるわけである。 ということは当然ひとつしかない init がそれぞれの端末を同時に 0, 1, 2 にオープンできるはずもなく 上記の記述がおかしいというのは当然なわけであった。
「rshは、標準入力を読み切るようです(仕様らしい)」というのは まぁそうなわけであるが、 なぜそのような仕様にならざるを得ないかという点に触れられていないのは少々残念なことではある。
ViewCVS のページが昨日からアクセス不能なことが気にかかる。
ふと思い出して Greg Stein の日記を覗いて見るも情報はない。
しばらくしたら復活していた。
jailNG かぁ。うぅむ。
RCSPLOT: RCS/CVS Archive plotter
ふと思ったのだが、 cvs のモジュールのリストを得る方法をスクリプトに仕立てて公開したらうけるだろうか?
SourceForge はいつのまに ViewCVS を使うようになったのだろう?
txt2regex is a regular expression wizard, written with bash2 builtins, that converts human sentences to regular expressions.
Visual REGEXP lets you easily design and debug regular expressions by providing a graphical visualization of the expression and its matches on a sample of your choice.
Paraget is able to get a file in parallel from multiple mirrors, ideally maximizing the local bandwidth, instead of being bottlenecked at the server's end.
自己目的化といわれると何かが違うような気がする。 「-f の後にはファイル名だけを補完する」というのは (適切に補完関数が記述されていれば) -f の後にはファイル名を記述するということを知らせているわけだし、 それがなんのためのファイル名かということも 1行説明が出てくる...
うぅむ。補完という名前がいけないのかも。文脈依存ヘルプシステムなどといった名前であればいいのかな。
ふと思いついて、以前聞いたインターネットからレシピをダウンロードできる電子レンジを調べてみる。
残念ながらレシピは srf なるものらしく、Java とかではない模様。 中身を覗くと 16進の数値が並んでいる。
なんとなく、viewcvs.cgi をバイトコンパイルしてみる。 こころもち起動が速くなったような気がする。
富士見ミステリー文庫 3/4
SourceForge の各プロジェクトの commit/add 回数は即座に update されるわけではないことに気がつく。
ついに、というか、なるべくして、というか。
スニーカー文庫 4/9
コバルト文庫 2/12
平積みにはならなかったか、と思いつつ Crimson Comics をひとつ。
EyeBrowse を眺める。 うぅむ。最新のメールを 100くらい眺めたいだけなのだが。
[latest]