2011年 06月 15日

とある写真コンテストの公募に応募してみた。今まで自信がなかったので一度もそういうのに応募したことがなかったけど、自信がなくてもとりあえずやってみようという感じになった。去年ぐらいから地味に準備をしていて、A3+まで出せるプリンタを買ったり、ポートフォリオブック買ったり、モニタとプリント時でどう受け取り方が変わるかを見たりとかしていたが、結構ぎりぎりまで写真自体を選びきれなくて、本当にこれでいいか……という感じで出してしまった。

誰かに写真を教わったことがないし、どうやって作品として組をまとめて見せるのかを見たことさえなかったので、形式的にどうやって出せばいいかで悩んだが、結局ブックに纏める方法をとった。大テーマはだいぶ前から決まっていたけど、40枚程度に纏めるうえで、小テーマというか、さらに強い一貫性と制約が必要だと思われたので、そこを決めるのにも手間取った。

とりあえず今回は作って出すまでが最低ラインの目標だったので、出すだけでそこまでは達成できた。できたやつを一通り見てみたりすると、納得できるかとは別に、満足感はある程度あって良かった。評価されるかはわからないけど、これから30歳ぐらいまではめげずにちゃんと毎年出していきたい。

Ruby の scan を Perl でどうやるか忘れる

よく忘れるので memo

str =  '<11> <22> <33> <44>'

str.scan(/<(\d+)>/) { # ブロック付き
    warn $1
}

str.scan(/<(\d+)>/) # ブロック無し (Array がかえる)

を Perl でやるとき

my $str = '<11> <22> <33> <44>';

# たぶん正統派 (ブロック付き)
while ($str =~ m{<(\d+)>}g) {
	warn $1;
}

# ↑ の書きかたを忘れるのでよくやってしまうやつ  (ブロック付き) ↓
$str =~ s{<(\d+)>}{
	warn $1;
	$&; # 破壊してもいいときはつけない
}eg;

# ブロック無し (Array Ref.)
my $matched = [ $str =~ m{<(\d+)>}g ];

クエリ文字列をなんかいい感じに正規化っぽいことしたい

key 順でソートしたいけど、同じ key の value の順番は変えたくないみたいな。

最初もっとダサかったけど motemen さんに query_form_hash とか教えてもらった。canonical とインターフェイスを似せた query_form_canonical を定義してみる。なんか、そもそも論とかありそう。

use URI;
use URI::QueryParam;

sub URI::query_form_canonical {
	my $self = shift;
	my $other = $self->clone;

	my $hash = $self->query_form_hash;

	$other->query_form(map { $_ => $hash->{$_} } sort keys %$hash);
	$other;
}

sub nearly_equal ($$) {
	my ($a, $b) = @_;
	$a = URI->new($a);
	$b = URI->new($b);

	$a->query_form_canonical->eq($b->query_form_canonical);
}

use Test::More;

ok nearly_equal('/foo/bar?b=b&a=a&b=c', '/foo/bar?a=a&b=b&b=c');
ok !nearly_equal('/foo/bar?a=a&b=b&b=c', '/foo/bar?a=a&b=c&b=b');
ok nearly_equal('/foo/bar', '/foo/bar');

done_testing;

一部間違っていたので修正した

http://twitter.com/#!/nanto_vi/status/83883488855592961:twitter:detail

2011年 06月 14日

2011年 06月 13日

土曜日は買ったCDのインストアミニライブのために大阪へ。家にいてもしかたないので、さっさとでかけて、キヤノンギャラリー梅田と、ニコンサロン大阪にいってみた。ニコンサロンは2つ展示があるんだけど、どっちも面白かった。

インストアライブ、結構人が少なめだった。No body knows my name の曲をいくつかやった感じで、アコースティックだけど結構熱くておもしろかった。「今の音楽業界にムカついてる」って静かに言っていたのが妙に面白くて「ああこういう人いるんだ」というかなんというか、ちょっと安心した。

テストに適当に名前をつける2

http://subtech.g.hatena.ne.jp/motemen/20101214/1292316676 を見た直後に書いてたコードを長いこと放置していたので

にちょっと変えたのを置いてみました。

  • 行番号と該当テストの行

を name に入れるようにしただけです。use するだけで適当に使えると便利なので、同じようなモジュールがなければ CPAN にあげたい気がします。

こんな感じになります↓

    ok 1 - L28: is $_->res->code, 405;
    ok 2 - L32: is $_->res->status_line, '400 api_key is required';
    ok 3 - L36: is $_->res->status_line, '400 api_key is invalid';
    ok 4 - L40: is $_->res->status_line, '400 s is required';
    1..4
ok 1 - api_key
    ok 1 - L54: is $_->res->status, 200;
    ok 2 - L56: cmp_deeply $res, {
    ok 3 - L79: is $_->res->status, 200;
    ok 4 - L81: cmp_deeply $res, {
    1..4
ok 2 - basic
    ok 1 - L112: is $_->res->status, 200;
    ok 2 - metadata
    ok 3 - L141: is $_->res->status, 200;
    ok 4 - metadata append
    1..4
ok 3 - metadata
1..3
2011年 06月 12日