久々に blog 書こうとしたら、パスワード忘れて、きーーーっとなってたら ID 間違えてました。
こんばんは。

そろそろ一週間になりますが、YAPC::Asia 2011 で基調講演らしきことをしてきたので、そのお話を。


2日目_0200


今回、この話を受けた経緯としては irc で自重できない人たちの完全な悪のりに乗せられた感じですが、当日は握手会がなかったので引き受けました。

当日は、これまた自重できない人たちが何かピカピカ光る棒状の物を振ってたり、飲食禁止のはずの講堂の壇上にテキーラが一瓶置いてあったりと、とても格調高い雰囲気の前で話させていただきました。

まじめな話、今回のテーマがEvolutionということで、自分みたいなマネージャーの立場から Perl monger といかに仕事をしているかというのを紹介させてもらって、マネージャーに興味を持って裾野が広がって、Perlの仕事が増えて、みんな幸せになるんだったら、恩返しにもなるんでいいかなーと思って僭越ながら受けさせてもらった次第です。

で、何を伝えたかったかというと、牧さんが技評のインタビューでエンジニアが戦闘モードで進化するとmiyagawaさん、マネージャーモードで進化すると僕という例えをしてくれました。自分はそこまですごいマネージャーとは思ってないですが、重要なのは企業のエンジニアリングの現場には間違いなく、その両者が必要なのです。だからキャリアパスとしてマネージャーを目指すというのはありだと思うし、評価されるべきものだと思っています。

ただ、学生の人や若い人に言いたいのは若いうちは色んな経験をしてほしくて、さらにキャリアの延長線上にマネージャーというのを考えているのなら、若いうちにたくさん色々なコードを書いたり、たくさん色々なシステムを運用すべきだと思っています。それは経験となってマネージャーをやるときに必ず生きてくるわけで、逆にそういう経験をなしにマネージャーにはなれないと思います。

そして、色んな人と出会うためにも Perl、に限らなくて良いと思いますが、コミュニティにどんどん参加して欲しいと思います。YAPC の開催期間3日間で経験したと思いますが、Perl のコミュニティには仕事を超えた素晴らしい出会いがあります。そこで得られた技術や情熱、人脈はマネージャーになったときに必ず役に立ちます。自分が今回のような機会を与えられたのも Perl コミュニティでの繋がりや出会いがあったからだと思っています。若い人にはそんな機会に積極的に触れて欲しいと思います。

最後に今回も素晴らしいお祭りを準備してくれたJPAやボランティアの方々に感謝したいと思います。ありがとうございました。

I♡Perl


2日目_0226


あ、プレゼン中に紹介したのはこの本です。

Being Geek ―ギークであり続けるためのキャリア戦略
Michael Lopp
オライリージャパン
売り上げランキング: 13893

読み物としても良い本なので是非。

会社の役員が珍しくスーツを着ていたので「コスプレですね」とからかったら「握手してあげるからCDたくさん買ってね」と切り替えされました。
ぎゃふん。
こんばんは。

docomoがSIMカードの提供を始めて、SIMロックフリーの3G端末でdocomo回線が使えるようになりました。
この辺を見越して iPad 2はAT&Tのモデルを買ったわけで、早速試したのでそのお話を。

量販店とかでは買えなくて、docomoショップに行って来ました。
このとき必要なのは身分証明書くらいだけど、技適マークの表示を求められるので本体も持って行く必要があります。
技適マークの出し方は[設定]-[一般]-[情報]-[認証]から。

2011年4月30日まで「定額データプランスタンダードバリュー」に「定額データスタンダード割」で二年契約すれば一年間は上限4410円というキャンペーン中だったので、それに入りました。二年目は上限5985円だそうです。これにISPとしてmopera Uを契約したので、プラス月々525円かかる感じ。

「定額データプラン」新規お申込み料金割引キャンペーン | サービス・機能 | NTTドコモ

で、買ってきたのがこんな感じ。

IMG_0904.JPG

で、いざ設定なり。

IMG_0905.JPG

まずはAT&TのSIMカードを引っこぬいてdocomoのSIMカードを入れます。

IMG_0907.JPG

さっそくdocomoと認識されたよう。

IMG_0908.JPG

このままでは使えないのでmopera Uの設定をします。
[設定]-[モバイルデータ通信]-[APN設定]でAPNにmopera.flat.foma.ne.jpと入力します。

IMG_0909.JPG

で、Safariを開いてstart.mopera.netへアクセスするとmoperaの登録サイトに飛ばされるのでdocomoで設定したネットワーク暗証番号を入力。
登録が終わると基本IDやパスワードが表示されるのでメモ。

で、再び[設定]-[モバイルデータ通信]-[APN設定]でユーザー名、パスワードを入力して設定完了。

IMG_0911.JPG

これでdocomo網でiPadが使えます。

基本的に仕事中の動画プレイヤーとしてしか使っていないので特に恩恵は受けていないです。

ちなみにPersonal Hotspot(テザリング機能)は iPad2では使えませんでした。
iPhoneよりバッテリーが長持ちするのでちょい残念。

また事情書を書く羽目になりました。
総務の視線が痛い今日この頃です。
こんばんは。

先日、サンフランシスコに行った時にたまには自分にお土産買おうかなーと思い、ふと思いついたのが日本ではまだ発売されていないiPad2。
しかもAT&Tの3G版ならdocomoのSIMカードを挿して使えて面白そうなので購入を決意しました。

が、いろいろネットで調べてみると、海外でも品薄で入手が困難な記事やblogがチラホラ。
毎朝Apple Storeには行列ができてるとのこと。
なので、まずは偵察とApple Storeに朝8時前に行ってみるとすでに10人ほどの行列。


x2_55584e4


会議があったので、この日は諦めて出社。
そのことを同僚に話すと、やはりサンフランシスコでもなかなか買えないとのこと。
が、サンフランシスコのオフィスでは全員Macを使っていて大量に購入しているため、ある程度融通が利くから聞いてやるとのありがたいお言葉。
もちろんお願いして翌日聞いてみると、帰国までに何とかなるかもとのことなので速攻で発注をお願いしました。
結果、帰国には間に合わず、今日になって日本に帰国し来た部長様がピックアップしてくれて無事入手した次第です。

で、帰宅して開封式。


IMG_0888.JPG


相変わらず素っ気ないパッケージ。


IMG_0889.JPG


iPadとしか書いてありません。
もしかして1を買ってしまったのでしょうか。


IMG_0890.JPG


型番から推測するにどうやら2のようです。


IMG_0891.JPG


中身はこんだけ。
相変わらずマニュアルなんてものはありません。
ジョブズのドヤ顔を思い浮かべました。


IMG_0892.JPG


大きさはこんな感じ。
ピザハットのおまけのSKE48のトランプと比べるとこんな感じ。


IMG_0894.JPG


先代に比べて薄くなったそうですが、持ってないのでわかりません。
扇子と比べると確かに薄く見えます。

さっそくiTunesで同期。
64GBということでオレのAKBフォルダが火を噴きました。

そういえばスマートカバーも発注したのですが、どうやら忘れられてたようなので、ヨドバシで買ってきました。


IMG_0900.JPG


レザーのちょっとごついやつですが、仕事中にビデオを見るのがメインの用途なので、iPad2用でスタンドになるやつがこれしかなかったので買いました。3480円くらい。


IMG_0903.JPG


まだでっかいiPhoneくらいのイメージがないけど、いろいろ試してみようかなと思います。

携帯の緊急地震速報の音が怖いので、「会いたかった」に変えるHackを募集しています。
こんばんは。

OAuth 2.0は仕組も特徴も理解していたのですが、実際に実装の必要が出てきたので今更ながら初めて使ってみました。

仕様は現在draft15というステータスで公開されています。(The OAuth 2.0 Authorization Protocol) OAuth 2.0の特徴としてはHTTPSを使って通信経路を暗号化することによりトークンを直接やりとりすることが可能となっています。そのため署名が必要なくなり、あの悪夢のような署名検証をしなくて済むようになったのが大きなメリットです。

とはいえ、読んでもよくわかんないのでコードにしてみます。Authorization ServerとResource Serverとして使ってみるのはFacebook。クライアントサイドフローとサーバーサイドフローの二つをサポートしているので、今回はサーバーサイドフローでテスト。ドキュメントはCore Concepts - Authenticationを見ました。

まずはFacebook Developersアプリの登録が必要。もちろんFacebookのアカウントも必要。

このときに忘れちゃダメなのがWeb Siteの設定でSite URLとSite Domainの指定をする必要があること。Authorization Serverからのリダイレクト先はSite Domain下のURLしか許可されないのでここが抜けてると動きません。

設定に必要なApplication IDとApplication Secretも控えておきます。

CPANにはNet::OAuth2OAuth::Lite2やそもそもFacebookであればNet::Facebook::OAuth2などがありますが、愚直に実装しないと理解できない子なので、使わないで書いてみます。こういう捨てWeb ApplicationのコードはPlackを使うととっても簡単。
内容はFacebookで認証してFacebookの友達情報を取得して表示するだけの簡単なお仕事。

短い。

フロー順に説明すると

1)
まず、何にもパラメータがない場合は、Facebook のAuthorization endpoint にユーザーをリダイレクトしてFacebookの認証を受けさせに行きます。

2)
認証が通ると、redirect_uriに指定したURLにユーザーがリダイレクトされてきます。この際にAuthorization Codeがcodeパラメータとして渡されます。

3)
このCodeを友達情報などのProtected Resourceアクセスのために使うAccess Tokenとサーバーサイドで交換します。

この際にパラメータに要求元を証明するための秘密鍵であるConsumer Secretなど本来ネットワークに流すべきではないものをつけてリクエストするのですが、このリクエストがHTTPS必須になっているので途中で改ざんされたりしないので安全であるというのがミソです。

このリクエストが成功するとAccess Tokenがレスポンスとして直接返るのですが、これもHTTPSなので安全ですよと。

4)
あとはこのAccess Tokenを利用して友達情報などを取得してユーザーに表示します。

かなりシンプルなのでライブラリが必要ないくらいです。

この次はAuthorization Server と Resources Server 側の実装検証をしてみたいなあと思います。

朝鮮半島で大変なことになっているときに幕張メッセにいました。
何をしてたかは聞かないでそっとしておいてください。
こんばんは。

というわけで、Apple TVを注文したのが届きました。
8800円なり。

IMG_0662.JPG

相変わらずシャレオツなパッケージ。

IMG_0663.JPG

相変わらず付属品がシンプル。

IMG_0664.JPG

小さい。

IMG_0665.JPG

獣化第2形態の2号機よりと比べても小さい。

IMG_0667.JPG

電源入れてWiFiの設定したらアップデートのお知らせが来てたので早速アップデート。
ちなみに接続はHDMIのみなので10年くらいぶりにテレビ買い換えました。
その話はまた今度。

IMG_0673.JPG

設定で日本語にした。

IMG_0669.JPG

ホームシェアリングの設定をすると起動しているiTunesのライブラリを再生できる。
これがやりたかった。

IMG_0668.JPG

保存してあるビデオも見れる。

IMG_0674.JPG

YouTubeも見れる。

IMG_0671.JPG

映画をレンタルできる。

IMG_0672.JPG

なんか見ようかと思ったけど夜遅いので寝る。

最近、社内で初対面の人に自己紹介すると「あ!twitterでfollowしてます。AKB好きな方ですよね?」と辱めを受けてることが多くて色々反省しています。
こんばんは。

先日、会社で新しいMac Book Airを支給されて開発環境を再構築して、せっかくの機会だったので自分の環境をメモりました。

YAPC::Asia 2010でtokuhirom氏の「モダンな Perl5 開発環境について」で大きく取り扱われたり、あちらこちらで散々エントリされていますが毎回ぐぐるのも面倒なのではっときます。

0. 下準備
gccや各種ライブラリが必要なので何はなくともXcodeをインストールします。僕はiOS SDK付きをダウンロードしてインストールしました。

ついでにhomebrewもインストールしておきます。
sudo dscl /Local/Default -append /Groups/staff GroupMembership $USER
ruby -e "$(curl -fsSL https://gist.github.com/raw/323731/install_homebrew.rb)"
wgetとかgitとかインストールしておくといいのでしておきます。
sudo brew install wget
sudo brew install git
また、bashを使ってて.bashrc派なのですが、そのままだと.bashrcが効かないのでこんな.bash_profileを作っておきます。
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi

1. perlbrew

システムにインストールしてあるPerlは使いたくないのでperlbrewで自分用Perlをインストールします。

ダウンロードしてインストール。
curl -L http://xrl.us/perlbrew | perl - install
初期化。
~/perl5/perlbrew/bin/perlbrew init
~/.bashrcに追加。
source /Users/kimura.hideo/perl5/perlbrew/etc/bashrc
5.12.2をインストールして使用。
source .bashrc
perlbrew install perl-5.12.2
perlbrew switch perl-5.12.2

2. cpanminus

cpanは使いたくないのでcpanminusをインストールします。
curl -L http://cpanmin.us/ | perl - App::cpanminus

2. CPAN::Mini

飛行機は嫌いなのであまり乗らないけど、ローカルにCPANのミラーがあると便利なことがあるのでCPAN::Miniをインストール
cpanm CPAN::Mini
.minicpanrcに設定を書いておきます。
local:  ~/mirrors/minicpan/
remote: http://ftp.funet.fi/pub/languages/perl/CPAN/
exact_mirror: 1
ローカルミラーディレクトリを作ってミラー開始。
mkdir mirrors/cpan
minicpan
cpanmでいちいちミラー先を指定するのはめんどうなので.bashrcにエイリアスを書いておきます。
alias minicpanm='cpanm --mirror ~/mirrors/cpan --mirror-only'

4. local::lib

アプリケーションのextlibを作るときに便利なのでlocal::libをインストールしておきます。
cpanm local::lib

5. cpan-outdated

インストールされたCPANモジュールを最新に保ちたいのでcpan-outdatedをインストールします。
cpanm App::cpanoutdated
おもむろに実行。
cpan-outdated | cpanm
一応ローカルミラー用のエイリアスを,basrcに作っておきます。
alias minicpan-outdated='cpan-outdated --mirror file:///Users/hidek/mirrors/cpan | minicpanm'

6. pm-uninstall

モジュールをアンインストールしたいことがあるのでpm-uninstallをインストールしておきます。
minicpanm App::pmuninstall

あとは恒例のCPAN大会ですがTask::BeLike::Hidekとか作ってないのでCPANソムリエで有名なtokuhirom氏のTask::BeLike::Tokuhiromとか入れておくといいかも。
cpanm http://github.com/tokuhirom/task-belike-tokuhirom/tarball/master

# 2010/11/19: cpan-outdated は xargs いらないよというgfx先生の突っ込みが入ったので修正

この前、とある事情で会社で反省文を書きました。
高校生以来だったのでノスタルジックな気分に浸って反省できませんでした。
こんばんは。

というわけで、今年もYAPC::Asia に行ってきました。
今年は仕事が猛烈に忙しくてTalkはできない、LTすらもできない、前夜際は欠席、平日の1日目は懇親会から、という散々な出席状況でした。今年から土曜日も開催されてて、最初は何で休日にやるの!とか思ってたけど、まさか自分がその恩恵を受けることになるとは思いませんでした。

と、セッションはあまり出れませんでしたが、最後のキーノートで宮川さんも言ってたけど、Perlコミュニティが最高にいいところは人と人のつながりが本当に素晴らしいことで、それを思う存分味わえる場を二年目病にもかかわらず今年も開催してくれたJPAには本当に感謝したいと思います。

また、今年はHackathonをうちで開催したのですが、鍋会場を近くのちゃんこ鍋屋に外だししたこともあって、結構楽に主催できました。ただ、20人となるとちょっと手狭なので来年は庭会場をもっと整備してもっと人数を収容できるようにしたいと思います。肝心のHackathonの成果は今日、明日にも公開できたらと思います。

とにもかくにも、主催のJPAのみなさん、ボランティアのみなさん、スピーカーのみなさん、そしてすべてのPerl Hackersに感謝したいと思います。ありがとうございました!

IMG_0578.JPG

エアRTは家庭崩壊を招きかねないので絶対にしちゃだめです。
こんばんは。

そろそろモバゲーも mixi さんに続いて Yahoo! と協力して PC版 OpenSocial アプリケーションプラットフォームをリリースするそうです。というかします。

で、OpenSocial JS API では、外部のサーバーと安全に通信するための仕組みとして、Gadget Server を Proxy してリクエストする gadgets.io.makeRequest() という、メソッドが用意されています。このメソッドはオプションでリクエストに署名をつけることができて、受け手でその署名を検証することによってリクエストの妥当性を保証することができます。

これを Perl で実装する場合、詳しくは mala さんの mixiアプリのOAuth署名の検証 の記事が詳しいのですが、もうちょっと突っ込んで説明して PSGI/Plack で実装してみます。

例えばアプリケーションでGadget XMLで

function init() {
  var params = {};
  params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
  params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
  params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.JSON;
  params[gadgets.io.RequestParameters.POST_DATA] = gadgets.io.encodeValues({id:123456789});
  params[gadgets.io.RequestParameters.REFRESH_INTERVAL] = 0;
  gadgets.io.makeRequest("http://example.com/", function(obj) {
     console.dir(obj);
     var user = obj.data;
     alert(user.name + " loves AKB48.");
  }, params);
}

ようなことをします。

肝は

  params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;

で、これにより Gadget Server からのリクエストに OAuth の署名がつくので、それを検証することによってリクエストの妥当性が保証できます。

受ける方のアプリケーションを PSGI/Plack で実装します。

use OAuth::Lite::ServerUtil;
use Crypt::OpenSSL::CA;
use JSON;

my $cert = <<__PUBLIC_KEY__;
-----BEGIN CERTIFICATE-----
MIICdzCCAeCgAwIBAgIJANCWpLIspxwbMA0GCSqGSIb3DQEBBQUAMDIxCzAJBgNV
BAYTAkpQMREwDwYDVQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcDAeFw0x
MDAzMjMwODE1NTlaFw0xMjAzMjIwODE1NTlaMDIxCzAJBgNVBAYTAkpQMREwDwYD
VQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcDCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEAtbq5Rns5IEktXldZ+37Fjlavnuc4JuwrD4F+4NQwVwVtR5yw
Vg10EanXWSGIAbUFx6hlppYOb0x/3PBMG80643LmXSJmvv4ViRUBl2Ys9Ie2L/D9
KVQXDWgJjxBGqo5MO6rA/Ip78kbiNbIQJUIJtbuJZWL3LMVe6mpIO2SUi1UCAwEA
AaOBlDCBkTAdBgNVHQ4EFgQU8bp8/6lmt5L8em6dZyoGciUUmuUwYgYDVR0jBFsw
WYAU8bp8/6lmt5L8em6dZyoGciUUmuWhNqQ0MDIxCzAJBgNVBAYTAkpQMREwDwYD
VQQKEwhtaXhpIEluYzEQMA4GA1UEAxMHbWl4aS5qcIIJANCWpLIspxwbMAwGA1Ud
EwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEApalbBgXxnLJW8fM6W7E7GAE4QZbE
lvYqvtQSxwacGYoqF2FW1zrBkmTB12LTddFU01pqDaeels3Ru5TNOnTIJemFWW0D
viKtu9GqsrOye6AZR+XA5Iy/vq3EV1TCGuDNmhJaHAiLeYuLbEqmvH7/l9xNsafH
IpqnsHwF1pm0bTY=
-----END CERTIFICATE-----
__PUBLIC_KEY__

my $ca         = Crypt::OpenSSL::CA::X509->parse($cert);
my $public_key = $ca->get_public_key->to_PEM;

my $app = sub {
    my $req = Plack::Request->new(shift);

    my $util = OAuth::Lite::ServerUtil->new;
    $util->support_signature_method('RSA-SHA1');

    my $res = $util->verify_signature(
        method          => $req->method,
        url             => $req->uri,
        params          => $req->parameters,
        consumer_secret => $public_key,
    );

    my $body = encode_json({id => 12345, name => 'hidek'});
    return $res
        ? [200, ['Content-Type' => 'application/json'], [$body]]
        : [403, ['Cbntent-Type' => 'text/plain'], ['Forbidden']];
};

gadgets.io.makeRequest() のリクエストの OAuth 署名形式はその使い勝手から mixi さんもモバゲーも RSA-SHA1 で行っているので妥当性の検証は公開鍵を使って行います。検証は例によって lyokato さんの OAuth::Lite に頼るわけですが、 mala さんが指摘している通り、mixi で公開されている公開鍵はX509なのでそのまま使えないため、変換する必要があります。

後はリクエストを OAuth::Lite::ServerUtil に食わせて署名のチェックを行って、それによりレスポンスを変えます。

例では mixi さんの公開鍵を使わせてもらいましたが、もちろん公開鍵を今後公開されるモバゲーのものにかえたらそのまま動きます。

まあ、本来この辺は Middleware に含めるほうが使いかってがいいですね。

赤外線通信って本当に危険ですね。
こんばんは。

2010年9月2日をもってわたくし、とうとう40歳を迎えました。

昨日はmyfinderさん幹事のもと、ダブル成人式と題して30人を超える人に祝って頂きました。たくさんのプレゼントと暖かいお祝いの言葉を頂いて本当に感激でした。


hidek Ficia Photo


中でもgfxさん、hirose31さん、moriyoshiさんという豪華すぎる面々によるLT大会までしていただいて感謝感謝です。というかあれは一おっさんの誕生日だけでやるにはもったいないクオリティだと思います。本当にありがとうございました。


hidek Ficia Photo


あんな大勢の方々に笑顔で祝って頂ける自分は本当に幸せだと思います。
本当にありがとうございます。
40歳と言えば不惑ということでこれからも惑わずに楽しく過ごせたらと思います。
今後ともよろしくお願い申し上げます!


 Ficia Photo


そういえば、出社したらガリガリ君40本とコーラ40本いう粋なプレゼントも待っていました。


P1000476.jpg


では、頂いた篠田麻里子の写真集を読みながら40代最初の睡眠に就こうと思います。
おやすみなさい。


hidek Ficia Photo

メガネをまた無くしました。
しかもしらふで。
今年で早くも3つ目です。
メガネを消耗品感覚で購入していることに何のためらいも感じなくなりました。
こんばんは。

すでに発売されていますが DB Magazine 8月号の第1特集「「モバゲータウン」構築/運用のすべて」というタイトルで会社の人たちと寄稿させていただきました。
自分のパートは Part 2の「誰でも公開できるモバゲーアプリの作り方」と言うタイトルで、ZIGOROuさんと共著で書かせてもらいました。みんな大好き PSGI/Plack による携帯向けソーシャルアプリ構築方法とか書いてます。

他にもモバゲー全体構成の話やインフラ部隊の監視の話とか書いてあって面白いと思うのでよかったら読んでくださいまし。

酔っ払って急にタイガーマスクの終わりの歌が聴きたくなって「テレビまんが懐かしのB面コレクション」というCDをAmazonで見つけたのでぽちったら「続・テレビまんが懐かしのB面コレクション」をおすすめされたのでぽちって...というのを繰り返してたら今日「続々々々々・テレビまんが懐かしのB面コレクション」までの6枚が届いて泣きたくなりました。
こんばんは。

というわけで先週の土曜日に聖地巡礼してまいりました。
去年は仕事が忙しくて一回も足を運べなかったので二年ぶりです。
阪神の試合を見るために働いているのにこれでは本末転倒ですね。
今年はもうちょっと行けたらいいなと思います。

で、交流戦に入ってからいきなり日ハムに連敗して、土曜日は岩隈というのがわかっていたので暗澹たる気分の中の甲子園。

甲子園

甲子園


二年前は改装工事中でしたが、すっかり綺麗になってました。
まさにボールパーク。


甲子園


席は憧れのライトスタンド。
しかも最上段。
さすがのブラゼルもここまでは飛ばせませんでした。
浜風が猛烈に寒かったです。


甲子園


試合の方は先発フォッサムがまさかの好投で投手戦の中、3 - 2 の大勝利。
球児の今期初自責点は残念だったけどリンドバーグも聞けたしブラッズのホームランも代打金本も見れたので満足でした。


梅田 鉄人の店


帰りは一緒に行ったみんなで鉄人の店でお好み焼をつっつきながらの祝勝会で最高でした。


甲子園


それにしても甲子園は最高でした。
会社がリモート勤務を認めてくれたら甲子園そばに引っ越そうと密かに誓った夏の夜です。

最近、咳のしすぎであばらにヒビが入りました。
大多数の人は心配をしてくださってありがたいのですが、ごく一部の極道達がおもしろ画像を連投して笑わせてくるおかげで全治が大分先になりそうです。
こんばんは。

先日、「モバイルなプラットフォームでの OAuth Signature の検証」ってエントリーを書いた際にPlack::Middlewareとかでやるべきとか書いておいて放置していたのですが、某極道が「とっとと書かないと笑わせてあばらへし折るぞ!ごるぁ!」と脅してきたのでサクッと書きました。

GitHubに置いてあります。

Plack-Middleware-Auth-OAuth

使い方は簡単。


use Plack::Builder;

 my $app = sub {
    return [200, ['Content-Type' => 'text/plain'], ['Hello World']];
 };

 $app = builder {
     enable 'Plack::Middleware::Auth::OAuth',
         'consumer_key'    => 'YOUR CONSUMER KEY',
         'consumer_secret' => 'YOUR CONSUMER SECRET';
         $app;
};

これでOAuth Signature のチェックをして失敗したら401 エラーを返すようになります。

mixi ではこのまま動きますし、モバゲー用にしたければ

 $app = builder {
     enable 'Plack::Middleware::Auth::OAuth',
         'consumer_key'    => 'YOUR CONSUMER KEY',
         'consumer_secret' => 'YOUR CONSUMER SECRET',
         'validate_post' => 1;
         $app;
};

とすれば body parameter も検証対象になるので動きます。

色々意見聞いて、もうちょっとテストとか書いたらCPANに上げます。
これで、OpenSocial のアプリが増えたら幸いです。

正月から禁大盛り・禁替え玉のマニフェストを掲げています。
たまに「今日頼んだのは特盛りであって大盛りではない!」とか政治家みたいなことを言ってます。
こんばんは。

IMG_0064.JPG


というわけで、昨日の興奮覚めあらぬまま東京ドームに今年二戦目の観戦に行ってきました。

IMG_0067.JPG


今日は会議があったので6回からの観戦。
行きの情報では初回関本の今シーズン第一号で先制してリードしてたはずが、着いたら追いつかれてました><

ちなみに阪神先発は久保、讀賣は予想では内海でしたが中四日でゴンザレスでした。

IMG_0071.JPG


試合が動いたのは8回。
まずは阪神がこの回から代わった山口からヒットとデッドボールで1アウト満塁のチャンスでブラッズが鮮やかに2点タイムリーを打って再度リードします。
が、その裏、今度は久保から代わった久保田が李に一発を浴びて1点差になるも後続を抑えました。

IMG_0076.JPG


で、9回は昨日、回またぎをしてちょっと心配だった球児ですが、ぴしゃりと抑えて4連勝!
しかも讀賣に連勝してこのカード勝ち越し決定!
これで讀賣、中日とは0.5ゲーム差なので明日勝って中日負けたらまさかの首位!


IMG_0075.JPG

もちろん明日も応援行ってまいります!

4月になって風邪をひいて治らないうちに風邪をひきました。
風邪にも確変があるんですね。
こんばんは。

というわけで毎年恒例になりつつある関東開幕初戦に行ってまいりました。
去年と同じく今年も讀賣。
去年は三連戦に参戦して2敗1分と散々でした。

IMG_0010.JPG

午後休取って気合十分で練習から見ようと思ったのですが仕事が長引いて練習は見れませんでした。
サラリーマンの悲しい定めです。
くっ...

IMG_0014.JPG

始球式はぽにょの人。

IMG_0011.JPG

先発はマートン、関本、鳥谷、金本、新井、城島、ブラゼル、桜井、能見。

1回、2回と阪神が1アウト3塁のチャンスを棒にふる一方で巨人は3回までに小笠原の2ラン、亀井のソロ、2発のタイムリーと押し出しであっという間に6-0。

能見もヘロヘロでしたがこっちもヘロヘロでまじ帰ろうかと思いましたよ。

能見は巨人キラーの看板はそろそろ下ろしたほうがいいかもね。

IMG_0024.JPG

毎回のようにランナー出すけどタイムリー欠乏症でダメだこりゃと遠くのファイヤーガールズ...じゃなくてチームヴィーナスをぼーっと見ながら思っていたら6回に奇跡は起きました。

関本ヒットの後に鳥谷が今シーズン第一号。
まずは2点。

金本倒れるも新井がレフトスタンド前列で見ていた僕らの頭を越して中段に突き刺さるソロで3点。

圧巻は城島歩いた後のブラゼルが初球を叩いてライトスタンドに放り込む2ランで5点目。
これで1点差。

両者得点のないまま7回に筒井がつかまるも久保田が何とか1点に抑えて7-5。
2点差に広がったけど何か今日は勝てる気がしたと思ってた矢先の8回表にまたもや奇跡が。

変わった豊田から新井歩いて城島倒れるもブラゼルヒットで1アウト1,2塁。
ここで、前の打席にホームラン3発で1点差まで追いついたところで空気読めずに三振した広大。

ここで打ったら前の打席の件は許してやるとか話してる間もなく初球を叩いたボールはまたまた僕らの頭を越してレフトスタンド中段に。

なんと6点差をひっくり返す3ラン。

IMG_0029.JPG

レフトスタンドは狂喜乱舞。

おまけにマートンがダメ押しのソロを叩き込んで逆に2点差。

8回途中で久保田を降ろして球児を出したのは慎重すぎるだろうと思いながら見てたけど、しっかり抑えたのでまあ堅いことは抜きにします。

IMG_0030.JPG

終わってみれば11安打9得点で、しかも全部ホームランによる得点。
こんな気持ちいい試合を目の前で見た記憶は最近では記憶にないです。

悩めるクリーンアップも

IMG_0020.JPG

この人はまだ調子悪いけど

IMG_0026.JPG

この人と

IMG_0027.JPG

右端の人は調子上がってきたかな。
打線は完全に上向きですね。
これで三連勝。

IMG_0031.JPG

貯金もできたし明日、明後日も行くのでこの調子で三タテと行きたいです。


iPod を操作しながら歩いていたら電話がかかってきて、思わず持っていた iPod を耳に当ててしまい期せずして iPhone を気取ってました。
こんばんは。

というわけで、今年も開幕したJリーグです。
開幕戦では鹿島に完敗したレッズのホーム開幕戦に日曜日、行ってきました。

RIMG0525.JPG

先発はセンターバックに山田と坪井。右に平川、左に宇賀神。ボランチに阿部と細貝、その前にロビーと柏木、ツートップに達也とエジミウソンの布陣。

RIMG0528.JPG

前半早々に宇賀神がつっかけたところを倒されてPK獲得。
ロビーがしっかり決めて先制。
その後は前半のうちに東京に退場者が出て数的優位を作った割りにシュートがほとんど打てずに終了。
後半も全然点を取れる気配がない上、平川が負傷して代わりに出てきた、これがデビュー戦になる17歳の岡本が見るからにガチガチに緊張して機能せず実質10対10になると、攻め込まれて何もできずという何とも歯がゆい試合だったけど、結果1-0での勝利。

まあ、相手は相性のいい東京だったというのもさておき、今季初勝利ということで素直に喜んでおきます。

RIMG0530.JPG

それにしても宇賀神はいいすね。
一人で前に仕掛けようという姿勢がありありと見えて好きです。
昔、調子のよかったころの相馬をちょっと思い出しました。

ただ、インタビューとか見てると大分お調子者っぽいなーと。
どっちかというとガンバの安田っぽいかな。

プロフィール

アーカイブ

最近のコメント

flickr

www.flickr.com

Last.fm