@kyanny's blog

My thoughts, my life. Views/opinions are my own.

pocketer でパーソナル名刺を注文してみた

2009年もそろそろ三月が終わり、四月になる。四月といえば新学期であり始まりを予感させる季節なので、心機一転するにはもってこいだ。俺も何か心機一転するかな、ということで、2009年度は「俺ソーシャル化」を目標の一つにしようと思った。

ここ二年くらい、ウェブを通じて人と会ったりする機会が減ってしまって、というか意図的に減らしたんだけど、普通に生活するには何の問題もないのだけど少し極端に引きこもりすぎたかな?と思うところもあったので、これからはもう少し社交的になろうかな、とか

そんなのは単なる嘘っぱちの建前で、 Poken を買ったとかもらったとかいうブログをいくつか読んで超欲しくなったんだけど一番好みのキャラクターだったゲイシャガールが売り切れで悔しいので、何かWeb2.0でソーシャルな感じのアイテムが欲しかった。ので、社外の勉強会後の飲み会などでいくつか貰ったことがあるミニ名刺でパーソナル名刺を作ろうと思ったのだった。

pocketer を選んだのは、まぁ livedoor PICS と連携してるのでそれを試してみっかーというくらいで。 Moo.com の minicards が本家っぽいけど、別にブランドにこだわりないし、早く届くほうがいいし、 QR コード入れられたほうが絶対いいと思ったので pocketer で。

裏面の写真は、はてなダイアリー他でプロフィール画像に使ってる似顔絵を使ったけど、画像加工なんてできやしないので顔の真ん中を細長く切り取る感じで、正直キモイカードだと思う。これ渡されても扱いに困りそう。けどまあ渡す機会なんてあまりないし(せっかくこういうアイテムを手に入れるんだから人と会う機会を増やそう、と考えるべきなのに最初から機会を増やそうとしない、この消極性がダメなんだと思うけどそういわれてもな)、あとこういうのはインパクトが大事だと思うので(例え本当に渡す機会がほぼゼロだったとしても、ツッコミどころのある出来ならせめて身内に見せて笑ってもらえる)絶対にプロフィール画像を使うと決めていた。ので使った。

QRコードにどのURLを指定するか、に一番手間をかけた。いろいろ考えた結果、はてなダイアリーのモバイル版のプロフィールページを少し真面目に書いて、そこを指定した。 http://d.hatena.ne.jp/a666666/aboutmobile というやつ。自分がそういう名刺をもらってQRコードを読むとき、一番知りたいのはその人の普段の興味関心とか活動もろもろだ。つまり一番アクティブに更新してるブログなりSNSなりのURL、しかも直接携帯端末から読みやすいページがいい。となると俺の場合最もアクティブに更新されていて、最も俺の興味関心や人となりなどを表しているのははてなダイアリーだ。だからそのモバイル版のURLが指定してあると良い。とはいえペラ一枚の自己紹介も必要で、名前とか生年月日とか年齢とか仕事とか、他にももろもろだけど、そういう、その人の背景にあたるような情報が一切ないブログというのよりは、なにがしかの情報と関連づけられているブログのほうが読み続けやすい。なので、そういう情報がある程度まとまっていて、なおかつ自分の普段の姿がわかるブログにもすぐアクセスできるはてなダイアリーのプロフィールページは、そこそこ使えるんじゃないかな、と思った。

mixi とか Facebook とか、 iddy とか aboutme とかのほうが名刺に載ってるURLとしては「ふさわしい」と思うけど、俺の場合はそういうサービスはアカウントを持ってないか、あまり更新してないかで、「ここにアクセスすれば俺がどんな人間かなんとなくわかると思うぜ」っていうURLはそこじゃないよな、と思って、あえてそこのURLを使うのはやめた。あと、やっぱインパクトというか、名刺とかもらって自分が一番嬉しい瞬間って、「あっ、この id:XXXX ってあのブログの○○さんですか?」みたいな、ブラウザを通して一方通行で知っていた「ブログ」とかと「人」が繋がった瞬間なので、たぶん自分の名刺に a666666 とか刺身とか kyanny とか書いてあると、「あっ、この文字列/URLは見覚えがあるぞ」と、すぐに気づいてもらえるんじゃないか、その瞬間のちょっとした驚きを味わってもらえるんじゃないか、という思いもある。

消費欲と自己満足のための発注なので、枚数は25枚。しかしケースはついつい一緒に買ってしまった。合計5000円弱。そう悪くない散財の仕方だと思う。来週中には届くだろうから、半袖さんとかG2Mさんとかに会ったときに「是非もらってください!」といって渡そうっと。

そして Poken だが、ゲイシャガール入荷しないかなぁ。こっちはさらに使う機会がなさそうだけど、どうも気になるんだよな、あのキーホルダー。違うか。

Net::Amazon::S3 と Config::Pit を使ってみた

Perl から S3 へアクセスできる Net::Amazon::S3 を試してみた。ブログにコピペするのに、アカウント情報をべた書きするのはまずい、かといってファイルに書いておいてオープンしてどうこう、を毎回やるのはだるい、そういえばそういうのを便利に扱える Config::Pit というのがあったはずだ、と思いだしてこれも使ってみた。

Net::Amazon::S3 の使い方じたいは、特に何も難しいこともなく。 description をみると「これは古いスタイルなので Net::Amazon::S3::Client を使うように」と書いてあった。同じディストリビューションに同梱されている。こちらをちらっとみると、ハッシュリファレンスへ直にアクセスしたりするのじゃなくてメソッド名でもうちょっといい感じに扱えるっぽい。とりあえず、古いスタイルのほうで書いてみた。

Config::Pit は以前チャレンジしたときはどういう仕組みになってるのかちゃんと説明を読まなかったので使い方がわからなかったが、今回は ruby の pit の説明の本家っぽい アカウント情報を管理するコマンド pit - 冬通りに消え行く制服ガールは✖夢物語にリアルを求めない。 - subtech とか pitがちょう便利だよ! (ついでに Net::Netrc の紹介) - noplans_rubyの日記 などを参考にしつつ、Config::Pit - Manage settings - metacpan.org と見比べて使ってみた。 YAML を自分で手書きするのは大変そうだなあ、どこに正しい書式が説明してあったっけ、とか思っていたらふつうにプログラムから設定できちゃうようで、楽だった。 $EDITOR が bash にも eshell にもなかったので bash のほうで /Application/Emacs.app/Contents/MacOS/bin/emacsclient とかを設定してやって、適当に書き捨ての pit_get('s3.amazonaws.com', require => {}) するだけのプログラムをかいて保存して終了。しかし emacsclient はオープンしたバッファに一切変更がないとファイルを保存しないのだろうか、 ppit get s3.amazonaws.com したら空のままだったので、適当に改行→バックスペースなどしてバッファに編集マークをつけてから保存して終了したら無事反映された。

#!/usr/bin/perl
use strict;
use warnings;
use Net::Amazon::S3;
use Perl6::Say;
use Data::Dumper;
use Config::Pit;
use Test::More; plan tests => 1;

my $config = pit_get('s3.amazonaws.com');

my $s3 = Net::Amazon::S3->new({
    aws_access_key_id => $config->{aws_access_key_id},
    aws_secret_access_key => $config->{aws_secret_access_key},
    retry => 1,
});

my $response = $s3->buckets;
for my $bucket (@{$response->{buckets}}) {
    say $bucket->bucket;
    my $response = $bucket->list_all;
    for my $key (@{$response->{keys}}) {
        my $key_name = $key->{key};
        my $key_size = $key->{size};
        next if $key_name =~ /^image\./;
        say "$key_name $key_size";
        my $response = $bucket->get_key_filename($key_name);
        say Dumper $response;
        my $response2 = $bucket->get_key($key_name);
        say Dumper $response2;
        is_deeply($response, $response2);
    }
}

Net::Amazon::S3::Client のほうも使ってみた

確かにこっちのほうがインターフェースが洗練されている。使いやすい。

#!/usr/bin/perl
use strict;
use warnings;
use Net::Amazon::S3;
use Perl6::Say;
use Data::Dumper;
use Config::Pit;

my $config = pit_get('s3.amazonaws.com');

my $s3 = Net::Amazon::S3->new({
    aws_access_key_id => $config->{aws_access_key_id},
    aws_secret_access_key => $config->{aws_secret_access_key},
    retry => 1,
});
my $client = Net::Amazon::S3::Client->new(s3 => $s3);

my @buckets = $client->buckets;
for my $bucket (@buckets) {
    say $bucket->name;
    my $stream = $bucket->list;
    until ($stream->is_done) {
        for my $object ($stream->items) {
            #next if $object->key =~ /^image\./;
            say $object->key;
            say $object->size;
            #say $object->get;
            say $object->uri;
        }
    }
}

ついでにアップロードも試してみた。一回走らせてから、 Firefox addons の S3 Organizer で確認してみる。ちゃんとファイルが作られてる。 URL でアクセスしてみたら access denied だった。 Public 属性をつけないとアップロードしても URL ではアクセスできないとどこかに書いてあったな。それをスクリプトの中でやるには $bucket->object() のときに acl_short => 'public-read' とすればよいみたい。

Catalyst で mixi OpenID を使ってみる(失敗)

Catalystでmixi OpenIDからニックネームを取得 - Problems をコピペしてみたけど、コメント欄に書いてる人と同じく Caught exception in MixiApp::Controller::Root->login "authenticate called with nonexistant realm: 'default'. at /Users/kyanny/MixiApp/script/../lib/MixiApp/Controller/Root.pm line 60" とかいうエラーが出てしまって動かなかった。何かのバージョンがあがって例の通りでは動かなくなってしまったんだろうか。わからない。

Catalyst と Catalyst::Authentication::Credential::OpenID で mixi OpenID を使ってみる(成功)

Catalyst で mixi OpenID を使ってみる(失敗) - 刺身☆ブーメランのはてなダイアリー から少しいじった。 Catalyst::Authentication::Credential::OpenID - OpenID credential for Catalyst::Plugin::Authentication framework. - metacpan.org を良く読んでやり直したらうまくいった。あとhttp://sara-log.moe-moe.jp/index.php?e=11&PHPSESSID=68b7662cf37273d99ce2d3f728f4a045のとおりに Crytp::SSLeay を入れたらうまくいった。助かった。これが初めての OpenID で何かやったプログラム、ということになる。記念に github にアップしておこう。

github にアップしてみた GitHub - kyanny/mixi-openid-catalyst-perl: mixi OpenID login demo by Catalyst and Catalyst: :OpenID