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はちゃんと移動してくれる。
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)として活躍してもらうけど。
2008-03-12(水) [長年日記]
■ Post-itの「透明見出し」を使って便利しおりを作る
じっくり腰をすえて読みたい本には、Post-itのフラッグ透明見出しで付箋を貼りながら読んでいる。透明なので下の文字を隠さないし、書き込みもできるので重宝する。1枚1枚取り出しやすいプラスチックケースに入っているので、無印良品のパチもんより使いやすい。
とはいえこのケース、デスクに置いて使う分にはいいのだが、電車で通勤中に立ち読みしてるときにはちょっと使いづらいので、使い切った空ケースを使って「しおり」に加工してみた。
用意するもの。使い切ったフラッグの空きケースと、新しいフラッグ。あとははさみと両面テープ。
空きケースの折り返している部分で本を挟むことで、しおり機能を実装するわけだが、この折り返しは左右についているので、一方を切り落とす。そのままでは厚くなって、本が膨らんでしまうため。気にならないならそのままでも良いだろう。
切り落とした空きケースの背面(平らな方)に、両面テープを貼る。適当に切り落として2列に貼ったらぴったりだった。その後、新品のフラッグの背面とぴったり合わせて貼り付ける。
空きケースの折り返しで読みかけの本のページを挟むと「しおり」になる。10ページくらいまとめて挟むと安定するので、フラッグは片手で取り出せるようになる。
■ 火星人ライクな三脚「Gorillapod」を買ってみた
上の記事を書くために(というだけじゃなくて前から欲しかったんだけど)、三脚を買ってきた。グネグネ曲がる火星人のような三本の足で、場所を選ばずに使えるGorillapodである。ちなみにおれの愛用デジカメであるCONTAX SL-300R T*には三脚穴がないので、かみさんのIXY DIGITAL55を使用*1。
三脚穴にねじ込む部分がちゃんと分離式になっていたり、そのパーツが不用意に外れないようにロック機構があったりして、けっこう真面目に作ってある。でも、全体的に柔構造すぎるせいか、肝心のカメラが振動を拾ってしまってゆらゆらと安定しない。今回はセルフタイマーを使ったから大丈夫だったけど、風の強い屋外だとブレるかもねぇ。
あわよくばバイクに車載できるかも……とか考えていたけど、それはたぶんムリだな。もちろん、停車中にハンドルなんかに固定できるのは便利そうなので、ツーリングで持ち歩いてみようとは思うけど。
なおこの商品はAmazonでも買えるので、Amazonに個人情報を撒き散らされても平気な人はどうぞ。おれは本名晒してる勝ち組なので気にしなーい。
*1 借りました。事後承諾。
Before...
◆ 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を使っ..]