たけまる / perl
2008-05-15 Thu
_ YAPC::Asia 2008 で発表してきました [perl]



YAPC::Asia 2008 で発表してきました.内容は [2008-05-14-1] に書いたように,AtomPub サーバについてと POE vs Erlang についてです.
あんまりうまく話せなかったり,発表が時間内に終わらずに司会の daiba
さんに迷惑かけたりしてちょっと悔いが残る感じでした.準備不足だった
かなぁ..
それでも多くの人に聞きに来ていただけたのは嬉しかったです.AtomPub
のセッションにあんなに人が来るとは思わなかったです.ありがとうござ
いました.
# スライドは↓にあります.
2日目は参加できませんが (kazeburo さんの講演とか聞きたかったなぁ),
参加される方は楽しんできてください.
2008-05-14 Wed
_ YAPC::Asia 2008 で話します [perl]



明日 (5/15) に,YAPC::Asia 2008 で発表する機会をもらいました.なにやらかなりの規模らしく,運営されている方々は本当にお疲れ様です.
話す内容は,こんな感じです.興味がありましたら是非いらしてください.
■ 5/15 14:30 Practical AtomPub Servers
REST における AtomPub の位置づけを議論して,AtomPub の採用基準につ
いて考えてみます.AtomPub の知名度はそれなりに高くなっているのです
が,どういうサービスの時に AtomPub を使うのがいいのか,ということは
あまり語られていないので,そこを埋められたらと思います.
また,Catalyst::Controller::AtomPub の紹介もします.こちらは突っ込
んだ話というより,これから AtomPub したい人向けの導入という感じです.
すでに使ってくださっている人にとっては,C::C::AtomPub の全体像を把
握して理解を深めるいい機会にできればと思っています.
■ 5/15 17:10 Developing Amazon's Dynamo in POE and Erlang, in Lightening Talks
先日 [2008-05-13-1] 紹介した Kai という Dynamo クローンを題材にして,
POE と Erlang の違いについてお話しします.Kai の記事にも書きました
が,Erlang にすることで設計がとても簡単になりました.その理由につい
て考えてみます.Erlang のソースコードも出てきますが,知らなくても
大丈夫なようにお話しします.
# 別件のため会場に着くのがお昼頃になりそうです.
# 朝早くから準備・運営してくださってる方もいるのに,申し訳ないのです..
2008-03-11 Tue
_ Catalyst::Controller::Atompub - コレクション URI の変更 [atompub][perl]



(追記) 情報が古くなってますので [2008-04-10-1] を参考にしてくださいZIGOROu さんから,Catalyst::Controller::Atompub でコレクション URI
を変更する方法について相談を受けました.
Catalyst::Controller::Atompubのdispatch、Slugヘッダとか - Yet Another Hackadelic
結論としては,ZIGOROu さんが自力で解決されたので僕が出る幕はない
のですが,いくつか修正とまとめをしておきます.
《続きを読む》
2008-02-25 Mon
_ 開発合宿で Amazon Dynamo っぽいものを開発 [dynamo][perl]



週末に伊東の温泉宿で行われた開発合宿に参加してきました.ネタはだいたい個人ごとで,僕は Amazon Dynamo [2008-01-31-1] っぽい
ものを作ってました.あとは,Web API 関連で他の人をサポートしたりと
かです.
合宿については↓とかに書いてあるので,省略です.
sonson@Picture&Software - 伊東温泉 山喜旅館でコーディングしています.
開発合宿というイベント - マジックラボ研究員の社会人ドクターへの道
■ Kai, which will be yet another Amazon's Dynamo
開発した Dynamo っぽいプログラムには,Kai という名前をつけました.
出身が甲斐市だからというだけで (呼びやすいというのもよい),意味はあ
りません .いままでネットワークデーモンは C/C++ で書いていたのです
が,Perl で書いてみました.
《続きを読む》
2008-02-11 Mon
_ Algorithm::VectorClocks を作った [distributed][algorithm][perl]



Amazon Dynamo についての記事 [2008-01-31-1] で,Vector Clocks という分散アルゴリズムが使われているということを紹介しました.Vector
Clocks は,分散システムでバラバラに発生したイベントの順序を明らか
にします.
Google Code Search で検索してみたところ,JGroup という group
communication framework などごく一部でしか使われていないようです.
まぁ,Vector Clocks を必要とするような完全分散システム (master 不在
のシステム) があまりないですから,そんなもんでしょう.
需要はなさそうですが,Algorithm::VectorClocks という Perl モジュー
ルを作りました.CPAN からインストールできます (反映されるまで少し
時間がかかるかも).
Algorithm::VectorClocks
以下,Vector Clocks と Algorithm::VectorClocks モジュールの紹介で
す.
《続きを読む》
2007-11-27 Tue
_ Catalyst::Controller::Atompub - キャッシュやバージョン管理 [perl][atompub]



Atompub モジュールの使い方シリーズ昨日のエントリ [2007-11-26-1] で,相互接続性のポイントのひとつとし
て ETag/Last-Modified を挙げました.これらはキャッシュやバージョン
管理を実現するために使われます.
このエントリでは,Atompub モジュールを使って ETag/Last-Modified を
サポートする方法を紹介します.その前に,メカニズムを簡単に説明して
おきます.
サーバは,Entry などのリソースを返すときに ETag header を付与します.
クライアントは,リソースを取得 (GET) するときに, If-None-Match
header として ETag 値を設定します.サーバは値が一致しなければ (if
none match) リソース本体を返し,一致すれば 304 Not Modified を返し
てキャッシュを参照するように促します.
クライアントがリソースを更新 (PUT) するときには,ETag 値を
If-Match header とします.サーバは値が一致すれば (if match),更新を
受け入れます.一致しなければ,古いバージョンに対する更新と見なし,
拒否します.
Last-Modified の場合もほぼ同様です.If-None-Match/If-Match の代わりに
If-Modified-Since/If-Unmodified-Since が使われます.
《続きを読む》
2007-11-21 Wed
_ Atompub 関連モジュールを CodeRepos に [atompub][perl]



Atompub 関連モジュールを CodeRepos にいれました.CodeRepos::Share - Trac
CodeRepos は「コードレポジトリを共有しよう」ということで夏頃に始まっ
たプロジェクトで,ずっと前からコードを入れようかなと思いつつ,延び
延びになってました.
いままでもオープンソースで開発してましたが,レポジトリごと公開とい
うことでより開発に参加しやすくなりました.よかったらいじってやって
ください ><
Atompub
Catalyst::Controller::Atompub
XML::Atom::Service
2007-11-19 Mon
_ Catalyst::Controller::Atompub v0.2.0 リリース [atompub][perl]



Atompub Interop [2007-11-15-1] で見つかったバグを修正したCatalyst::Controller::Atompub v0.2.0 をリリースしました.
Catalyst::Controller::Atompub
Interop で見つかったバグはすべて修正してあります.
- 不明な HTTP メソッドに対しては 405 Method Not Allowed を返す - HEAD メソッドに対して適切なレスポンスを返す
2007-10-22 Mon
_ Catalyst::Controller::Atompub - URI の命名規則 [perl][atompub]



間があいてしまいましたが,Atompub モジュールの使い方シリーズです.Catalyst::Controller::Atompub は Catalyst の拡張モジュールで,
AtomPub (Atom Publishing Protocol) サーバを簡単に実装することがで
きます.
# クライアントは Atompub モジュール [2007-08-12-1] にあります.
さて,AtomPub サーバの基本的な機能である "リソースの CRUD (作成,
取得,更新,削除)" については [2007-09-13-1] と [2007-09-27-1] で
説明しました.今回は,リソース URI の変更方法について説明します.
《続きを読む》
2007-10-18 Thu
_ Hyper Estraier の Perl binding installer でエラー [estraier][perl]



Hyper Estraier をインストールしてみたら,Perl binding の installer にバグっぽいところがありました.似た現象で悩んでる人が他にもいるよ
うなので解決方法を書いておきます.
似た現象?
hyperestraier : perl -e 'use Estraier;' 失敗 - Ab. の日記
なお,Hyper Estraier の Perl binding には 2 種類あります.
- Estraier
Hyper Estraier ソースコードに含まれている.C 言語の API をたたい
て Hyper Estraier を操作する.
- Search::Estraier
CPAN から提供されている.HTTP 経由で Hyper Estraier を操作する.
plagger に拡張モジュールがある.
今回は Estraier モジュールのほうについてです.
《続きを読む》
2007-10-09 Tue
_ Plagger::Plugin::Publish::Atompub [atompub][perl][plagger]



Plagger の AtomPub Plugin を作ってみました.それほどニーズがあるとは思えないので,このサーバでひっそり公開です.
Plagger/Plugin/Publish/ Atompub.pm
Plagger で前処理したフィードを,AtomPub Collection に追加する (つ
まり,AtomPub サーバに POST する) ことができます.フィードを
AtomPub サーバにアーカイブするようなときに便利かなと.
使いかたはこんな感じです.
config.yaml
# ...
- module: Publish::Atompub
config:
uri: http://example.com/collection
username: atompub-id
password: atompub-password
# Publish::Feed と Publish::Twitter を参考にしました.
(追記) TimeZone の扱いにバグがあったので修正しました
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-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-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-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 を使ってくださっ
ている方は目を通してください.
《続きを読む》

