XHTML 化された file を commit するだけで時間をかなり消費。 助っ人募集中。
一応復帰してみる。
XEmacs の DSO を作れるようにするのはそんなに大変ではなさそう。
Subversion の repository の mirror に変なものを commit してしまっているのを 発見したので、db_recover の -t option を使って以前のものに戻す。Berkeley DB 万歳。ただ、-e option を付けないと shared memory をはぎっとてしまうようで その後 Subversion が動かなくなる。
Svn::Client#log を実装。Move がちゃんと動くようになったときに実装すれば、 現時点での client の binding は終了。そろそろ本体をちょっといじるとするか。
簡単な Ruby script を書いて、log message 等も local の repository に ひっぱってくる。たった 8 行で楽に書けるのがすばらしい (自画自賛)。
Log 等も mirror するように書き換える。この変更のおかげで、remote repository から remote repository へ copy という邪悪なことはできなくなった。
無変換は Meta, 前候補変換は Super, カタカナひらがなは Hyper です。:-)
local の ra_dav の変更で、間抜けなことにわざわざ新しい string を作って、 使っていないところがあることを発見。これを予定通り使うように直したところ、 ちゃんと out of date な file を commit しようとすると error になることを 確認した。
portable dumper が動かない、ということなので調べる。 XEmacs 21.5.3 でも buffer が存在する XEmacs を dump できない、ということを 発見する。確かに buffer は無視した方がかなり楽なのは間違いない。
UTF-2000 を compile していると、やっぱり dump は必要なんだなぁ、という結論に 達する。同じ machine で Emacs 20.7 を dump すると一瞬で終わるので、temacs から 立ち上げても起動時間はほとんど同じなんだが。
pdump できない犯人は last-undo-buffer であることがわかる。さらに、 isolated-char.el の GT 2000 用の code が原因であることも判明。 とりあえず dump は進行しているようだが、CPU time が 45 分を超えても 終了しないので debugger を attach してみると、pdump_register_object で hash の空きを見つけようとして苦戦している模様。何も考えずに hash の size を二桁くらい大きくするとすぐに dump は終了した。
起動すると Symbol's value as variable is void: + などと言われるが、 とりあえず気にしないことにしよう。Patch 自体はわずか33行。
御指名とあらば行かねばなるまい。:-)
前の version から結構変化したので、delta editor も動くようになったことだし、 公開してみる。
pcl-cvs の代わりを書けるくらいの関数は揃っているはず。
最近連続して Subversion の布教をしてるような気がする。:-)
7時半開始で、終電近くまで飲み続けるとは予想していなかった。 私と土屋さんは終電ギリギリ、akr さんと kaoru さんは終電はかなり前に行って しまった状態。反対方向の人は帰れたのだろうか。
Delta editor が動くようになる。
Subversion の repository に対して実行したら、delta_editor.c が 空になってしまった。要調査。
どうも、baseline collection の URI を手に入れて、DAV:checked-in property を 取ってくることで、get_func を commit に与えないでも ra_dav 経由で commit できそうである。
neon binding も無駄ではなかった模様。
.svn/dir-wcprops を見ることで、URI のどこからが repository 内の path なのかが わかる、ということを発見する。$svn の前までが repository 外の URI.
に戻ってくる。
やっと ra_dav でも動くようになる。これで commit できる。 ra_dav に手を入れることになるとは思わなかった。
こうがんがん binding を書いていると、SWIG の XEmacs 用 module を作った方が 楽なのでは、という気になる。問題は C++ を勉強しなければならないことだなぁ。
http://www.webdav.org/deltav/ にある introduction を読む。
楽をしようとして、XEmacs Lisp binding を書こうと試みるが、あんまり 楽にならないことに気付く。
実は、一階層だけでなく、svn up を必要としないような変更であれば、何階層でも upload 可能なことに気付く。svn up が必要な変更だと、merge 機能が実装されるまでは 実現不可能。とりあえずは困らないからいいや。
svn delete foo.c; svn commit svn add foo.c; svn commit svn delete foo.c; svn commit
というのが途中で svn up が必要な例。これは commit では directory の revision が更新されないために発生する。svn up を行なえば3回目の commit も 成功する。
Berkeley DB をにぎっているプロセスを強制終了させると repository がおかしくなる ことが多いようなのだが、今日それをやってしまったために mirror している repository が壊れる。こうなると svnadmin recover でも復活しない。Backup は network に繋っていないところにあるので、svndist の開発は東京に戻るまで おあずけ。
何も考えずに string の変換をしているせいで、 property の binary value が扱えない、という bug を発見する。 いろんなところを直さなきゃいけないのでちょっと面倒。
local の directory の階層が 1 のときには remote への upload が できるようになる。
ra_dav を通すと、commit 時に get_func が無いと core dump することがわかる。 修正しないと svndist 経由で commit できない。
特別講演の式神はおもしろかった。未踏プロジェクトの中では、DODES project が (誰もやっていないけど)、普通のことをちゃんとやって実用化されているという点で 興味深かった。BEP も順調に開発が進んでいるようだ。守岡さんのところも 順調? にデータベースの内容が充実していっている模様。
せっかく京都まで来ているので、ついでに帰省する。
生まれて数度目ののぞみにのって京都へ。
g新部さん、守岡さん、津邑さん、himi さん、岡田さん、土屋さん、kaoru さんと 食事会。津邑さん以降の5人と宴会。
Kaoru 氏が Wanderlust の info を一週間かけて改善することを宣言。
Keyword は、本業、Wanderlust, Emacs, 悪の秘密結社、Subversion, DSO, CORBA, XEmacs, 研究、学位、UTF-2000, portable dumper。
が来週東京に来られるらしい。金曜日は時間があるそうなので、宴会をしましょう、 ということになった。白井さん、後藤さんあたりがよろしくやってくださることを 期待。:-)
Subversion Ruby binding の debug に debugger が使えなくて苦労していたのだが、 require 'svn' した後に sleep を入れて、その間に attach すれば良い、ということに 気付く。
svn_repos_dir_delta の binding をだいたい実装。 これで ad hoc distributed repository support の実装を完了できる。 早く実装しないと、手元の repository の変更を Subversion の repository に 反映できない。
明日から京都。Emacs な人と宴会改め食事会の予定。
Component Pascal という言語の compiler が、自動的に reference counting 用の code を吐いてくれる、というものらしい。
Svn::Ra#getLog を実装。
Emacs は pointer tag + object tag なので、integer 以外 object tag な XEmacs よりも面倒なことに今頃気付く。Design し直した方が良さそうな気がしてきた。
最近の interface の変更に追従させる。Delta editor の binding を書いて 早く 0.2 として出したい。
--enable-dso オプションを追加する patch を古い mail から掘り出す。