アタッチ・ザ・マスト
ポート側しか、撮れないのがネックですなぁ。
ヘッドマウント1
ヘッドマウント2
カメラを下へ向きすぎていたようなので仰角をとった。前方は映るが、迫力不足かも。とくにジャイブの映像があまりおもしろくない。カメラを腰につけてみるというのはどうだろう?
ポート側しか、撮れないのがネックですなぁ。
カメラを下へ向きすぎていたようなので仰角をとった。前方は映るが、迫力不足かも。とくにジャイブの映像があまりおもしろくない。カメラを腰につけてみるというのはどうだろう?
* Sail:CORE 5.7(NEIL PRYDE) Board:NG ACP 260
| 時刻 | 帆走時間 | 帆走距離 | 最高速 | 平均時速 |
|---|---|---|---|---|
| 11:39-11:50 | 11分 | 0.60km | 9.44 | 3.22 |
| 12:24-12:33 | 9分 | 1.01km | 36.03 | 6.64 |
| 12:44-12:48 | 4分 | 0.44km | 10.25 | 6.29 |
| 12:50-12:56 | 5分 | 0.55km | 13.54 | 5.93 |
| 13:13-13:35 | 22分 | 2.27km | 14.50 | 6.14 |
| 14:03-14:25 | 22分 | 2.84km | 40.20 | 7.63 |
| 14:46-15:01 | 34分 | 6.72km | 39.85 | 11.64 |
| 15:18-15:28 | 10分 | 2.44km | 41.64 | 14.49 |
| 15:45-16:00 | 15分 | 2.15km | 41.54 | 8.51 |
| 16:15-16:20 | 4分 | 1.50km | 42.03 | 18.48 |
| 16:25-16:35 | 10分 | 2.41km | 42.26 | 13.77 |
もう今日はだめか、と思った。
到着したときにはすでにレギュラーの風が吹きはじめていたし、よく晴れていて夏のような光景だった。これは期待できる。白波が見える一瞬もあるし。
嬉々と出艇した。
ところがブロー来たーっと思って出艇すると風はなく、風がねぇとビーチにあがると、湖面に白波が見える、という間の悪さ——というよりブローが短いので一手どうして遅れてしまう。もしかしたらはじめの方に一回プレーニングしただけで今日は終了になってしまうのか。腹をくくってずっと湖上にいてみたりしたが、だめだった。
絶望した。やはり風なし君ではないか、と。
本格的に吹きはじめたのはそのあとのことだった。
しかも元ドライスーツに着替えている最中。陽が翳ると、海パンとラッシュガードでは寒かったので着替えていたのだ。身体が濡れていたので身動きできなくなり、ふたたび、絶望した。出艇すると、まちがいなく吹いていた。
前半戦のように沖のブローが上から降ってきて30度ぐらい風が振れるようなこともなかった。風向きも安定していた。ただ前半にあわせてセイルセッティングをゆるくしていたので、どこかずれているような感じだった。セイルが重い。それでもセッティングしなおす気になれず、乗りつづけた(ちょっと後悔している)。鬼ブローで裏風を何度もくらいそうになるし、最高速も伸びない感じだった。
しかもセイルが前にもっていかれて、ジャイブもおかしくなってしまった。
あれ? おれ、どうやってジャイブしてたっけ?
風が安定して吹いているようなのでiPhoneで動画撮影を開始した。
まずはオン・ザ・マスト。次にヘッドマウントを二本。四時をすぎて陽が山に翳ると、さらに吹いた。気温が下がったせいもあって風が重くなってパワフルだ。セッティングがずれているのを我慢して乗りつづける。
——だからセッティングをなおせよ、過去の自分。
何しろジャイブ直後に一瞬、ハーネスをかけることができないほどだった。腕力がなくなっていることもあるけれど、セイルが重くて(ブームをすこし高くしていてハーネスがわずかに短い状態だった)。
もうあがろうか、とビーチに向かっていると、なんとビーチそばにきれいにブローがはいっていた。最後に一本、と思ってジャイブで突っこんだ時、左前のフットストラップがぶち切れた。ものの見事に前転してしまった。
それが本日の最高速を記録した瞬間だった。
いつのころからか、「CPU 周波数の計測モニタ」を動かすと、「CPU周波数の計測がサポートされていません」とメッセージがでるようになった。おかしいなぁ。FreeBSD 8.3のころはちゃんと「sysctl -a dev.cpu.0.freq」でCPU周波数が取得できていた記憶があるのだが。
なぜだろう?
わけもわからず、現状、問題はなかったので放っておいた。
ところがこのところ「ちょまど問題」でCPU100%状態で動かしまくっていたせいで、三回も熱暴走してしまった——SSDのRead Errorが起きている。熱でSSDがおかしくなっているのだろう。こんなことをくりかえしていたらSSDがいずれ壊れてしまう。
去年の夏も筐体が熱くなって往生したのだが、そのときの対応方法——卓上扇風機で風を当てるという手もだめ。
どんどん熱くなる筐体に茫然としていたのだが、ふと「CPU 周波数の計測モニタ」を立ち上げて周波数を1GHzに抑えたら発熱が抑えられた。
——この手か!
次の瞬間、気づいた。あれ、CPU周波数が認識されている?
たしかに「sysctl -a dev.cpu.0.freq」で現在のCPU周波数が取得できるようになっている。
でもいつの間に取得できるようになったんだろう?
取得できるようになったわけではなかった。
その証拠にrebootすると、CPU周波数は取得できなくなり、当然、1GHzに抑えるなんてこともできなくなっていた。
なぜ?
dmesg | grep -E "^(est|powernow)"
est0: <Enhanced SpeedStep Frequency Control> on cpu0
est: CPU supports Enhanced Speedstep, but is not recognized.
est: cpu_vendor GenuineIntel, msr 6130a2c06000613
必要だと思われるカーネルモジュールをロードしたりしたのだが、結果は同じ。だいたいいつの間にかに取得できるようになっているということは必要なモジュールはすでにロードされているということだ。了解していたけれど、試さずにはいられなかった。
急にCPU周波数が取得されるようになったきっかけを探る。
バッテリー起動のときか? それとも電源のときか? 経過時間か?
タイミングとは思えないほど、確実に「CPU周波数の計測がサポートされていません」のメッセージはでた——ふと、気づいた。
——もしかしたらサスペンド?
ビンゴだった。
サスペンドから復帰すると、周波数が取得できるようになっている(「CPU 周波数の計測モニタ」は再起動する必要があるが)。
事、そこまで至り、ようやくBIOSが原因だ、と気づいた。BIOSの設定——以前、動いていたのですっかり失念していた。
案の定、POWERマネージメントがらみの設定がひとつ、オフになっていた。そこで思い出した。
そうだ。バッテリー駆動でもフルに動くように、とこの値、オフにしたんだった……orz。
FreeBSDには「powerd」というsystem power control utilityがある。
CPUが使われてないとき、周波数を自動的に低くしてくれるのだが、CPU周波数を取得できるようになったということは、これが使える。昔、使ってみたときはバッテリー使用時、粘るように重くなったのでオフにしていたのだが、今回、試してみると、そんなことはなかった。
これは「powerd_enable="YES"」にすべきだな。
バッテリー駆動時、電池が保つようになるのではないだろうか。
ただ、CPU100%の作業の時の発熱を抑えるようなことには不向きみたいだ。フルのCPU周波数で動作してしまうから——そんな時はpowerdをオフにして(/etc/rc.d/powerd stop)、「CPU 周波数の計測モニタ」で周波数を低い値に設定するしかないんだろうなぁ。
乃木坂太郎「幽麗塔」(1) 乃木坂太郎「幽麗塔」(2) 乃木坂太郎「幽麗塔」(3)
冒頭にいきなり時計塔で殺人が行なわれることもあってまるで藤田和日郎の「夜に散歩しないかね」みたいだな、と。雰囲気もよく似ていて江戸川乱歩とか、横溝正史とかの探偵小説といった趣きだった。どうやら黒岩涙香の「幽霊塔」が元になっているらしく、さもありなん。
非常におもしろく三巻、一気に読破してしまった。
読んだのはKindle for iPadで。
無料体験版がでていたのだ。三巻分。あまりにおもしろかったのでたぶん続きを購入するだろう。体験版はすでに消えてしまったから、もしかしたら1、2、3巻も購入するかもしれない。
ああ、すっかりうまいこと、やられてしまった。
■ちょまど問題(引用・加筆)
4択問題10問のテストを全部埋めて提出すると正解数がわかります。
何回提出すればすべての正解を知ることができますか。
(最後の満点となる提出は回数に含めなくてよいということ)
ちょまど問題を見たとき、全解答候補から点数で解答候補を絞りこんでいけば、いいな、と思ったのだけれど、すぐに(1 1 1 1 1 1 1 1 1 1)で「1」の解答の問題の個数がわかるし、((1 1 1 1 1 1 1 1 1 1)(2 2 2 2 2 2 2 2 2 2)(3 3 3 3 3 3 3 3 3 3))の試行は(4 4 4 4 4 4 4 4 4 4)の試行と同等、と思い返してしまった。そうすると、((1 1 1 1 1 1 1 1 1 1)(2 2 2 2 2 2 2 2 2 2)(3 3 3 3 3 3 3 3 3 3)(1 2 1 2 1 2 1 2 1 2)(2 3 2 3 2 3 2 3 2 3)(3 1 3 1 3 1 3 1 3 1))の試行でひとつに解答候補が絞りこめるんじゃないか?
ところがやってみると、そんなことはなかった。
しかも愚直に全解答候補を絞りこんでいくやり方よりも結果が悪い(試行回数が多い)。よくよく考えてみると、(1 1 1 1 1 1 1 1 1 1)の結果が点数が0でなかった場合は解答候補から(2 2 2 2 2 2 2 2 2 2)と(3 3 3 3 3 3 3 3 3 3)と(4 4 4 4 4 4 4 4 4 4)が外れてしまう。つまり((1 1 1 1 1 1 1 1 1 1)(2 2 2 2 2 2 2 2 2 2)(3 3 3 3 3 3 3 3 3 3))の試行は無駄があるということらしい。
愚直な方法とは次のようなやり方。
このやり方だとだいたい試行回数は10回以下(もっとかかると思っていたので意外だった)。時々、11回の結果がでていたけれど、点数0のとき、もうすこし絞りこめるのでそのロジックをいれたらでなくなった。
※(1 1 1 1 1 1 1 1 1 1)が0のときは1を含んだ候補は除外できる。
ロジックで解くやり方も試してもみたのだが、どうも愚直な方法には勝てない。
※(1 1 1 1 1 1 1 1 1 1)->(2 1 1 1 1 1 1 1 1 1)で点数差が+1だったら2が正答
※(1 1 1 1 1 1 1 1 1 1)->(2 1 1 1 1 1 1 1 1 1)で点数差が0だったら1,2は誤答
※(1 1 1 1 1 1 1 1 1 1)->(2 1 1 1 1 1 1 1 1 1)で点数差が-1だったら1が正答
※(1 1 1 1 1 1 1 1 1 1)->(2 1 1 1 1 1 1 1 1 1)で9点になったら先頭以外はすべて1
….etc
愚直な方法はランダムな処理があるので全パターンを試してみても確実とはいえないのだけれど、だいたい10回以下で正答にたどりつく模様(試したらパソコンが熱暴走してしまったので未テスト)。
(追記)200件ほどテストしてみたところ、11回が発生。うーん、残念。
;; ちょまど問題
(require 'cl)
;; (testexec 'test3 wrk)
;; (testexec 'test3 wrk (get-anser))で同じ解答の試行
(defun testexec(func allanscer &optional data)
"テスト実行"
(let ((anser (if data
data
(nth (random (length allanscer)) allanscer))))
(set-anser anser)
(let ((wrk (funcall func 'quest allanscer)))
(print (format "%s:%d:%s" (get-anser)(get-count)(get-anserlist)))
"")))
;; wrk)))
(defun genarate(x)
(let ((y x)
(wrklist nil))
(loop repeat 10 do
(let ((i (% y 4)))
(setq wrklist (append1 wrklist (+ i 1)))
(setq y (/ y 4))))
wrklist))
;; 全解答生成
;; (setq wrk (loop for x from 1 to (expt 4 10)
;; collect
;; (genarate x)))
(defun get-ten(listA listB)
"何点か"
(apply '+ (mapcar* (lambda(x y)(if (= x y) 1 0)) listA listB)))
;; テスト提出側
(lexical-let (anser count anserlist)
(defun set-anser(list)
"解答を設定"
(setq anser list)
(setq count 0)
(setq anserlist nil))
(defun get-anser()
anser)
(defun get-count()
count)
(defun get-anserlist()
anserlist)
(defun quest(list)
"解答。点数を返却"
(let ((wrk (get-ten anser list)))
(setq count (+ count 1))
(setq anserlist (append anserlist (list (list wrk list))))
wrk)))
(defun filter(listA listB ten)
(remove-if-not (lambda(x)(= ten (get-ten listA x))) listB))
(defun filter2(func testlist anserlist)
(let ((ten (funcall func testlist)))
(when (= ten 0) (setq anserlist (filter3 anserlist testlist)))
(filter testlist anserlist ten)))
(defun filter3(anserlist zerolist)
(let ((wrk (loop for x in anserlist
collect
(if (= (count-if nil (gemmap x zerolist)) 0)
x
nil))))
(remove-if nil wrk)))
(defun gemmap(now before)
(loop for x in now
for y in before
collect
(not (= x y))))
(defun test3(func allanser)
(catch 'exit
(let ((anserlist allanser))
(loop for x from 1 to (length anserlist)
do
(setq anserlist
(filter2
func
(nth (random (length anserlist)) anserlist) anserlist))
(when (= (length anserlist) 1) (throw 'exit (list x anserlist)))))))
結果:(答え):試行回数:(((点数(試行パターン)).......)
(loop repeat 10 do (testexec 'test3 wrk)) "(4 4 3 3 4 4 3 1 3 2):8:((0 (1 1 4 1 3 3 2 3 2 4)) (5 (4 2 2 4 4 1 3 1 1 2)) (4 (2 2 2 4 4 4 1 4 3 2)) (6 (3 4 3 4 4 4 3 2 1 2)) (6 (3 2 3 3 4 1 3 2 3 2)) (6 (4 3 3 4 4 2 3 2 3 2)) (4 (3 3 3 4 4 1 3 4 4 2)) (10 (4 4 3 3 4 4 3 1 3 2)))" "(4 3 4 2 3 3 3 3 4 1):7:((0 (2 2 2 3 2 2 2 1 1 4)) (4 (4 4 4 1 3 4 1 2 4 2)) (3 (3 1 4 1 4 4 1 3 2 1)) (3 (1 1 4 2 1 4 4 2 4 3)) (1 (3 4 3 4 4 1 1 2 4 3)) (7 (1 3 4 1 3 3 3 4 4 1)) (10 (4 3 4 2 3 3 3 3 4 1)))" "(4 3 3 1 2 2 1 4 2 4):7:((2 (4 4 3 4 4 3 3 2 1 2)) (1 (1 2 4 3 4 3 4 3 4 4)) (2 (2 4 4 1 3 2 2 1 1 3)) (7 (4 3 1 2 2 2 1 4 1 4)) (8 (4 3 1 1 2 2 1 2 2 4)) (6 (4 3 1 2 3 2 1 2 2 4)) (8 (4 3 1 1 2 2 3 4 2 4)))" "(3 4 1 4 1 4 3 1 4 2):9:((1 (2 2 2 3 2 4 1 2 2 3)) (1 (1 2 1 1 4 1 2 4 1 1)) (4 (2 3 3 4 4 2 4 1 4 2)) (4 (3 1 1 2 2 2 4 1 4 4)) (5 (3 1 3 4 3 1 3 1 4 3)) (4 (3 1 3 4 1 3 4 1 2 1)) (3 (3 1 3 4 4 2 3 2 3 4)) (4 (3 1 3 1 3 4 4 3 4 2)) (10 (3 4 1 4 1 4 3 1 4 2)))" "(2 1 4 4 4 2 4 4 4 2):10:((4 (3 1 1 2 4 2 4 2 3 3)) (4 (4 1 2 3 4 4 4 3 4 3)) (2 (4 4 1 1 4 2 2 3 2 3)) (3 (3 3 2 3 4 3 4 2 2 2)) (3 (2 1 1 3 4 4 3 2 1 1)) (4 (1 4 4 2 4 4 4 2 4 4)) (3 (3 1 3 2 4 3 3 3 4 4)) (5 (2 1 4 1 3 3 4 2 4 3)) (5 (2 2 3 4 4 1 4 2 4 3)) (10 (2 1 4 4 4 2 4 4 4 2)))" "(2 4 4 1 3 2 4 2 1 1):8:((3 (4 3 4 3 2 3 2 4 1 1)) (2 (4 2 2 4 3 1 3 4 4 1)) (3 (4 4 3 1 1 3 4 4 3 2)) (1 (4 1 1 2 2 3 1 2 4 2)) (3 (3 3 4 1 1 1 3 3 1 2)) (8 (1 4 4 1 3 4 4 2 1 1)) (6 (1 3 3 1 3 4 4 2 1 1)) (10 (2 4 4 1 3 2 4 2 1 1)))" "(3 2 1 3 1 4 2 1 1 3):8:((5 (3 1 1 1 1 4 2 2 3 4)) (3 (2 3 3 1 1 4 2 2 4 1)) (3 (4 3 1 4 4 4 2 4 3 4)) (2 (3 4 3 1 1 2 3 4 3 4)) (4 (3 1 2 1 4 4 2 3 1 2)) (2 (3 1 2 4 2 1 2 2 3 1)) (5 (3 2 1 1 4 4 4 2 2 3)) (10 (3 2 1 3 1 4 2 1 1 3)))" "(1 2 4 1 4 4 3 2 3 4):8:((1 (2 1 2 3 3 3 1 3 1 4)) (4 (1 4 1 2 3 4 4 2 3 1)) (2 (1 2 1 2 2 3 4 1 4 3)) (2 (3 2 3 4 3 1 4 2 2 1)) (2 (2 4 1 1 1 2 2 2 4 1)) (2 (4 4 4 2 1 4 4 3 2 2)) (4 (1 1 4 4 2 4 2 4 3 1)) (5 (4 1 1 4 4 4 3 2 3 3)))" "(1 3 4 2 2 1 1 1 3 3):8:((4 (4 3 2 2 1 1 4 1 2 2)) (2 (4 3 2 1 3 4 4 4 3 4)) (3 (4 4 4 2 1 1 2 4 1 1)) (3 (4 2 3 2 3 1 3 2 2 3)) (3 (4 2 4 3 2 3 4 1 2 1)) (2 (3 2 2 3 1 1 3 1 1 4)) (3 (2 2 1 2 2 1 4 4 4 2)) (10 (1 3 4 2 2 1 1 1 3 3)))" "(2 1 1 2 2 1 3 2 2 4):10:((2 (3 1 2 2 4 3 1 1 3 1)) (2 (3 2 1 1 1 2 2 4 3 4)) (3 (4 1 1 3 2 3 2 3 1 3)) (2 (4 4 3 3 1 3 3 2 3 2)) (4 (2 1 4 4 3 3 2 2 4 4)) (3 (2 1 2 4 1 2 3 3 4 3)) (2 (3 3 3 4 2 3 4 3 4 4)) (3 (2 1 3 4 4 1 2 4 1 2)) (1 (1 4 2 4 3 3 2 4 2 3)) (10 (2 1 1 2 2 1 3 2 2 4)))" (loop repeat 15 do (testexec 'test3 wrk (get-anser))) "(1 1 4 3 4 1 3 3 3 3):7:((2 (2 3 2 3 1 2 3 2 1 2)) (3 (4 4 1 3 2 4 1 3 3 2)) (0 (4 4 3 1 1 4 2 4 1 1)) (1 (2 3 1 4 2 1 1 1 4 4)) (3 (3 2 2 2 3 2 1 3 3 3)) (3 (1 2 1 2 4 3 4 2 3 2)) (6 (1 1 1 3 3 3 3 3 2 3)))" "(1 1 4 3 4 1 3 3 3 3):9:((2 (2 4 4 1 1 4 1 1 3 2)) (3 (1 3 1 3 4 3 1 2 1 2)) (2 (2 2 1 3 3 4 4 2 4 3)) (1 (4 3 3 3 1 2 4 4 2 2)) (4 (1 4 1 4 4 4 3 3 2 4)) (4 (1 2 4 1 4 3 3 4 4 4)) (2 (4 4 1 2 4 3 3 1 4 1)) (3 (1 2 4 4 3 3 1 3 2 1)) (7 (1 1 4 4 4 2 3 2 3 3)))" "(1 1 4 3 4 1 3 3 3 3):7:((0 (3 3 3 2 2 3 4 4 1 1)) (2 (2 2 4 1 1 4 2 1 2 3)) (4 (4 4 2 3 4 2 2 2 3 3)) (3 (4 4 4 4 4 4 3 2 4 4)) (3 (1 4 1 4 3 2 2 3 4 3)) (6 (1 2 4 3 4 2 1 3 3 4)) (2 (1 2 2 4 1 2 1 2 3 4)))" "(1 1 4 3 4 1 3 3 3 3):9:((4 (1 3 1 1 4 1 3 1 4 2)) (4 (1 2 1 3 3 1 1 1 3 1)) (5 (1 4 1 1 2 1 2 3 3 3)) (6 (1 1 1 3 2 4 3 3 3 2)) (5 (1 1 1 2 1 1 4 3 3 2)) (6 (1 3 1 3 4 4 4 3 3 3)) (4 (1 4 1 4 4 4 1 3 3 2)) (8 (3 1 1 3 4 1 3 3 3 3)) (10 (1 1 4 3 4 1 3 3 3 3)))" "(1 1 4 3 4 1 3 3 3 3):8:((4 (1 1 2 2 2 2 3 1 3 2)) (5 (1 1 1 3 2 4 4 3 3 4)) (3 (2 1 3 3 2 3 4 2 3 2)) (3 (1 1 1 4 1 4 1 4 3 2)) (2 (2 1 2 2 2 4 1 3 4 4)) (4 (1 3 4 1 2 4 4 1 3 3)) (3 (3 4 1 3 2 4 3 1 3 1)) (2 (1 2 1 2 3 3 4 1 3 4)))" "(1 1 4 3 4 1 3 3 3 3):9:((1 (2 3 1 3 2 4 2 1 2 1)) (5 (3 1 4 2 4 2 3 1 1 3)) (4 (3 4 4 2 4 3 1 3 2 3)) (3 (3 1 4 4 4 2 4 4 2 2)) (2 (3 2 2 2 4 1 1 1 1 2)) (4 (2 4 4 1 4 2 3 3 1 4)) (6 (3 2 4 3 1 2 3 3 3 3)) (3 (3 4 4 2 1 2 3 2 3 1)) (5 (4 1 4 3 1 2 1 3 1 3)))" "(1 1 4 3 4 1 3 3 3 3):9:((2 (1 3 2 2 1 2 3 1 4 1)) (3 (2 2 4 4 1 1 2 3 4 4)) (4 (1 4 2 4 3 4 2 3 3 3)) (3 (2 4 2 3 4 2 2 2 3 4)) (2 (4 4 1 4 4 3 2 1 4 3)) (2 (3 2 3 2 1 4 2 2 3 3)) (6 (1 2 2 3 4 1 4 3 2 3)) (2 (1 2 2 4 4 4 4 4 2 4)) (10 (1 1 4 3 4 1 3 3 3 3)))" "(1 1 4 3 4 1 3 3 3 3):6:((3 (1 4 2 4 3 2 3 4 2 3)) (4 (1 3 1 1 3 1 3 3 4 4)) (5 (1 1 1 2 4 1 4 4 4 3)) (5 (1 2 2 3 2 1 4 3 4 3)) (7 (1 2 1 3 4 1 3 1 3 3)) (8 (1 2 4 2 4 1 3 3 3 3)))" "(1 1 4 3 4 1 3 3 3 3):7:((0 (3 2 2 4 1 4 1 4 2 2)) (4 (1 4 4 3 2 1 2 2 4 4)) (3 (4 3 1 3 3 1 2 1 4 3)) (2 (1 3 1 1 4 2 2 2 1 4)) (5 (1 3 4 2 2 3 3 3 4 3)) (5 (4 1 4 3 2 3 3 2 1 3)) (6 (1 1 4 3 4 3 3 1 4 1)))" "(1 1 4 3 4 1 3 3 3 3):9:((1 (2 3 4 4 2 4 4 4 2 2)) (3 (2 1 2 3 3 1 2 1 4 4)) (3 (3 1 3 2 2 2 3 1 4 3)) (7 (3 4 4 3 3 1 3 3 3 3)) (5 (3 2 4 3 3 2 3 3 3 4)) (6 (3 1 4 1 3 1 1 3 3 3)) (4 (3 4 4 3 3 3 1 3 4 3)) (9 (4 1 4 3 4 1 3 3 3 3)) (8 (4 1 4 3 1 1 3 3 3 3)))" "(1 1 4 3 4 1 3 3 3 3):8:((2 (2 2 2 2 1 1 1 3 2 1)) (1 (2 3 3 1 3 3 2 1 2 3)) (2 (4 2 4 4 2 3 3 2 4 1)) (2 (3 4 2 4 2 1 2 4 3 2)) (2 (3 4 4 2 4 4 4 2 2 4)) (2 (3 1 1 3 1 3 1 2 1 2)) (6 (1 1 4 4 1 2 4 3 3 3)) (2 (1 2 1 4 1 2 4 1 3 4)))" "(1 1 4 3 4 1 3 3 3 3):9:((3 (2 1 2 3 3 1 1 1 4 4)) (2 (3 4 3 1 1 1 1 1 2 3)) (2 (4 2 2 4 1 1 2 3 4 2)) (1 (4 4 1 2 4 3 1 4 4 4)) (2 (2 3 2 1 2 2 3 2 4 3)) (2 (2 2 4 3 1 4 1 2 1 1)) (5 (4 1 4 4 3 4 3 1 3 3)) (4 (2 1 3 2 3 4 2 3 3 3)) (2 (3 1 2 4 3 4 4 4 1 3)))" "(1 1 4 3 4 1 3 3 3 3):9:((4 (4 1 4 2 2 1 3 4 4 4)) (1 (4 4 1 2 1 4 3 4 2 2)) (2 (3 2 3 2 4 1 1 2 4 4)) (5 (4 1 4 3 4 2 4 3 1 4)) (6 (1 1 4 3 3 1 4 3 4 2)) (5 (2 1 4 3 2 1 1 3 1 2)) (4 (3 1 4 3 3 1 4 4 1 1)) (7 (1 1 4 3 1 1 2 3 3 4)) (10 (1 1 4 3 4 1 3 3 3 3)))" "(1 1 4 3 4 1 3 3 3 3):10:((2 (2 1 1 1 1 3 4 4 4 3)) (3 (3 4 1 3 4 1 2 1 4 4)) (3 (4 4 1 4 1 1 3 3 2 2)) (1 (3 2 3 2 1 1 1 4 2 4)) (2 (4 3 1 1 2 2 3 1 3 4)) (2 (3 3 4 4 2 3 2 3 4 2)) (5 (2 1 4 4 4 1 3 1 1 1)) (3 (1 1 1 4 4 4 1 1 1 2)) (4 (4 1 2 1 4 1 2 3 1 1)) (10 (1 1 4 3 4 1 3 3 3 3)))" "(1 1 4 3 4 1 3 3 3 3):7:((2 (1 3 3 1 4 4 2 4 4 1)) (1 (2 4 4 1 2 2 4 2 2 1)) (2 (4 3 1 4 3 1 4 4 3 4)) (2 (3 3 2 3 1 3 2 2 3 2)) (3 (3 4 3 4 3 3 3 3 4 3)) (0 (3 2 3 2 3 4 1 2 1 4)) (3 (1 1 1 4 1 2 3 1 4 2)))"
しみじみいい映画だった、と思い返している。
手に汗握る傑作だということは聞いていたし、いつか機会があったら観たいとも思っていた。しかし、フランス映画だったとは。
ニトログリセリンをトラックで運ぶ、ということ自体は有名だけれど、ミソはそれを二台で運ぶ、という点だ。先行車と後続車の状況が互いにサスペンスを高める。へたな映画なら先行車が後続に罠を仕掛けたりしそうなものだが(主人公は後続)、そんなことはいっさいなく、むしろ協力的で危い所には目印を置いていったりするのだ。
すばらしい。
そのことがひとり目的を達成した主人公に苦いものをあたえている。
そして、個人的にはこの映画の中で一番、こわかったのは目的を達成したあと——。よくある終わり方なのだけれど、思わず、うわー、やめてくれー、といってしまったほどだった。
いやぁ、フランス映画だなぁ。
大作として鳴り物入りで封切られたのにコケたという記憶だけがあってそれであまり期待せずに見始めたのだけれど、どうしてどうしてけっこうおもしろかった。80km/h以下にスピードを落とすと爆発するなんて「スピード」みたいじゃないか。案外、「スピード」の元ネタなのかもしれない。「暴走機関車」が元ネタだという話だったけれど。
犯人の造形の差が時代を感じさせて興味深かった。
北上秋彦「謀略軌道」も同様のアイデアで、こちらも非常におもしろかった。ただこちらの元ネタは山田正紀の「謀殺のチェスゲーム」だろうけど(オマージュ?)。
GPSの管理にはVikingというソフトを使用している。
正直、使い勝手は直感的とはいえず、なんとか使えるようになるまで時間がかかった。データ構造と操作が強く結びついているためだろう。それでもパソコンの環境が環境のため、他に選択肢がなかった。まぁ、Windows環境のときにいくつか試したフリーウェアもVikingに輪をかけてわかりづらかったが。
この一年ほど悩んでいたのが、「Draw by Speed」というTrack Drowing Modeだった。名前からして航跡が速度によって色を変わるモード(midaさんがよくアップしているやつだ)のように思えるのだが、いくら設定してやっても見え方がかわらない。デフォルトの「Draw by Track」とまったく同じ。
うーん……。
事あるごとに試してみたりしていたのだが、ずっと不明だった。
昨日、偶然、わかった——何とTrackを選択していてそのカラーになっていただけだった……orz。Trackを無選択の状態にして(Mapを選択した)ようやく速度によって色がかわっていることが見えるようになった……。(Track Drowing Modeを変更した直後は操作的にTrackが選択されているのだ!)
その結果が以下。
茶色の●はまた別の指定で「Draw Stops」。30秒STOPしていた場合、表示される。つまりほぼまちがいなく沈しているときだ。問題はこれをやると、ジャイブが成功したかどうかがあらわになってしまうwww。
鉄条網のようなトゲは進行方向を示している。
濃い緑色はおそらくプレーニングしている時で、黄色はノンプレーニングの時だろう。ただ、絶対速度ではなく、平均速度から何%増しかでしか、設定できないらしい。もしかしたら標準偏差指定ということかもしれない(よくわからない)。今は80%を指定している(体感に近い)。赤い部分は水の中で風を待っている時だろう。
▲はStart Point。
クロスは中央である。
「航跡のこと」
「あと最高速地点を表示できれば、良いと思います。」(by mida)
なるほど。こんな感じならできるかなぁ。
* Sail:CORE 5.7(NEIL PRYDE) Board:NG ACP 260
| 時刻 | 帆走時間 | 帆走距離 | 最高速 | 平均時速 |
|---|---|---|---|---|
| 13:20-13:42 | 21分 | 2.69km | 38.56 | 7.51 |
| 13:59-14:04 | 4分 | 0.42km | 8.63 | 5.11 |
| 14:06-14:17 | 11分 | 0.86km | 22.57 | 4.64 |
| 14:19-14:25 | 6分 | 1.00km | 29.51 | 9.40 |
| 14:32-14:36 | 4分 | 0.93km | 33.12 | 11.54 |
| 14:39-14:44 | 4分 | 1.01km | 37.48 | 13.07 |
| 14:47-14:55 | 8分 | 1.43km | 34.80 | 10.63 |
| 15:07-15:18 | 11分 | 0.82km | 14.91 | 7.34 |
| 16:20-16:37 | 17分 | 1.89km | 16.62 | 8.21 |
| 16:43-17:02 | 18分 | 2.77km | 45.97 | 9.05 |
——「5/25山中湖ロードレース」
と、道路状況案内の電光掲示板にでていた。まだだっけ、とぼんやりと考えていてふと気づいた。ちょっと待て。今日は6月1日のはずだぞ。
夜の道志街道は不思議である。
タイムスリップしたような気分になった。
早めに到着したFUNビーチにはテントが張られ、ウィンドサーフィンの道具がいくつも置かれていた。どうやらココナッツボーイが合宿をしているらしい。平日とは思えないほど、にぎやかだった。
サングラスをかけているので確信はもてなかったけれど、カレーマンらしい人間がいたので風が吹きだして出艇する前に声をかけた。どうやら本人だったのでほっとする。十年ぶりぐらいか——。十年前はカレーマンではなかったはずなのだが、ついこのあいだまで覚えていた名前を思い出せなかった(なんてことだ)。ボケが進行している。それとも「カレーマン」で上書きされてしまったか。
、すっかりうまくなっていてプレーニングはできるわ、ジャイブはできるわ、何度も抜かれてしまった。まいるなぁ。
今日の本栖湖は夏のようなコンディションで、かなり苦しめられた。
ブローは単発で短く、プレーニングさせようとしていると、風がなくなる、という悪循環。それでも二時半を回ると、吹き上がってきた。いつもならここから狂乱モードのはずである。これはさっそくヘッドマウントカメラを試してみなければ、とヘルメットを取り出した。
しかし、iPhoneを取り付けたヘルメットは思ったよりも重く、しかも発泡スチロールの塊であるヘルメットよりiPhoneの方が重いらしく重心がいまいち。その上、細めの顎紐が首を締めつける。
風も予想に反してなくなり、結局、プレーニングしなかった。
撮影をあきらめてヘルメットを脱いだあとに、プレーニングしてしまうという間の悪さだった。はー。
20140602本栖湖 at EveryTrail
EveryTrail - Find trail maps for California and beyond
* Sail:CORE 5.7(NEIL PRYDE) Board:NG ACP 260
| 時刻 | 帆走時間 | 帆走距離 | 最高速 | 平均時速 |
|---|---|---|---|---|
| 13:07-13:19 | 11分 | 1.2km | 15.0 | 6.3 |
| 13:23-13:27 | 4分 | 0.4km | 14.8 | 5.4 |
| 13:40-13:47 | 7分 | 0.7km | 13.8 | 5.9 |
| 13:49-13:54 | 5分 | 0.3km | 14.7 | 3.9 |
| 14:18-14:31 | 13分 | 2.3km | 46.3 | 10.1 |
本栖湖に到着したのは正午すぎ。すでに南からのレギュラーがはいり、湖面には白波がたっている。
これは今日一日、ブリブリデイだぜ。
先着していたmidaさんに挨拶してさっそく湖へ。昨年の7月9日以来になる。ごっそりと筋肉が落ちてしまった身体はだいじょうぶだろうか。心臓は保つだろうか。——健康診断ではいちおう異常なしなのだが。
平日に来本栖湖している人たちは何人もいたが、出艇しているのは一名のみだった。
その段階で気づくべきだったのだ。吹きはじめのブローはフェイクが多い。何年、本栖湖に通っているのか。案の定、風は落ちてしまい、中途半端な状況に。岸にあがると、湖面に白波が見えてワキワキしてすぐに出艇する、ということをくりかえてしまう。
一度もプレーニングしなかった。
ノープレーニング・ノーライフ。このまま、終わってしまうのか。ふたたび風が上がりはじめたのは二時すぎ。なんといつものパターンじゃないか。無駄に体力を使ってしまった。midaさんがビーチにあらわれたのはそんなタイミングだった。さすがである。
吹き上がった風は充分で、ようやく今年初のプレーニングを果たす。
ライフジャケットが首に刺さってつらかったが——スタボーからのジャイブもできた(最後に沈したような気もする)。ひさしぶりとはいえ、案外、乗れるもんだなぁ。フルプレーニング中は完全に呼吸があがってゼーゼーいっていたが。
スタボーでプレーニングして沖へ向かっていると、進路につぎつぎとブローがはいるという奇跡のような瞬間がおとずれた。歓喜。ドラゴンビーチまで行けそうな勢いだった。風下二、三十メートルのところを平行してmidaさんがプレーニングしていた。使っている道具がちがうのでこのような状況はめずらしい——大概、ぼくが失速している——。
midaさんがジャイブしたのでこちらもジャイブ。
今度はポートで並走。
向こうは若干の上りのライン。完全におれ、有利! 抜けるか?
奇跡が起きたのはFUNビーチ近くまできたときである。ブローが抜けて完全に風が途絶えたmidaさんが停止した。その隙をついて三メートルほど風上側をせこく次のブローをひろって抜く。
実際には二、三十メートルあった上下差が三メートルまで縮まっているのだから全然、負けているのだが、でも気持ち的には「勝ち」である。一方的に満足する。
この狂喜乱舞の一往復、iPhoneのビデオで撮影できているはずだった。
GPSロガーとビデオを動かしていたのだ。
ところがその直後にバッテリー切れになったせいだろう、データがセーブされてなかった……。かろうじて残っていたのはGPSのログだけだった(下記)。
そのあと、ビーチで雑談し、midaさんのブログ友だちの魂さんとはじめて顔を合わせた。互いに驚く。
ウィンドを終了したのは三時半のことだ。
まだ風は充分、吹いていたし、体力も残っているという感じはあったのだけれど、自分を信用できないと判断した。きっと筋量が減っているから疲労を感じないだけにちがいない。ウォータースタートの時に一度、足が攣っているし。
道具を片付けているときに、今日はずいぶんセイルが重かったのはきっと筋肉がないからだろう、と思っていたらダウンホールラインが緩んでいたことに気づいた。
このせいか!
このせいなのか!
ちゃんとセッティングしていれば、もうすこし楽に乗れたのに!
なんてことだ。
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になっていたので、半分のデータはふっ飛んでしまったということか……。
アンドリュー・ウィテイカー「アインシュタインのパラドックス――EPR問題とベルの定理」
非常におもしろくて熱中して読んだ。でも半分も理解できなかった。バックグラウンドになる知識がなさすぎてさっぱりわからなかったし、数式にいたっては完全にアウトだった。
それでも自分がすっかりかんちがいしていた、ということはわかった。
よく量子力学を説明するために「シュレーディンガーの猫」が使われるけれど、これをテレビなんかで見るたびに、何の冗談だろう、と思っていた。猫は死んでもいるし、生きてもいる重ね合わせの状態にあるなんて。これは単純に、中では猫の状態は決定しているが、観察している側にはわからないだけの話だろう、と。
だから量子力学というのは観測者側の問題なのだ、と思っていた。観測者の限界にすぎない、と。
ところが元々、「シュレーディンガーの猫」は量子力学の奇妙さを指摘するために、提起されたものだという。つまり猫が生死の重ね合わせの状態にあるというのは奇妙だと指摘するためのもの。ということは量子力学において重ね合わせはある、ということが前提なのだ。それを重ね合わせの説明に使ってはいけないだろう……(前提への反論が目的なので)。
この因果が逆転したような、時間が遡行してしまったような感じはにわかに受け入れ難いのだけれど、ジョン・ベルが提起し、それを元に実験された結果からはありうるらしい(量子力学以前の物理学では局在性が破れてしまう結果らしい)。
うーむ。そうなのか……。
すると、量子コンピュータは可能なのか、と思っていたら最後の方に言及されていてどうやら今はまだ、真空管をつくるぐらいのレベルっぽかった。
不安だったのは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ではうまく動作してなかったサスペンド機能が使えるようになっていたのもありがたい。
実は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がらみのツールを動かしてみた。驚いたことに今度は動作した。理由はわからない。でも動いたから、よし、とすることにした。
すくなくともこれで競馬の予想ができる。結果としては予想できなかった方が幸せだったかもしれない。
――全敗だったのだ。
ひさしぶりに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」はできた、ということは。でもね、ものはついで、ということがある。それで今まで何度も痛い目にあってきたというのに。
いつも一歩一歩、進めば、よかったと思うのに。
——わかっていないんだなぁ、おれ。かっとなって一足飛びに問題を解決しようとしてしまう。悪い癖だ。
転ばぬ先のバックアップ。そいつが問題なのだった。
今まではデスクトップ(Windows)に外付けハードディスク(お立ち台使用)を接続し、ThinkPad(FreeBSD)からrsyncを使ってLAN経由で同期していた。デスクトップからも同様。このやり方だと、完全同期ではないので過去に削除したファイルがバックアップにまざって残りつづけてしまう。残ることは問題ではないのだが(それが目的だから)、まざってしまうのが問題だ。
バックアップからもどしたら削除したはずのファイルをふたたび、手作業で削除しなければならない。更新されたファイルの過去バージョンは復活しないし。
昔はまるごとSubversionというバージョン管理システムにつっこんでいたのだが。パソコンをかえたとき、なんか面倒になってやめてしまった。
そんなとき、Appleの「Time Machine」のことを知った。
日付をつけたフォルダの下に丸ごとバックアップされるので過去のスナップショットをとりだすことができる、という。これはいい。容量が心配だが、最新から差分だけをバックアップし、かわっていないファイルはハードリンクになっているので消費容量は差分分だけ(だから更新したファイルの過去バージョンもとりだせる)。
あっ、その手があったか、と思ったね。頭いい。
いっそパソコンをAppleにしてしまおうか、と思ったけれど、どこかに同じようなツールがあるのではないか、と探してみたところ、pdumpfsというものを見つけた。
というか、このツールのことは以前、「横着プログラミング 第8回: pdumpfs: 毎日のスナップショットを保存する」で読んでいるぞ、おれ。すっかり忘れていた。
しかも最新のrsyncは同じことができる、という。(--link-destオプション)
まぁ、日付フォルダの管理が面倒なので、そのあたりを勝手にやってくれるpdumpfsを導入(Windows版もある)。LAN対応されているか、どうかはわからないが(manマニュアルには載ってない)、面倒なのでデスクトップ、ThinkPadそれぞれにお立ち台を接続してバックアップすることにした(二台もっているのだ)。
ついでにバックアップ対象をホームディレクトリの下、全部にしてやった。
実はFATではできなかったのでNTFSでもハードリンクは未サポートとばかり思っていた。だから「Time Machine」のような真似はできないと。ところがサポートされていて、なのでpdumpfsもrsyncの–link-destオプションも使えるのだった。
それにしてもpdumpfsの存在に気づかなかったら「MacBookAir」と「Time Cupsule」を衝動的に買ってしまうところだったぜ(消費税もアップすることだしと)。いやぁ、あぶなかった。
もらわれてきたばかりのころは当たり前の話だが、警戒心旺盛だった。目が合うや、逃げ出してばかりいた。しかし、やがてメシをだしてくれる相手と認識してくれたのか、時には触ることもできるようになった。
ところがだ。
今や警戒心丸出しで睨みつけられる始末だ。触ることができる距離にもけして近寄れない。ViViなど手をのばすと威嚇してひっかいてくるほどだ。
避妊手術のために二度、強引に捕まえた。それ時、以来——。
すっかり嫌われてしまった。
何しろ、そのとき、ViViは恐怖のあまり、脱糞した。おしっこも漏らした。ラックの奥に逃げ込む道々にはころころとウンコが転がっていたのだ。
そんなことをあった以上、しかたないといえば、しかたないのだけれど。
——でも悲しい。
ちょうど本書を読んでいるときにSTAP細胞の騒ぎが起きていてとても微妙な気分になった。twitterで小保方研究ユニットリーダーの大学のときの論文が盗用だとdiff画像が流れてきたりした。
これがわりと不思議だった。どうやって調べたんだろう、と。
調べた人間は世の中にある論文とかたっぱしから突き合わせていったのだろうか?
その分量を考えると、それはそれで調べた人間の執着心がこわいなぁ、とか思っていたのだが、どうやらそういうわけでないらしい。実際にはどうやったのか、は知らないが、ダン・アリエリー「ずる―嘘とごまかしの行動経済学」を読んでいたら論文盗用をチェックしてくれるWriteCheck.comというサイトのことがでてきた。
あ、そうだったのか。それだったらわかるわー。
STAP細胞のことが発表されたときはけっこう衝撃だった。といってもはじめてテレビ報道で見たときはさっぱり意味がわからなかった。研究ユニットリーダーの割烹着の話ばかり報道されていたこともあって。研究内容についてはよくわからない。そこで理化学研究所のサイトの報道発表資料というものを読んでみたのだが——。
いやぁ、驚いた。
細胞外からの刺激で細胞が万能細胞になる——初期化される、というのである。そんなことがありうるのか。twitterで「弱酸性ビオレで細胞が初期化されるのかっ」というツッコミを見かけたけれど、これがほんとうならノーベル賞ものというのも、最初、ネイチャーに論文の掲載を断わられた、というのも納得だった(にわかに信じられない話だから)。
ところがその論文に問題があり、取り下げられる、という。
そのこと自体はそうだったのかー、という感じなのだが、興味深かったのはtwitterなどであらためてSTAP細胞を見つけてください、という研究ユニットリーダーを応援するメッセージがちらほらあったことだった。STAP細胞が存在するという前提のメッセージが。そして、STAP細胞の存在が否定されたわけではない、という発言も見かけた。たしかにそうなのだが、これってまるでSTAP細胞は存在しているといっているようにも聞こえる(発言者はそう意図してないとは思うが、中立的な発言が中立に聞こえない)。
不思議なことにぼくの中にもその感覚はあって、残念だよなぁ、という思いがあったのだが、よくよく考えてみると、これは奇妙な話だ。
論文が取り下げられた時点でSTAP細胞についてはその発表以前の状態にもどったはずなのだ。それなのに以前ならそんなのありえないだろう、と考えていたのが、今はありうるかもしれない、と考える部分がある。
ああ、これが行動ファイナンスでいう、「アンカリング」というやつか。
すくなくともSTAP細胞発表前にあった予断——常識が論文にたとえまちがいがあったしても破壊されてしまったということだろう。もしほんとうなら、と用心深く考えていたにもかかわらず。
こまったもんだ>自分。
——驚愕した。
諫山創「進撃の巨人」(1)のとき、すごい話題になっていたのだけれど、タイミングが悪くて読みそこねていた。なんとなく、絵が稚拙に見えたということもある。アニメになってはじめて「進撃の巨人」に触れてのだが、2、3話目でげんなりして観るのをやめてしまった。
ところがあとになって録画していたやつをまとめて観ていたら急激におもしろくなっていて結局、最後まで観て、後追いで原作マンガを読みはじめたのだが、ちょうどアニメ化されていた最後のところで驚愕の展開が待っていた。
ひっくり返るほど驚いた。
wikiでうっかり読んでしまっていたエピソードだったのだが、それがゆえにミスリードしていてその分、余計に驚いてしまった。こう来んのかよっ。
いやぁ、凄いわ。
年のせいだろう。
もう一度、観たいなぁ、と思っている映画が何本かあり、「ナバロンの要塞」は「狼は天使の匂い」とならんでその筆頭だった。たぶん高校のときだったと思う。テレビで放映されているのを観た。
レンタルビデオ隆盛のころ、探したことがあったのだが、見つけることはできなかった。「ナバロンの嵐」という続編は何度か、見かけたのだが(ハリソン・フォードがでている。未見)。
非常におもしろかった記憶がある。ロッククライミングのシーンとか。今回、観てテレビ放映のときはだいぶんカットされていたことに気がついた。見張りを射殺して砲塔基部に侵入するシーンはまったく記憶になかった(忘れているだけかもしれないが)。まぁ、テレビはCMこみで二時間枠だったものな。実際の本編は二時間半以上、あった。
いずれにしてもおもしろく、手に汗にぎる一本だった。原作の力だろうが、あちらこちらのエピソードは原作のアリステア・マクリーン「ナヴァロンの要塞」とはちがっているようだった。確信はないけれど。たしかめようにもたぶん絶版で手にはいらないんだよなぁ、原作。
持っていた文庫本は実家の親に捨てられてしまったし。
読み直したい一冊でもある。
※アリステア・マクリーン「ナヴァロンの要塞」、あったわー。どうしよう。お金がお金がお金が……orz
マーク・スカウソン「自由と市場の経済学: ウィーンとシカゴの物語」
非常におもしろく読んでいたら気になる一節があった。
実質賃金と失業の間に密接な統計的関係があるというのだ。そういう研究結果があると。あれ。今の日本がそうじゃねえか。政府(安倍首相)は企業に賃上げを求めている。
政策により均衡水準を超えて賃金を上昇させると、失業が広い範囲で起こりつづけると論じた。
とある。
まぁ、均衡水準というのが問題になるのだろうが、もし現在の賃金水準が均衡していないのなら、そのこと自体が問題だろう。その問題をまず解決すべきだろうし、仮に均衡しているのなら賃上げを求めるべきじゃない、ということになる。
失業率があがるのなら弱い立場の人間から失業していくことになるだろうから、非正規労働者、契約社員から職をうしなっていくことになる、というわけか。
わあ、なんか嫌な未来だなぁ。
映画もたいがい、傑作だったけれど、原作はそれ以上だった。
しかも映画を観てから読んですっかりネタがわかっていたにもかかわらず。ただ、読み終えるまで実は内容はすっかり忘れているけれど、中学のときに読んだとばかり、思っていた。
というのも犬神家がどうして隆盛をきわめたか、ということについて記憶があったからだ。テレビで放映されたとき、ちらちらと断片的に観てそのネタに触れて、ああ、そうだったよな、とか思った記憶があったのだ。
それに通して映画を観た覚えはなかった。
ところが読み終えてみると、原作では犬神家がどうして隆盛をきわめたか、なんてそんなネタはなかったのだ! 見落としただけかもしれないが、どうやら映画のオリジナルの話だったらしい。つまりぼくはテレビで断片的に観たときと、通して観たときがあってそれでどちらかを原作を読んだときの記憶とかんちがいしていたのだろう……。
それにしても「私はしかし(中略)いまもなお、勝ってくるぞと勇ましくと、日の丸の旗をふって送られた、あの当時の日本人だとばかり信じていたんです」という科白は映画の中でもあったと思うのだけれど、小説では胸に迫るようだった。
ちょっとググってみて方法が見つからなかったので、できないのだとばかり思っていた。iBusではwine上のアプリの日本語入力ができないのだ、と(馬鹿だ)。SCIMの情報は見つかっていたのでそれでなおのこと、先入観を持ってしまった。
試してみたらあっさりできるじゃないか。
なんてことだ!
方法は簡単で「XMODIFIERS="@im=ibus"」を環境変数に定義してやれば、よかっただけだった。普通じゃないか……orz。いろいろあって前記の環境変数は未定義にしてあるのだが、GNOMEのデスクトップファイルをいじって(wineにアプリをインストールすると作成される)対応した。
定義されているコマンド「env WINEPREFIX="/usr/home/yamada/wine" wine C:\\Program\ Files\\Evernote\\Evernote\\Evernote.exe」の中に定義を追加。「env XMODIFIERS="@im=ibus" WINEPREFIX="/usr/home/yamada/wine" wine C:\\Program\ Files\\Evernote\\Evernote\\Evernote.exe」みたいな感じ?
ただし、インライン変換はできない模様。
[追記](2014-3-13)
ちなみにレジストリーキー「HKEYCURRENTUSER\Software\Wine\X11 Driver」の「InputStyle」には「root」を設定していた。「onthespot」を設定すると、インライン変換になるようなのだが、うまくなかったのでやめた。
「FreeBSDでもDropboxを使える!」とよろこんでwineでDropboxを使ってみていたのだが、どうも何か、へんだ。ちゃんと全部、同期されてないような気がする。ググってもこんな問題はなさそうで、どうもwineから見えるディレクトリやファイルの個数に上限があるように見える。
ためしに「wine cmd」上で、dirしてみると、ディレクトリは54個、ファイルは57個までしか、見えなかった。ただし、ワイルドカードを指定してやると、見えなかったファイルもでてくる。それでもでてくる上限個数は前記のとおり。
なんか昔、DOSで似たような現象を目にした記憶があるなぁ。
そういう情報はちょっと見当たらなかったのでもしかしたらFreeBSDへのポーティングでの制限なのかもしれないが——よくわからない。
まぁ、いずれにしてもこれが原因ならDropboxだけでなく、wine上で使うアプリは全部、影響を受けることになる。
いかんなぁ。
FreeBSD上のwineでEvernoteをインストールできたときにはガッツポーズをとったものだ。ダイアログのフォントがトウフだらけだったけれど——そんなことはあとでなんとかなるだろう。
WindowsXPで動いていたアプリの中で、FreeBSD上で動いてほしいのがまずEvernoteだった。それがインストールできたのだ。勝ち〜っ、と思ったところでだれにせめられようか。ところがネットワークに接続できなかった。クラウド前提のアプリケーションなのに。
結局、Google先生にたずねても解決しなかったのであきらめてwineごと削除してしまったのだが、つい先日、ふと思い出した。Virtualboxをいれたとき、「仮想ネットワークアダプタ」を作成していたことを。あれ、もしかしたらこれが悪さをしてたんじゃないか。
試してみると、案の定。
しかもPicasa、Firefox、Dropboxもインストールして動作した。Dropboxは無理だろうと思っていて期待すらしてなかったのにである。
iBusからの日本語入力はできないようだが、そこはあきらめた(後日、やり方は判明)。クラウドと同期できれば、それでいい。
インストールといっても大したことは何もやっていない。wineはportsコレクションから「make install」し、それぞれのアプリケーションのインストーラーをwineから実行しただけだった。