なんかサッカーの試合がないと更新しないブログになってしまってすみません。でも、なかなか書くことがないんだよね、これが。と言っても、サッカー以外の話題をやめたわけではないので、今回はコンピュータ関連の近況について報告。
この間、HDDが故障して再構成していたサーバマシンだが、あまり順調にセットアップできているとは言い難い。
一番の問題は、AIR-EDGEのAX530INが動かないこと。うちの複雑なPC環境の都合で、まずはルータマシンになってくれなきゃ困るわけですよ。とりあえずは、Windowsマシン(ThinkPad T43)のネットワーク共有で代用したりしていたのだが、サーバにはなれないのでかなり不便。100%動かないというわけじゃなくて、10回に1回くらいは動いてくれるというのが悩ましい。モデムとしては認識してくれるんだけど、ATZコマンドを送ったあとにOKが帰ってこない。そしてたまにちゃんと動く。なんか相性の問題なのかわからないけど、前のサーバマシンだったDebian sidでは問題なく動いていたんだけどなあ。一度動くと再起動するまでは動いてくれるので今は騙し騙し使っている感じ。Ubuntu 8.04で直ったりしてくれるだろうか。
他はひっかかっているというよりは、手間の問題。やってもやっても終わらない。そして、最後には動くけどぐちゃぐちゃになっているというパターンだろうなあ。毎回そうなんだよなあ。
上記のとおり、現在Ubuntuのセットアップをやっているわけだが、慣れない環境で変なことをやって環境を壊したくないというのもあり、それと純粋に興味があるということもあり、仮想マシンであるVirtualBoxを使ってUbuntuの実験環境を構築してみた。
これが驚くほど簡単。
VirtualBox用仮想マシン | Ubuntu Japanese Team
のとおりやればいいだけなので詳細は書かないが、とにかく起動するだけという感じだ。あとは以下を参考にしてブリッジの設定をすると、外からもネットワーク接続できるようになる。
shin1のつぶやき: VirtualBox上のUbuntuの設定(Network)
簡単に最新のLinux環境に触れるのでLinuxに興味のある人にもおすすめだ。
しかし、使ってて一つ気になったのが、sshで大量のデータを通信するとゲストOS のUbuntuがフリーズしてしまうことがあるようだ。デスクトップにはいいけど、サーバに使うにはちょっと安定性が足りないかもしれない。
次は久しぶりのBloggerPostの話題。マシンがトラブったせいで各種開発環境も作り直さなきゃいけなくなったのだが、その関連でBloggerPostで検索してみると、ブログで何人かの人が使ってくれたようなことが書いてある。ありがたいことだと思って見てみると、みんな一様に文字化けして使えないという結論になっている。これはまずい。
そうなのだ。BloggerPostはUTF-8対応してない。というか、Debian stableに安住していた僕は、世の中のUTF-8統一ブームに完全に乗り遅れていたのだ。Emacsも未だ21を使っている。しかし、BloggerPostも内部コードはUTF-8である。入出力部分を少し修正すれば済むはずだ。
それで、暫定で修正してみてもUbuntu 7.10で動かない。デバッグしてみると、どうやらREXMLの動作がDebian etchのRubyとは違うようだ。RubyのバージョンはUbuntu 7.10の方は1.8.6でDebian etchの方は1.8.5である。調べてみると、1.8.6のREXMLのバグのようだ。
Ruby 1.8.6のREXML/XPathのバグ - ELECTRIC DOC.
確かに書いてあるとおり、REXMLを一行修正すればBloggerPostも動くようになった。しかし、インストールする側にそれをお願いするわけにもいくまい。こちら側で対処せざるをえない。面倒臭いことだ。
上記のとおり、実質3台くらいで色々やっているんだけど、そうなるとバージョン管理も面倒臭くなる。どのマシンにレポジトリを置くかというのも考えなきゃいけないし、もちろんネットに繋がっていないと、レポジトリにアクセスできないのも面倒臭い。それで、分散環境を構築しようとするならSVKの出番だが、BloggerPostの開発でSubversion + SVKを使っているけど、使いづらいこと、この上ない。
そこで、最近流行りの(というにはいささか乗り遅れているが)分散バージョン管理システムを使ってみることにした。このタイプもgitとかGNU archとかBazaarとか色々あるのだが、最近注目が集まっているのはdarcsとMercurialの二つのようだ。Haskellで作られているというdarcsに魅かれるものもなくもないが(Ocamlで作られているというUnisonは便利に使っている)、なんとなくだけど、Mercurialの方が人気が出そうな気がするので、Mercurialを選ぶことにした。なんとなくだから理由は聞かないでくれ。
しかし、この間「Subversionは史上最も無意味なプロジェクト」と宣わったLinus先生も
satolog: リーナス・トーバルズ「Subversion ほど無意味なプロジェクトはない」
によると、(自身の作った)gitとMercurialは認めているそうである。darcsについては述べていないが、調べたとところによると、Mercurialよりdarcsの方がエレガントなアルゴリズムらしいのだが、大規模になると遅いらしい。ということで、一般的にはMercurialの方が採用されることが多いそうだ。個人的な印象なので、やっぱり細かい理由は聞かないでくれ。
さて、そのMercurialだが、使ってみると、非常に良い。まず、リポジトリがトップディレクトリの.hgだけで完結しているという簡潔さ(シャレじゃないです)。分散して開発する場合はそのリポジトリをcloneして、pullなりpushなりすればいいのだが、その二つに上下関係がないというのが良い。分散と言いつつ、Subversionよりシンプルだ。
難点を言えば、Emacsのモードが使いづらいのと、日本語の扱いがSubversionの方がいいかなというくらい。でも、最近はみんなUTF-8だからあまり関係ないかな。
これは最近というわけでもないんだけど、EmacsのOrg-modeがお気に入り。アウトラインモードの超拡張版という感じなんだけど、表作成機能やタグ機能があって、メモ書きするならこれほど便利なモードもないという感じ。Howm環境もRDからOrg-modeに移行した。BloggerPostで色々な構造化テキストを扱っているけど、やっぱりEmacsから便利に使えるというのが一番。BloggerPostでも是非採用したい。
それで世の趨勢に習ってEmacs22を使いはじめたわけだけど、.emacsを少し変更しなきゃいけなかったくらい(term/keyswapがないとか、iswitchb-default-keybindingsがないとか)で、普通に使用できている。心なしか軽い気もする。あと、上で取り上げたOrg-modeが標準で入っている。
Navi2chも入れてみたんだけど、最新のNavi2chはもうEmacs21では動かないんだね。なんか、もうEmacs21捨てたくなってきた。というか、ロケール違う環境も面倒臭いからDebian etchも引っ括めて全部捨てたくなってきたが、まあ、複数環境があるということはプログラムのバグも発見しやすくなるということでもあるので、しばらくは我慢することにする。
あと、なんかMigemoのbackward検索が動かないんだよね。検索すると他の人も動いてないみたいなんだけど、誰か直してくんないかな。