abbreviationとacronym

なぜacronymとabbrタグの2種類があるのかというと、acronymは頭文字を連結した略語の場合で、abbrは頭文字以外の略語に使うためです。

えー。なんだそれ。
辞書を引いてもacronym=頭文字、abbreviation=略語ぐらいしか説明がないからわかりにくくはあるんだけど、abbreviationとacronymはそういう単純な分類ではないはず。略語を1つの単語のように読むのがacronym(例:NATO)でアルファベットを1文字ずつ読むのがabbreviation(例:HTML)。
なのだが、英語圏の人間もあまり区別していないというか、実はあまり明確な区別がないとかいう話もあるらしい。
ちなみに、HTML 4.01 の仕様書にはこうある。

ABBR:
Indicates an abbreviated form (e.g., WWW, HTTP, URI, Mass., etc.).
ACRONYM:
Indicates an acronym (e.g., WAC, radar, etc.).

とりあえず、HTML 4.01 的には頭文字をつないだ単語がacronymなわけではない。

PlaggerLDR導入

PlaggerLDRを導入。feature-server ブランチから持ってきたんだけど、そのままだと動かない。うちの環境が悪いのか?とりあえず場当たり的にいじる。

Index: lib/PlaggerLDR/Model/DBIC.pm
===================================================================
--- lib/PlaggerLDR/Model/DBIC.pm        (revision 1438)
+++ lib/PlaggerLDR/Model/DBIC.pm        (working copy)
@@ -5,6 +5,7 @@

 use YAML;
 use List::Util qw(first);
+use Plagger::Schema::SQLite;

 my $config = YAML::LoadFile( PlaggerLDR->path_to('root', 'config.yaml') );
 my $module = first { $_->{module} eq 'Store::DBIC' } @{$config->{plugins}};

あと、なんか Notify API 動いてなくね?ってことで、こっちもごそごそ修正。多分誰も使ってないんだろうなぁ。

Index: lib/PlaggerLDR/Controller/Notify.pm
===================================================================
--- lib/PlaggerLDR/Controller/Notify.pm (revision 1438)
+++ lib/PlaggerLDR/Controller/Notify.pm (working copy)
@@ -15,7 +15,7 @@

 sub notify : Global {
     my($self, $c) = @_;
-    my $unread = $schema->resultset('Entry')->search({ read => 0 })->count;
+    my $unread = $schema->resultset('Entry')->search({ readmark => 0 })->count;
     $c->response->content_type('text/plain');
     $c->response->body("|$unread|http://reader.livedoor.com/reader/\n");
 }
Index: lib/PlaggerLDR/Controller/Root.pm
===================================================================
--- lib/PlaggerLDR/Controller/Root.pm   (revision 1438)
+++ lib/PlaggerLDR/Controller/Root.pm   (working copy)
@@ -8,7 +8,7 @@

 sub end : Private {
     my($self, $c) = @_;
-    $c->forward('View::JSON');
+    $c->forward('View::JSON') unless $c->response->body;
 }

 1;

あと、Filter::HTMLScrubber の仕様が少し変わっていてハマった。
ところで、こういうパッチはどこに投げればいいんだろう。plagger.org の trac のどこからに post するのかな。trac 使ったことないからよくわかんね。

Closure for Java

JDK 7 でのクロージャの提案。しかも 提案者には James Gosling の名前もあるし。
しかし、クロージャが導入されるとなると処理系でのローカル変数の取り扱いがずいぶん変わりそうだ。クロージャから参照される変数はコンパイル時にわかるはずだから、クロージャから参照されるローカル変数は最初からスタック上に置かないような実装になるんだろうか。