古い記事
ランダムジャンプ
新しい記事
トラックバックは tb-standalone を使っているのですが、cron で動かす
タイプのスクリプトを作って「最近トラックバックを頂いた記事のリスト」
を JavaScript ファイルとして出すようにしました(くっつき手法です)。
こういう場合は、CGIをハックするのが正統派ですし、そもそも誰かがきっ
とやっているはずなのですが、なんか面倒なのでくっつきシリーズのソー
スをテンプレートにして、クイックなげやり。

ソース: recent_tb.pl
#!/usr/bin/perl
use strict;
use Getopt::Long;

$Getopt::Long::autoabbrev = 1;
my %opt = ();
GetOptions(\%opt, "number=s", "output=s");
my $number = $opt{'number'} || 5;
my $output_fn = $opt{'output'} || "a.js";

my $now = time;
my $dirname = shift;

my @tb_sorted = sort {$b->[1] <=> $a->[1]}
    map { [$_, (stat $_)[9]] } <$dirname/2*.stor>;

my $str;
for (0..($number - 1)) {
    my $e = int(($now - $tb_sorted[$_][1]) / 3600);
    my $m = ($e < 24) ? $e."H" : int($e/24)."D";
    my ($id) = ($tb_sorted[$_][0] =~ m!/(\d+).stor!);
    $id =~ s/^(\d{4})(\d\d)(\d\d)/$1-$2-$3/;
    $id =~ s/-(\d\d)(\d+)$/-$1-$2/;
    $str .=
      qq{document.writeln('- <a href="$id.html">$id</a> ($m)<br>');\n};
}

open(F, "> $output_fn") or die "Can't open $output_fn : $!\n";
print F "$str\n";
close(F);
以下のような記述を .crontab に追加。
0 * * * * /home/yto/www/clog/tb/recent_tb.pl /home/yto/www/clog/\
tb/tb_data -n 5 -o /home/yto/www/var/tb.js
HTMLファイル(chalow なら cl.conf のテンプレート)にこんなの追加。
<script language="JavaScript" src="http://nais.to/~yto/var/tb.js">
</script>

これ、ちょっと変えたらくっつきBBSにそのまま使えることに気づいたの
で「最近コメントを頂いた記事のリスト」も出すようにしました。

ソース: recent_cm.pl
(パッチを載せようと思ったら、ソースそのままの方が短かった)
#!/usr/bin/perl
use strict;
use Getopt::Long;

$Getopt::Long::autoabbrev = 1;
my %opt = ();
GetOptions(\%opt, "number=s", "output=s");
my $number = $opt{'number'} || 5;
my $output_fn = $opt{'output'} || "a.js";

my $now = time;
my $dirname = shift;

my @tb_sorted = sort {$b->[1] <=> $a->[1]}
    map { [$_, (stat $_)[9]] } <$dirname/*.js>;

my $str;
for (0..($number - 1)) {
    my $e = int(($now - $tb_sorted[$_][1]) / 3600);
    my $m = ($e < 24) ? $e."H" : int($e/24)."D";
    my ($id) = ($tb_sorted[$_][0] =~ m!/([\d-]+).js!);
    $str .=
      qq{document.writeln('- <a href="$id.html">$id</a> ($m)<br>');\n};
}

open(F, "> $output_fn") or die "Can't open $output_fn : $!\n";
print F "$str\n";
close(F);
以下のような記述を .crontab に追加。
0 * * * * /home/yto/www/clog/kblog/recent_cm.pl /home/yto/www/clog/\
kblog -n 5 -o /home/yto/www/var/cm.js
HTMLファイル(chalow なら cl.conf のテンプレート)にこんなの追加。
<script language="JavaScript" src="http://nais.to/~yto/var/cm.js">
</script>

こんな感じになりました:
IMG

なお、ソースは「無償・無保証・著作権放棄」 です。
さりげにシュウォーツ変換[2003-07-11-2]を使っているのがポイント。
(てなことはだまっておくべき)

ref.
- くっつきシリーズ
  <http://ta2o.net/tools/index.html#kuttuki>
- くっつき BBS
  <http://ta2o.net/tools/kuttukibbs/>
- 技術文書:くっつきトラックバック
  <http://ta2o.net/doc/tech/kuttuki-trackback.html>
- サイドバーに最近のトラックバックを表示する (MovableType)
  <http://www.movabletype.jp/developers/cheebow/archives/2004/08/
  post_4.html
>