2008-03-15(土) [長年日記]
■ BMW純正ナビをR1200GSに取り付け
あなたは、地図を見ずに勘で曲がった方向が、実は行きたい方角と正反対だったという経験はないだろうか。おれはしょっちゅうある。というかむしろそれがデフォルト。街を歩いていても、今進んでいる方向がどっちだったかすぐに見失うので、片時も地図を手放せない。こんな方向音痴がツーリングを趣味としているのだから、不幸としか言いようがない。よくぞ今まで、行き倒れにならなかったものだ。
そんなわけだから、カーナビを付けるときはできるだけ高性能なものにしようと決心していたのだ。機械の性能の低さを人間が勘で補うようなシチュエーションはあり得ないのである。だから、工賃込みで10万円オーバーというのは、おれにとってはちっとも高くない。
先週注文した、BMW純正ナビが届いたので、取り付けに行ってきた。GSの場合はハンドルクランプと友締めになって、メーターの下に見える形になる。Garmin zumoの汎用マウントはかなり大振りらしいが、BMWは各車種用に専用のマウントがあるので、すっきりしている。本体カラーもマットブラックで車体から浮いてない。
いちおう盗難防止用に専用工具がないと外せないようにする仕掛けがあるが、本体上端にあるレバーを引くだけのワンタッチで本体だけ外れるので、バイクを離れる時は本体だけパニアケースに放り込んでおけば良いだろう。常時パニアが付いているBMWならではの運用。
もちろん防水。それもかなりの防水性能らしいので、カウルの内側のこの位置なら雨に負けることはまずなさそう。
すっきりしているとは言え、けっこう飛び出しているので、走っているとメーターよりもナビの方を見てしまう。まぁ、じきに慣れるだろう。自車位置を示すアイコンはバイクになってるのが気が利いてる。
バイク用のBluetoothヘッドセットは2〜3万円と、ちょっと高すぎるように思ったので(こういうところはケチる)、しばらくは有線で使うことにした。いつもiPodで使っているヘッドフォンを延長ケーブルでマウントにある端子へ接続。最初、ぜんぜん音が出なくて焦ったが、エンジンかかってないと音が出ない仕様らしい。本体には端子がないので、スタンドアロンでは音声案内は使えないということか。
音声は合成だが、まぁ、抑揚がおかしな点はあるものの、けっこうまとも。案内のタイミングは、好みよりはやや手前からすぎる気もするが、バイクの速度域を考えれば妥当かも。
MP3データをSDカードに入れれば、音楽も聴ける。本体内に標準で、当たり障りのない感じのインストルメンタルが何曲か入っていたので流しながら帰ってきたが、一般道では気が散るからナシだな。というか、バイクはエンジン音を聞きながら走るもんだろ! とはいえ、距離稼ぎのための退屈な高速道路なんかでは、退屈しのぎによさそうだ。眠気覚ましになりそうな元気な曲をいくつか入れておくか。山本正之とか。
付属品はいっぱいあって、まだ試してない。USBでPCにつなげると、本体とSDカードがそれぞれマスストレージとして見えるので、ファイルの入れ替えが簡単にできる。Gaminの出力するGPX形式のファイルはGPSデバイスの中でもメジャーなフォーマットなので、関連ツールも多い。ちょっと探せばGoogle Maps上に経路を展開してくれるサービスやツールがわんさと見つかる。あとでいろいろ試してみるつもり。
あと、感動したのが、ACアダプタ。本体側の端子が、USBなのだ。つまり、充電もデータ交換もUSB端子を使えということ。合理的だなー。見習って欲しいよ、WILLCOMとかWILLCOMとかWILLCOMとか。他にも、マウントについている防水端子カバーが、本体搭載時は磁石でマウントにくっつくようになっていて、走行中にブラブラしないとか、すごく細かいところまで作りこんであって、かなり好印象。老舗は違うねぇ。
2008-03-14(金) [長年日記]
■ 「Amazon 退会」でググると一位な件
どうもアクセスが多いと思ったら、「Amazon 退会」でググると2003年11月11日の日記が一位だった。退会方法なんて、ツッコミに「メールで」ってあるだけでほとんど何も書いてないのに……。つーか、こないだのmixi規約改定の件といい、どいつもこいつも即座に反応しすぎ。
ちなみに、退会しても購入履歴は残るそうなので、無駄なあがきらしいですよ。
■ 存在しない静的ページへアクセスがあったらその場で生成したいんだが
煮え切らない試行錯誤のメモ。
たとえば、現時点では存在しないページ:
http://example.com/hoge.html
にアクセスがあったとする。でもhoge.htmlは存在しないので、404になる。そこでErrorDocumentディレクティブを使って、CGIのページに飛ばす:
ErrorDocument 404 /cgi-bin/generate.cgi
generate.cgiの中ではファイルhoge.htmlを生成して……さてここからが問題。
素直にLocationヘッダで生成後のhoge.htmlに飛ばしてもうまくいかない:
puts "Location: hoge.html\n\n"
IE7は空っぽの表示になった。ループを検知したのか、キャッシュが悪さをしているのか。そもそも404のままじゃまずいだろ。
じゃあ、generate.cgiのレスポンスをHTMLにして、meta refreshで飛ばしてはどうか:
puts <<-RES Content-Type: text/html <html><head> <meta http-equiv="refresh" content="1;url=hoge.html"> </head></html> RES
これはうまくいく。でも検索エンジンボットはたどってくれないから、不都合が多い。同様な理由でJavaScriptも採用したくない。
あ、Locationヘッダだけ指定するとステータスが404のままだからダメなのか? 303にしたら、なんかうまくいったんだけど、偶然だろうか*1:
puts <<-RES Status: 303 Moved Permanently Location: hoge.html RES
最終的にブラウザに返るステータスも200なので、これでいいなら楽だなぁ。RFCだけだとよくわからん。ぜったい誰かがやってるはずなので、ベストプラクティスがあるに違いないのだが。
続く。
*1 wgetはなぜか303でエラーだと言ってるが。IE7、Firefox、w3mはちゃんと移動してくれる。
◆ setu [ああ、rewriteなしですか。。。 $ cat .htaccess RewriteEngine On # if n..]
◆ setu [あ、問題は、ここの部分でしたね。 >素直にLocationヘッダで生成後のhoge.htmlに飛ばしてもうまくいかな..]
◆ ただただし [>setu CGIの出力をそのまま返せるのは、mod_rewriteのおかげで404を返していないからですね。やっぱ..]
◆ setu [そうですか。cgiが走る前に404を返されちゃうんですか。上のやりかたを作るときにエラーページの呼出しからキャッシュ..]
◆ hs [単純にgenerate.cgiでファイルを生成後、Status: 200+作ったファイルの中身を返す、という手はいか..]
◆ ただただし [えっ、そんな単純な話!? >hs たしかにちゃんと動きますねぇ……以前tDiaryでErrorDocumentを使っ..]
2008-03-13(木) [長年日記]
■ BEST SOFTWARE WRITING(Joel Spolsky)
『Joel on Software』の書評を訳者の青木靖さんが覚えていてくれていたらしく、献本していただいた。ありがとうございます!
Joelが書くものの面白さは、その視野の広さというか、バランスの良さだと思うのだよね。たぶん、マイクロソフトを含む仕事の幅がそうさせているのだと思うのだけど。だから本書のように、(Joelが書いたものではなく)Joelが編んだものにも同じように幅の広さを感じる。
まぁ、ちょっと(Joelの交友関係のせいか)マイクロソフト関係者が多すぎるような気もするけど、世間に出回っている書籍では逆にマイクロソフトを排除しすぎの傾向があるので、これはこれでバランスが取れていると言えよう。スタートアップばかりを渡り歩いてきたような人々による偏った意見ばかりがもてはやされる昨今、こういうチョイスは悪くない。
もっとも、すべてが「BEST」とはいえないと思う。たとえば、読んでいて恥ずかしくなるほど子供っぽい「嫌スーツ」的なマンガが載っていたりして、どういうつもりでチョイスしたのか理解できない。その直後に、逆にギークの自虐的なネタのマンガが載ってるので、これもバランス?
というわけで、個人的な「BEST of BEST」をあげてみる:
なぜアンドキュメンテッドな振る舞いに依存するアプリケーションを単に締め出さないのか?(レイモンド・チェン)
マイクロソフトが後方互換性に異常なほど執着をしていることを、いくつかの実例をあげて説明。OSSな世界にいると、互換性を気にしない大胆な変更がけっこう気軽になされることがあるけど、おれはこういうスタンスも大事だと思う。これもバランス感覚に優れたチョイス。
すごいハッカーとは(ポール・グレアム)
JoelとPaul Grahamはちょっと合わないんじゃないかと以前から思っていたんだけど、やっぱりそうなんだな(笑)。両者の「ハッカー」は定義からして違うからなんだろうけど。本文は例によって「Paul Graham節」なんだけど、それに反発しつつきちんと重要性を認識して掲載したJoelの懐の深さに感心する。
C++ ---- 忘れられたトロイの木馬(エリック・ジョンソン)
プログラミング言語の話に見せかけたマーケティングの話。
グループにとっての最悪の敵は自分自身である(クレイ・シャーキー)
これと続く「ユーザとしてのグループ」は、かなり長いけれどよくまとまったソーシャルソフトウェアの話。オンラインコミュニティで起こる問題のほとんどは、コードに書かれていない、という(プログラマが見落としがちな)当たり前のことが丁寧に描かれている。コミュニティの運営者、ソーシャルソフトウェアの実装者は読んでおいて損はない。
(マンガのキツネと学ぶ)短時間の(そして願わくば辛くない)Rubyコース(ホワイ・ザ・ラッキースティフ)
Rubyistにはおなじみ、_whyのRuby講座が(一部とはいえ)書籍で読める! わっほい!!
Hpricotのような彼の作ったライブラリを使っていると、_whyはただの変人か、それとも天才か判断に悩む。というか現時点では6:4で変人だと思うんだけど、変数の説明で「ニックネーム」なんていう端的で最高の比喩を持ち出すのを見ると、やっぱ天才なんじゃないかと思う。もっともその直後に、メソッドパラメタの比喩に「浮き輪」を持ち出して、変人に逆戻りなんだけど。
■ Firefox3 beta4を入れた
「めちゃめちゃ速い」と評判なので、ふだんはβ版なんてめったに使わないのに、意を決して入れてみた。メインブラウザは相変わらずSleipnirなんだけど、Ajax系サイトのいくつかはJavaSciptの実装が良いFirefoxを専用用途で使っているのだ(というかIEでは一部機能が動作しないか遅いサイトってこと)。具体的にはGmail、Google Calendar、Remember The Milk、Retrospectivaの4つ。
確かに、明らかに体感速度が上がっている。特にGmailのさくさく感は、ローカルのメーラーに近い。こりゃすごいね。ちょっとレンダリングが従来と異なっているとか、フォーカスの当たり具合に非互換があるっぽいけど、この快適さはすごい。常用しよう。
■ WILLCOM解約
Wireless GateによるWiFi Hot Spotが、けっこう行動範囲内で使い物になることがわかり(地方でもマクドに入ると使えることが少なくない)、ケータイもDoCoMoに代えてauよりもちょっと支払い金額が増えそうなので、WILLCOMに身代わりになってもらった。
まぁ、64kbpsなんて速度はもう、待ち時間がつらいだけでぜんぜんいいことないしな。だったらカフェかマクドを探してWiFi使う方がよっぽどいいし、そうでない時にはケータイの小さい画面でi-modeでいいよ、もう。
もっとも、iPod touchはPDAとしてはイマイチなので(せめてGoogle Calendarと単体で同期して欲しい)、W-ZERO3にはしばらくはスケジューラ(Offisnail Date + POsync)として活躍してもらうけど。
◆ MIO使い [電源端子がUSBだと振動が心配じゃないですか?]
◆ ただただし [あー、車載時の電源供給は、本体下部にある接触式の専用端子を使います。でないとワンタッチで取り外しができないので。]