2010-11-04 (木) [長年日記]
_ section_footer2.rbのdeliciousをJavaScript化
この日記をプアなサーバに移行してからというもの、section_footer2.rbのdelicious被ブックマーク数取得処理でさえ遅く感じられるようになってしまった。そこで、この処理をクライアントに任せ、サーバ負荷を減らすことにする。
# section_footer2_delicious_js.rb
require 'digest/md5'
add_header_proc do
<<-"EOS"
<script type="text/javascript"><!--
function sf2_delicious(){
var a=document.getElementsByTagName("a");
for(var i=0;i<a.length;i++){
if(a[i].id && a[i].id.match(/^sf2_delicious_/)){
var url_md5=a[i].id.substr(14);
var e=document.createElement("script");
e.type="text/javascript";
e.charset="UTF-8";
e.src="http://feeds.delicious.com/v2/json/urlinfo/"+url_md5+"?callback=sf2_delicious_cb";
document.body.appendChild(e);
}
}
}
function sf2_delicious_cb(json){
if(!json || !json[0]) return;
var count=json[0].total_posts;
if(count==0) return;
var e=document.getElementById("sf2_delicious_"+json[0].hash);
if(!e) return;
var s=" "+count+" user";
if(count>1) s+="s";
e.appendChild(document.createTextNode(s));
}
if(window.addEventListener){
window.addEventListener('load',sf2_delicious,false);
}else if(window.attachEvent){
window.attachEvent('onload',sf2_delicious);
}
// --></script>
EOS
end
def add_delicious( date, index )
url_md5 = Digest::MD5.hexdigest( permalink( date, index, false ) )
%Q!<a href="http://delicious.com/url/#{url_md5}" id="sf2_delicious_#{url_md5}"><img src="http://static.delicious.com/img/delicious.small.gif" style="border: none;vertical-align: middle;" alt="#{@section_footer2_delicious_label}" title="#{@section_footer2_delicious_label}"></a> | !
end
ちなみにAutoPagerizeには対応していません。すぐにAPIのコール数の上限に到達してしまうので…。
_ パナソニック、ストロボ内蔵で世界最小・最軽量の「LUMIX DMC-GF2」を海外発表
ダブルレンズキットもあるのか。ソニーとガチンコ勝負だな。
[ツッコミを入れる]


