ブログ  前の月  次の月 

たけまる / 2007-09


2007-09-27 Thu

_ Catalyst::Controller::Atompub - Media Resource [perl][atompub]

Atompub モジュールの使い方シリーズです.

Catalyst::Controller::Atompub は Catalyst の拡張モジュールで,
Atompub (Atom Publishing Protocol) サーバを簡単に実装することがで
きます.

# クライアントは Atompub モジュール [2007-08-12-1] にあります.

さて,Entry Resource (いわゆる Atom XML のこと) を扱うサーバについ
ては [2007-09-13-1] で説明しました.今回は,Media Resource (バイナ
リデータ) のについて説明します.ブログシステムで例えるなら,Entry
Resource はブログのテキストであり,Media Resource は写真や動画にな
ります.

# Media Resource とは? という方は,こちら↓をどうぞ
# "Atom Publishing Protocol を勉強するには" [2007-09-20-1]

Media Resource の扱いは少しややこしいです.というのは,リソース本
体だけではなく,リソースのメタ情報を記述する Media Link Entry も同
時に扱わなければならないからです.

Media Resource を扱うサンプルコードは,Catalyst::Controller::Atompub
の samples/MyBlog にあります.今回の説明も,このサンプルをベースに
しています.

続きを読む

Referrer (Inside): [2007-10-22-1]

2007-09-24 Mon

_ OAuth - リソースへのアクセスを代行するプロトコル [oauth][openid]

[2007-09-23-1] で AtomPub の認証について書いたからというわけではな
いのですが,OAuth というプロトコルの仕様を斜め読みしたのでメモして
おきます.間違いがあったら教えていただけると嬉しいです m(_ _)m

(追記) OAuth の「背景」みたいのについては,miyagawa さんからもらっ
たコメントと,まちゅさんのエントリが参考になります.
- miyagawa さん
oAuthはFlickr,GoogleAuthSub,Y!BBAuth,AOL openAuth,TypeKeyなんかの
統合プロトコルという位置づけ。例では401->WWW-Authenitcateが
handshake になってるけど実際はもっと他の方法で運用されるんじゃない
かなぁ
- まちゅさん
WebAPI のアクセス制御に使える OAuth という仕様 - まちゅダイアリー (2007-09-25)

さて,OAuth は,第三者に対して,認証を要求するリソースへのアクセス
を一時的に許可するためのプロトコルです.

たとえば,写真印刷サービスがあるとします.そして,あなたは flickr
に保存してある非公開写真の印刷を依頼しようとしています.このとき,
写真を "公開" 状態にすることなく,また flickr へのログイン情報を教
えることもなく,印刷を依頼することができます.

OpenID が "authentication (認証) の分散" だとすると,OAuth は
authorization (許可) になります.

(参考) 仕様から学ぶOpenIDのキホン − @IT

処理フローは OpenID とほぼ同じようです.OpenID の拡張にしてもよさ
そうに思いましたが,OpenID 以外の認証方法と組み合わせるために独立
したプロトコルにしたのでしょう.

いくつか気になった点がありました.

現在の仕様では,アクセスを許可するリソースを限定できないように思い
ました.つまり,写真印刷サービスは,印刷する写真だけでなくすべての
写真にアクセスできてしまいそうです.最終的には修正されると思います
が (詳しくは後述).

さらに,HTTP メソッドを限定できるとよさそうです.GET は許可するけ
ど,PUT, DELETE は不許可という状況はありそうなので.

簡単なメモを残しておきますので,よかったら参考にしてください.詳し
い説明は ZIGOROu さんあたりがしてくれそうな気がするので,待つこと
にしましょう ;-)

続きを読む

Referrer (Inside): [2007-11-26-1]

2007-09-23 Sun

_ Catalyst::Controller::Atompub - 認証 [perl][atompub]

Atompub モジュールの使い方シリーズです.

[2007-09-13-1] では,もっともシンプルは AtomPub サーバの実装方法を
紹介しました.今回は認証を追加してみます.

とはいえ,Catalyst::Controller::Atompub は認証機能を提供していませ
んので,他の Catalyst モジュールを使います.つまり,ここで書くこと
は,AtomPub に限らない Catalyst での一般的な認証方法になります.

AtomPub でよく使われる Basic 認証と WSSE の設定方法を紹介します.

続きを読む

Referrer (Inside): [2007-09-24-1]

2007-09-21 Fri

_ "Atompub is passing all the tests and looks solid" by Tim Bray [atompub][perl]

Tim Bray (Atom のボス) がブログで Atompub モジュールにコメントをく
れました.

ongoing ? Atomic
Atompub-0.1.5. (That's a pretty low version number on Inoue's
work, since it's passing all the tests and looks solid.)

"テストはすべて通ったし,しっかりできてる" とのことです.というわ
けで,安心して使ってあげてください.

もちろん,まだ見つかってないバグはあると思うし,改良の余地もあるの
で,気づいた点があったらコメントお待ちしてます m(_ _)m

# 特に,英語の添削やサンプルコードの追加は大歓迎です.

2007-09-20 Thu

_ Atom Publishing Protocol を勉強するには [atompub]

以前に [2007-09-13-1],Catalyst::Controller::Atompub の使い方を紹
介しました.このときは Entry Resource (Atom エントリ) のみを扱いま
したが,次回以降では Media Resource (画像などのバイナリデータ) に
ついても説明します.

Media Resource の扱いが含まれたことで,Atom Publishing Protocol
(AtomPub) はやや分かりにくくなったと思います.かといって仕様書を読
み込むのは大変です.ここでは,参考になる書籍やウェブページを紹介し
ます.

■ RFC 5023 和訳

リコー研究所による RFC の和訳 です.

特集:Web APIの次世代標準プロトコル「Atom Publishing Protocol」|gihyo.jp

朝倉さんによる AtomPub の解説記事です.朝倉さんは日本から唯一 (た
ぶん) AtomPub 仕様に提案を行い,採用されました.細かい定義なども丁
寧に解説されています.

■ 山本陽平, "Atom Publishing Protocol 前編," WEB+DB PRESS vol.40,
pp.148-153, 2007年 9月.


REST 伝導師(?) の yohei さんが,AtomPub について解説された記事です.

ネットワークに流れるデータを示しながらプロトコルの流れを説明してい
るので,わかりやすいと思います.また,理解しにくい "リソースと表現
との関係" なども丁寧に説明されています.

Media Resource については,10月末ごろ発売予定の vol.41 で解説され
ています.

IBM Atom 出版プロトコルを知る、第1回: Atom 出版プロトコルを使って… - Japan

こちらも,ネットワークに流れるデータを示しながらプロトコルの流れを
説明しています.やや古いですが,てっとり早く勉強するには最適です.

たけまる / Atom Publishing Protocol のメモ

AtomPub のポイントをまとめたメモです.勉強した後のクイックリファレ
ンスとして使うといいと思います.

たけまる - GData/Protocol

AtomPub 実装のひとつである "Google Data APIs (GData)" 仕様の和訳で
す.
Referrer (Inside): [2007-09-27-1]

2007-09-16 Sun

_ Errors in Atompub, C::C::Atompub - Build.PL and Makefile.PL [perl][atompub]

Atompub と Catalyst::Controller::Atompub の Makefile.PL にバグがあ
り,依存関係が自動解決できていませんでした m(_ _)m

直しました..

Perl モジュールのインストーラには Makefile.PL と Build.PL の 2 種
類があります.Build.PL は Module::Build を使ったインストールスクリ
プトで,make に依存せずに Perl だけでインストールすることができま
す.

ところが,CPAN を使って自動インストールするときには,伝統的な
Makefile.PL が使われます.Build.PL を使わせるには,以下のような
Makefile.PL を用意しておかなければならないのですが,すっかり忘れて
ました.

Makefile.PL
use lib qw(lib);
use Module::Build::Compat;

Module::Build::Compat->run_build_pl(args => \@ARGV);
Module::Build::Compat->write_makefile(build_class => 'Module::Build');

2007-09-14 Fri

_ Twitter を時の流れで表現する [twitter][timeline]

ありそうでなかった (ようでやっぱりあるのか?) マッシュアップです.
Twitter を年表のように表示してみました.

# IE だと動かないです m(_ _)m 理由不明.

作ってみたら意外に面白かったので公開します.下の画像をクリックする
と,僕と友だちの Twitter の流れを見ることができます.


次は,JavaScript で有名な amachang が見ている Twitter を再現してみ
ましょう.
Twitter Timeline - amachang/with_friends

なんとなく,amachang になった気分になれます?

"Twitter はテキストフローだ" という人がいますが,このツールはその
人が感じている時の流れをよく表していると思います.朝に人々が起きて
くる様子や,"@" を使った掛け合いの様子もよくわかります.

年表はマウスでドラッグして移動できます.下の帯をドラッグすると,素
早く移動できます.

左上のテキストボックスでユーザを変更できます.

scale は縮尺のようなものです.Following の多い人は大きな値を入れて
ください.

ページ下部にある Filter を使うと,発言をフィルタすることができます.
たとえば,Filter にユーザ名を入れると,その人に関する発言のみが表
示されるようになります.

■ 技術情報

年表表示には MIT SIMILE Timeline を使い,JSONP で Twitter API をた
たいています.まず,最新の 20 件が表示され,5 秒に 20 件ずつ増えて
いきます.
SIMILE - Timeline

このマッシュアップは,shinichitomita さんの "Timeline + Google
Calendar" に影響を受けています.
snippets from shinichitomita’s journal - MIT SIMILE TimelineとGoogleカレンダー プライベートスケジュールのマッシュアップ

じつは,任意の Feed を Timeline で表示するツールはすでにあります.
Create a Timeline : My Timelines
しかし,Twitter の表示には向いていない点がいくつかありました.アイ
コンを表示できない,1 ページ目しか取得できない,日本語が通らない.
Scale が不適切,など.
Referrer (Inside): [2007-10-03-1]

2007-09-13 Thu

_ Catalyst::Controller::Atompub リリース [perl][atompub]

Atompub モジュールの使い方シリーズ

Catalyst::Controller::Atompub をリリースしました (Catalyst は,
Perl で書かれた Rails みたいなものです).

Catalyst::Controller::Atompub

このモジュールを使うと,Model 操作を実装するだけで簡単に Atom
Publishing Protcol (AtomPub) サーバを作ることができます.AtomPub
実装はいくつかありますが,知っている範囲ではこのモジュールがもっと
も簡単に実装できるんじゃないでしょうか.

# もっと簡単なのがあれば参考にしますので教えてください ;-)

このエントリでは,もっともシンプルな AtomPub サーバを実装する方法
を紹介します.Media Resource や認証,キャッシュについてもそのうち
説明します.

なお,このモジュールは InteropTokyo [2007-07-30-1] の実装をベース
にしていますので,大きな問題なく動作すると思います.

それでは,AtomPub サーバを実装してみます.ソースコードはパッケージ
中の samples/MyAtom にありますので,必要に応じて参照してください.

続きを読む

2007-09-12 Wed

_ Atompub v0.1.0 リリース - DateTime, MediaType [perl][atompub]

Atompub モジュールの使い方シリーズ

Atompub (Atom Publishing Protocol の実装モジュール) をバージョンアッ
プしました.便利なアクセサや Helper Module を追加して,使い易くな
りました.

ここでは,バージョンアップに伴う変更点について説明します.使い方な
どは,以下のページを参照してください.

- CPAN Atompub
- 使い方 [2007-08-12-1]

変更点は次のとおりです.
- メソッドの戻り値を XML::Atom::Client に合わせて少し変更
- HTTP レスポンスやリソースへのアクセサを追加
- slug メソッドを廃止予定に
- Atompub::DateTime を作成
- Atompub::MediaType を作成
- Last-Modified によるキャッシュに対応 (ETag は対応済み)
- HTTP::Headers などに便利なアクセサを追加
- 大幅なリファクタリング

特に,最初の変更点は重要ですので,Atompub::Client を使ってくださっ
ている方は目を通してください.

続きを読む

Referrer (Inside): [2007-08-12-1]

2007-09-11 Tue

_ XML::Atom::Service - 便利なアクセサを追加 [perl][atompub]

XML::Atom::Service のバージョンアップ (v0.15.0) にともない,
atom:link 要素にアクセスするための便利なアクセサを追加しました.

# 実際に影響を受けるのは,XML::Atom::Entry と XML::Atom::Feed なの
# で注意してください

続きを読む

Referrer (Inside): [2007-09-10-1]

2007-09-10 Mon

_ XML::Atom::Service - 名前空間を変更 [perl][atompub]

XML::Atom::Service を v0.15.0 にバージョンアップしました.

XML::Atom::Service

これにともない,デフォルト名前空間が変更されましたので注意してくだ
さい.

続きを読む

2007-09-07 Fri

_ SNS で起こる問題を回避するコツ [sns]

先週,Atom 以外の話題を書いたら [2007-08-30-1] 意外にはてブが付い
たので,気をよくしてまた他のことを書いてみます.

先日,イノベーションキッチン の人と話をする機会があって,ひょん
なことから「SNS で問題を回避するコツ」を教えてもらいました.地域
SNS などを運用したときに注意深く観測していたら,次のようなことに気
づいたそうです.

他人の日記を読まずに自分の日記を書きまくる人は,
60% の確率でなにかやらかす

"人の話を聞かないヤツがやばい" というのは,現実世界でもなんとなく
わかる気がします.他の要因の影響は小さく,日記の読み書き頻度に注目
すれば OK とのことです.

OpenPNE のお蔭もあって,SNS を運用する人が増えています (僕も小さな
SNS を運用してたりします).荒し行為に困っている人もいると思います
が,この点に注意してみるといいかもしれません.

# このエントリを読んで OpenPNE 用のレポートモジュールを書いてくれ
# る人がいるといいなぁと思って書いてみました ;-)

2007-09-06 Thu

_ Catalyst Internals - その他のコンポーネント [perl][catalyst]

その他とは,Action, Request などです.

今回は,コンポーネントの内部には立ち入らずに,デフォルトコンポーネ
ントを変更する方法のみ紹介します.

続きを読む

2007-09-03 Mon

_ Catalyst Internals - View [perl][catalyst]

■ View の作り方

Catalyst では,アクションを指定しなければ sub process が呼ばれるこ
とになっています.そこで,View では sub process を実装します.

package Catalyst::View::Foo;
use base 'Catalyst::View';
sub process {
    my ($self, $c) = @_;
    # render body ...
    $c->res->body( $body );
}
sub process では,$c->res->body を設定します.必要に応じて,
$c->res->header を設定してもよいでしょう.

View については言うことがあまりないので,今回はここまで.

2007-09-02 Sun

_ Catalyst Internals - Controller [perl][catalyst]

■ Controller の作り方

ここでは,単に Controller を実装するのではなく,サブクラス化される
ことを前提として Controller を実装します.

続きを読む

2007-09-01 Sat

_ Catalyst Internals - Plugin [perl][catalyst]

昨日 [2007-08-31-1] の続きです.

■ Plugin の作り方

Plugin は,Context オブジェクト ($c) に関数を追加するときに用いら
れます.簡単に作れるため,これまでに多くの Plugin が作成されていま
す.

続きを読む