Sooey

2011-03-23 15:22:12 +0900

  • REDbot - RED is a robot that checks HTTP resources to see how they'll behave, pointing out common problems and suggesting improvements. Although it is not a HTTP conformance tester, it can find a number of HTTP-related issues.

2011-03-22 16:10:40 +0900

heroku consoleが原因でブラウザからのアクセスがブロックされる場合がある。

という挙動が手元では確認できているのですが、いまいち因果関係がつかめないので、確認できたことだけ書いておきます。Herokuで運用中のアプリケーションをheroku consoleでメンテする時は気に留めておくといいかもしれません。

Herokuにデプロイしたアプリケーションはheroku consoleで対話的な操作が可能となるため、簡単なメンテナンス作業やデバッグをここで済ませてしまうこともあると思いますが、ここで時間のかかる処理を行うと、その間ブラウザからのリクエストが(heroku consoleのレスポンスが返るまで)待たされることがあります。のんびりループとか回してると、その間誰もアクセスできない恐怖。

このことは、たとえばheroku consolesleep 20といったコマンドを実行している間に、ブラウザでアプリケーションにアクセスするとリクエストの完了までに20秒以上待たされることから確認できると思います。

調べてみてわかったことは、heroku consoleコマンドが裏側でHeroku APIに対してPOSTリクエストを送るような構造になっていることと(/lib/heroku/client.rb#L209)、そのリクエストが最終的にDynoで処理されているということ。

例として、アプリケーションのDynoが1つだけの場合、以下のようにしてheroku consoleを実行すると、

$ heroku console "puts 'console with 1 dyno'"

heroku logsで取得できるログは次のようになります。

2011-03-23 00:29:15 +0900 app[web.1]: console with 1 dyno
2011-03-23 00:29:15 +0900 heroku[router]: POST myapp.heroku.com/_heroku/console dyno=web.1 queue=0 wait=0ms service=4ms bytes=189
2011-03-23 00:29:15 +0900 heroku[nginx]: POST /_heroku/console? HTTP/1.1 | 50.16.64.138 | 171 | http | 200

Heroku APIに向けて投げられたconsoleコマンドのPOSTリクエストが、Router、Nginxを経由して自分のアプリケーションのDyno(=この場合はweb.1)までたどり着いています。各行の順序がしっくりこないのはたぶんそういうもの。

heroku consoleがDynoを専有するから…ということであれば話は簡単で、アプリケーションに割り当てるDynoを2や3にすれば解決しそうですが、実際に試したところ、タイミングによってブロックされたりされなかったりという感じで、Dynoだけの問題ではなさそう。複数のDynoを起動して、heroku consoleとブラウザからのリクエストを何度か行ったケースのログを見ると、Dynoがレスポンスを返した後のNginxかRouterで詰まっているような気がしないこともない。

そうでなくても以下のようなこともあるし、基本的にheroku consoleで待ち時間の発生する処理はしないということで今のところは逃げています。

$ heroku console
>> sleep 70
Timed out. Long running requests are not supported on the console.
Please consider creating a rake task instead.

2011-03-10 02:38:02 +0900

3月9日のメモ。

2011-03-09 03:13:05 +0900

ATNDの新着イベントRSSに出てくる興味のないエントリを削除するため、ひさびさにYahoo! Pipesを使った。

ATNDの新着イベントRSSから、

  • titleに"合コン"または"おひとりさま"を含む
  • authorに"4seenjp"、"blanClass"、"techzone"を含む

エントリを取り除いています。SafariでRSSをプレビューすると、タイミングによってはエントリのタイトルが文字化けするんだけど、livedoor readerで読む限りは問題なさそう。

2011-03-05 15:09:32 +0900

@mochizからアマゾン経由で誕生日プレゼントが届きました。ありがとうございます。

今回、アマゾンからプレゼント的なパッケージングで届いたわけですが、せっかくの機会なので開封の儀を記録してみました。誰かにアマゾン経由でプレゼントを贈ろうと考えている方には、どんな感じで届くのかのご参考に。

まず、ダンボール自体はいつものアマゾンと同じですが、伝票に贈り主の名前がプリントされています。

01 | Flickr - Photo Sharing!

箱を開けると、リボンのかかった緑色のパッケージがあらわれます。

02 | Flickr - Photo Sharing!

同封されている伝票には、贈り主からのメッセージと住所氏名がプリントされています(住所の掲載可否は選べるのだろうか?)。

03 | Flickr - Photo Sharing!

ブツには5センチ四方くらいの大きさのメッセージカードが添付されており…、

04 | Flickr - Photo Sharing!

伝票にあったものと同じメッセージがプリントされています(伝票への印刷はいらなかったのでは…)。

05 | Flickr - Photo Sharing!

メッセージカードとリボンを外すと…、

06 | Flickr - Photo Sharing!

リファクタリングRuby―実践ワークブックが登場です(ケロロは撮影者私物)。

00 | Flickr - Photo Sharing!

レッドブル エナジードリンク 250ml×24本とかじゃなくてよかった!ウィッシュリストをメンテしておいたおかげで、ダブることもなく、よいものをいただきました。アマゾンのウィッシュリストをFacebookと繋ぎ込むようなアプリがあれば、もっと素敵なことになりそうです(もうありそう)。

そして、今回プレゼントとしてもらったぶんはOLPC Foundation | FacebookのCauses経由でOne Laptop per Childに寄付してみました。

One Laptop per Child | Flickr - Photo Sharing!

OLPCのサイトやFlickrで見られる子供たちのいい写真を見ると、ITに携わって生活している者としてはなんとも支援したくなっちゃうのです。CausesはOLPCに限らず様々なプロジェクトを金銭的に支援できるとても素晴らしいアプリなので皆さんもよかったら使ってみてね。

…と書いていたら誕生日が終わった。