Apacheは知らないhttpステータスは返さない。
正しくは、500を返す。
render :nothing => true, :status => 450
なんてことをしていて、Mongrelの開発環境だとちゃんと450が返ってくるのにApache+Passengerの検証環境だと500が返ってきていた。
そこで原因を調べたところ、返す可能性のあるステータスコードはすべて定義されていて、それ以外は500で返している。(※ソースは後述)
で、なんでこんなことをしようとしているのか。Flashのアップローダを作ってFileReference#upload()でアップロードしているのだけれど、こいつが結果をHTTPステータスでしか受け取れない。だから、結果のメッセージをサーバから返してそれを表示する、てこともできない。
アップロード自体が成功したか否かを知るには200かそれ以外か、くらいで十分なんだけれど、アプリ要件(たとえば、アップロードが終わってからファイルを受け付けられない状況になってただとか、ファイルの中身を見て判断しなきゃいけないだとか)での結果を返すには、これでは足りない。
結局、Apacheのソースコメントでunusedとなっていた418~421に意味を持たせ、そこを使って対応しました。層を混同していて気持ちがいいものではないのだけれど、影響範囲は広くなく、なんらかのフラグを立てて別リクエスト、のコスト増を考えるといいだろうとの判断。もしなにかいい方法があったら教えてください。
以下、Apacheソースの該当部分。
続きを読む…
発想の違い。
if pred method(100) else method(200) endのようなものを見ると
method(if pred 100 else 200 end)と書きたくなってしまいます。
このifの纏め方は、LISPではすんなり流れるものの、Rubyだとif〜endが重たくみえるので、なんとなく書いてはいけないようにさえ感じます。
ささった。言われてなるほど、同じことをするにも使う言語によって考え方が変わるという、わかりやすい例だと思いました。
確定申告の本。
前の版にはフリーになった年にだいぶお世話になって、いまでも時々リファレンスとして使っていたのですが、改訂版が出ているのを知ったのでさっそく買ってきました。入れ替えて置くことにします。
手引きや他の本を読んで「こう書いてあるけど、少し違うこういう場合はどうするんだろう?」って思うようなことが、こちら側視点で具体的に書かれているのが魅力です。
![]() |
日本一かんたん!フリーのための確定申告ガイド 情報センター出版局(2009-12) 情報センター出版局 新品価格:¥ 1,575 ASIN:4795850429 |
残念ながらアマゾンでは売り切れちゃってますが、大きめの本屋さんなら確定申告コーナーにあると思います。これはおすすめ。
rake notesが出してくれる範囲。
configの下も出したかったので調べた。
rails-2.3.5/lib/source_annotation_extractor.rb
48 # Returns a hash that maps filenames under +dirs+ (recursively) to arrays
49 # with their annotations. Only files with annotations are included, and only
50 # those with extension +.builder+, +.rb+, +.rxml+, +.rjs+, +.rhtml+, and +.erb+
51 # are taken into account.
52 def find(dirs=%w(app lib test))
53 dirs.inject({}) { |h, dir| h.update(find_in(dir)) }
54 end
ここね。
ATOK 2010。
日本語入力システム ATOK 2010 for Windows
変換エンジン・ATOKハイブリッドコアに新アルゴリズム導入、変換精度がさらにアップしました。もちろんWindows 7対応、よりスピーディーな入力環境を実現。ATOK 2010 for Windows [プレミアム]には入力したらすぐに翻訳できる、Web翻訳変換機能を新たに搭載いたします。
今年もこの季節がやってきました。もうちょっと早く予約はじまると誕生日特典が使えるのになーとかせこいことを毎年考えています。
TokyuRuby会議01に行ってきました。
TokyuRuby会議01 – Regional RubyKaigi
- TokyuRuby会議は東京で2回目の開催となるRegional RubyKaigiです。
- Rubyに興味を持つエンジニアが集う「Tokyu.rb」主催の、LT大会です。
- 飲み食いしつつ、みんなでLTをして盛り上がろうというイベントです。
自分はATOKプラグインをGemにした話をしました。
↑のGemは↓です。
atok-twitter | gemcutter | awesome gem hosting
Twitter client on ATOK.
みんなで持ち寄ってワイワイもいいですね、スタッフの皆さんありがとうございました!
Libronの埼玉県対応をしました。
Libron は Amazon のページから最寄りの図書館(*)の蔵書を検索できる便利なツールです。
Amazonのページから最寄りの図書館の蔵書を検索できるLibron(引用まんまじゃないか)で地域対応が進められているのを見て埼玉県在住としてだまっておられん、ということでやらせていただきました。
少し探してみたら埼玉県にも図書館を横断検索できるシステムがあったのでここを利用しようとしたのですが、調べてみると予想外の仕様・・・。
ここで検索すると裏側で各施設にリクエストを投げなおして、返ってきた結果をキャッシュしてフレームのひとつにはめ込むという挙動みたい。その結果は各施設のページそのものなので、チェックをつけた施設によってフォーマットはばらばら、しかもフレーム内で数回遷移するので数回リクエストを投げないと結果をとれない。これでは各施設に個別にリクエストを投げるとの変わらない、というかそれ以上に複雑になってしまいます。
そもそも人がブラウザを通して使うように作られているので当然と言えば当然です。しかしこれではあまりにもあまりではないですか。
ということで埼玉県/推計人口で、市町村または施設の検索ページが用意されている単位にそれぞれ人口を調べ、多い順に5件の施設を対応しました。
こういう経緯でのチョイスなので、いつも使ってる図書館がないよって場合にはここにコメントをいただけると追加できるかもしれません。
といいつつ、いちばん先に対応するべきであろう「さいたま市図書館」はISBN指定ができない(!?)ために対応できないのですが・・・。
rake db:seedっての。
Rails 2.3.4から入ったrake db:seed。所謂マスターデータを入れる処理はmigrationじゃなくてこっちにしようという話。
もう悩まない!


