« 2006年03月 | メイン | 2006年05月 »
2006年04月30日 (日)
888.com World Snooker Championship Semifinal [ビリヤード・スヌーカー]
Peter Ebdon v Marco Fu
Graeme Dott v Ronnie O'Sullivan
ワールドチャンピオンシップも準決勝。スティーブン・マグワイア、ケン・ダハティを撃破してついにアジア過去最高のベスト4まできたマルコ・フー! 決勝進出をかけてピーター・エブドンと対戦。ディサイダーまでもつれる激戦の末17-16でエブドンが勝利。マルコ・フー惜しかった…。プレミアを見てても実力は上位クラスなのは間違いないので、来シーズンこそはトーナメント優勝を成し遂げて欲しいです。
もう1つの準決勝は、優勝候補ロニー・オサリバンが、グレアム・ドットに17-11でまさかの敗戦。なんてこった。
ってことで決勝はエブドン対ドットになった。どっか中継してくれよー。
投稿者 4bit : 13:15 | コメント (0) | トラックバック (0)
2006年04月19日 (水)
888.com World Snooker Championship [ビリヤード・スヌーカー]
ついにやってきました世界最大の大会ワールドスヌーカーチャンピオンシップ。優勝賞金25万ポンド(たぶん。約5000万円)をかけた熱い戦いが5月1日まで繰り広げられる。
1回戦からベストオブ19フレーム(つまり10フレーム先取)というかなりタフな戦い。なんと今季好調のジョン・ヒギンズがいきなり敗退の波乱。昨年度チャンピオンのショーン・マーフィーや、スティーブ・デイビス、ロニー・オサリバンその他上位選手は順当に1回戦を勝ち上がり。プレミアスヌーカーリーグでおなじみのマルコ・フーも勝ちました。ポール・ハンターは残念ながら負けたけど。あとスティーブン・ヘンドリーが3-6(途中)で負けているのがちょっと気になる…。
昨年と同じく、決勝だけでも動画を見られないかと祈ってます。今年は誰が決勝に残るだろうか…。楽しみ~。
投稿者 4bit : 20:21 | コメント (0) | トラックバック (0)
2006年04月17日 (月)
Controller#respond_toはWeb ApplicationとWeb Serviceの垣根をなくす!? [テクニカル]
昨日のRails勉強会のポジションペーパーの内容を起こしてみた。内容はほとんどヽ( ・∀・)ノくまくまーからのインスパイヤなんですが。なので詳しくは元記事を見てください。このblogの記事の流れとしてはずいぶん前の「RESTful Web Applicationの可能性」からの続きの内容という感じです。
Rails 1.1からの新機能として、Controller#respond_toというメソッドができた。どういうものかというと、
- HTTP/1.1リクエストヘッダ中のAcceptフィールドを見る
- Content-Typeに応じてリクエストのデータ形式を自動変換してくれる
- 従って、コントローラは同じロジック(action)で対応できる
- Acceptの種類(mimeタイプ)に応じて、実行する描画処理を指定できる
- "*/*"が指定された場合はrespond_toの最初の定義を実行する
respond_to do |type|
type.html { render }
type.yaml { render :text => @resource.to_yaml }
type.xml { render :text => @resource.to_xml }
end
さらにREST的インターフェイスを実現するために自前でコントローラを実装する。
class RestController < AbstractRestController
def resource
model_name = params[:model].camelize
model = eval(model_name) # *超危険*
if params[:id] # idがあればMember URI
id = params[:id]
@resource = model.find(id)
case request.method
when :get
# Retrieving a Resource
respond_to do |type|
type.xml { render :text => @resource.to_xml }
type.yaml { render :text => @resource.to_yaml }
#type.json { render :text => @resource.to_json }
#残念ながらtype.jsonはまだ対応していない
end
when :put
# Updating a Resource (省略)
when :delete
# Deleting a Resource (省略)
end
else # idがなければCollection URI
case request.method
when :get
# Listing Collection Members (省略)
when :post
# Creating a Resource
new_resource = model.new(params[params[:model].to_sym])
if new_resource.save
render_post_success(:id => new_resource.id)
else
render :text => new_resource.errors.full_messages.join("\n"), :status => 406
end
end
end
end
さらにroutes.rbをこんな感じに設定。
map.connect 'rest/:model/:id',
:controller => 'rest', :action => 'resource', :id => nil
/rest/<モデル名>/<ID> という統一されたURI(Atom ProtocolでいうMember URI)でリソースにアクセスでき、さらに"Accept: application/xml"をつけるとXMLで取得、"Accept: application/x-yaml"をつけるとYAMLで取得したりできる。(JSONのMIMEタイプにまだ対応していないのが惜しいが、application/javascriptでもいいかな)
さらに取得だけではなく、/rest/<モデル名>というURI(Collection URI)に"Content-Type: application/xml"をつけてXMLをPOSTすれば、通常のFORM形式に変換してデータをCREATEしてくれる(くまくまーでは「うまく動きませんでした」って書いてあるけど、Rails 1.1.2で動作を確認。ただしContent-Lengthヘッダが必要)。
アプリケーションのすべてがRESTである必要はないが(というか無理)、Ajaxで使われるインターフェイスなどはとくにこんな感じで簡単にRESTが使えると、Webアプリケーションが即Webサービスとしても使えるようになるのでうれしい。
参考:
投稿者 4bit : 11:21 | コメント (2) | トラックバック (0)
Rails勉強会@東京 第5回 [テクニカル]
第0回以来、久しぶりにRails勉強会に参加。ポジションペーパーの内容はこちら
前半のセッションは、僕がなにげなく発した「Rails 1.1の新機能って前回やったんですっけ?」の一言からセッションオーナーになってしまい、たいした準備もないままぐだぐだのセッションになってしまった。参加してくださった皆さんすいませんでした。そしてサポートしてくださったIさん(名前間違ってたらすいません)本当にありがとうございました。内容はこんな感じ。
- Cascaded Eager Loading (ActiveRecordでは最も大きな変更点) 参考1 参考2
- 実際のアプリのDB構成では2階層以上のリレーションを持つ場合がほとんどなので、今まではSQLを書いていたが、これによって書く手間が省ける。とてもうれしい。使いまくり
- paginateで使えるの? →ソースを見てみた結果、findを呼んでるだけなので使えるはず。OFFSET, LIMITをつけたときの挙動などはSQLの問題
- Rakeコマンドのnamespaceが変更
rake -T
でタスク一覧を見てみるとコロンでつなぐ形式に変わっているのがわかる- tmp:sessions:clearとかrails:updateとかいろいろ使えそう
- Rails 1.1(というかRake 0.7)になってタスクがかなり増えている?
- 「Rakeを使いこなす」って感じで独立セッションにしてもおもしろそう
- 国際化
- 1.1でもあまり変わっていない
- ActiveHeartは使えるはずなので使いましょう
- Controller#respond_to
- 僕が個人的に注目してます(ポジションペーパー参照)
後半のセッションは、かくたにさんの「俺と一緒にRecipe 43を一緒に読まないか」。Rails Recipesという本の主にIntegration Tests関係の話題。
- Testing Across Multiple Controllers
- 今までModel(unit)とController(function)単位のテストサポートだったが、Integration Testsとしてストーリーレベルのテストをサポート
- ストーリーに沿ってテストを可読性の高い形で記述しよう。そうするとテストがもっと楽しくなるよ
- DSLマンセー
- Make your URLs Meaningful
- 名前つきルートを効果的に使おう
url_for :action => :login
のかわりにlogin_url
とか書けるので可読性がさらにアップ
終わった後は恒例の懇親会。なんとなく、みんなJavaには苦労してるんだなーと思ったり、意外な人のつながりがわかったり、出版業界の裏話とか聞けたりしておもしろかったです。みなさんありがとうございました。そして幹事の井上さんありがとうございました。
投稿者 4bit : 10:14 | コメント (0) | トラックバック (0)
2006年04月13日 (木)
ドラゴンのスヌーカーレッスン Part3 [ビリヤード・スヌーカー]
もうおなじみの(?)ドラゴン福田豊氏のレッスン会。月1ペースで参加してることになるなぁ。
しかし前回の参加からまったくスヌーカーを撞いていなかったこともあって、今日は調子が悪かった。まあいつもヘタクソなのだが、それに輪をかけてという感じ。
最初に1人で練習していたときからぜんぜん入らず、福田さんとのフレームではレッドを1個もポットできずにあわや0点というところだった…。最後の最後に穴前のピンクをなんとかポットして結局6点(ブラックにつながったがそれはやっぱり外す)。いやーひどい。福田さんもたしか40点台のブレイクを出したりして僕にチャンスが少なかったこともあるけど。
前回のチェックポイントだったキュー先をボールに近づけるということは一応意識してやった。今日はテイクバックよりもショットのスピードがだいぶ早くなっているという指摘。たしかに変に力が入っていたような気がする。そもそも僕の場合ハードショットしたらぶれるから入らないのに。うーむ注意せねば。
その後ほかに来ていた方と2フレーム相撞き。その方がまた入れる入れる、普通に2ケタブレイクするくらいの方で、聞いてみたら初めて1年少しらしい。僕とこの差は何なんだ…とちょっとへこむ。やっぱり練習の密度かな。
まあ僕は趣味というかサークル活動のような感覚でこの月1のスヌーカーを楽しんでいるのだが、もっと楽しむためにももうちょっと練習して上達しないとなぁ、と思ったのでした。
投稿者 4bit : 23:59 | コメント (0) | トラックバック (0)
2006年04月10日 (月)
Hardcore Heaven 3 [HARDCORE MUSIC]
Resist UK (2006/05/16)
Hardcore Heavenの新作が4/10リリース! レーベル「Slammin' Vinyl」のDJ Sy、Brisk、Kevin EnergyがMIXした3枚組コンピレーションアルバム。旧作はこちら
- Hardcore Heaven 3 オフィシャルサイト
- TV-CF (Windows Media)
何曲か試聴できます↓
Audio (MP3):
CD1 - SY
1. LASGO - All Night Long (Sy & Unknown Remix)
2. FERGUS MAYHEM - Take Control (Sy & Unknown Remix)
3. SY & UNKNOWN Feat LOU LOU - Caught Up In Your Love
4. SY & UNKNOWN - Break The Spell
5. MC STORM & GAMMER - 21st Century Rush (Sy & Unknown Remix)
6. JOEY RIOT Feat. TONI LEO - Do We Need The Music
CD2 - BRISK
1. BRISK HH3 INTRO
2. POISON RAIN & CUBE::HARD - Stingray
3. DOUBLE DUTCH - Turn Out The Light
4. BRISK & VAGABOND - Hit The Deck (Ham Remix)
5. BENX-TREME & MC ORTIE Feat. LEXZIL - Looking Down (DJ Kurt Remix)
6. ETHOS & STORMTROOPER - Played 'N' Made
7. ASA & S1 - Show Me Your Passion (Brisk & Vagabond Remix)
CD3 - KEVIN ENERGY
1. D.L.S - Freefall
2. DJ PETRUCCIO vs K COMPLEX - Give Into The Motion
3. WEAVER vs AMS - Kik'n Loud
4. EFM-7 - Raver Raver Raver
5. JELLY BEANS CREW vs GAMMER - Donkey Punch
6. WEAVER - Rock It
7. SHARKEY, KEVIN ENERGY + K COMPLEX - Anna (Cube::Hard Remix)
投稿者 4bit : 19:35 | コメント (0) | トラックバック (1)
2006年04月04日 (火)
Maven2のホームディレクトリ設定 [テクニカル]
そろそろJavaを使い始めなければならないのでMaven2でプロジェクトを作ってみる。昔Maven1は使っていたんだけどもうJava自体かなり忘れているのでわからないことだらけ。「Maven2のTipsを集めるWiki - CookBook」を見てプロキシなどを設定。
「nobeansの日記 - Windows環境でのローカルリポジトリ」よりデフォルトでは C:\Documents and Settings\<ユーザID>\.m2 配下なのはいいんですが、HOME環境変数を設定しても変わってくれません。なんで?
cygwinつかってるので、cygwin上での /home/<ユーザID>/.m2 にあたるディレクトリに変更したいんですけど。
激しく同感。Maven2から認識されるホームディレクトリは環境変数HOMEではなくてUSERPROFILEから取ってるらしい。ただこれを変えるのはちょっとまずそうなので、mvn.batをのぞいてみるとMAVEN_OPTSという環境変数を見てくれるらしい。よってこの値に -Duser.home=C:\path\to\cygwin\home\<ユーザID>
と入れてやれば、ちゃんと変わってくれた。
参考:
投稿者 4bit : 17:40 | コメント (0) | トラックバック (0)