市來健吾の日記

プログラマ、(元)物理屋(ナノテク、流体)

三色アイスクリームのこと。


  • 先日の席で話題にのぼって、 私はあれを勝手に「ナポレオン」と思い込んでいて、 別の日本人は「ナポリタン」と言っていてたら、 唯一の native speaker が「ネオポリタン」だよと言って、 「ははは、みんな勘違いしてたんじゃん」とか「パスタじゃないんだから」とか 言いたい放題のことを言っていた。(ある人などは、お腹をよじらせて笑い転げていた。)

  • 気になったので調べてみたら、あれま、意味的には「ナポリタン」が正解でした。 cf. wikipedia: Neapolitan ice cream.

  • 文字はきちんと見てから発音しましょうね。 とは言え、私はもともと「こうよう」というラーメン屋の看板を なんの迷いもなく「ようこそ」と読んでいた人間だからな (cf. 10/9/2000)。

norah jones の debut CD の参加ミュージシャンを改めてみると……。


  • いや、そうそうたる面子であった。

  • というのは、最近気になっている(と言っても私時間の話なので年のオーダーだけど) sam yahel について調べてみたら、件の CD もリストに出てきて、びっくりした、ということ。 それから brian blade もその半分で叩いていた。 (ちなみに、私にとってドラムは全然理解不能な楽器(の1つ)で、 誰が叩いているかとか、誰がいいとか、全然分からない。)

  • ちなみに(その2)、 brian blade と言えば、 先日借りた一連の CD の中では 抜群に総当たりであった。

  • ちなみに(その3)、本題と関係ないけど、 試しにエントリーの名前のハイフンを _ にしてみた (cf. 7/8/2008)。 うむ、確かに動いている模様。スペースの代用という意味ではいいけれど、 しかしハイフンをハイフンとして使いたい時ってあるよね?うーむ。

  • 付記(その3、大団円): 全置換しました。

はてなの名前付きタグの件。


  • 文句を書いているうちに、とうとう頭にきて、 不本意ながら quick and dirty な perl script を書いて、 既存の日記約10年分のハイフンを使った name tag をアンダースコアに変更した。 (ところで一体、何が不本意なんだろう -- はてなが対応せずに、 自分がしてしまったことに、なんだろうけれど、 そんな下らないことに意地を張らなくてもいいのにと、我ながら思う。)

  • どんなに quick で dirty なコードか知りたい人もいるかな、と思うので、 みんなの目を汚してしまおう:

    #!/usr/bin/perl
    
    use Jcode;
    
    sub adj_pics ($);
    sub usage ;
    
    sub execute ($);
    
    $cmd_mv    = "/bin/mv";
    $cmd_rm    = "/bin/rm";
    $cmd_nkf   = "/usr/local/bin/nkf";
    
    $output  = "index.html";
    $tmpfile = "tmp.html";
    
    @argv = @ARGV;
    foreach $i (@argv) {
    	adj_pics($i);
    }
    
    exit 0;
    
    ## sub routines
    
    sub execute ($) {
        my $c = shift;
        print STDERR "$c\n";
        system($c) == 0 or die "failed: $c";
        1;
    }
    
    # adj pics
    sub adj_pics ($) {
        my ($html) = @_;
    
        open(HTMLFILE, "< $html") or die "Cannot open $html";
        open(NEWHTMLFILE, "> $tmpfile") or die "Cannot open $tmpfile";
        while (<HTMLFILE>) {
    	# convert input-line into utf8
    	Jcode::convert ( \$_, "utf8");
    
    	$line = $_;
    
    	if (/<a id="d\d{1,2}-(.*)" name="d\d{1,2}-(.*)">/) {
    	    $old = $1;
    	    if ($old =~ /-/) {
    		$new = $old;
    		$new =~ s/-/_/g;
    		$line =~ s/$old/$new/g;
    	    }
    	}
    	elsif (/<a href="#d\d{1,2}-(.*)">/) {
    	    $old = $1;
    	    if ($old =~ /-/) {
    		$new = $old;
    		$new =~ s/-/_/g;
    		$line =~ s/$old/$new/g;
    	    }
    	}
    	elsif (/<a href="diary\d{4}_\d{2}.shtml#d\d{1,2}-(.*)">/) {
    	    $old = $1;
    	    if ($old =~ /-/) {
    		$new = $old;
    		$new =~ s/-/_/g;
    		$line =~ s/$old/$new/g;
    	    }
    	}
    
    	print NEWHTMLFILE $line;
        }
        close NEWHTMLFILE;
        close HTMLFILE;
        execute ("$cmd_nkf -j $tmpfile > $output");
        execute ("$cmd_rm $tmpfile");
        execute ("$cmd_mv $output $html");
    
        1;
    }
    

    (付記:うむ、 HTML ではせっかく escape した文字が、 hw 用に変換した際に 戻っているようで、メタメタだな、もう面倒なので、これは放っておく。 見たい人はこちらへ ……と思ったが、コードを書く方法はきっとあるだろうと見たら スーパーpre記法 というのがあったので、一応そいつで挟んでおく。しかし
    ※「<||」「||>」は必ず行頭になるよう記述してください。
    とかって何が「スーパー」なんだろうな…… local rule は嫌いだ(って、文句言い過ぎ?))


  • 使い方は、元データ(つまり infoseek の日記に使っている HTML)を食わせるだけ。 複数のファイルを同時に与えても良いので、 backup をとった後で
    perl html-mod-hatena.pl *.shtml
    一発で終わり。

  • どの辺りが手抜きかという解説は、明らかに蛇足だけど一応しておくと、 漢字コードを perl 処理の前に Jcode で utf-8 にしておいて、 できた結果は nkf で jis にもどしてたり、 HTML はきちんと parse などせずに目標のタグの決め打ちだし、 一行に2つのエントリーが発生した時はうまく処理できない (そういうケースはほとんどなかったけど、一ヶ所だけあって、本文に手を入れた。 と言っても、 HTML で書いている当該の行を改行しただけだけど) などなど。まあ一回切りの使い捨てコードなので、文句はなし、と。


  • 蛇足ついでに、当の script の来歴を言っておくと、 つまりこれは私がすべて scratch から書いたものではなくて、 大本は、遥か昔の ほそかわたつみさんの 絵日記を吐く script をベースにした自分の script で、 HTML 絡みの quick-and-dirty な処理が必要になる度に そいつから切り出して、手を入れて、と繰り返してきたもの。 故に adj_pics などという subroutine name になっているのです (とは言え、ほとんど原形はとどめていないとは思うけれど)。


  • 付記(7/13/2008): blosxom でも escape してない pre でひどいことになっていた。 ということで diary2blosxom.pl で pre の時に escape するようにした (そう、これまではしていなかったのです)。 diary2hw.pl の方は、スーパーpre記法を噛ましているので、 むしろ escape しない方がいいのかな、と思って放置。 それから、上の matching が greedy なので問題を起こす場合があった。 これ、いつも悩まされるポイントだな。多分、正規表現のd\d{1,2}-(.*) をd\d{1,2}-(.*?) にすればよかったのだろう。 あと、1行に2つの置換が必要な奴は、 何も考えずに script に二回食わせてもよかった。 ついでに diary2blosxom.pldiary2hw.plスーパーpre記法でさらしておく。