ただのにっき
2007-01-24(水) [長年日記]
■ ISBN-13 ⇔ ISBN-10相互変換(3)
先日話題にした、Amazon ECSがISBN-13に対応したのを受けて、tDiaryのamazonプラグインを最新の2007-01-17版APIに対応させた。
IdTypeにイロイロと与えられるのはいいんだが、今のamazonプラグインにはそういうインタフェースがない。しょうがないので与えられたIDから数字以外の文字を除いたものが13桁あった場合には"ISBN"、それ以外は"ASIN"と判断。JPサービスの場合、他に"EAN"が指定できるが、無視して大丈夫だろうか。
おまけに、IdTypeを"ISBN"にした時にはSearchIndexを"Books"にするか"ForeignBooks"にするか選ばないといけないのだが、これも情報がないので"Books"固定に。ForeignBooksにリンクしたいときはどーすりゃいいんだ? これ以上amazonプラグインのインタフェースを複雑にするのは勘弁だしなぁ。
■ 町田駅の特殊性に絶望した!
そろそろPASMOのことでも勉強しておこうかな〜、と思ってイロイロ調べていた。JR東日本と相互利用できるようになるってことは、いま小田急で使っている磁気定期券をSuicaに(もしくはPASMOに)一本化でき、ほとんどの生活圏内で「タッチ&ゴー」できるようになるからだ。
が。
調べていくうちに、不穏な情報にぶちあたる。
町田駅というのは特殊な駅で、JR町田は旧原町田駅なので、小田急町田駅との乗り換えが「制度上」認められていません。(難しく言うと連絡運輸協定がない)
ええぇぇぇー!? 制度上ってナニヨ!! 客をバカにしてんのかい!
いやー、たぶん鉄な人たちには常識的な話だったんだろうけど、なんで磁気時代から定期が別々だったのか、やっと真相が判明したよ。なんてこった。
で、PASMOのサイトには、無情にもこう書いてある:
2枚以上の定期券をお持ちになる場合は、お手数でも磁気定期券をご利用ください。
2枚以上のICカードの同時使用はできません。
じゃあ、町田駅で小田急線⇔横浜線を使ってる何千人だか何万人だかの人たちは、未来永劫、全面ICカード化は望めないってこと? スゴイハナシデスネ……。
■ ドメイン名の長さでspam判定してみる
だいぶ前から「www.なんちゃらinsure.com」とか「www.ほにゃららlife.info」みたいな、妙に長い名前のreferer spamがよく来る。発信元はまちまちなので、botnet経由だろう。ネーミングも手を変え品を変えしてくるので、NGワードで締め出すのも、イタチごっこだ。
そこで、「ドメイン名が長かったらspam」というのは有効ではないかと思い、以下のようなスクリプトを書いてtDiaryのリンク元ファイルを検索させてみた。ピリオドで切り離したホスト名要素の中に、13文字以上のものがあればアウト、である:
require 'uri' while s = gets next unless /^\d+ / =~ s n, u = s.split begin URI::parse( u ).host.split( /\./ ).each do |d| if d.length > 12 then puts uri.host next end end rescue URI::InvalidURIError end end
どれどれ……
% ruby longdomain.rb 2007/*.tdr takagi-hiromitsu.jp sinseihikikomori.bblog.jp : :
ああもう……_| ̄|○
とはいえ、こういう「まとも」だけど長いドメインはたいていblogだから、トップページだけじゃなくpermalinkからのrefererが多く含まれている。トップページ(パスが「/」のURL)を選んで弾くようにすれば、十分役に立ちそう。
というわけで、以下のようにフィルタを書いて設置してみることにした(longdomain.rb)。
require 'uri' module TDiary module Filter class LongdomainFilter < Filter def referer_filter( referer ) begin uri = URI::parse( referer ) uri.host.split( /\./ ).each do |d| if d.length > 12 and uri.path == '/' then return false end end return true rescue URI::InvalidURIError return false end end end end end
追記(2007-01-27): バグってたのでちょっと修正。