はてなアンテナの不思議

最近更新されてないな。と思い、アンテナの下のほうからリンクに飛んでいくと、きちんと更新されている。
安心安心って思って、アンテナを更新すると、反映されている。
以前、平林さんのところに、http://blog-tech.rikunabi-next.yahoo.co.jp/blog/hirabayashi/73タブレットPC用アプリケーションのインストールの件でトラックバックを送信した日に、天漢日常があんてなに反映されないと書いたのだが、その後反映されたので、はてなの中の人とかが何かしてくれたのかと思っていたのだが、今日ともちゃの日記で同様の現象を確認した。
はてなユーザーのコンピュータから何かを拾って判断しているのか?ちょっと薄気味悪いな。
でもはてなは理系の会社? - higepon blogひげぽんさんがなにやらRSSの更新で色々やった。みたいなことが書いてあるからあんてなにも反映されたのか?とも思えなくも無い・・・
でも森博嗣の現在の日記のページはうまく反映されていないみたい。



どういう仕組みなんだろう。
一番単純に考えるとHTTPのHEADで更新時間を取得して、その情報を元に、作り出すのだろうけど、チェックする数が半端じゃないだろうしなぁ。はてな内部は良いとしても、定期的にHTTP張るコストは馬鹿にならないだろうし、あんてなを更新するタイミングはユーザーの任意だから、サーバ側で定期的にチェックするわけに行かないだろう。
なんかスクリプトでユーザーサイドでチェックさせちゃうとか?パケットの総量が増えそうだ・・・
ん〜


そうそう。ひげぽん氏がC++のテンプレート生成スクリプトを書いたのに触発されて、任意のファイルに指定したコメントやメッセージを、任意の行数に挿入するperlスクリプトを書いてみました。
もっとも皆さんもっと出来の良いものを作っていそうですが、一応公開してみます。

#!/usr/bin/perl
#	@file	test.pl
#	@author	ni4n0Syou
#	@brief	引数を読み込み、目的のファイルの目標行に指定したフォーマットを追加する
#	@date	feb.23,2006	start
#	
#	@usage
#	perl test017.pl -t pic -f test001.asm -l 100
#	picの追加書式でtest001.asmファイルの100行目に定型分を追加する
#	目的ファイルはカレントに存在するか絶対パスを入力してもらう

use strict;
use Switch;
my $pattern = 0;
my $line = 0;
my $filename;
my $tmp_file = "tmp.txt";

if(scalar(@ARGV) != 6){
	print ":usage\n";
}
while(@ARGV){
	my $arg = shift @ARGV;
#	print "$arg\n";
	switch($arg){
		case '-t'{
			my $val = shift @ARGV;
			switch ($val){
				case 'pic'	{$pattern = 1;}
				else	{$pattern = 0;}
			}
		}
		case '-f'{
			$filename = shift @ARGV;
		}
		case '-l'{
			$line = shift @ARGV;
		}
		else	{
		}
	}
#	if( $arg =~ /^-/){
#		my $val = shift @ARGV;
#		print "val:$val\n";
#	}
} 

#print "pattern : $pattern\n";
#print "file : $filename\n";
#print "line : $line\n";

open(FH,"<$filename") || die "file not found\n";
open(FW,">$tmp_file") || die "tmp file not make\n";
my $c = 0;
while(){
	print FW ;
	$c++;
	if($c == $line){
		switch($pattern){
			case 1	{
				print FW << "HDOC"
;----------
;Func Name
;Method
;Discription
;----------{
;----------}
HDOC
				}
			else	{}
		}
	}
}
close(FH);
close(FW);
print "program success\nout put file is $tmp_file\n";
exit;

一応perl 5.8以降で動作します。それかswitchモジュールを入れておけば古くてもOKでしょう。パターンをいろいろ作ってフラグで判断できるようにできれば、開始時のテンプレートも可能だと思います。