「山椒大夫・高瀬舟」読了
- 作者: 森鴎外
- 出版社/メーカー: 新潮社
- 発売日: 2006/06
- メディア: 文庫
- 購入: 7人 クリック: 81回
- この商品を含むブログ (89件) を見る
森鴎外も相当有名ですが、やっぱり読んだことはありませんでした。
有名なのは「舞姫」でしょうか。
山椒大夫は、感動の再開を描いた物語。
高瀬舟(いわゆる島流しの刑で使われた舟のことらしい)は、経済観念と安楽死の是非を問うた物語で、短いながら、結構読み応えがあります。
他にもいくつか面白いところがあります。
カズイスチカより
自分が遠い向うに或物を望んで、目前の事を好い加減に済ませて行くのに反して、父はつまらない日常の事にも全幅の精神を傾注しているということに気がついた。宿場の医者たるに安んじている父のresignation(訳注:諦念)の態度が、有道者の面目に近いということが、朧気ながら見えてきた。
この文などは、どこかでもっと自分にあった仕事が他にもあるのではないかと思っているか、あるいは、これが自分の進むべき道と腹をくくったかの違いでしょう。
妄想(もうぞう)より
生まれてから今日まで、自分は何をしているか。始終何物かに策うたれ駆られているように学問ということにあくせくしている。これは自分に或働きが出来るように、自分を仕上げるのだと思っている。その目的は幾分か達せられるかも知れない。しかし自分のしている事は、役者が舞台へ出て或る役を勤めているに過ぎないように感ぜられる。その勤めている役の背後に、別に何物かが存在していなくてはならないように感ぜられる。策うたれ駆られてばかりいる為めに、その何物かが醒覚する暇がないように感ぜられる。
これも上と同じようなことを言っているような気がします。
ただ、結局のところ、「今」を一番大事にすべきだと言われているような気がします。
「RESTful Webサービス」読了
- 作者: Leonard Richardson,Sam Ruby,山本陽平,株式会社クイープ
- 出版社/メーカー: オライリー・ジャパン
- 発売日: 2007/12/21
- メディア: 単行本
- 購入: 25人 クリック: 842回
- この商品を含むブログ (168件) を見る
- RESTful Webサービスとは何か、リソース指向アーキテクチャとは何か、どのように設計・実装すべきかが知りたい人向け。
- RESTとうたいつつ、RESTful Webサービスになっていないものが多数ある。例えば、リソースを取得するだけなのにPOSTメソッドを使っていたり、リソースを更新するのにGETメソッドを使っているなど。
- Webサービス開発の流れは、RESTfulの方向に流れつつある。それを裏付けるかのようにHTML5の新しい仕様の策定が行われていたり、RailsなどのWebフレームワークでリソース指向アーキテクチャがサポートされるようになってきている。
- 現時点で有力なRESTfulなフレームワークは、Rails(ruby)、Restlet(java)、Django(python)といったところらしい。
個人的には、HTML5がどんな感じなのか知りたいなと思ったのと、HTTPをもう少し深く理解したいなと思いました。(リクエスト/レスポンスヘッダや、レスポンスコードが重要なので)
「RailsによるアジャイルWebアプリケーション開発」21章読み中
ActionControllerの続き。
コントローラクラス内のpublicメソッドをactionとして使わない方法。
通常であれば、privateメソッド、もしくは、protectedメソッドとして隠します。
private # DELETE /products/1 # DELETE /products/1.xml def destroy @product = Product.find(params[:id]) @product.destroy respond_to do |format| format.html { redirect_to(products_url) } format.xml { head :ok } end end
この状態で、destoryアクションを呼ぶと、Unknown action (No action responded to destory)となります。
じゃあ、publicのままで、でも、アクションとして使いたくない場合は、hide_actionを使います。
hide_action :destroy # DELETE /products/1 # DELETE /products/1.xml def destroy @product = Product.find(params[:id]) @product.destroy respond_to do |format| format.html { redirect_to(products_url) } format.xml { head :ok } end end
同じく、Unknown actionとなります。
ただ、本書中にもあるように、コントローラ中にアクションでないpublicメソッドがある場合は、リファクタリングを検討した方が良さそうです。
Unknown actionが発生した時にデバッグ情報を出力する
render(:inline => string, [:type => "rhtml"|"rxml"|"rjs"], [:locals => hash])
を使うとできます。
if RAILS_ENV == "development" def method_missing(name, *args) render(:inline => %{ <h2>Invalid Action: #{name}</h2> request parameter is :<br/> <%= debug(params) %> }) end end
if RAILS_ENV == "development"は、開発モードのみという判定。
上記のコードをコントローラ(products_controller.rb)の一番下に入れて、
試しにhttp://localhost:3000/products/hoge/1にアクセスしてみると、以下のように表示されました。
Invalid Action: hoge request parameter is : --- !map:HashWithIndifferentAccess action: hoge id: "1" controller: products
デバッグに役立ちそうですね。
ファイルをダウンロード
send_dataとか、send_fileというのを使うらしい。
試しに、products_controller.rbに以下のようなメソッドを追加。
def index_download @products = Product.find(:all) send_data(@products, :filename => "products.txt") end
で、
http://localhost:3000/products/index_download/1
にアクセス。
すると、
おお!出た出た。
割りと簡単なのね。
で、早速ダウンロードしたファイルを開いてみる。
#<Product:0xb7798cb0>
...全く面白くないが、ダウンロードさせるっていう目的はいいみたい。
つまらないので、CSV形式(タイトル,URL)にしてみる。
products_controller.rbを以下のように修正。
def index_download @products = Product.find(:all) data = "" @products.each { |p| data = data + p.title + "," + p.image_url data = data + "\n" } send_data(data, :filename => "products.txt") end
別にどうってことはないのですが、ちょっとは実用的になったかも。
URLはちょっとヘンですが。。
(2008/07/24 追記)
routes.rbに以下の行を追加。
map.connect ':controller/index_download', :action => "index_download"
map.resources :products
の行の前に入れないとダメです。
これで、
http://localhost:3000/products/index_download
と、/1なしのURLでもindexをダウンロードすることが出来るようになりました。
301 Moved Permanentlyを返す(つもりが出来てない?)
products_controller.rbにこんなアクションを追加。
def moved headers["Status"] = "301 Moved Permanently" redirect_to("http://www.yahoo.co.jp/") end
で、
http://localhost:3000/products/moved/1
にアクセス。
すると、Yahoo Japanのホームページに飛びました。
一見うまくいったように見えるものの、Live HTTP Headersで見てみると、
なぜか
HTTP/1.x 302 Found
が返ってきてる。なんでだろ。
Rails的に301よりも302の方が適切っていう判断なのかしら。
(2008/07/24 追記)
コメント欄で指摘いただきましたが、
def moved # headers["Status"] = "301 Moved Permanently" redirect_to("http://www.yahoo.co.jp/", :status => 301) end
でうまくいきました。