«前の日記(2010-11-03 (水)) 最新 次の日記(2010-11-05 (金))» 編集
にっき
Google
2003|10|11|12|
2004|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|
2006|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|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|10|12|
2015|01|12|
2016|01|12|
2017|01|

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」を海外発表

ダブルレンズキットもあるのか。ソニーとガチンコ勝負だな。


«前の日記(2010-11-03 (水)) 最新 次の日記(2010-11-05 (金))» 編集