たけまる / 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 にあります.今回の説明も,このサンプルをベースに
しています.
《続きを読む》
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 さんあたりがしてくれそうな気がするので,待つこと
にしましょう ;-)
《続きを読む》
2007-09-23 Sun
_ Catalyst::Controller::Atompub - 認証 [perl][atompub]



Atompub モジュールの使い方シリーズです.[2007-09-13-1] では,もっともシンプルは AtomPub サーバの実装方法を
紹介しました.今回は認証を追加してみます.
とはいえ,Catalyst::Controller::Atompub は認証機能を提供していませ
んので,他の Catalyst モジュールを使います.つまり,ここで書くこと
は,AtomPub に限らない Catalyst での一般的な認証方法になります.
AtomPub でよく使われる Basic 認証と WSSE の設定方法を紹介します.
《続きを読む》
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)" 仕様の和訳で
す.
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 が不適切,など.
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 を使ってくださっ
ている方は目を通してください.
《続きを読む》
2007-09-07 Fri
_ SNS で起こる問題を回避するコツ [sns]



先週,Atom 以外の話題を書いたら [2007-08-30-1] 意外にはてブが付いたので,気をよくしてまた他のことを書いてみます.
先日,イノベーションキッチン の人と話をする機会があって,ひょん
なことから「SNS で問題を回避するコツ」を教えてもらいました.地域
SNS などを運用したときに注意深く観測していたら,次のようなことに気
づいたそうです.
他人の日記を読まずに自分の日記を書きまくる人は,
60% の確率でなにかやらかす
"人の話を聞かないヤツがやばい" というのは,現実世界でもなんとなく
わかる気がします.他の要因の影響は小さく,日記の読み書き頻度に注目
すれば OK とのことです.
OpenPNE のお蔭もあって,SNS を運用する人が増えています (僕も小さな
SNS を運用してたりします).荒し行為に困っている人もいると思います
が,この点に注意してみるといいかもしれません.
# このエントリを読んで OpenPNE 用のレポートモジュールを書いてくれ
# る人がいるといいなぁと思って書いてみました ;-)
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 については言うことがあまりないので,今回はここまで.
