2014年4月16日水曜日

Subversionのリポジトリを復旧(再構築)

 Subversionのリポジトリが壊れていることにはずいぶん以前——WindowsXPからFreeBSD8.3に移行したときに気づいた。途中のリビジョンが破損しているらしく、あるところから過去へ遡れない。たとえば「svnadmin verify」をかけてみると、次のようになる。

(中略)
* リビジョン 666 を検証しました。
* リビジョン 667 を検証しました。
* リビジョン 668 を検証しました。
svnadmin: E160006: リビジョン 669 はありません

 直近からの2000リビジョン分ほどは見れるし、チェックインもできるのでそのまま、使っていたのだが、どうも気になる。ゼロからやりなおすなり、再構築するなり、しないといけないなぁ、とは思っていたのだが、ようやくやる気になった。
 「svnadmin recover」をかけてみたが、案の定、リカバリーできなかった。内部データはバイナリで手作業での復旧は無理そうだ。ググってみてもそれらしいサイトにぶつからなかった。
 マニュアル片手に方法を考えた。

「svnadmin dump リポジトリ -r 0:668 > dump001」で先頭部分をダンプアウト。

 次に「svnadmin dump リポジトリ -r $1 –incremental > deump$1」というシェルスクリプトをつくって669〜3328まで差分ダンプを出力。ここで問題のあるリビジョンは正常にダンプされないので、正常にダンプしたデータだけを順番に「svnadmin load 新規リポジトリ」に喰わせてリポジトリを再構築した。
 最終的に「svnadmin verify」で確認したが、問題はないようだった。隅々までだいじょうぶかは不明だが——案の定、あるファイルが古いようだった。このファイルをいじったときにリビジョンが問題だったのだろう。
 リポジトリのサイズは868.3MBから430.4MBになっていたので、半分のデータはふっ飛んでしまったということか……。

2014年4月14日月曜日

アンドリュー・ウィテイカー「アインシュタインのパラドックス――EPR問題とベルの定理」

アンドリュー・ウィテイカー「アインシュタインのパラドックス――EPR問題とベルの定理」

 非常におもしろくて熱中して読んだ。でも半分も理解できなかった。バックグラウンドになる知識がなさすぎてさっぱりわからなかったし、数式にいたっては完全にアウトだった。
 それでも自分がすっかりかんちがいしていた、ということはわかった。

 よく量子力学を説明するために「シュレーディンガーの猫」が使われるけれど、これをテレビなんかで見るたびに、何の冗談だろう、と思っていた。猫は死んでもいるし、生きてもいる重ね合わせの状態にあるなんて。これは単純に、中では猫の状態は決定しているが、観察している側にはわからないだけの話だろう、と。
 だから量子力学というのは観測者側の問題なのだ、と思っていた。観測者の限界にすぎない、と。
 ところが元々、「シュレーディンガーの猫」は量子力学の奇妙さを指摘するために、提起されたものだという。つまり猫が生死の重ね合わせの状態にあるというのは奇妙だと指摘するためのもの。ということは量子力学において重ね合わせはある、ということが前提なのだ。それを重ね合わせの説明に使ってはいけないだろう……(前提への反論が目的なので)。

 この因果が逆転したような、時間が遡行してしまったような感じはにわかに受け入れ難いのだけれど、ジョン・ベルが提起し、それを元に実験された結果からはありうるらしい(量子力学以前の物理学では局在性が破れてしまう結果らしい)。
 うーむ。そうなのか……。
 すると、量子コンピュータは可能なのか、と思っていたら最後の方に言及されていてどうやら今はまだ、真空管をつくるぐらいのレベルっぽかった。

2014年4月8日火曜日

FreeBSD 10.0 にアップグレード (3)

 不安だったのはiBus関連だった。
 というのもバージョンアップして不評聞こえるiBus 1.5を使うことになりそうだったからだ。ibus-skkを使っていたので選択肢はなかったのだが。
 その前にアップデートされなかったデスクトップ環境を再構築した。pkgで用意されていたのはgnome2-lite-2.32.1とMATEで、Xfce4はportsからインストールするしか、なさそうだった。いれてみたMATEは割によさげだったが、とりあえず、今まで使っていたXfce4をportsからコンパイル。
 そのあいだに当初の目的を思い出す。
 ――FreeMindのキー入力。
 起動し、Fn2で入力モードになることを確認してよしよし、と思っていたのだが、インストールし終ったXfce4上のFreeMindではキー入力が受けつけられなかった……orz。意味がわからない。確認ミスか、とも思ったが、MATE上のFreeMindではやはりちゃんと動く。どうしてXfce4では動かないんだ。ところが次にXfce4上で動かしてみると、動いてしまった……あれ? もしかしたら最初からXfce4の問題だったんだろうか。
 つまりFreeBSDを10にアップグレードする必要などなかった?
 今さら手遅れだが——。

 それよりも重量級のソフトを動かすと、Xが落ちる現象に悩まされる。
 重量級というのはたとえば、VirtualBoxとか、FireFoxとか、Chromeとかだ。ソフトのアップデートがうまくいっていないのか、と思っていたのだが、よくよく調べてみると、「kernel: pid 1610 (Xorg), uid 0, was killed: out of swap space」とmessageがでていた。
 swapの領域が足りないのかな、と思い、swapfileを大きくしてもだめで、試行錯誤しているうちにふと気づいた。もしかしたらそもそもswap領域が取られていないんじゃないか。
 そこであらためてmessageを見直してみると、「/etc/rc.shutdown: WARNING: $swapfile is obsolete. Ignored.」というmessageがでていることに気づいた。obsolete? 何だ? Google翻訳してみる。廃止、とでた。
 どうやらrc.confで定義されているswapfileが廃止されたらしい……。
 今さらswapパーティションを切り直せというのか。
 しかし、まったくできなくなっているとも思えない。Google検索して「12.12. Adding Swap Space」というのを見つけた。でもこれって自分で「mdconfig -a -t vnode -f スワップファイル名 -u 0 && swapon /dev/md0」をタイプしろっていっているような……。試してみると、ものの見事に0だったswap spaceが2Gになったが。
 今のところ、rc.confには定義できないようなのでrc.localとrc.shutdown.localに処理をベタ書きした。シャットダウン時の処理は「swapoff /dev/md0」。

 デスクトップ環境はMATEを使うことにした。
 デフォルトの見た目は好きじゃないのだが(ThinkPadの狭い画面の上下にパネルがあるのは邪魔だった)、Xfce4ではどういうわけか、ibus-skkの切り替えがうまくいかない。裏でibus-ui-gtk3がcoreを吐いていた。MATEでもibus-engine-skkがcoreを吐いているのだが、こちらはなぜか、ちゃんと動いている(ように見える)。
 なのでMATEにしたのだが、画面をカスタマイズしてみると、ずいぶんとシャープな見た目になった。まるでパソコンを新調したみたいだ。おかげでこのところ、ずっとMacBookAirが欲しくてたまらなかった気持ちがかなり軽減された。
 どうやらThinkPad X60に飽きてきていたらしい。
 そういう意味ではアップグレードしてよかったのかもしれない。まだまだ、ThinkPadで戦える。それに9.2ではうまく動作してなかったサスペンド機能が使えるようになっていたのもありがたい。

2014年4月7日月曜日

FreeBSD 10.0 にアップグレード (2)

 実はFreeBSDをアップグレードするのははじめてである。
 はじめてインストールしたのは2.0.5のときだから自分でも驚きなのだけれど。まぁ、「404 Blog Not Found:備忘録 - FreeBSD 10 あれこれ」を参考にしながらアップグレードした。途中、package管理もpkgngへ移行。もしかしたら、と思ったら案の定、「sysinstall」コマンドはなくなっていた。FreeBSD 10からのpackage管理はpkgngになったということだったから、当然かもしれない。今のところpkgngにフロントエンドはないようだ。
 で、「pkg update」した。
 これでThinkPadにインストールされていた諸々のソフトがアップデートされるはず——ところがConflictとWarningでうまくいかなかった。やはり物事は簡単にはいかないものだ。このまま、うまくいかずに競馬に間に合わない、というオチか。
 徹夜してしまった。
 とにかく問題になっているソフトをpkgから削除していく——そうすると、perlのバージョンがちがうために、Warningがでているものがごっそりと対象になってしまった。しかたない。それでなんとか「pkg update」を通し、そのあと、シコシコとソフトをいれなおすことにした。まずは最優先的にEmacs23から。「pkg install emacs23-23.4_3,1」——成功。
 ところが起動してみると、コアダンプを吐いた。
 ああっ! 一番、おそれていたことが起きてしまった。
 競馬の予想にはEmacsがいるのである。
 FreeMindを動かそうとしてEmacsが動かなくなるなんて本末転倒もはなはだしい。
 実は前回のFreeBSDをインストールしたとき、Emacs24がうまく動かず、Emacs23をいれなおした、という経緯がある。だから今回もEmacs23をインストールしたのだが。
 packageの問題ではなく、portsからコンパイルしても同じだった。コアダンプを吐く。どうしよう。
 おそるおそる最新のEmacs24をいれた。
 他に選択肢はなかった。
 さすがにちゃんと起動したのだが、問題はここからで——いろいろとつっこんであるelispライブラリと自前のツール群が動くかどうか。案の定、howmとemacs-deferredはだめだった(make-local-hookが廃止されていて参照エラーになる)。さいわい最新版のhowmとemacs-deferredがあったのでインストールした。
 ところが両方、エラーになった。
 howmは別のエラーになっていたので、かっとなってソースをいじった。アドホックにエラー対応。emacs-deferredはよくわからない。make-local-hookの参照エラーがでている。ソース内にmake-local-hookをつかっているような個所はないのだが。
 ElScreenもおかしい時がある(こちらはネットを検索して対応方法がわかった)。
 emacs-deferredを使わないようにするか……と考えながらもう一度、emacs-deferredがらみのツールを動かしてみた。驚いたことに今度は動作した。理由はわからない。でも動いたから、よし、とすることにした。
 すくなくともこれで競馬の予想ができる。結果としては予想できなかった方が幸せだったかもしれない。
 ――全敗だったのだ。

2014年4月6日日曜日

FreeBSD 10.0 にアップグレード (1)

 ひさしぶりにFreeMindを立ち上げてみたところ、おかしくなっていた。
 キー入力を受けつけてくれないみたいでFn2を押しても反応がない。普通なら入力モードになるのだが(エクスプローラーのファイル名変更みたいな動作)。
 あれ? と思いながらマウス操作で入力モードにはいったのだが、今度はバックスペースキーが効かない。どうも英数字以外のキー入力が無効になっているような感じだ。他のソフトは問題ないのだが?
 最近、インストールした何かの影響か、とFreeMindをpkg_deleteしてportsから再インストールしてみたのだが、状況はかわらない。しかたないのでいろいろとマインドマップ用のソフトをインストールしてみたが、ぴんとこない。そうなると、FreeMindを動かさなければ、いけないような気がしてきた。
 とにかくThinkPadの中のソフトを全部、アップデートしてみよう、と「portupgrade -a」をかけた。CPU使用率100%で延々、動き続けるのを12時間、見つめた。問い合わせがくることがあり、目が離せなかったのである。いったいいつまでかかるんだ。このまま、終らなかったら競馬の予想ができないじゃないか。はっ。
 まずい。
 今日、やるんじゃなかった。でもきっと今、中断したらおかしなことになるよなー、と迷いつつ、我慢できずに中断——案の定、おかしくなった。
 それでかっとなってしまった。
 OSのアップグレードという暴挙にでてしまった。さあ「FreeBSD 10」だ。どうだ。
 というのも「404 Blog Not Found:備忘録 - FreeBSD 10 あれこれ」でバイナリーアップデートで速い、とあったからだ。まぁ、わかっていますよ。FreeBSD 9.3でもpkgngにpakeage管理を移行してやれば、「pkg update」はできた、ということは。でもね、ものはついで、ということがある。それで今まで何度も痛い目にあってきたというのに。
 いつも一歩一歩、進めば、よかったと思うのに。
 ——わかっていないんだなぁ、おれ。かっとなって一足飛びに問題を解決しようとしてしまう。悪い癖だ。