とりせん田沼店でみかんを一箱買った。いわゆる大人買い。静岡産の青島みかん1980円なり。レジで支払いを済ませると、レジ係のお姉さんはマイクを取り出しこう言った。「1番レジ、みかんチェックお願いしまーす。」
え? みかんチェック? それってなに? と思って待ってると、胸にチーフの名札を付けたお兄さんが登場。みかん箱を検査台(?)に持っていくと、箱を開けてみかんを一つずつ調べ始めた。なるほど、傷んでいたりカビていたりするみかんを選り分けてくれるサービスなんだね。「どうしても輸送中に傷がついたり、傷んだりしてしまうんです。だからチェックしてからお持ち帰り頂くんですよ。」とのこと。一個だけ傷んでカビたみかんがあったが交換してもらえた。
帰り道でみかんを食べた。豊かな甘みとすっきりした酸味があって美味しいみかんだった。
え? みかんチェック? それってなに? と思って待ってると、胸にチーフの名札を付けたお兄さんが登場。みかん箱を検査台(?)に持っていくと、箱を開けてみかんを一つずつ調べ始めた。なるほど、傷んでいたりカビていたりするみかんを選り分けてくれるサービスなんだね。「どうしても輸送中に傷がついたり、傷んだりしてしまうんです。だからチェックしてからお持ち帰り頂くんですよ。」とのこと。一個だけ傷んでカビたみかんがあったが交換してもらえた。
帰り道でみかんを食べた。豊かな甘みとすっきりした酸味があって美味しいみかんだった。
* api.my.yahoo.com に weblogUpdates.ping すると Wrong content-type エラー
昨日 2004-02-20 に、api.my.yahoo.com へ更新通知する方法を書いたが、ruby 1.8.1 の XMLRPC 1.2で weblogUpdates.ping を送るとエラーになってしまった。
何が悪いのかを調べるため、ソースを追いかけてみることにした。/usr/local/lib/ruby/1.8/xmlrpc/client.rb を開く。攻殻機動隊の素子風に言うと「ソースにダイブする」かな。
do_rpc メソッド。538行目付近に例外の発生源があった。
追記。その後、例外を rescue してエラーメッセージを標準エラー出力に出力するようにした。これならスクリプトの実行は継続され、weblogUpdates.ping はとりあえず成功するし。というわけでスクリプトは以下のようになった。
$ script/update_ping.rb http://api.my.yahoo.com/RPC2update_ping.rb は 2004-02-15 に作ったスクリプト。
/usr/local/lib/ruby/1.8/xmlrpc/client.rb:543:in `do_rpc': Wrong content-type (RuntimeError)
from /usr/local/lib/ruby/1.8/xmlrpc/client.rb:409:in `call2'
from /usr/local/lib/ruby/1.8/xmlrpc/client.rb:399:in `call'
from script/update_ping.rb:18
何が悪いのかを調べるため、ソースを追いかけてみることにした。/usr/local/lib/ruby/1.8/xmlrpc/client.rb を開く。攻殻機動隊の素子風に言うと「ソースにダイブする」かな。
do_rpc メソッド。538行目付近に例外の発生源があった。
ct = parse_content_type(resp["Content-Type"]).firstresp というのはレスポンスだな。Content-Type レスポンスヘッダの値が text/xml じゃないと例外を発生させてるわけだ。api.my.yahoo.com はどんな Content-Type を返してきてるんだろう? ct を puts で出力させてみる。
if ct != "text/xml"
if ct == "text/html"
raise "Wrong content-type: \n#{data}"
else
raise "Wrong content-type"
end
end
text/plaintext/plain か。http://api.my.yahoo.com/rss/ping?u=http://sonic64.com/ を叩いたときと同じだな。
- どう修正しよう?
これって api.my.yahoo.com が悪いのかな。それとも、ruby の XMLRPC が厳格過ぎるのかな。この Content-Type をチェックしている if 文を無効にしてしまえばエラーを回避することはできるが、別のところで破綻しそうな気がする。とりあえず api.my.yahoo.com への更新通知は http://api.my.yahoo.com/rss/ping?u=http://sonic64.com/ に HTTP GET する方法を取ることにしよう。 代替手段もあることだし、XMLRPC のレスポンスは xml じゃないとダメなのか、などの深追いはしないことにする。追記。その後、例外を rescue してエラーメッセージを標準エラー出力に出力するようにした。これならスクリプトの実行は継続され、weblogUpdates.ping はとりあえず成功するし。というわけでスクリプトは以下のようになった。
#!/usr/bin/env ruby
require 'xmlrpc/client'
require 'uri'
name = "Landscape - エンジニアのメモ"
url = "http://sonic64.com/"
ping_uri = ARGV.shift
uri = URI.parse(ping_uri)
connection = XMLRPC::Client.new(uri.host, uri.path, uri.port)
result = nil
begin
result = connection.call("weblogUpdates.ping", name, url)
puts "message: " + uri.host + ": " + result["message"]
rescue Exception => e
puts Time::now.to_s + ' error: ' + ping_uri + ": " + e.message.split("\n")[0];
puts Time::now.to_s + ' ' + ping_uri + ': weblogUpdates.ping: error'
exit 1
end
- 余談
今回の記事のタイトルはじつに長くて読みづらい。日本語が7文字しかない。これ以上削れないと思って、「RSS: Ruby: api.my.yahoo.com に weblogUpdates.ping すると Wrong content-type エラー」という長いタイトルにしたんだけど、今考えると Wrong content-type は削ろうと思えば削れるかなあ。「RSS: Ruby: api.my.yahoo.com に weblogUpdates.ping するとエラー」だけでも良かったかも。- すべての記事の見出し (全1029件)
- 全カテゴリの一覧と記事の数
- カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。
- .net (57件)
- 2ch (19件)
- amazon (5件)
- Apache (22件)
- bash (13件)
- Bookmarklet (9件)
- C# (45件)
- chalow (18件)
- ChangeLog メモ (20件)
- coLinux (2件)
- CSS (5件)
- Delphi (5件)
- DVD (6件)
- Excel (1件)
- F-ZERO (4件)
- FF12 (31件)
- ftp (8件)
- Google (21件)
- gpg (7件)
- HTML (19件)
- http (19件)
- IE (10件)
- IIS (4件)
- iPod (2件)
- JavaScript (14件)
- Linux (63件)
- MCP (6件)
- Mozilla (14件)
- MS SQL Server (30件)
- MySQL (4件)
- Namazu (3件)
- PC (48件)
- Perl (58件)
- PHP (2件)
- Postgres (36件)
- proftpd (2件)
- qmail (1件)
- RFC (4件)
- RSS (33件)
- Ruby (15件)
- samba (3件)
- sonic64.com (6件)
- SQL (15件)
- Squid (3件)
- ssh (7件)
- Subversion (3件)
- unix (31件)
- VSS (2件)
- Windows (34件)
- winny (9件)
- XML (9件)
- xyzzy (17件)
- おいでよ どうぶつの森 (19件)
- お菓子 (5件)
- アスキーアート (13件)
- アニメ (9件)
- クレジットカード (2件)
- ゲーム (120件)
- シェルスクリプト (18件)
- シレン2 (8件)
- セキュリティ (9件)
- ソフトウェア (21件)
- デザインパターン (2件)
- ネットワーク (30件)
- バックアップ (17件)
- プログラミング (14件)
- マリオカートDS (3件)
- メール (26件)
- メモ (116件)
- ラーメン (11件)
- 音楽 (59件)
- 給油 (3件)
- 三国志大戦 (13件)
- 車 (7件)
- 書斎 (4件)
- 食 (30件)
- 買い物 (17件)
- 簿記 (8件)
- 本 (32件)
- 漫画 (9件)
- 2007-04-23 (Mon)
- 2007-03-07 (Wed)
- 2007-02-27 (Tue)
- 2007-01-17 (Wed)
- 2007-01-15 (Mon)
- 2007-01-14 (Sun)
- 2007-01-08 (Mon)
- 2006-12-01 (Fri)
- 2006-11-22 (Wed)
- 2006-11-20 (Mon)
- 2006-11-19 (Sun)
- 2006-09-30 (Sat)
- 2006-08-29 (Tue)
- 2006-08-04 (Fri)
- 2006-07-27 (Thu)
- 2006-07-23 (Sun)
- 2006-07-17 (Mon)
- 2006-07-10 (Mon)
- 2006-07-06 (Thu)
- 2006-07-03 (Mon)
- 2006-06-29 (Thu)
- 2006-06-28 (Wed)
- 2006-06-27 (Tue)
- 2006-06-25 (Sun)
- 2006-06-19 (Mon)
- 2006-06-18 (Sun)
- 2006-06-15 (Thu)
- 2006-06-11 (Sun)
- 2006-06-01 (Thu)
- 2006-05-30 (Tue)
- プロファイル
- 斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
- リンク
- RSS
- スポンサードリンク
- Powered by
- ☆さくらインターネット☆