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」を海外発表
ダブルレンズキットもあるのか。ソニーとガチンコ勝負だな。