ブログ  前の月  次の月 

たけまる / 2008-04


2008-04-21 Mon

_ Google App Engine のデータストアは Bigtable をどのように使っているのか [gae][bigtable]

Google App Engine (GAE) が発表されてから2週間ほど経ちます.GFS や
Bigtable という名前だけはよく耳にするようになりましたが,Bigtable
と GAE のギャップについては話題になっていないように思います.

Bigtable は multi dimensional sorted table と言われるように,
primary key (row key) でソートされたテーブルでしかありません.つま
り,GAE のデータストアが提供するような多様な検索機能は持たないわけ
です.というわけで,GAE のデータストアを実現するために,Bigtable
がどのように使われているのかを考えてみました.

# この件について,もし論文などが発表されていたら教えてくれると嬉しいです.

続きを読む

2008-04-16 Wed

_ AtomPub のエラー処理について [atompub]

daiba さんから召還されたので,あんまり書くこともないのですが,
AtomPub のエラー処理について簡単に説明します.

エラーについて AtomPub 仕様 が定めていることはほとんどありません.

- HTTP 仕様に従ってステータスコードを正しく使うように
   - エラー時は 4xx, 5xx を返すように
   - PUT においてバージョン違反 (ETag の不一致など) があったときは
     412 Precondition Failed を返す
   - 認証やアクセス制御のエラーは 401 Unauthorized や 403
     Forbidden を返す
- 人間が読めるようなエラーの説明を含めるべきである

これだけです.レスポンスの書式については何も定めていません.

続きを読む

2008-04-10 Thu

_ AtomPub - Catalyst::Controller::Atompub v0.5.0 [atompub][catalyst]

zigorou さんからアドバイスをもらいつつ,Makefile.PL も直してもらい
つつ,コレクション URI の変更方法を修正しました.いままでは,コレク
ション URI を変更すると EditURI やサービス文書がおかしくなることが
あったのですが,完全に直っていると思います.

http://svn.coderepos.org/share/lang/perl/Catalyst-Controller-Atompub/trunk

# Atompub の export が多いのは,今さら変更できないということで見逃
# してください ><

一ヶ月近く前に,daiba さんから "URI がおかしい" という報告をもらっ
ていたのですが,わりと面倒な修正だったのと,僕自身は問題になるよう
な使い方をしてなかったので,しばらく放置してしまいました (ぉ.ごめ
んなさい.

問題になっていたのは,ユーザごとに別のコレクションを用意する場合で
す.たとえば,foo さんは /collection/foo で,bar さんは
/collectino/bar という感じです.コレクションを GET するときは認証不
要とし,POST などの書き込みは対応するユーザのみ許可します.また,
/service ではサービス文書を提供します.サービス文書にはコレクション
URI が記載されますが,ユーザに合わせて変更します.

ソースコードの samples/OurBlogs にサンプルがありますので,これを使っ
て簡単に説明します.

続きを読む

Referrer (Inside): [2008-03-11-1]

2008-04-09 Wed

_ AtomPub - サービス文書の記述力 [atompub]

(2008-06-26 追記) その後の動向を [2008-06-26-1] に書きました.

ZIGOROu さんと Catalyst::Controller::Atompub をいじっていて,コレク
ション URI をデフォルトから変更したときのあれやこれやを修正したんで
すが (CodeRepos にあります),それについて書く前にサービス文書とその
欠点について簡単にふれておきます.

AtomPub サーバを開発していると,コレクションの設計には力を注いでも,
サービス文書はおざなりという人が多いのではないでしょうか.サービス
文書はとても影が薄いように思います.ひとつはサービス文書がなくても
動作する状況が多いこと,もうひとつは Atom API 時代には存在しなかっ
たことが理由でしょう.

続きを読む