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