■2005-05-03
* [近況] 眠いよう
ここのところ日記を書く気力もなくて、一昨日も夕方昼寝。そしたら電話が鳴って、なぜか小飼弾氏のホームパーティにお呼ばれ。なので半分寝ぼけながら出発。……道に迷いました(お宅がわからないとか以前に、目的地までの交通手段がよくわからず、40分ほどさ迷って)。
パーティは盛大で、大変楽しい一時でした。っていうか、相変わらず初対面の方のお家に泊まっちゃうし。ねねさん経由で呼んでいただいたのですが、にぽたんさんにも初めてお会いできてこれまた嬉しかったです。
* [メモ] 心理歴史学
ずいぶん前に保存しておいたのですが、自らを和ませるために。「吐夢、世良、そして小説」のYahooの検索で引っかかったやつ。気持ちの良いまとまり方をしてたので。いや、それだけです、それだけ。
■2005-05-06
* [メモ] Affelio
個人で設置するPerlで書かれたSNS、Affelio(ここギコ!経由)を設置してみました。
すんなりとはインストールできず試行錯誤しましたが、とりあえずこんな感じに。DBD::SQLiteやCrypt::DHを使うため、レンタルサーバによってはインストールが困難かも。Crypt::DHの方はこれ自体はPurePerlですが、Math::Pariを使っています。一応Math::Pari::PP4Cryptでごまかすことはできます。
* [漫画] だめっこどうぶつ
桑田乃梨子 だめっこどうぶつ2。 888の2巻を買いに行ったらちょうど出ていたので購入。 中表紙が猫科乙女sと熊姉。新しく登場したフクロウ娘も可愛いらしい。そいやイヌ科はネコ目なのね。
おお、アニメ版ではフクちゃん出てたんだ。 やはりBOXを買おう。
* [メモ] Affelio付属のdiaryを動かす
Affelioに付属の日記システムは現状では動きません。でも、やだやだdiary動かなきゃやだーということで、弄ってみます(v0.9.1で)。
Affelio.pm
にsub get_pub_pri_list {}
をダミーで追加。
AffelioApp.pm
の
$output_data{'app_css_path'} = $self->{app__web_root};
をコメントアウト。
apps/diary
にdataディレクトリをつくる。
Diary.pm
68行目
$this->{dbh} = DBI->connect("DBI:CSV:f_dir=".$this->{dbpath})
を
$this->{dbh} = DBI->connect("dbi:SQLite:dbname=".$this->{dbpath})
に変更。
で、動くような気がします。
■2005-05-09
* [メモ] WWW::Mixi動かず(動きました)
ロボットアクセス禁止措置により、WWW::Mixiが機能しなくなったとか。またmixi_ping動かなくなるのね。でもAgentの名前を変えれば何とかなるんじゃないかなあ。
追記(5/11):作者の塚本さんがMixi運営事務局に働きかけてWWW::Mixiが使用可能になったようです。バージョン0.31以降で対応。
* [メモ] 富野訳 憲法前文
日本国憲法前文 富野訳 あ、β版になってる。格調高い文がさらに熱く格好良く。その他コメントの最初2つなど。
■2005-05-13
* [Perl] Text::CSV_PP
CSV形式のデータを扱うCPANモジュールにText::CSVがありますが、これはasciiしか扱えません。そこで日本語を扱う場合には、代わりにbinaryも大丈夫なText::CSV_XSを使うと便利です。これのPurePerl版がCPANに無かったのでつくってみました(Text::CSV_PP)。
細かいところで微妙に動作が違っていますが、Texst::CSV_XSの機能を全て備えており、CSV_XSやDBD::CSVのテストが通るようになっています(パッケージ名を代えて実験)。type指定による型の強制変更までsprintfを使って実装してたりと、なんか無駄なつくりこみをしています。
そしてXS版より書き出しは3倍、読み込みは2倍遅いです。
■2005-05-20
* [Perl][メモ] JSONあれこれ
SHIMADAさんの指摘を受けて色々手直し。ついでに最新バージョン(まだCPANにあげてません)では再帰下降パーサのParse::RecDescentを使わなくなった結果、JSONからPerlへの変換速度が10倍に。逆にPerlからJSONに変換する方はそれまでいい加減だった処理を直した結果60%ほど速度ダウン。
PHPのPEARでJsonフォーマットのデータに変換した時、PerlのCPANとは順番が異なりますね。(JavaScript++かも日記)
PHPの連想配列はあくまで配列ですので、JSONに変換するときもその順番を保てるのでしょう。これに対してPerlのハッシュ(連想配列)は配列ではないので、順番を保持できません(PHPのそれに似ている疑似ハッシュは5.8で廃棄決定)。まあ、この辺はやむを得ないというか、JSON変換後のmemberデータを取り出す上で支障はないとは思うのですが。
* [メモ] いろいろ
・OpenID(ここギコ!経由) 要チェック
・perl-5.8.7-RC1。ithreads関連だと、クロージャを使うとクラッシュするのが直ったとか。
・だめっこどうぶつDVD-BOX 今日!
・JKL.ParseXML - XML→JSON展開クラス
・openidメモ このような理解でよいのかしら
* [Perl] JSONRPC Daemon
やっとJSONRPC::Transport::HTTP::Daemonを追加。
JSONRPC::Transport::HTTP::Daemon ->dispatch_to('MyApp') ->handle(LocalPort => 80);
みたいな感じでJSON-RPCのやりとりを。pathに合わせてアプリケーションを呼び出せるようにしたらCPANにアップ。
* 昨年BlosxomとSledgeを使ったシステムをこさえたのですが、さっきテレビで紹介されてて、ほー、と観てるとそのサーバからアラートメールが携帯に。一瞬アクセスが急増したためなのですが、夜鳴るとドキっとするなあ……
■2005-05-24
* [メモ] OpenID
OpenIDのデモを試すためにlivejournal.comにアカウントをつくってみました。入力フォームにblogのurlをいれて"Verify"ボタンを押すと、「あなたが誰かをこのサイトに教える許可を与えて」という趣旨のメッセージとともにlivejournal.comnの設定ページへのリンクが。そこで許可してから再度"Verify"すると成功。
OpenIDの人が作成したCPANモジュールNet::OpenID::Consumerのソースを眺めてみたら、土曜に書いたopenidスペックのメモの一部が間違っていたことがわかったので修正。Net::OpenID::Consume 0.03の段階では、Crypt::DSAではシグネチャの検証ができないので、opensslが必要。
OpenIdの他にも、Dashというのがあるそうで。
* [Perl][メモ] FOAF関連
FOAFだけで友人認証する方法あたりのことをPerlで実装する上で楽ができるよう、XML::FOAF::Utilsをコツコツと作成中。FOAFのseeAlsoを辿って処理を行うtraverse(\&code,@foaf)
やfinger($mbox,@foafs)
と、キャッシュ関連があれば良いかなあ。
seeAlsoといえば、CPANのXML::FOAFにはこの属性値を取得するメソッドがなくて、FOAF認証FSWikiはXML::Parser使って自前で処理していました。先日、XML::FOAFが利用しているRDF::Core::Modelをながめて
sub XML::FOAF::Person::seeAlso { $_[0]->get( "http://www.w3.org/2000/01/rdf-schema#seeAlso" );}
とすればよいことに気付きました。ところが1年も前にバグ報告が出ているという悲しいお知らせが!
■2005-05-26
* [メモ][Perl] OpenIDまわり
仕様に若干変更があり、Net::OpenID::Serverがバージョンがあがりました。それにあわせてサンプルコードも新しくしてみました。
それとは別にNet::OpenID::Consumer、Serverともにクエリーを'&'でなく'?'で連結してしまうバグがあるので最新版にするとよいでしょう。この問題のせいで、非Ajax版からはデモがうまく動作しません(たぶんそのうち直ると思いますが)。
* [メモ][雑感] OpenID関連
OpenID GuestBookのゲストブックデモをみてつくづく思ったのは、OpenIDはblog持ちの方が署名コメントをするためのものなんだなあ、ということ。"誰それ.livejournal.com"とか一目明快な感じです。書き込みの上から数番目のURLは何だか浮いてます。まあ、よく考えればOpenIDのaboutに最初から書いてあるわけですが。
URLのindentificationであって、Personに対するauthenticationではないわけで、FOAF認証には近づかないような気がするのだけど、どうなのかなあ。
* [メモ] 後で観るもの、備忘録
・反性教育の動向 写真をみたあとここをみると……
・政治制度からの靖国問題
・だめっこどうぶつBOX amazon値上がりしてる!
・砂の下の夢(TONO)
・JSONモジュールの名前空間の件
* [メモ] Apache::AuthFOAF(仮)のイメージ
コメント欄より、「俺の考えたのも、FOAFベースでmbox-sha1sumからURLを逆引きした後は、URLベースの遷移でつよ」ってあったのですが、 ねねさんの図は、私の中ではこういうイメージでした。
Apache::AuthFOAF(仮)を通じて
1. 呼び出されるコンテンツはFOAF認証が必要か? 不要→データを送る(終了) 必要→該当するrootFOAFファイル取得(2へ) 2. 訪問者のセッションcookieは有効か? 無効→ログインを促す →例のアレでログインして戻る →有効なセッションcookie発行 有効→rootFOAFのPersonにmbox_sha1sumがあるか? ある→データを送る(終了) ない→knowsのPersonのseeAlsoを辿る (以下、許可されたdepthまで検索)
どうもあれですね、認証方法に思い違いがあったようで。
■2005-05-27
* [メモ] FOAF認証まわり
再びコメント欄より。
「mboxの方が一意性が高いですかねえ」 については、URLもmboxも一意性に変わりはないと思います。でもFOAF認証システムの肝は、RootFOAFからfoaf:Personを辿ることで、(間接的に)信頼が保証される点にあるわけです(と、私は理解しています)。そしてfoaf:Personを識別するのにmbox(mbox_sha1sum)が必要です。だから最初からmboxを利用しようというぐらいの考えでした。 mboxを使うものと思っていました。
「それならそもそもURLで認証した方が早いかな」 については、これはそのユーザの持っているFOAFのurlの認証、ということならうまくいくのではないかと想像します。 すいません、ちょっと保留に。
「深度の深いところの人は、mbox→個人Web→認証Webの逆引きが出来ないので、2.にたどり着けないです」。 mbox→FOAF辿る→該当FOAF→認証webで問題ないと思うのですが…… やっぱり私何か勘違いしています?
[追記と訂正] 深度の話は別として、認証部分についてはどうも私が正しく理解していないようなので上の文章の一部を削除しました。
* [Perl] Crypt::DSAとMath::BigInt
Crypt::DSAのバージョン0.13でNet::OpenID関連モジュールから利用するための機能がつきました。が、それ以外にも鍵計算にMath::Pariを使うのをやめて、Math::BigIntでやるになったようです(もしあれば高速なMath::BigInt::GMPを利用)。
これでコンパイル環境のないレンタルサーバなどでもインストールしやすくなったんじゃないでしょうか(Digest::SHA1はうまく回避するとして)。 とりあえずこのコーナーもいらなくなったということね。
■2005-05-30
* [メモ] FOAF認証、OpenID
さて、ねねさんと直接やりとりをして、食い違いが解消しましたので、いくつかまとめを。
まず確認したように、FOAFで階層を辿ることが実際上無理ということ。 いやあ、「友達100人できるかな」なんて想像もしてませんでした。せいぜい1ノード5,6人で深さ3ぐらいで、友達の友達はやっぱり同じ友達だった、って感じでそれほどFOAFファイルの取得をするこはないだろうとか思ってたんですよ(←私の貧困な人間関係観が反映されております)。それにもちろんFOAFツリー構造のキャッシュと、mbox/FOAF URLペアのキャッシュを使うことを前提にしていましたしね(あ、例えば100台ぐらいサーバを用意してバックで一斉にFOAF検索させるとかすれば速度の問題は解消……とかしょうもないことを今思いつきました)。
それから重要なのが、現状のOpenIDは認証として完結しないということ。OpenIDは「今日コメントしたボブと名乗る人物は、昨日コメントしたボブと同じURLを管理下におく誰かです」ということしかわからないわけです(参考)。このボブと名乗る人物がbob@example.comを所有しているかどうかはわからない。ということで、追加的なルールが必要になると。
http://family.example.com/ をpapa、mama、bokuで共有しているとすると、認証対象のURLをhttp://family.example.com/#papa とかで入れてもらって、そういうURLで認証要求が来た場合には、OpenID Serverはpapaしか認証せずmama、bokuは認証しない、という仕様を追加してもらえばどうでしょうか(コメント欄より一部URLを変更)
ということについては、追々OpenIDコミュニティに提案してももよいのかもしれませんが、もうちょっと煮詰まってからかなあ。papa, mamaを識別する"本当の"IDがmboxと紐付けされない限り、mboxを利用するFOAF認証に利用できないですし。 それから、個々人が設置するOpenIDの認証サーバは原則として全て「オレオレ」なので、OpenID(あるいはそれに類する認証方法)を使う場合に、どの程度の信頼性をFOAF認証に期待するのかを考えないといけないですよね。
* [メモ] FOAF認証、OpenID その続き
コメント欄からさらに。
OpenIDサーバ自体が、ちゃんと1ユーザ1URLで認証すれば、(http://family.example.com/#papaでは、papaは認証するがmamaは認証しない) 可能かなと思うんですが。
kawaiさんも書かれている通り、#以下が何であろうともURLは同じものなので、ちょっと問題あるのかなあと思いました。で、それとは別に、何でmboxと紐づけてないとダメかと私が考えているかについてですが。
実際のところ、ねねさんもおっしゃる通りmboxと紐付けられてなくても、「1ユーザ1URL」の原則が徹底されていれば動作上、問題ないでしょう。 じゃあ何を問題にしているかというと、OpenIDが”あるURL”を、”あるログインしている人”と結びつけるとして、ではそのログインしている人が実際にログインする際に使うIDは何か、ということです。もしかしたらそこでは、実際のIDとして連番数字を使っているかもしれません。そうすると、makamaka[at]donzoko.netを持っている私は、しかしID:0001でログインしていると。このとき、私がmailto:makamaka[at]donzoko.netというmboxかどうかは、OpenIDに問い合わせてもわかりません。だからfoaf:Personのmbox値と、ID URLの一対一関係がどこか(たぶんFOAFファイル)に記述されていなければならないわけです。これは管理コストを増やすことになるのではないかと。これが私の気にしている点です。
OpenID の「評判」サーバを作ることになるんでしょうか…(略)OpenID では、どういう方針で承認をコントロールするか
OpenIDはいずれ何らかの方策をとるのかもしれませんが、FOAF認証サーバがOpenID(やそれに類するもの)を利用していく場合にはやはり、個々のIDサーバに対するtrustのレベルを設定していくことになるのではないかなあと、感じています。結局、OpenIDそれ自体は全く信頼できないシステムなわけで、本当に信頼できるものをつくるにはPGPみたいなものを利用しないとならないのではないでしょうか。それでPGPのアナロジーとして、FOAF認証サーバも個々のIDサーバにtrustの重み付けをできるようにしてみてはどうかなと。FOAF認証サーバ自体が有する認証システムは"trust ultimately"。Typekeyのようにmailアドレスが実idであり(mbox値も返してくれる)システムはかなり信頼できるので"trust fully"。個々のOpenIDサーバなどは"trust marginally"で、他のFOAFで複数信頼されてないとダメ、とか。 ……すいません適当なこと言ってますので聞き流してください。
* [メモ] こっちは全然関係ない後で読むためメモ
・戦後民主主義者の靖国参拝 (Demilog経由で「政教分離の必要性って判らない人が多いのだろうか」ってあるけど、あれだけいたれりつくせりの説明を受けてなお理解できないってのはどんなもんなのかしら。)
■2005-05-31
* [今月のAcme] サンプルコードを書くときの強い味方
Perlでサンプル用のコードを書くときに変数に入れる値を捻り出すのに苦労した経験はないでしょうか? それで適当なのを思いつかなくて結局 $test = 'foo'
とかしちゃったり。そんなあなたの味方Acme::MetaSyntactic。
use Acme::MetaSyntactic; my $meta = Acme::MetaSyntactic->new('batman'); print $meta->name; # ランダムに1つ取り出す my @array = $meta->name(3); # 3個いっぺんに
これでバットマンで使われる「音」―'awkkkkkk'だとか'zzzzzwap'が手に入ります! ……あんまり嬉しくないね。 ですが様々な「テーマ」がありまして、007の映画タイトルを集めた'jamesbond'とか、元素記号を集めた'elements'、あの'magic8ball'、ゼラズニィのアンバー 'amber'などなど色々なテーマがあります。また、Acme::MetaSyntactic::hogehoge
(小文字で始める)なモジュールをこさえれば新しいテーマをつくれます! ちなみにAcme::MetaSyntactic->new()にテーマ名を渡さないとデフォルトのテーマは
* [雑感] 日本でもOpenID対応のサービスは出てくるのかしら
typekeyのような認証サービス。つまり、はてなidを外部でも使えるウェブサービス。 逆に、はてなでOpenIDをサポートしてくれれば、はてなのアカウントがなくてもなりすまし困難なハンドルでコメントできて便利かな。
OpenID to LiveJournal proxy とか、OpenID to Typekey proxy とか、アナウンス出ていましたし。同じように OpenID to hatena proxy を作ればよいのではないかと。(コメント欄)
Typekeyとかは外部アプリケーション用に認証機能が提供されているので、OpenIDプロキシ→Typekeyに飛ぶ→OpenIDプロキシ(承認)という具合にできるのだったと思います(一応ソースをざっとみた感じあっているかな)。なので、OpenID to hatena proxyが可能になるには、はてなさんがそういうサービスをされる場合ということになりましょう。
_ ねね [>blog持ちの方が署名コメントをするためのものなんだなあ 同感。 そんなのに困った事がない身としては、そのためにこ..]
_ ねね [その一方で、公開範囲ってFOAF定義だけでいいのかと。 友人、友人の友人への公開だけじゃなくって、真にSNS的な物を..]
_ まかまか [>でも俺の考えたのも、FOAFベースでmbox-sha1sumからURLを逆引きした後は、 >URLベースの遷移でつ..]
_ ねね [あ、すんません、2段階の認証、つまり ・信用されうる?事の認証(OpenID等の) ・その人が公開範囲に入っている事..]
_ ねね [個人WebのURLでもFOAFの深度は追えないかな > 個人WebのURLでもFOAFの深度は追えるんじゃないかな]