!?
http://refrigerate.sear.biz/ から文字列置換したものらしい.インパク トは強烈なんだけど,もしこれが第三者がやってるんだとしたら,いろんな 意味で問題なんではなかろうか.Adsense とか貼ってるし.
どうでもいいけどふと JavaScript:document.body.innerHTMLのガイドラ イン を思い出した.
「画像で取得するAPI」ではてなブックマーク件数をお手軽に表示してみた 矢先なのだが [2006-07-15-3],やっぱりやめた.
はてなが重いときとか反応しないときに,自分のページの表示が影響を受け るのが嫌だってのがまずあるけど,そのときに,あー,俺いまはてなサーバ に無駄に負担かけてるーという罪悪感があって精神衛生上よろしくない. (いや,もちろんトラフィック全体からみると,うちから発生する分なんて 誤差に過ぎないわけですが,単に気持ちの問題なので)
つうわけで真面目にはてなブックマーク件数取得APIを叩いてみることにしたですよ.
やり方はいろいろあると思いますが,定期的に件数を取りに行っておいて, HTML から SSI で include することにしてみた.こんなのを cron で定期 的に走らせます:
#!/usr/bin/perl
use strict;
use XMLRPC::Lite;
my $html_clog_url = 'http://www.kagami.org/diary'; # don't add trailing slash
my $html_clog_dir = '/home/swk/www/diary';
my $hatebu_count_dir = '/home/swk/www/hatebu_count';
my $EndPoint = 'http://b.hatena.ne.jp/xmlrpc';
my @urls = ();
while (<$html_clog_dir/*.html>) {
next unless /\/(\d{4}-\d{2}-\d{2}-\d+)\.html$/;
my $ymdi = $1;
push(@urls, "$html_clog_url/$ymdi.html");
if (@urls == 50) {
&writecount(\@urls);
@urls = ();
sleep(3);
}
}
if (@urls > 0) {
&writecount(\@urls);
@urls = ();
}
sub writecount
{
my ($uref) = @_;
my $map = XMLRPC::Lite->proxy($EndPoint)
->call('bookmark.getCount', @{$uref})->result;
foreach (@{$uref}) {
my $url = $_;
my $count = $map->{$_};
my ($ymdi) = ($url =~ /\/(\d{4}-\d{2}-\d{2}-\d+)\.html$/);
if ($count > 0) {
my $str_count = $count . " user" . (($count > 1)? 's': '');
my $str = << "HTML";
<span class="hatebu_count">
<a href="http://b.hatena.ne.jp/entry/$html_clog_url/$ymdi.html">
$str_count</a></span>
HTML
;
&save_file("$hatebu_count_dir/$ymdi.htmlin", \$str);
} elsif (-e "$hatebu_count_dir/$ymdi.htmlin") {
unlink("$hatebu_count_dir/$ymdi.htmlin");
}
}
}
sub save_file { # from kuttukibbs-1.0rc3
my ($fn, $strp) = @_;
open(F, "> $fn") or die "can't open $fn : $!\n";
flock(F, 2);
print F $$strp;
close F;
}
chalow のテンプレートは,
... <h3 class="subtitle"><TMPL_VAR name=header> <TMPL_VAR name=cat> <!--#include virtual="../hatebu_count/<TMPL_VAR name=ymdi>.htmlin" --> </h3> ...
な感じにする.
* [uboeedmjnb] NEW DELHI: Investigators believe an e ma... (2007-11-26 08:48:20)
* [nwgtzxesqb] 1 quarterback before suffering a knee in... (2007-11-25 12:50:43)
* [fgoavlxizw] Dick\'s Sporting Goods said Tuesday that... (2007-11-24 12:01:02)
* [oyigsruuar] Citroen\'s Sebastien Loeb concluded the ... (2007-11-22 15:16:36)
* [trydkjdjud] "Combined with Chrysler\'s Multi di... (2007-11-19 13:44:55)
* ...
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
2000 : 01 02 03 04 05 06 07 08 09 10 11 12
1999 : 01 02 03 04 05 06 07 08 09 10 11 12
1998 : 01 02 03 04 05 06 07 08 09 10 11 12
1997 : 01 02 03 04 05 06 07 08 09 10 11 12
1996 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2008-04-23 08:31