« 2006年07月 | メイン | 2006年09月 »
2006年08月31日 (木)
ドラゴンのスヌーカーレッスン Part7 [ビリヤード・スヌーカー]
福田さんのレッスン会(@スヌーカークラブ)に久しぶりに参加。
実家へ帰っていたりで2回スルーして、スヌーカー自体も撞くのが約1ヶ月ぶりなので、大丈夫かなと思いつつまずは練習するとやっぱり入らなかったり。なのでとりあえず落ち着いてきっちりスタンスを取ってゆっくりショットしようということを考えてた。
そして福田さんとのフレーム。なんか夢中だったのかよく覚えていないのだが、レッド-ブルー-レッド-ブルー-レッドの13点ブレイク達成!! 5球つながったのって初めてじゃないかな? ブレイク中は「スヌーカー楽しい~!」とだけ思ってた。よく覚えていないのはそれだけ集中できていたということかもしれない。あとレッド-ブラック-レッドの9点ブレイクも出た。
フレームが終わって、自分の中でちょっと興奮しつつ他の人のプレイを見ていたのだが、人が少なくて回ってきた2フレーム目はやっぱりダメだった。ノーチャンス。でもまあ当分の目標である1日1回2ケタブレイクを達成したのでとりあえず満足。課題はたくさんあるけど。
帰りは福田さんにタクシーで駅まで送ってもらった。ありがとうございました~。
投稿者 4bit : 23:59 | コメント (2) | トラックバック (0)
2006年08月30日 (水)
ぶっ壊れた [にっき]
会社のPCのハードディスクがぶっ壊れた。仕事のデータを入れておいたマイドキュメントが全消失。ひどい。メールは別の場所に保存してあったおかげでなんとか無事だったのがせめてもの救い。
これは当分仕事にならないな。。。
投稿者 4bit : 21:30 | コメント (0) | トラックバック (0)
2006年08月27日 (日)
Rails勉強会@東京 第9回 [テクニカル]
ポジションペーパーは、「祝・SimplyRestfulプラグインマージ記念 map.resourcesのススメ」。以前の2つの記事を「URLのaction撲滅しようよ(Cool URI)」という観点から簡単にまとめたもの。
前半セッションは「LL Ringの家計簿アプリの中身を詳しく」。きのう開催されたLL Ringの「キミならどう書く」セッションで作成された家計簿アプリをかずひこさんの紹介で見てみる。
- テーブル設計
- 勘定科目
- id、名前、種類
- 仕訳
- id、日付、金額、借方id、貸方id
- あらゆるタグ
- 日付もタグ(!)
- 検索インターフェイスが統一される
- acts_as_taggable(gem版)利用
- rake stats便利
- annotate_modelsプラグイン
- rake annotate_models でモデルクラスの先頭に対応テーブルのスキーマコメントを埋め込んでくれる
- Lightbox Jojoで「ドドドド」「ドッギャァ~ン」(笑)
- グラフを描くにはgruffプラグインを利用
あらゆるタグ利用で、検索インターフェイスが統一されるというアイデアはすごい。
最後のほうでかずひこさんが話を振ってくださってmap.resourcesについて少ししゃべる時間をもらった。RESTセッションできたらいいなぁとか思いつつぜんぜんできてないけど…。ノートPCがないというのもあるし。もう買うしか。
後半セッションは、「has_one :throughを作る」。Yuguiさんが作っているhas_one :throughを正式にRailsのパッチとして提出するために、既存のActiveRecordの単体テストのどのモデルを利用するべきかなどいろいろ話し合った。
舞波さんも加わってABDの話題(はぶさんがしばらく封印とか言ってるし。。)も出て、どういうモデリングが必要なのか議論。とりあえずhas_one :throughのテストの方針は決まり、あとはパッチを受け入れてもらうためのユースケースを考えねばということに。それとは別に、このままいくと消えかねないhabtmの復活案も出て、内容の濃い時間だった。ちょっと後から思い出して整理しとこう…。
投稿者 4bit : 22:21 | コメント (0) | トラックバック (0)
2006年08月04日 (金)
舞波本きたー [テクニカル]
「優しいRailsの育て方」、通称「舞波本」購入。
あと最初に断っておきますが、そういうのは無いです。至って真面目な本です、ごめんなさい。
いや、最初のほうAA満載なんですけどwww AAで解説って斬新すぎw しかも舞波とか桃子とか至るところに出てくるしw
内容はRails一通りおさえたリファレンスって感じで役に立ちそう。「パッチを作る」なんてセクションもあるし。最初少しだけ書いたhtpasswdプラグインも載ってる。
あと、一緒にyoheiさんおすすめ(というか執筆なさった)WEB2.0キーワードブックも購入。著者陣が豪華。
「RESTって何?」って聞かれたときに、これ読んでってyoheiさんの章を安心して見せられます。
投稿者 4bit : 20:51 | コメント (0) | トラックバック (0)
2006年08月02日 (水)
map.resourcesのススメ(「SimplyRestfulプラグインのススメ」改め) [テクニカル]
前の記事に引き続き、map.resourcesのオプションの利用方法を解説。DHHによってRails本体にマージされちゃったので、「SimplyRestfulプラグインのススメ」って言えなくなっちゃった…。てことで改題。
コントローラ名を変える
コントローラにモデル名の複数形をつけるのが気に入らない場合、コントローラ名を好きな名前に変えることもできる。map.resourcesにオプションでこのように指定してやるだけだ。
map.resources :people, :controller => "person"
特定のパラメータを必須にしたい場合
例えば、特定のグループ(ID)に属するユーザの一覧を表示したいとき、
map.resources :users
とするとURLは
/users?group_id=1
のようにgroup_idをパラメータに取ることになるが、あるグループに属するというのを標準にしたければ、
map.resources :users, :path_prefix => "/groups/:group_id"
とすると、URLは
/groups/1/users
とすっきりと表記できる。
このとき同時にオプション :name_prefix => "groups_" と指定すれば、名前付きルートの名前の最初に groups_ がつき、通常と区別することができる。よって、
map.resources :users # 通常のユーザ map.resources :users, :path_prefix => "/groups/:group_id", :name_prefix => "groups_" # グループに属するユーザ
のように2種類同時に使うことも可能。
CRUDから外れたアクションを追加する場合
DHH曰く、「ここは敢えて CRUD から外れよう、と判断するのはありだと思う。こういうのはバランスの問題で、極端に走るのがいいとは限らない」。
例えば、ユーザにマークをつけるmarkアクションを追加する場合、このように指定する。
map.resources :users, :member => { :mark => :post }
これで mark_user という名前付きルートで
/users/1;mark
という形のURLがHTTP POSTに限って使えるようになる。
オプションとして与えるハッシュのキーはそれぞれ以下のように対応している。
キー | URL |
---|---|
:member | /users/1;アクション名 |
:collection | /users;アクション名 |
:new | /users/new;アクション名 |
ハッシュの値のハッシュ(ややこしい)は、{ アクション名 => 許可されるHTTPメソッド } の形で指定する。
あんまりすっきりした形で指定できないなあと思うけど、そもそもCRUDから外れたアクションはあまり追加しないほうがいいわけで、乱用は禁物だ。
最後に
Rails本体にマージされたということで、いよいよRailsアプリがCRUDに、RESTfulになる日が近づいてきている感じがする。正直個人的には1.2の機能ではActiveResourceよりこっちのほうがうれしい。Edge Railsを厭わない人は今からでもどんどん使ってみて、CRUDな設計・実装をぜひ実現してください。僕もいろいろ使ってみてABDとの相性などを調べていきたいと思う。
参考
- Refactoring to REST
IconBuffet.comというサイトをSimplyRestfulプラグインを使ってRESTにリファクタリングしてみましたというメモ。 - Getting RESTful on Rails (Part 1)
英語でのSimplyRestfulプラグインの解説。こっちのほうがわかりやすいかも? - SimplyRestful plugin backport
SimplyRestfulプラグインのRails1.1.4向けバックポート。ルーティングのセパレータにセミコロンやピリオドが使えないのでなかなかつらいようだ。使ったことないのでどなたか使ってみてください。 - Request Routing Plugin
上のバックポートを動かすのに必要なプラグイン。ルーティングの:conditionsに:subdomain, :domain, :method, :port, :remote_ip, :content_type, :accepts, :request_uri, :protocolが指定できるようになるという、なかなか使えそうなプラグイン。
投稿者 4bit : 19:04 | コメント (0) | トラックバック (0)