2005-02-17

想像力に対する挑戦かと思ってた

ソフトの動作しているスクリーンショットムービーを作る方法

あはは。るびま5号の増井さんのインタビューはやはりもどかしいらしい。

私はこの記事を読んで「これはオレに対する挑戦だな」と思ってましたよ。「よーしパパ想像力フル稼働しちゃうぞー」って感じ。でも結局「なんだかすごそう」くらいまでしか想像できませんでしたがorz

なんかとても楽しそうでよかったですよ。詳しいものは「どうせ発表してる内容なんだから」、どっか適当な Web に置いてさえあればそこへリンク張るだけで済んだのになと、少し残念に思いますがね。インタビューそのものではない、その中のソフトの動作を Web で分かりやすい形に起こすという作業は、なんかるびまの仕事とはちょっと違う気がするし。

rssdiff.inc.php を RSS 2.0 対応に

rssdiff を RSS 2.0 対応に

で、PukiWiki の rssdiff プラグインをようやく RSS 2.0 対応にしました。基本的には何も変わってなくて、単にタグが変わったとか日付のフォーマットが変わった程度なので、とりあえず設定で 1.0 も吐けるようにしてあります。1

意味的にはこの方がいいのかなぁと思いつつ、また様子見。とりあえずここの Wiki や PC説教講座の Wiki の RSS は 2.0 で出すようにしました。

  1. 愚直に書き足したのでサイズが膨らんできました。 

PukiWiki の Namazu 検索の精度を多少上げる

http://pukiwiki.sourceforge.jp/?PukiWiki%2FNamazu

に上げたのですが、一応こっちにも貼っておきます。pukiwiki.pl をいじって、pukifile.pl として作成しました。合わせて mime type も text/pukifile にしときました。PukiWiki フォーマットのパースはとりあえず Namazu のデフォルトの重み付けの設定で有効になっているタグだけ見てます。それ以外は HTML にすらなりません。

[2005-11-11 追記]案の定というか pukiwiki.org の混乱後、添付ファイルがなくなってました。こっちにも貼っておいてよかった。あと、EUC のファイルしか考えてないので、PukiWiki を utf-8 で運用している場合は 検索結果の画面でページ名が化ける可能性があります。mknmz のプロセス自身を LANG=ja_JP.UTF-8 の環境で動かせばひょっとしてうまくいかねーかなとか思ったりもするんですが、自分では utf-8 での運用は一切していないのでよく分かりません。

スクリプトでの対応としては要するに pack のところをいじるってことになるはずです。$file と、そのファイルの中身のコードが一致するようにごにょってやれば ok のはず。

package pukifile;
use strict;
require 'html.pl';

sub mediatype() { return ('text/pukifile'); }
sub status() { return 'yes'; }
sub recursive() { return 0; }
sub pre_codeconv() { return 1; }
sub post_codeconv () { return 0; }
sub add_magic ($) { return; }
sub filter ($$$$$) {
    my ($orig_cfile, $cont, $weighted_str, $headings, $fields) = @_;
    my $cfile = defined $orig_cfile ? $$orig_cfile : '';

    util::vprint("Processing pukiwiki file ...\n");

    my ($path,$file,$ext) = $cfile =~ m#^(.*/)(.*)(\.txt)$#;

    $file = pack("H*",$file);
    $file =~ s/[\[\]]//g;
    my( $title ) = $file;
    $file =~ s/(\W)/'%'.unpack("H2",$1)/eg;
    $fields->{'uri'} = "$path$file";

        $$cont = "<h1>".$title."</h1>\n" . $$cont;
        puki_filter( $cont );

        html::html_filter( $cont, $weighted_str, $fields, $headings );
        gfilter::line_adjust_filter($cont);
        gfilter::line_adjust_filter($weighted_str);
        gfilter::white_space_adjust_filter($cont);
        $fields->{'title'} = $title;

    return undef;
}

sub puki_filter(*) {
    my( $cont ) = @_;

    # 改行で配列に分割(gfilter のツールでは white space が落ちるからダメ)
    $$cont =~ s/\r\n?/\n/g;
    my( @body ) = split( /\n/, $$cont );

    # PukiWiki フォーマットのつもりで簡易パース
    my( $line );
    foreach $line ( @body ) {
        chomp( $line );
        my( $level ) = 0;
        # Heading
        if ( $line =~ s/^(\*+)// ) {
            $level = length( $1 ) + 1;
        }
        # comment
        if ( $line =~ s/^\/\/// ) {
            $line = "<!-- " . $line . " -->";
        }
        # anchor と emphasis
        # aname プラグインはとりあえず無視
        # uri として正しいかどうかもチェックしない
        if ( $line !~ /^\s+/ ) {
            $line =~ s/\[\[(.*)(?:\:|>)(.*)\]\]/<a href="$2">$1<\/a>/g;
            $line =~ s/(''')(.*)(''')/<em>$2<\/em>/g;
            $line =~ s/('')(.*)('')/<strong>$2<\/strong>/g;
        }
        if ( $level > 1 ) {
            $line = '<h'.$level.'>'.$line.'</h'.$level.'>';
        }
    }

    # <body> タグが現れるまで無視されるので <body></body> でサンド
    $$cont = join( '', @body );
    $$cont = "<body>\n" . $$cont;
    $$cont = $$cont . "\n</body>\n";
}
1;

About

例によって個人のなんちゃらです