«前の日記(2004-01-28 (水)) 最新 次の日記(2004-01-30 (金))» 編集
にっき
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|12|
2018|01|12|
2019|01|12|
2020|01|12|
2021|01|
2022|01|
2023|01|
2024|01|

2004-01-29 (木) [長年日記]

_ 続・続・mt-bk1.pl

昨日のプラグインは mt-bk1.pl をそのまま移植することを考えて作ったのですが、ただただしさんから『amazon.rb とメソッド名を同じにすると乗り換えがしやすい』というツッコミをいただいたので、amazon.rb のメソッドをリプレースするプラグインを作成しました。

# bk1.rb
require 'net/http'
require 'uconv'

def getbk1( bibid )
  aid = @conf['bk1.aid'] || '99mt-bk1'
  h = Hash.new

  cache = "#{@cache_path}/bk1"
  Dir::mkdir( cache ) unless File::directory?( cache )
  begin
    item = File::readlines( "#{cache}/#{bibid}" )
    raise if item.length < 2
    item.each do |line|
      key, value = line.split( /\t/, 2 )
      h[ key ] = value.strip
    end
  rescue
    host = 'cgi.bk1.jp'
    port = 80
    path = "/xml.cgi?bibid=#{bibid}&aid=#{aid}"
    Net::HTTP.version_1_1
    Net::HTTP.start( host.untaint, port.untaint ) do |http|
      response, = http.get( path )
      buf = Uconv.u8toeuc( response.body )
      buf.scan( /<([A-Z][A-Za-z]*)>([^<]*)<\/\1>/ ) do |tag|
        h[ tag[0] ] = tag[1]
      end
      if /<Details url="(.*?)">/ =~ buf then
        h['DetailURL'] = $1.gsub( /%26/, '&' )
      end
    end
    open("#{cache}/#{bibid}","w") do |f|
      h.each do |key, value|
        f.print "#{key}\t#{value}\n"
      end
    end
  end
  h['AID'] = aid
  return h
end

def bk1( bibid )
  h = getbk1( bibid )

  basketImage = 'http://www.bk1.co.jp/images/bk1/ic-kago.gif'
  basketURL = "http://www.bk1.co.jp/cgi-bin/bk1bskt.cgi?aid=#{h['AID']}&b=#{h['BIBID'] || bibid}&n=1"
  basket = %Q[<a href="#{basketURL}"><img src="#{basketImage}" border=0 vspace=1></a>]

  <<-HTML
  <span class="bk1">
  <a href="#{h['DetailURL']}">
  <img class="bk1" src="#{h['ImageUrlSmall']}" align="left" hspace=5 border=0>
  <strong>#{h['ProductName']}</strong> </a><br />
  #{h['Authors']}<br />
  #{h['Manufacturer']} / #{h['OurPrice']} / #{h['DateOfIssue']}<br />
  #{basket}
  </span>
  HTML
end
# bk1-amazon.rb

alias getAmazonImg_original getAmazonImg

def getAmazonImg( position, asin, comment )
  return getAmazonImg_original( position, asin, comment ) unless /^[0-9-]{9,12}[\d|Xx]$/ =~ asin

  h = getbk1( asin )

  if @conf['amazon.imgsize']  == 0 then
    image_url = h['ImageUrlLarge'] || 'http://www.bk1.co.jp/images/bk1/no_img_144.gif'
  else
    image_url = h['ImageUrlSmall'] || 'http://www.bk1.co.jp/images/bk1/no_img_90.gif'
  end
  product_name = comment || h['ProductName']

  r = ""
  r << %Q[<a href="#{h['DetailURL']}">]
  unless /no_img/ =~ image_url && @conf['amazon.nodefault'] then
    r << %Q[<img class="#{position}" src="#{image_url}" alt="#{product_name}">]
  end
  if !@conf['amazon.hidename']  || @conf['amazon.nodefault'] then
    r << product_name if position == "amazon"
  end
  r << %Q[</a>]
end

bk1.rb と bk1-amazon.rb の2つのファイルがあります。amazon.rb のリプレースを行わない場合は bk1.rb のみを、行う場合は bk1.rb と bk1-amazon.rb の両方を入れてください。 また、この場合は amazon.rb も必要になります。

なお、昨日の bk1.rb が既に入っている場合は昨日のものを捨ててください。ただし、bk1.rb の機能自体は昨日のものとまったく変わっていませんので、昨日と同様 bk1 メソッドを呼び出すことにより、mt-bk1.pl 準拠の表示が可能です。

bk1-amazon.rb を入れた場合は、amazon.rb の以下のメソッドが bk1 へのリンクにリプレースされます。また、表示形式はできるだけ互換性を持たせてあります。

amazon
isbn_image
isbn_image_right
isbn_image_left

ただし、パラメータに ISBN ではなく ASIN を渡した場合は、従来どおり Amazon へのリンクになります。

_ 中小企業、「MSに依存し過ぎ」を懸念

この記事は海外でのものですが、日本ではもっと『依存しすぎ』に対する危機意識が低いように思います。Microsoft に限らず、Adobe・Oracle・Intel ・Cisco などに依存してしまっている企業は多いのではないでしょうか。

_ そう言われても・・・

isbn_image はすでに広く使われている名前なので、今さら挙動を変えるわけにはいかないと思います。

ですので、amazon_bk1 などの、ほかの名前にするというのはどうでしょう?

_ 今日のアニメ

東京ミュウミュウ#35
ざくろに憧れる少女が両親からもらったペンダントが狙われる。
キン肉マン#67
キン肉マンがワニ地獄を選び、悪魔騎士・スニゲーターと戦う。
シティーハンター2#39
海坊主が傭兵時代の知り合いである美樹と結婚を賭ける。
ココロ図書館#12
ココロ図書館は街の人々に求められている。にこにこりん♪
ダーティペアFALSH2#3
トラコンを名乗る詐欺師を報奨金目当てで連行しようとする。
陽あたり良好#25/26
克彦からの手紙で余計にかすみが勇作のことを意識するように。
瓶詰妖精#4
10月:秋といえば芸術・スポーツ・食欲/11月:花が枯れるとは?
ゆめりあ#4
モネとねねこが智和をプールに連れて行きたいと言い出す。
本日のツッコミ(全1件) [ツッコミを入れる]
_ TrackBack (2004-01-29 (木) 15:30)

http://d.tnh.jp/20040129.html<br>睡眠してません2<br><br>こう、<br> isbn_image ISBN<br>と指定すると<br> 画像 タイトル amazonへのリンク bk1へのリンク<br>といった感じになるいうのはどうか?


«前の日記(2004-01-28 (水)) 最新 次の日記(2004-01-30 (金))» 編集