ブログ カテゴリ最新 1 2 / page 1 (2)

たけまる / 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 のソースコードも出てきますが,知らなくても
大丈夫なようにお話しします.

# 別件のため会場に着くのがお昼頃になりそうです.
# 朝早くから準備・運営してくださってる方もいるのに,申し訳ないのです..
Referrer (Inside): [2008-05-15-1]

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 で書いてみました.

続きを読む

Referrer (Inside): [2008-05-13-1] [2008-02-26-1]

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 モジュールの紹介で
す.

続きを読む

Referrer (Inside): [2008-07-16-1] [2008-02-25-1]

2007-12-25 Tue

_ atom:source と XML::Atom へのパッチ [perl][atompub]

12/21 に XML開発者の日に参加してきました.

第十回XML開発者の日

内容についてはメモしてた人がいたので任せるとして,打ち上げで
id:ikasam_a と話した atom:source の扱いについてまとめておきます.

atom:source 要素はほとんど使われていない要素です.そのため,
XML::Atom にバグが残っているようです.

atom:source の使いどころと,XML::Atom のパッチについて書きます.

続きを読む

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 が使われます.

続きを読む

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

2007-11-21 Wed

_ Atompub 関連モジュールを CodeRepos に [atompub][perl]

Atompub 関連モジュールを CodeRepos にいれました.

CodeRepos::Share - Trac

CodeRepos は「コードレポジトリを共有しよう」ということで夏頃に始まっ
たプロジェクトで,ずっと前からコードを入れようかなと思いつつ,延び
延びになってました.

いままでもオープンソースで開発してましたが,レポジトリごと公開とい
うことでより開発に参加しやすくなりました.よかったらいじってやって
ください ><

Atompub
Catalyst::Controller::Atompub
XML::Atom::Service
Referrer (Inside): [2007-11-26-1]

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 にあります.今回の説明も,このサンプルをベースに
しています.

続きを読む

Referrer (Inside): [2007-10-22-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-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 を使ってくださっ
ている方は目を通してください.

続きを読む

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

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

続きを読む