D-7 <altijd in beweging>

Day to day life of a Perl/Go/C/C++/whatever hacker. May include anything from tech, food, and family.

2008年05月

Yauthとは"Yome(嫁) Auth"の事で主に男性が婚姻関係、もしくは親密な関係にある女性に対しての認証を得るために使われるプロトコルです。トランスポートレイヤーは電話やメールが使われる事が多いですが、スペック上の規定は特になく、プラッガブルな実装を可能にしています。

プロトコルに参加するのはPeer (同僚・友達)、Client (認証を得たい人物), End Point (嫁)の三者です。プロトコルが発動する前に、PeerよりClientにProbe (お誘い)メッセージが送信されます。この時点ですでにキャッシュされたEnd PointよりのレスポンスをClientが持っている場合はただちにClientからPeerへ返答が返ります。

キャッシュされたレスポンスがない場合はClientよりEnd Pointに実装依存のトランスポートレイヤーに乗せてクエリーが投げられます。書式はYAuth スペック1.0では

AUTH $reason

で、$reasonは省略可能ですが、End Pointの実装によっては$reason無しでは認証が絶対に下りないようになっている場合もあるので、なるたけ省略しないほうがよいでしょう。

これに対してEnd Pointは非同期でレスポンスを返してきます。現在定義されているステータスコードは以下の通りです:
YAuth 200 - 認証成功
YAuth 201 - 認証は成功したが、End Pointがよそに愛人を作成した (bulkneets)
YAuth 202 - 認証は成功したが、本文内容は「勝手にすれば?(次回の認証は失敗する可能性が高い) 」 (Yappo)
YAuth 204 - 認証は成功したが、無言(次回の認証は失敗する可能性が高い)
YAuth 300 - 無効。選択肢が複数存在する。例:1. 大人しく帰ってきて無傷、2. 後で見返りを提示する、3. あとで半殺し (zigorou)
YAuth 302 - 無効。成功とも失敗とも言えない。
YAuth 305 - 無効。第三者の仲介を必要とします。(bulkneets)
YAuth 400 - 認証失敗(そもそも認証という行為を否定)。End Pointが鬼嫁だった場合等 (Yappo)
YAuth 401 - 認証失敗。愛人への認証を嫁に出していませんか?(Yappo)
YAuth 402 - 認証は一応成功だが、後で罰金、もしくはプレゼントをEnd Pointに渡さないとretroactiveに認証拒否。(daiba / otsune)
YAuth 403 - 認証失敗。
YAuth 404 - 認証失敗が続いたため、End Pointが実家に帰った、等
YAuth 406 - 認証失敗。着信拒否されました(Yappo)
YAuth 409 - 認証失敗。End Pointは現在間男に夢中 (tokuhirom) もしくはホストクラブに夢中 (daiba)
YAuth 410 - 無効。End Pointは知らない間にいなくなった (acotie)
YAuth 411 - 認証失敗。いつまでに帰ってくるか明示しなさい (zigorou)
YAuth 412 - 認証失敗。そもそも彼女も嫁もいません。
YAuth 413 - 無効。あうぅ。こんなおっきなりくえすとはいらないよぉ・・・(Yappo)
YAuth 414 - 無効。あうぅ。こんなおっきなURIはいらないよぉ・・・(Yappo)
YAuth 423 - 認証失敗。クレジットカードがロックされました (Yappo) 実装はWebDAV経由での操作の場合のみ。
YAuth 500 - 認証失敗。なお、家に入れない可能性が高い。
YAuth 502 - 認証失敗。認証方法がよくありません。セックス中に再度認証してみてください (Yappo)
YAuth 507 - 認証失敗。あんた今そんなにお金持ってないんだから許せるわけないでしょ! (zigorou)

実装依存のステータスは以下の通り

YAuth 456 - Zigorou (456) 版にのみ実装。嫁が押し入れにitkzを飼い出す (Yappo)

なお現在Experimentalステータスで出されているRFCにはクレジットカード等のログから認証の必要性が後から露見し(「ちょ、この『ラブマーケット』ってなんのお店よ!」「ち、ちがう、それはただのスナック・・・ぷぎゃー><」)、その時点で認証を行うDelayed YAuth等のバリエーションが存在する。
    このエントリーをはてなブックマークに追加 mixiチェック

id:kazeburoさんのYAPCでの話でlibmemcachedがconsistent hashing使えないと言われてしまったのを知らなかったのだけど、先週の金曜Brian Akerのセッションでそのことを知ったので調べてみたよ!


するとようやく現象が確認できました。で、問題はどこかと調べてみたところ・・・libmemcached C ライブラリでした><  libmemcached 0.20以降でこの現象は直ってるはず。

なお、これを調べてる時にMemcached::libmemcached + Cache::Memcached::libmemcachedでマスターキー付きのget/setがうまくできないことが判明。これは次のリリースで直る予定。近々リリース予定の0.2101では、依存するlibmemcachedのバージョンも0.21にアップされています。

どれもこれもとりあえずsvn HEADでは動いています。
    このエントリーをはてなブックマークに追加 mixiチェック

080525_1759~0001.jpgコードギアスを見ながら弁当作りましたよ。

明日の献立は焼き鮭、茄子の揚げ浸し、ほうれん草とベーコンの卵とじ、それにきのこの炒め物ですよ。

夕ご飯は多分素麺。素麺のうまい季節になってきました。

しかしコードギアスは本当に時間かわるのかな。
    このエントリーをはてなブックマークに追加 mixiチェック

@tmaesaka, @kazeburo, @kazuhoらとBrian Akerの MySQLセミナー(って、memcachedの話だったけど)が終わった後で小一時間ほどlibmemcachedのライブコーディングしてた。なんか妙な体験。

おもしろかったー
    このエントリーをはてなブックマークに追加 mixiチェック

何個か応募をいただいたので、ひとまず締め切ります。ありがとうございました。

実はとあるプロジェクトを進行させていて、直近でもう一人か二人くらい手が欲しいと思っています。というわけでPerlで仕事したい人募集中です。

Perlで書くWebサービスで、CatalystとかGearmanとかそういったものでこさえます。

期間は6月〜8月、お金は応相談、勤務地は渋谷。勤務時間応相談、週3日かそれ以上希望。できればラップトップ持参で作業していただけると幸い。

必要な能力:

  • Webサービス構築の基本知識
  • Perlの知識
  • リモートで連絡を取ることが多いので、コミュニケーションスキルはあったほうが望ましい
わからないところは教えますが、比較的急ピッチでコードを書き、技術を盗む事ができるほうが望ましいです。

ちょっと急いでいるのでこんな形で告知としとります。もし興味があったら連絡してください。
    このエントリーをはてなブックマークに追加 mixiチェック

一応NPOとかの事を少しずつ調べ始めている

気になるのは「10人の社員」という点。もしこれが「被雇用者」という意味だったらNPOなんか誰も作れないと思うのだが、多分これは「会員」とかの話なんだろうな、と勝手に思っている。

あとは金さえなんとかなればいいはず。ビジネスプランっぽいものを作らないと。とりあえずNPO諸先輩の方々にどんなもんか聞きつつ、地道に人員確保にいそしむとする。
    このエントリーをはてなブックマークに追加 mixiチェック

Mac::Growlというモジュールをインストールしようと思ったらひでぇエラーが出るので諦めてたのだが、しょうがなくなってソースコードみてみた。

エラーはMac::Glueの1375行目ででてくるんだけど、ここで変なファイルをtie()しようとしてる。Makefileとか。ひでぇ。なので、とりあえず1375行目のtieの前に
next if $_ eq 'Makefile';
と入れたら直った。これでやっとTest::Continuous使えるよ。
    このエントリーをはてなブックマークに追加 mixiチェック

昨日あったYAPCの打ち上げでぶちあげてしまったので、ここに1年以内のTPF-Jを発足を目標とする旨、明言しておく。

TPF-JはThe Perl Foundation Japanとして、Perlの普及活動および、普及活動を行う任意の個人・団体に人的、資金的な援助を行う目的で活動する。

主な活動内容としては、公共Perlサービス?のようなもののスポンサーや、その内容についての認定、あとは資金さえあればプロジェクト等への補助金交付。たとえば先日立ち上がったperl-users.jpにしても(彼らが実際に賛同してくれるかどうかは別として)、TPF-Jのような団体のお墨付き?や、資金的援助を受けられる事となれば活動内容が充実するし、YAPCのようなイベントにも、TPF-Jは1団体としてあくまで公共サービス的に参加できる。また、Shibuya.pmを筆頭としてPerl Mongerグループ同士の横のつながり等にも関与できればと思う。

日本にはユーザーグループはそれなりにあるけれども、そのような公共サービス的な一面をもったPerl団体は存在しないので、これらの総合的な活動を通して、Perlの普及を努める非営利団体を立ち上げたい。

昔某サイトをやっていた時もそうだけど、小さい団体や個人が徒手空拳で何かを為すのはとても難しい。本人達以外を巻き込むには金や肩書きがいるし、それがあったとしても会計が面倒くさかったりと色々な問題がでてくる。そこでTPF-Jですよ。

今年の夏はちょっと忙しいので、できれば秋口から冬までの間に具体的にまとまればいいな、と思う。ついてはまず必要なのは

  • 非営利団体として発足するための条件等の洗い出し(お役所との話)
  • 直近の目的(ロングタームでは「Perlの普及」だが、1〜5年スパンでの目的が必要)
  • 人材確保(参加希望はid:miyagawa, id:takesakoと、YAPCの黒幕達。あとはおいおい)
  • 設立資金の確保、および運転資金の調達

ついては、以下の項目に興味がある、もしくは知識を持っている方がいましたら是非ご連絡ください。

  • 理事として運営に参加したい、という方
  • 寄付等によるスポンサーをしてもよい、という団体、個人の方
  • NPO等について詳しい方
言い出しっぺではありますが、皆目どこに進むのかも分からずに走り出そうとしているので、助言いただければ幸いです。
    このエントリーをはてなブックマークに追加 mixiチェック

かねてからお約束通り冷蔵庫の中を晒してみた。080518_1912~0001.jpg

ちょっと空っぽ感があるかもしれんが、ビール、肉、野菜、デザートと一通り必要なものを揃ってるっす。あとは野菜室と冷凍庫にそれなりに入ってる。冷凍庫は多めに作っちゃったものとかを保存しているので特に充実。

急なお客が来ても簡単な物だったらすぐ作れるぜ!
    このエントリーをはてなブックマークに追加 mixiチェック

YAPC::Asia 2008に水曜、木曜、金曜とフル出場しましたよ。セッション二つあって、なおかつ裏方もしたりして死ぬかと思った。オーガナイザー側とトーク側両方やるって狂気の沙汰ですね>id:miyagawa, id:takesako, id:charsbar, emersonさん(他にもいたかな。間違ってたら失礼)

結果、昨日はあまりにも疲れててほぼ一日中寝倒しました。夜からはJeff Kimさんとスコッチのみに行ってきて、泥酔。本日はその影響(Authが下りない的な)もあり、ちょいとイタリアンの飯食って、恵比寿でアイスクリーム食べて、カラオケで歌ってきた。

残念ながら結局ハッカソンには参加できませんでしたが、昨日はちょっとpartty.orgを使ってリモートから参加してみたり。これ結構使えるんじゃね?Moobalをとりあえずcodereposにあげておいたぞな。

ああ、なんか普通の日記書くの久しぶりな気がする。
    このエントリーをはてなブックマークに追加 mixiチェック

昨夜のYAPC::Asia 2008懇親会で新人漫才コンビ「マキミル」がデビューした。アメリカ人と日本人という異色のコンビのこれからの活躍が注目される。

いやぁネタあわせもなんもできてなくてすみませんでした。
    このエントリーをはてなブックマークに追加 mixiチェック

楽しかった。が、正直疲れた。明日のスライドはもう書けない。

ところで今日一番の収穫は多分Paul Bakausさんと延々とJavascriptの話をして、やっと根本的なJavascriptの実装について理解したことだと思う。YAPCなのにJavascript www

あと、今日俺の話を聞いてくれた皆様、ありがとうございました。明日はもう少しニッチな話をしますが、まぁでもイントロはイントロなので、id:tokuhiromとかid:Yappoが満足するかは不明(っつーか、Mooseいくよねw 俺が行きたいw)
    このエントリーをはてなブックマークに追加 mixiチェック

YAPC::Asiaで2セッション話してきます

最初のセッションはPerlにおけるテストについて、基本的な内容から。CPANにモジュールをあげている人ならどれもこれもご存じな事ばかりかもしれませんが、テストの書き方は意外と一般に知られていないノウハウであったりします。一番基本の「なんで?」からテストの書き方までを話します。

翌日のセッションはXSについてまた話します。XSの基本、SVに何が入ってるのか、MAGICの挙動等、CとPerlの世界を行ったり来たりします。2006年のYAPCでも話しましたが、今回は40分でもう少し細かい話をします。

今夜の前夜祭を含めて会場内でふらふらしてると思いますので声をかけてくださいねー。ご来場をお待ちしております。
    このエントリーをはてなブックマークに追加 mixiチェック

葉巻は大学生の頃に悪友に勧められて以来の縁。

俺はたばこは(基本的に)吸わないが。、葉巻は別。葉巻はいい。この香り。この後味。蒸留酒との絶妙のハーモニー。葉巻はたまらない。

それでも俺は葉巻を吸い始めても最後まで吸いきる事はほとんどない。葉巻はたばこと違って最初と最後の吸い口で味が全是違う(あとのほうがピリピリくる)。しかもニコチンが結構きつくて最後まで吸いきれない。で、結局全体の1/3くらいはいつも残してしまう。

だが、最近出会ったCohibaの"Maduro 5"というシリーズは違う。うまい。ありえないくらい美味い。そして最後まで吸いきれるマイルドな、安定した味。これは俺がこの10年近い間で吸ってる葉巻ではひょっとしたら最高のシリーズかもしれん。

今日は残り1cmのところまでがんがん吸わせていただいた。うまい・・・。
    このエントリーをはてなブックマークに追加 mixiチェック

DBIx::Class経由でSQL::Abstractを使っているわけですが、このたびPostgreSQLからMySQLに引っ越ししようかと思ってるサービスがありまして、そこで問題にぶち当たりました。

Ludia(PostgreSQL)の場合は対象のカラムに対してオペレーターをかますので、column => { '@@' => '*D+ ....' } (新しいLudiaは%%か)とかできるわけですが、MySQLの場合はMATCH(...) AGAINST(...)を使うので カラム→オペレーター→引数という形にできない。

もちろん 'MATCH(...)' => \'AGAINST(...)'ってやってもいいんだけど、なんかわかりにくい気がしてた。

で、色々考えた末、これが俺の中で一番きれいという判断となった
$sqla->select($table, { '/* table.fts_column */' => \'MATCH(fts_column) AGAINST("whatever")' });
基本/* */とか嫌いなんだけど、この場合はあってよかった。
    このエントリーをはてなブックマークに追加 mixiチェック

YAPCのスライドに、一枚だけ越中選手のヒップボンバーの写真を使いたかったんですよ。ぐぐったら、新日の写真が一番よかったんで、そのまましれっと使ってもいいかと思ったんですが(どうせ非営利だし、そんとき見せるだけだし)俺も大人だからちゃんと広報宛にメール出して聞いたんですよ。

そしたら返ってきたのは杓子定規的なこの答え

新日本プロレスリングライセンス事業部です。

お問い合わせ頂きました公式サイトのコンテンツ素材使用についてですが、

ご利用はお断りいたしております。

恐れ入りますが、何卒ご理解ご了承の程宜しくお願い申し上げます。


新日本プロレスリング株式会社 ライセンス事業部


まぁこれを書いた担当はマニュアルに従っただけだと思うけど、ちょっと狭量だと思うよ、これ。

俺が送ったメールにはちゃんと非営利の、しかも畑の違う技術屋のカンファレンスにこの写真をスライドのネタ(ただし、バッシングとかでは決してないとは明記した)として使いたいとはっきり書いて、わざわざ聞いたのにさー。

別にいいじゃん、こういうのって一種の広報じゃないの?

というわけで俺の中では(そもそもあんまり興味なかったが)プロレスは終了。
    このエントリーをはてなブックマークに追加 mixiチェック

B型H系はヤングジャンプに連載されてる4コマですが。なんかぐだぐだとラブコメしてるのかと思ってたらここ数週間の展開が結構おもしろくてそもそもこのお話の最初はどこか知りたくなってきたのでブックオフで1から4巻まで購入。
ツンデレもここまでくるといいな
    このエントリーをはてなブックマークに追加 mixiチェック


もう何回もチャレンジしてるんですが、Gprofでうまくダイナミックリンクされているライブラリがgprof結果にのってきません。誰かやりかた教えて><

やっているのは
libmemcached> ./configure --enable-debug --enable-pic CFLAGS=-pg LDFLAGS=-pg make make install
で、この後にこのlibmemcachedを使う20行くらいのCコードを書いて、同じくコンパイル
gcc -pg -lmemcached hoge.c
こいつを実行するとちゃんとgmon.outが作られるんで、gprofを実行するわけですが、その結果にlibmemcachedの内容が何ものってない><。なんとなくlibmemcached.soが作られる時になんんらかの情報がストリップされてるのではないかとにらんでるんですが、どうそれを残すのかわかりません。誰か何か知ってたら教えて><
    このエントリーをはてなブックマークに追加 mixiチェック

このページのトップヘ