2009-04-15
■ [javascript][scheme] js-scheme
a Scheme interpreter written in JavaScript…とな?
継続は脱出用途しかサポートしないようだけど、デモのコマンドライン風REPLはいいな。
■ [misc] 英語を練習するためのチャット作った
インターネットのおかげで外人とチャットするとかすげー簡単になったわけなんですけど(例:IRC@freenode)、 やっぱりちょっとなんというか敷居が高いわけです。 剣道で例えると、自分は授業でちょろっとやっただけなのに五段の人と練習試合するみたいな。 「大丈夫、手加減するから」って言われても怖いじゃないですかwww
なので最初は日本人どうしで練習すればいいと思った。
ujihisaに昔の記事をremindされて思いつきました。ノープランですがよろしくお願いします。 日本人どうしだから超適当でも大丈夫だよ!!
#んで「間違いを気にしなければ意外と書けるんだ」ってことに気づいたら、英語のMLとかIRCとかに参戦できるようになると思います。
■ [ruby] ライブラリ「ActiveRecord」「DataMapper」の元ネタについて調べてみた
PofEAAっつー本のデザインパターン名らしい。
0321127420 4798105538
以下メモ
OTN Japan - 今だからデータ・アクセスを真剣に考える! 第1回
- システムはだいだい以下の階層に分けられるよ(分け方は人によるけど)
- UI層 / アプリ層 / サービス層 / ドメイン層 / パーシステンス層 / データストア(RDBなど)
- Table Data Gateway、Row Data Gateway、Active Record、Data Mapper はパーシステンス層のパターン
- ドメイン層にも以下のようなパターンがあるよ
- Transaction Script
- 機能をクラスにし処理をメソッドにする。
- Domain Model
- データをクラスにする。OO寄り。テーブルとクラスが(必ずしも)対応しない。
- Table Module
- データをクラスにする。RDB寄り。1テーブル1クラス。
- 対象が複雑になったときの拡張性が違う。
- Transaction Script
OTN Japan - 今だからデータ・アクセスを真剣に考える! 第2回
- パーシステンス層のパターン
- Table Data Gateway
- あるテーブルにアクセスするクラスを定義し、そいつ経由でDBアクセスを行う。
- Row Data Gateway
- あるテーブルの1行(レコード)を表すクラスを定義する。
- Active Record
- テーブルの1行(レコード)が1インスタンスになる。Row Data Gatewayと似ている
- Row Data Gatewayと違い、ドメインロジックをメソッドとして含む。(Railsでいうモデルに定義するメソッドとか)
- Data Mapper
- ドメイン層にもデータストアにもなるべく依存せず、O/R間のデータ変換を行う
- Table Data Gateway
- それぞれ、ドメイン層のどのパターンと合わせやすいかが違う
- # RubyだとORMライブラリがドメイン層まで吸収してるので考える余地はなさそう
- O/Rインピーダンスミスマッチの話
- 大規模開発においては、OとRを分離して作りやすい「Domain Model」+「Data Mapper」がいいんじゃないか
■ [book][javascript] オライリー本「Prototype & script.aculo.us」
買っちゃった。
4873113725
- 単なるリファレンスじゃなくて、「この関数はこういう時に使え」みたいなことも書いてあるのが嬉しい。
- インプレース編集機能とかあったのか…。