2006/03/30

今日はこんなの食べたよ、その2

北小金、Futuro(フトゥーロ?)
イタリアンレストラン

ベーコンとほうれん草のパスタ(オイルベース)
900円くらい(大盛り無料)
-
味は少し濃い目だけど、
ほんとおいしくて大盛り食べてもぜんぜん飽きない。
ほかのパスタも食べてみたい。

久々にruby on rails

ひさしぶりにrailsろうと思って、
環境のアップデート。Railsもバージョン1.1にする。

RubyGemsってほんと便利なんだね。

gemコマンドについて見てみる
>gem

RubyGems is a sophisticated package manager for Ruby. This is a
basic help message containing pointers to more information.

Usage:
gem -h/--help
gem -v/--version
gem command [arguments...] [options...]

Examples:
gem install rake
gem list --local
gem build package.gemspec
gem help install

Further help:
gem help commands list all 'gem' commands
gem help examples show some examples of usage
gem help show help on COMMAND
(e.g. 'gem help install')
Further information:
http://rubygems.rubyforge.org


インストールされてるプロダクトのリストを見てみる

>gem list

*** LOCAL GEMS ***

actionmailer (1.1.5)
Service layer for easy email delivery and testing.

actionpack (1.11.2)
Web-flow and rendering framework putting the VC in MVC.

actionwebservice (1.0.0)
Web service support for Action Pack.

activerecord (1.13.2)
Implements the ActiveRecord pattern for ORM.

activesupport (1.2.5)
Support and utility classes used by the Rails framework.

login_generator (1.1.0)
[Rails] Login generator.

rails (1.0.0)
Web-application framework with template engine, control-flow layer,
and ORM.

rake (0.7.0)
Ruby based make-like utility.

sources (0.0.1)
This package provides download sources for remote gem installation


railsとrailsが依存するプロダクトを更新

>gem update --include-dependencies
ails
Upgrading installed gems...
Attempting remote upgrade of rails
Attempting remote installation of 'rails'
Successfully installed rails-1.1.0
Successfully installed activesupport-1.3.0
Successfully installed activerecord-1.14.0
Successfully installed actionpack-1.12.0
Successfully installed actionmailer-1.2.0
Successfully installed actionwebservice-1.1.0
Installing RDoc documentation for activesupport-1.3.0...
Installing RDoc documentation for activerecord-1.14.0...
Installing RDoc documentation for actionpack-1.12.0...
Installing RDoc documentation for actionmailer-1.2.0...
Installing RDoc documentation for actionwebservice-1.1.0...
Gems: [rails] updated


RubyGems自体を更新
>gem update --system

2006/03/28

今日はこんなの食べたよ、その1

鳥つね
http://www.akiba-ichi.jp/restaurant/detail.php?shopcode=22&floor=3
親子丼
1000円
-
1000円以上の、親子丼食ったの初めて。
もともと親子丼好きだから食べる前からワクワクしてたけど、
半熟のたまごに、大きくてたっぷりのやわらかい鶏肉。
まさに希望通りの触感と味つけ。

2006/03/17

Decoratorパターン@プレゼンテーション層

http://aerith.net/design/Decorator-j.htmlより
クラスの持つ機能を拡張する方法としては、一般には継承か委譲が使われる。しかし、これらの方法では、拡張の順序によって、クラスどうしに不要な従属関係が生じてしまう、という問題がある。


そんなときのもう一つの方法。
サーブレットAPIバージョン2.3の仕様の一つのサーブレットフィルタはDecoratorパターンのようです。
詳しくはGoFの本を。

Front Controllerパターン@プレゼンテーション層

共通の処理を持った複数のリクエストはすべてこのフロントコントローラで処理し、
その他の処理は、ページ固有のコントローラに委譲する。

StrutsのActionServlet
JSFのFacesServlet

はフロントコントローラであったのか。
そしてStrutsにおいては、
ページ固有のコントローラはActonのサブクラスとして実装し、委譲する。
サブクラスはexecute()という共通のインターフェースを持っていて、
これはつまりGoFのcommandパターンである。

JSFにおいてもイベントリスナーとして実装して委譲できる。(要調査)

2006/03/16

J2EEパターン

しばらく家の押し入れの中で温めておいた本を読んでみようと思う。
なんというか今後はエンタープライズな仕事をメインに行っていくわけなので。

J2EEデザインパターン
William Crawford Jonathan Kaplan 福龍興業
4873111781

2006/03/12

液晶テレビ購入記念

液晶テレビを買ってしまった。
しかも26V型画面のやつ。

これは記念になんかDVD借りないと。
おすすめDVD検索してみよう。

2006/03/11

やっと

はじめは、
「docomoの携帯かPHSの契約が無い方はmzoneの契約はできません」
なんて言われるトラブルもあったが、やっとのことでdocomoの公衆無線LANサービスに申し込んだ。

今駅のホームで4日ぶりにノートPCを繋いでみた。
GoogleReaderで未読のエントリが1333件だった_| ̄|○

これはsubscription減らすこと考えないといけないなー。
4日で1333件だもんなー。

2006/03/07

明日は引越しだ

明日3月8日は引越しだ。
住み慣れた故郷よ、さらば。

てか、申し込みが遅れたことと、シーズン中であることから、
ネットの開通工事がしばらく後になってしまう。
しばらくはネットに繋がらない世界。
テレビもまだ無いしなぁ。

でもメールチェックとブログチェックはしないと・・・。
どうしよ。
ネットカフェ行くか。
ホットスポットのサービス申し込むか。とりあえず申し込めるように引越し先のdocomoの場所だけ調べておこう。

あっそれと、
ポッドキャスト多めにiPodにダウンロードしておこう!

2006/03/06

RailsとStruts-Tilesにおけるレイアウト機能

- Java vs Ruby
- Java プログラマのための Ruby 入門


どうしても比較されるJavaとRuby
俺はRubyのことについてほとんど何も知らないので残念ながら比較することができないっす。
というのもRails本の76ページを見ていて(遅っ、
Railsのレイアウト機能ってJavaのTiles
と比べてどうなんだろうっって話。
今本を読んでちょっと調べてみた段階では、Railsは一つのレイアウトに一つのコンテンツを挿入する感じで、二つ以上のコンテンツは挿入できないんだろうか?

MVCにおけるコントローラーのポジションの違いなのかな。

Tilesは、
StrutsのActionServlet(Front Controllerパターン)から呼ばれる、RequestProcessor(Application ontrollerパターン)の実装であるため、
つまりはフロントコントローラのポジションである。
だからすべてのいくつものビューを操作できる。

Railsにおいては、
フロントコントローラであるルータは以前のエントリのように規約として呼び出すコントローラとビューを決めてしまっている。そしてレイアウトするのはそのルータによって呼び出されたコントローラクラスであって、コントローラクラスはそのアクションに割り当てられているビューしか知らないはず。だから他のビューを知るすべがなく自分に割り当てられているビューしかレイアウトに流し込むことができないんでしょう、というのが今の段階での考え。


あっ、でもRailsにも「ApplicationController」っていうApplication ontrollerパターンなクラスがあるじゃん。
てことはやっぱりできるのかな?
いろんなソース眺めてみよ、手段が見つかればおもしろいかも。

-

以上、JavaとRubyの比較ではなく、Struts(Tiles)とRailsの比較でした。
同じアーキテクチャで設計されている場合、こうやって比較すると理解が深まるかも。

2006/03/05

認証APIらしいよ

はてなでも公開準備中とあって、盛り上がっている認証API。
乗り遅れてしまったけど、おもしろそー。
今のところはflickrやTypeKeyやOpenIDといったものがあるみたいです。
いろいろとぐぐってみたので、ここで考えを整理します。

blog.bulknews.netより
API 経由で認証した機能を利用できる Flickr をみてみると、きちんとサードパーティのアプリケーションからユーザ認証を利用する API が公開されています。「Flickr 側にトークンを投げて、ユーザが ID/PW を Flickr に渡すと、認証結果をトークンとともに返す」、という仕組みで、サードパーティが ID/PW を知ることなく認証後の機能を利用することができるわけ。


「認証後の機能を利用する」とあるけど、
TypeKeyやOpenIDは認証機能しか提供していないらしい。
これだと結局、そのユーザがどんな人なのか分からない。
☆ はてな認証 APIOpenID 「認証」?にあるように
「AuthenticationではなくIdentification」
「認証じゃなくて単に識別」
ということなのかな。

flickrは認証後に機能を使うので、認証時には「アクセス権限」も付いてくるんですね。
またflickrの機能でユーザを見て、そのユーザはどんなユーザかを判断することもできる、と。

うーん、結局どの場面でなにを使えばいいんだろう。
認証サーバの他に、認証局といったものが別途必要になるんですか。

「はてな」のサービス公開と活用事例を待とう。


追記:
TypeKeyはOpenIDサーバ「Identity Server」としてのサービスも行っている。
TypeKeyでアカウントを作ると、OpenIDのアイデンティティとなるURLがもらえる。
俺のは、http://profile.typekey.com/yanaoki/
なので、OpenIDの認証フォームではこのURLを打つことになる。
ソースを見ると
<link rel="openid.server" title="OpenID Server" href="https://www.typekey.com/t/openid" />
と、TypeKeyのOpenIDサーバが指定されている。
さらに別のURL、たとえばこのブログ、http://start25.blogspot.comをアイデンティティとして使いたい場合は、このブログのheadに、
<link rel="openid.delegate" href="http://profile.typekey.com/yanaoki/" />
<link rel="openid.server" href="https://www.typekey.com/t/openid" />
というようにopenid.delegeteとして本当のアイデンティティを書く。

TypeKeyでアカウントを作ったら、
http://www.livejournal.com/openid/
などのコンシューマー(サードパーティウェブアプリ)にログインしてみよう。

2006/03/04

hatelaboがおもしろい

3/2の
はてなメールマガジン『週刊はてな』 のポッドキャスティング版を聞きながら
hatelaboをいじってみたけど、「はてなわんわんワールド」面白い。

ワンワンワールドはGoogleMap上でチャットができるサービスだけど、
ついつい自分のゆかりのある場所に行ってしまう(誰かいないか期待してしまう)。
まー田舎だから誰もいないけど。
このサービスだと、
「じゃぁ、○○時(時間)に○○(場所)で!」
みたいな約束ができるね。
-
最近移動時間が多く、ポッドキャストをipodで聞くことが多い。
ビデオipodにしてよかった。
今までと比較して明らかに有効な時間の使い方。

2006/03/02

Railsにおける「Convention Over Configuration」


03010001.jpg
Originally uploaded by naokiyanai.
今日はちょっと時間があったので写真で紙が挟んであるあたり(「Hello!」のプログラミング)まで読み進めてみました。
プログラミング環境はもちろん以前に構築した「RadRails環境」。
-
巻頭部分にも書いてありましたが、Railsの特徴の一つとして「Convention Over Configuration(設定に勝る規約)」というキーワードがあります。
Seasar2のひがやすをさんもこの記事の中で、今までのJavaフレームワークは、
「Javaプログラムの複雑さをXMLファイルに追い出しただけ」
として、Searsar2はそれとは違って規約を重視して設定ファイルへの記述量を減少させていることを主張している。
-
まさに今までの自分は、
- Strutsのstruts-config.xml
- SpringframeworkのapplicationContext.xml
- HibernateのHibernate.cfg.xmlとXXX.hbm.xml
など、設定ファイルに囲まれてそして何度と無く記述ミスに悩まされてきました。
これらの設定ファイルをカバーする開発環境(やプラグイン)がなかったとも言えます。
この設定ファイルを開発環境(やプラグイン)でカバーするのではなく、フレームワーク自身でカバーしたのがRailsであると思います。

これからも現場ではXXX.xmlに囲まれ悩まされることがしばらくは続くと思いますが、「Convention Over Configuration」は今後開発されるフレームワークの重要な設計思想となるのではないでしょうか。
-
ここまで読み進めた中でもRailsの規約の一部を見ることができました。
「リクエストURL」と「コントローラによって呼び出されるアクション」のマッピングです。
私は最近webサービス、とくにRESTスタイルのwebサービスに興味を持っていました。

RESTアーキテクチャ
http://sourceforge.seesaa.net/article/12053688.html様より、
* 全ての情報はリソース
* リソースは識別子(URI)を持つ
* リソースの状態は時間や条件とともに変化する可能性がある
* リソースの意味は時間や条件が変化しても不変である


URLがアクションをあらわすということは、実装は自然とRESTアーキテクチャに近づいていくのではないかと考えます。ただしリソースの更新や削除に関しては微妙ですが。

-

話はそれてしまいましたが、早くRailsの規約を覚えたい。Railsにとっては、規約を覚えることが開発手法を覚えることに限りなく近いのではないでしょうか。

2006/03/01

引越し準備

ほんとに大変だ!
今のマンションには一年ちょっとしか住んでないけど、
ほこりが出てくる出てくる。

今、家の中がすごいことになっています。
はやく落ち着きたいなー。
Rail本も買ったしー。
Loading...
Loading...