2007-02-07(水) [長年日記]
■ tDiary: 環境変数とproxyでハマる
最近はWebサービスを使うプラグインが増えてきて、必然的にtDiaryの動いているWebサーバからHTTPリクエストを出すことになるんだが、企業内で運用されてたりするとproxyを経由しなくてはいけない。この手のプラグインのさきがけであるamazon.rbが@options['amazon.proxy']というオプションを持っていたため、これを使いまわすプラグインがあり、「あんまりだ」という話になった。
そこで解決策として、新たに@options['proxy']というオプションを設け、これを共有することにした。HTTP以外のproxyなんて考慮しない大胆な設計。これを「HTTP脳」と名付けよう(余談)。
そうなるとさらに楽をしたくなるもので、GETリクエストしか使わない簡便なWebサービスの場合、open-uriを使ってproxy対応も「お任せ」にしたい。open-uriは環境変数を見てくれるので、@options['proxy']の値を環境変数に設定したらいいのではないか、ということで実装してみた。
まずはENV['HTTP_PROXY']に代入してみたところ、この値を見てくれない。調べてみたらruby-dev:22013という大昔の投稿を発見する。なるほど、たしかに危険だ。
じゃあ、ということでENV['CGI_HTTP_PROXY']を設定したら、proxyへのコネクションを開くところでこんどはInsecure operationなる例外が。これも調べてみると、ENVへのプログラム内部からの代入はすべて「汚染済み」扱いされてしまって、おまけにfronzen状態なのでuntaintもできない、と。そりゃそうか。今日は新発見が多いなぁ。何年Rubyやってんだ、おれ。
というわけで、@options['proxy']は採用するけど、それ以上の楽はできない、ということになりました。とほほ。巻き戻さないと(←ENV['HTTP_PROXY']代入版をcommit済みだったりする)。
2007-02-06(火) [長年日記]
■ はてなグラフでダイエットに挑戦(3)
先月、はてなグラフのAPIにデータ取得機能を要望したものの、まったく採択される兆しがない。もっとポイントをつぎ込まないとダメ?
しょうがない。ダイエットは待ったなしなので(というほどでもないが)、体重管理だけでもやろう。
ということで、「体重計に乗ったその場でメールを送るとグラフに反映させるツール」……を書くんじゃなくて、コマンドラインからグラフを更新させる汎用的なコマンドを作成した。せっかくなのでRubyForgeで公開(→hatena-graph-update)。
これをインストールして、procmailあたりでこんな感じの設定を書けばいい(.netrcを使ってID/PASSを書かずに済ませている):
:0 * ^TO_.*weight@example.com | sed '1,/^$/d' | hatena-graph-update weight
あとはメール本文に体重を記入して、weight@example.comにメールするだけ。でも体重グラフは非公開だよ!(笑)
その代わり、この日記に来るツッコミspam/リンク元spamの数を、ログから算出してグラフ化して公開中。サイドバーの下のほうに張ってある。これはdailyにcronでこんな感じに実行:
#!/bin/sh yesterday=`date -d yesterday +%Y-%m-%d` cd ~/var/log mv spam.log spam.log.$yesterday wc -l < spam.log.$yesterday |\ hatena-graph-update -u hoge -p hoge -d $yesterday spam
2007-02-05(月) [長年日記]
■ やっぱおれ、クラークは合わないわ。
BS2で『2001年宇宙の旅』をやっている。何度も観ているけど、色彩とか光の扱いがすばらしくて、ついつい観てしまうな。傑作だ(HALが死ぬあたりまでは)。
ところで、モノリスが登場するシーンで流れる不気味なコーラスを聞きながら:
妻: ほら、共鳴してるよ
俺: モノリスを作ったのはケロン人だったのか!
2001年といえば今、「2001年の直角編」と銘打ったクラーク&バクスターの『
時の眼』を読み始めたところなんだが、これがもー、ちっとも面白くねぇの。人類発祥から21世紀までの複数の時代がモザイクのように入り乱れる異常な事態……という出だし、それだけ聞くと実に面白そうなんだが、テンポは悪いわ、説明は長くてクドいわ、おまえは話を進める気があるのかと。
そもそもクラークって作家は、小説はすごく下手だと思うんだけど(小説以外のところに価値のある人なわけで)、今回はバクスターとの共作ということでちょっと期待してしまったのが間違いだったか。まだ読み始めたばかりだから、駄作と判断するには早いけど。つーか、クラークがどのパートを書いているのかわからんけど。
だいたい、表紙の二人の名前の大きさが、あまりに違っていて失礼な話である。そりゃクラークの名前で売りたいのはわかるけどさ。原書では同じ大きさなのに。
◆ yoosee [open-uri のソース見ると opt_proxy が String の時はそれを使うっぽいので open(..]
◆ ただただし [現在の実装がそうなっているんです。それを環境変数に頼ることで不要にし、proxyの存在を気にかけない実装者がいても問..]