カテゴリ別 2003年 | 2004年 | 2005年 | 2006年 | 2007年 | 2008年
知り合いサイト: よんだもの / 暴想 / Linuxでやる夫 / 新宿Vipper / 僕だけが幸せになればいいのに。
キャラがかわいいアクションゲームで有名なリズソフト(旧メルケンソフト)の最新作。横スクロール型のアクション RPG です。
今回もドット絵キャラがかわいいですが、白眉なのが走っているアニメーション。剣を使う元気っ子のアルチェは腕を大きく振って走る一方、おとなしい魔法使いのサナは女の子走りをしています。この細部へのこだわりが素晴らしい。
製品は秋に出るようです。その第一章部分をベータ版として遊ぶことができます。↓にバナーをはっておきます。
ここ数週の redMine trunk の気になる変更点をチェックです。r594-r603 が対象です。
これまでの変更点のレポートはredMineカテゴリを参照ください。
今回はバグ修正と細かい変更だけで特に気になる機能追加などはありませんでした。
仕事で使っている割には内部の仕組みを良く知らないことに気付きましたので、memcached について調べています。配布元の danga.com にも細かいことは書いていませんので、最終的にはソースコード読まないと詳細は分からないですね。調べたことのまとめを書いていますが、いい加減長いのでページ分割しないとですね。
バナーをはってみました。この日記を読む人とマッチングしなさそうではありますが。
つくってみたはいいけど、amachangさんとかHamachiya2さんとかdankogaiさんとか、上位にきそうな人が上位に来たので面白くなかった。
Rubyならこんなに短くかけるよ!とか、やればいいと思う。
きしだのはてな - [Twitter]あなたがfollowしている人はこんな人をfollowしています
書いてみました。ワンライナーで書き始めてしまったので、そのまま晒します。良いプログラマは真似しないでください。表示上適度に改行を入れています。改行抜いて 300b でしたけどもっと縮まりそう。
require'open-uri';require'hpricot';
def s(u);(Hpricot(open("http://twitter.com/statuses/friends/#{u}.xml"))/'//screen_name').map{|i|i.inner_text};end;
u=ARGV[0];h=Hash.new(0);f=s(u);f.each{|i|s(i).each{|j|h[j]+=1}};
f<<u;f.each{|i|h.delete(i)};h.sort_by{|i|i[1]}.reverse[0,5].each{|i,j|puts"#{i}:#{j}"}
XML を取り扱う必要が出たのですが、最近 Hpricot づいてますので、Hpricot で XML をパースすることにしました。
対象の XML が単なるデータ表現でしたので、オブジェクト化しやすいように、ノードを辿ってハッシュ・配列化するメソッドを書いてみました。とりあえず動いてますが、もう少しコードを整理したいところです。
require 'rubygems'
require 'hpricot'
def traverse(node, hash = {})
case node
when Hpricot::Elem
have_siblings = (node/"../#{node.name}").size > 1
if have_siblings
hash[node.name] ||= []
end
if node.children.size > 1
child_hash = {}
if have_siblings
hash[node.name] << child_hash
else
hash[node.name] = child_hash
end
node.each_child do |child|
traverse(child, child_hash)
end
else
if have_siblings
hash[node.name] << node.inner_html
else
hash[node.name] = node.inner_html
end
end
when Hpricot::Elements
node.each do |child|
traverse(child, hash)
end
end
hash
end
doc = Hpricot.XML(<<_XML_)
<Export>
<Product>
<SKU>403276</SKU>
<ItemName>Trivet</ItemName>
<CollectionNo>0</CollectionNo>
<Pages>0</Pages>
</Product>
<Product>
<SKU>104577</SKU>
<ItemName>Dish</ItemName>
<CollectionNo>1</CollectionNo>
<Pages>2</Pages>
</Product>
</Export>
_XML_
pp traverse(doc/:Export)
#=> {"Export"=>
{"Product"=>
[{"ItemName"=>"Trivet",
"Pages"=>"0",
"SKU"=>"403276",
"CollectionNo"=>"0"},
{"ItemName"=>"Dish",
"Pages"=>"2",
"SKU"=>"104577",
"CollectionNo"=>"1"}]}}
XML のサンプルはerr.the_blog.find_by_title('Parse XML with Hpricot')から借りました。
今、Miyakoのマップスクロールとか、Miyako::Screen.updateメソッドとかが遅いと感じるときがあるので、そこをC拡張でなんとかできないかと試しています。
ただ、「既存のモジュール(require済みと仮定)にモジュールメソッドを追加する」方法が、ドキュメントを読んだだけでは分からない。
Ruby拡張ライブラリのいいソース無いかなぁ?
README.EXT だけだと難しいかもしれないですね。
Pure Ruby で定義された Hoge クラスに対して、C 言語の拡張で hoge インスタンスメソッドを追加する方法というかソース例を説明します。
ファイルを三つ用意してください。extconf.rb、C 拡張ライブラリのソース、それを使う Ruby プログラムです。
全体では以下のような流れのプログラムです。
Makefile 生成用。これを実行すると exthoge.c をコンパイルして exthoge.so を作成する Makefile が作成されます。
require 'mkmf'
create_makefile('exthoge')
拡張ライブラリのソース。Hoge#hoge を定義します。Init_**** は require されたときに実行されるスタートアップルーチンです。**** は create_makefile した拡張ライブラリ名と一致させます。この例では、create_makefile('exthoge') したので Init_exthoge です。
Ruby ではクラスは定数に結び付けられてますので、rb_const_get で取得できます。(rb_cObject から取得していいのかはちょっと不明です。)
#include
static VALUE rb_hoge_hoge(VALUE obj)
{
return rb_str_new2("hoge");
}
void Init_exthoge()
{
VALUE cHoge;
cHoge = rb_const_get(rb_cObject, rb_intern("Hoge"));
rb_define_method(cHoge, "hoge", rb_hoge_hoge, 0);
}
Hoge クラスを定義し、また exthoge 拡張ライブラリを読み込んで Hoge#hoge を呼び出します。
class Hoge
end
require 'exthoge'
hoge = Hoge.new
p hoge.hoge #=> "hoge"
extronf.rb を実行して Makefile を作成、あとは make すれば拡張ライブラリができます。Linux 環境前提ですが。
$ ruby extconf.rb creating Makefile $ make i686-pc-linux-gnu-gcc -shared -o exthoge.so exthoge.o -L'.' -L'/usr/lib' -Wl,-R'/usr/lib' -L. -rdynamic -Wl,-export-dynamic -Wl,-R -Wl,/usr/lib -L. -L/usr/lib -lruby18 -lpthread -ldl -lcrypt -lm -lc $ ls -l exthoge.so -rwxr-xr-x 1 date users 6529 2007-08-14 23:46 exthoge.so
インスタンス変数は rb_iv_get で取得できます。後は ruby.h を眺めながら色々試すしかないですね。最悪 Ruby の eval 相当の rb_eval_string を使えば大体何でもできます。
Vlad the Deployer, is a Capistrano competitor, designed to provide a fast, uncomplicated remote application deployment tool, but without the supposed complexity Capistrano offers.
The Ruby Hit Squad Releases Capistrano Competitor "Vlad The Deployer"
Rails のデプロイツール Capistrano の競合が現れました。
Capistrano 同様 DSL を採用して、構文も共通するところが多いです(移行しやすい)。同じアプローチでより洗練させるということなのでしょう。
ざっと眺めたところではそこまで Capistrano に対する優位性は感じませんでしたが、開発が Seattle.rb メンバーなので今後に期待です。
というかトップページがすごい(笑
InfoQ に開発者の Eric Hodel たちへのインタビューがありますのであわせてどうぞ。
とりあえず受けてみようかと思っているのですが、ニュースリリース以外の情報がどこにもないような。シルバー、ゴールドのようなグレードの違いや有効期限といった制度はどうなのか、出題範囲はどこまでなのかといった情報がほしいところです。
まつもとゆきひろ氏が理事長を務めるRubyの普及推進組織「Rubyアソシエーション」は技術者認定試験を開始する。2007年10月から東京と松江で筆記試験を行う。2008年2月にはインターネットで日本語版と英語版で,世界の技術者を対象にした試験を開始する。認定試験によりRubyの普及拡大などを図る。
Rubyの技術者認定試験が10月開始,2008年には世界に向け英語版も
まつもとさんがMatzにっき(2007-08-16) - Rubyの技術者認定試験が10月開始,2008年には世界に向け英語版も:ITproで多少情報を公開されています。
私が知りたかったあたりは……
- 試験のレベルは?
- 10月に開催されるのは「エントリレベル(正式名称未定)」です。 Rubyのバージョンには依存しない範囲の問題になります。
- 試験の内容は
- 範囲などはまだ公開できません。エントリレベルはあまり難しいものにはならないはずです。なお、回答は選択式です。
Matzにっき(2007-08-16) - Rubyの技術者認定試験が10月開始,2008年には世界に向け英語版も:ITpro
バージョンに依存しないというのはすなわち 1.8 前提ということでしょうかね。1.6→1.8 や 1.8→1.9 の仕様変更に依存しない範囲で問題作るのも難しそうな気がしますし。
最近メガデモがニコ動にアップされていて実行環境のない人間にとっては有難い限りです。アップされている数は少ないですが、アップされている分はメガデモタグで検索すれば見れます。
最近のおすすめは ASD の Lifeforce。Assembly2007 での新作です。メガデモから連想される幾何学・無機質を超えた ASD 一流の映像表現に圧倒されます。これを動かすためだけにハイスペックの PC がほしくなりますね。
Firefox 3 にオープンなビデオフォーマットである Theora のネイティブ実行をサポートする
SVG とネイティブビデオを実装した Firefox
SVG は W3C で標準化されたウェブ向けのベクタグラフィックス記述言語なわけですが、普及が進んでいるとはいえません。部分的ながらも Firefox がネイティブで対応していますが、IE では Adobe の SVG プラグインが必要です。
次世代の Flash を目指して Adobe の Flex と Microsoft の Silverlight が覇を競おうとしていますが、SVG もしぶとく生き残ってほしいですね。重なる部分もありますが、補完的にも使えると思いますので。
ところで、Safari は 3 で SVG 対応したとのこと。Windows 版の Safari 3 beta で W3C の SVG 1.1 Full test suite を表示させてみたところ、フィルタやアニメーションはダメでしたが基本的なところは結構ちゃんと表示できました。Firefox 2.0 と同程度ですね。
元記事とあんまり関係なくなってしまったので、話を戻します。Silverlight はストリーミングビデオを Flash よりも自由に扱えることを売りの一つにしていますが、「SVG とネイティブビデオを実装した Firefox」は機能面では近いところまで来ていますね。クロスブラウザ、DRM 対応、対応コーデックという面で Silverlight に軍配が上がりますが。
mht は IE でウェブページを保存するときの「Web アーカイブ、単一のファイル」というやつです。Windows 環境であれば win32ole を使って簡単にできました。
require 'win32ole'
cdo = WIN32OLE.new('CDO.Message')
cdo.CreateMHTMLBody('http://www.google.co.jp/')
cdo.GetStream.SaveToFile("google.mht")
Chilkat Ruby MHT Libraryというのが $149 で売ってたりしますが、これって自前で処理してるんでしょうかね。
livedoor reader のキーボードショートカット操作を色々なウェブページでも可能にする greasemonkey スクリプトです。例えば tDiary やはてなダイアリーなどで j で次の段落に移動、k で前の段落に戻るといったことができます。これは快適です。
とうとう r13261 / r13263 で m17n が trunk にマージされました。まだ coding プラグマ以外に m17n な文字列を作る方法がない?とか、euc-jp や sjis の文字列に chop すると無限ループに入ったりとか未実装やバグもありますが、今後ブラッシュアップされていくことと思います。
m17n で何が変わるかは m17n 対応で Ruby ができるようになること を参照ください。
svn trunk の Ruby をお使いの方は以下のようにすれば m17n を試せます。
coding プラグマは 1.9 で導入された機構で、プログラムファイルの文字エンコーディングを指定できます。現在の $KCODE がインタプリタ全体での指定だったのに対して、coding プラグマはファイル単位です。
現在の Ruby 1.8 の String はバイト列であり、正規表現エンジンが多バイト文字列対応です。そのため、String のメソッドは「文字」単位ではなく「バイト」単位で働きます。例えば "あいうえお".size は sjis なら 10、utf-8 なら 15 を返します。
しかし、m17n Ruby では "あいうえお".size は 5 を返しますので、split(//).size という文字数を得るためのイディオムがあったり、jcode.rb というなくしたいけどなくせないライブラリがあったり、業を煮やした Rails 陣営が ActiveSupport で 「Unicode 対応」したりといった歪が解消できます。Rails が 1.9 対応するかは知りませんけど。
さて、サンプルプログラムを挙げます。これを BOM なしの UTF-8 で保存します。で、1.8 と trunk で実行してみます。なお、encoding、bytesize、each_char は 1.8 では存在しないメソッドです。
#-*- coding: utf-8 -*-
str = 'AABBCC'
p str
p str.class
p str.encoding if str.respond_to?(:encoding)
p str.size
p str.bytesize if str.respond_to?(:bytesize)
p str.reverse
p str[0]
str.each_char{|i| p i} if str.respond_to?(:each_char)
p str.count('B')
p str.delete('A')
p str.squeeze
p str.tr('A-Z', 'a-z')
p str.tr_s('A-Z', 'a-z')
p str.chop
p str.succ
まず、1.8.6 での実行結果です。
$ ruby -Ku -v 1.rb ruby 1.8.6 (2007-06-07 patchlevel 36) [i686-linux] "AABBCC" String 18 "\243\274......\357" 239 14 "\242\242\243\243" "AABBCC" "zzczzczzdzzdzzezze" "zczczdzdzeze" "AABBC" "AABBCD"
次に trunk での結果です。
$ ruby19 -v 1.rb ruby 1.9.0 (2007-08-27 patchlevel 0) [i686-linux] "AABBCC" String "UTF-8" 6 18 "CCBBAA" "A" "A" "A" "B" "B" "C" "C" 2 "BBCC" "ABC" "aabbcc" "abc" "AABBC\000" "\357\274\241\357\274\241\357\274\242\357\274\242\357\274\243\357\274\243"
chop と succ がまだ未対応のようですが、他は良い感じです。
chop と succ については [ruby-dev:31735]で中田さんが直してくれました。
Webistrano は名前から連想されるように、Capistrano を使ってウェブで Rails アプリのデプロイ管理ができるソフトウェアです。Webistrano の目的を、
Webistrano's purpose is to make the deployment of multi-stage and multi-environment scenarios easy. Further it allows you to track who deployed what when to which servers and be alerted by email on each deployment.
BlogFish: Webistrano - Capistrano deployment the easy way
としています。なるほど、誰がいつデプロイしたかを追跡できる―作業記録が残る―のはいいですね。
テストだなんだと標榜するRubyがNoMethodErrorを出すのは(至極個人的には)ださいよなぁ、
と思う。*1
静的言語ならこういうことは殆どないだけに、
動的な言語の弱点だと思うんだよね。
気付かずに放置、みたいな。
もうtDiaryじゃなくてRubyがいけてないんだよ!!
この件に限定して言えば、nil に対してメソッド呼び出しして NoMethodError というのは、null に対してメソッド呼び出しして NullPointerException (実行時例外)と同じですので、静的言語ならこういうことは殆どない
ということもないのでは。
テストをちゃんと書いていれば防げるという点は同意します。
珍しく Perl でコードを書いています。作っているのは Net::Amazon を使って複数の ASIN で検索して、結果を JSON::XS で JSON にするというだけプログラムですが、いくつか困ったことが。難しいのは Amazon ECS じゃなくて Net::Amazon ですね。
ASIN B000TXC2RW のような予約もできない商品を ECS で検索すると、エラーコード AWS.ECommerceService.ItemNotAccessible、エラーメッセージ「この商品はECSを通してアクセスすることはできません。」というエラーが返ってきます。
複数の ASIN を指定してまとめて検索した場合には、ItemNotAccessible ではない他の商品の情報は取得できています。が、Net::Amazon ではレスポンスにエラーが含まれていると $response->is_success が偽になり、$response->properties も空でエラーではない他の商品の情報が得られないっぽいです。
Net::Amazon はデフォルトでは ResponseGroup=Large で検索しますが、不要な情報が多いので ResponseGroup=Small,Images で検索したいのですが、ResponseGroup=Small&ResponseGroup=Images となってしまいます。
長いですが、試した結果をメモっておきます。
$ perl -MNet::Amazon -e '
use Log::Log4perl qw(:easy);
Log::Log4perl->easy_init($DEBUG);
$ua = Net::Amazon->new(token => "********************", locale => "jp");
$response = $ua->search(asin => "B000FSEM4C", type => "Small");
print $response->is_success ? "OK" : "NG" , "\n";
'
2007/08/31 14:32:43 request: params = $VAR1 = {
'ItemId' => 'B000FSEM4C',
'ResponseGroup' => 'Small',
'locale' => 'jp',
'Sort' => 'salesrank',
'ItemPage' => 1,
'Operation' => 'ItemLookup'
};
2007/08/31 14:32:43 urlstr=http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=********************&Version=2007-01-17&ItemId=B000FSEM4C&ItemPage=1&Operation=ItemLookup&ResponseGroup=Small&Sort=salesrank&locale=jp
2007/08/31 14:32:43 Fetching http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=********************&Version=2007-01-17&ItemId=B000FSEM4C&ItemPage=1&Operation=ItemLookup&ResponseGroup=Small&Sort=salesrank&locale=jp
2007/08/31 14:32:43 Received [ <?xml version="1.0" encoding="UTF-8"?><ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2007-01-15"><OperationRequest><HTTPHeaders><Header Name="UserAgent" Value="libwww-perl/5.805"></Header></HTTPHeaders><RequestId>0XPD1HEBZR86B19TS6MW</RequestId><Arguments><Argument Name="ItemId" Value="B000FSEM4C"></Argument><Argument Name="Sort" Value="salesrank"></Argument><Argument Name="locale" Value="jp"></Argument><Argument Name="ItemPage" Value="1"></Argument><Argument Name="Service" Value="AWSECommerceService"></Argument><Argument Name="ResponseGroup" Value="Small"></Argument><Argument Name="Operation" Value="ItemLookup"></Argument><Argument Name="AWSAccessKeyId" Value="********************"></Argument><Argument Name="Version" Value="2007-01-17"></Argument></Arguments><RequestProcessingTime>0.0161001682281494</RequestProcessingTime></OperationRequest><Items><Request><IsValid>True</IsValid><ItemLookupRequest><ItemId>B000FSEM4C</ItemId><ResponseGroup>Small</ResponseGroup></ItemLookupRequest></Request><Item><ASIN>B000FSEM4C</ASIN><DetailPageURL>http://www.amazon.co.jp/gp/redirect.html%3FASIN=B000FSEM4C%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/B000FSEM4C%253FSubscriptionId=********************</DetailPageURL><ItemAttributes><Manufacturer>マイクロソフト</Manufacturer><ProductGroup>Video Games</ProductGroup><Title>Halo 3 リミテッド エディション</Title></ItemAttributes></Item></Items></ItemLookupResponse>]
2007/08/31 14:32:43 xmlref_add (after):$VAR1 = bless( {
'xmlref' => {
'Items' => [
{
'ASIN' => 'B000FSEM4C',
'ItemAttributes' => {
'ProductGroup' => 'Video Games',
'Manufacturer' => "\x{30de}\x{30a4}\x{30af}\x{30ed}\x{30bd}\x{30d5}\x{30c8}",
'Title' => "Halo 3 \x{30ea}\x{30df}\x{30c6}\x{30c3}\x{30c9} \x{30a8}\x{30c7}\x{30a3}\x{30b7}\x{30e7}\x{30f3}"
},
'DetailPageURL' => 'http://www.amazon.co.jp/gp/redirect.html%3FASIN=B000FSEM4C%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/B000FSEM4C%253FSubscriptionId=********************'
}
]
},
'messages' => [],
'total_results' => undef,
'status' => '',
'items' => []
}, 'Net::Amazon::Response::ASIN' );
2007/08/31 14:32:43 Received valid XML (1 items)
OK
$ perl -MNet::Amazon -e '
use Log::Log4perl qw(:easy);
Log::Log4perl->easy_init($DEBUG);
$ua = Net::Amazon->new(token => "********************", locale => "jp");
$response = $ua->search(asin => ["B000FSEM4C", "B000TXC2RW"], type => "Small");
print $response->is_success ? "OK" : "NG" , "\n";
'
2007/08/31 14:42:05 request: params = $VAR1 = {
'ItemId' => 'B000FSEM4C,B000TXC2RW',
'ResponseGroup' => 'Small',
'locale' => 'jp',
'Sort' => 'salesrank',
'ItemPage' => 1,
'Operation' => 'ItemLookup'
};
2007/08/31 14:42:05 urlstr=http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=********************&Version=2007-01-17&ItemId=B000FSEM4C%2CB000TXC2RW&ItemPage=1&Operation=ItemLookup&ResponseGroup=Small&Sort=salesrank&locale=jp
2007/08/31 14:42:05 Fetching http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=********************&Version=2007-01-17&ItemId=B000FSEM4C%2CB000TXC2RW&ItemPage=1&Operation=ItemLookup&ResponseGroup=Small&Sort=salesrank&locale=jp
2007/08/31 14:42:05 Received [ <?xml version="1.0" encoding="UTF-8"?><ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2007-01-15"><OperationRequest><HTTPHeaders><Header Name="UserAgent" Value="libwww-perl/5.805"></Header></HTTPHeaders><RequestId>0M92SBJWBF2HF8ZKZ909</RequestId><Arguments><Argument Name="ItemId" Value="B000FSEM4C,B000TXC2RW"></Argument><Argument Name="Sort" Value="salesrank"></Argument><Argument Name="locale" Value="jp"></Argument><Argument Name="ItemPage" Value="1"></Argument><Argument Name="Service" Value="AWSECommerceService"></Argument><Argument Name="ResponseGroup" Value="Small"></Argument><Argument Name="Operation" Value="ItemLookup"></Argument><Argument Name="AWSAccessKeyId" Value="********************"></Argument><Argument Name="Version" Value="2007-01-17"></Argument></Arguments><RequestProcessingTime>0.0187308788299561</RequestProcessingTime></OperationRequest><Items><Request><IsValid>True</IsValid><ItemLookupRequest><ItemId>B000TXC2RW</ItemId><ItemId>B000FSEM4C</ItemId><ResponseGroup>Small</ResponseGroup></ItemLookupRequest><Errors><Error><Code>AWS.ECommerceService.ItemNotAccessible</Code><Message>この商品はECSを通してアクセスすることはできません。</Message></Error></Errors></Request><Item><ASIN>B000FSEM4C</ASIN><DetailPageURL>http://www.amazon.co.jp/gp/redirect.html%3FASIN=B000FSEM4C%26tag=ws%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/B000FSEM4C%253FSubscriptionId=********************</DetailPageURL><ItemAttributes><Manufacturer>マイクロソフト</Manufacturer><ProductGroup>Video Games</ProductGroup><Title>Halo 3 リミテッド エディション</Title></ItemAttributes></Item></Items></ItemLookupResponse>]
Wide character in print at /usr/lib/perl5/vendor_perl/5.8.8/Log/Log4perl/Appender/Screen.pm line 30.
2007/08/31 14:42:05 Fetch Error: この商品はECSを通してアクセスすることはできません。
NG
$ perl -MNet::Amazon -e '
use Log::Log4perl qw(:easy);
Log::Log4perl->easy_init($DEBUG);
$ua = Net::Amazon->new(token => "********************", locale => "jp");
$response = $ua->search(asin => "B000FSEM4C", type => ["Small", "Images"]);
print $response->is_success ? "OK" : "NG" , "\n";
'
2007/08/31 14:31:07 request: params = $VAR1 = {
'ItemId' => 'B000FSEM4C',
'ResponseGroup' => [
'Small',
'Images'
],
'locale' => 'jp',
'Sort' => 'salesrank',
'ItemPage' => 1,
'Operation' => 'ItemLookup'
};
2007/08/31 14:31:07 urlstr=http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=********************&Version=2007-01-17&ItemId=B000FSEM4C&ItemPage=1&Operation=ItemLookup&ResponseGroup=Small&ResponseGroup=Images&Sort=salesrank&locale=jp
2007/08/31 14:31:07 Fetching http://webservices.amazon.co.jp/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=********************&Version=2007-01-17&ItemId=B000FSEM4C&ItemPage=1&Operation=ItemLookup&ResponseGroup=Small&ResponseGroup=Images&Sort=salesrank&locale=jp
2007/08/31 14:31:08 Received [ <?xml version="1.0" encoding="UTF-8"?><Errors xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05"><Error><Code>AWS.ParameterRepeatedInRequest</Code><Message>The parameter, ResponseGroup, appeared more than once in your request.</Message></Error></Errors>]
2007/08/31 14:31:08 xmlref_add (after):$VAR1 = bless( {
'xmlref' => {
'Items' => []
},
'messages' => [],
'total_results' => undef,
'status' => '',
'items' => []
}, 'Net::Amazon::Response::ASIN' );
2007/08/31 14:31:08 Received valid XML (0 items)
OK
最近のコメント:
RSS
![]()
This work is licensed under a
Creative Commons License
(note: text only. w/o web design, citations, (re)distributed softwares).
_ サイロス誠 [失礼をばいたしました・・・。 ご教授ありがとうございます。 試してみたのですが、かなり凄い量の関数呼び出しになります..]
_ なかだ [rb_const_get(rb_cObject)してもいいのですが、 class/moduleに限定するならrb_p..]
_ だて [>サイロスさん 参考になれば幸いです。 >ながださん rb_path2class は知りませんでした。便利ですね。]