O'Reilly本が災害支援で半額になっているのでAmazon売上ランキングでリストしてみた
O'Reilly本が災害支援で半額になっている(被災者支援キャンペーン)
http://d.hatena.ne.jp/qaz76/20110323/1300894521
ので、
ISBNのリスト
https://www.oreilly.co.jp/ebook/
をecs.amazonaws.jpに食わせたレスポンスを
"/ItemLookupResponse/Items/Item/SalesRank"
順にリストしてみたww
これでどれを買うか決められるv
Top10
全リストは後半で...
SalesRank |ISBN |Title ----------+--------------+------------------------------ 816| 4873114799| プログラマが知るべき97のこと 1708| 487311456X| Android Hacks ―プロが教えるテクニック & ツール 3894| 4873113989| Arduinoをはじめよう (Make:PROJECTS) 4644| 4873114268| 実践ハイパフォーマンスMySQL 第2版 8994| 9784873114293| ソフトウェアアーキテクトが知るべき97のこと 9093| 9784873113852| Subject To Change ―予測不可能な世界で最高の製品とサービスを作る 9794| 4873113911| JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス 10175| 9784873113746| C#クックブック 第3版 13952| 9784873113296| JavaScript 第5版 14248| 4873114535| Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ (Make:PROJECTS)
コード
そこはかとなくJavaで...
package com.amazon.associates.sample; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.StringReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathFactory; import org.w3c.dom.Document; import org.xml.sax.InputSource; public class EbookSalseRank { public static void main(String[] args) throws MalformedURLException, Exception { Map<String, String> params = new HashMap<String, String>(); params.put("Service", "AWSECommerceService"); params.put("Operation", "ItemLookup"); params.put("IdType", "ISBN"); params.put("SearchIndex", "Books"); params.put("ResponseGroup", "Medium"); SignedRequestsHelper srh = new SignedRequestsHelper(); DocumentBuilder builder = DocumentBuilderFactory.newInstance() .newDocumentBuilder(); XPathFactory factory = XPathFactory.newInstance(); final XPath xpath = factory.newXPath(); List<Document> list = new ArrayList<Document>(); for (String isbn : new String[] { "4873110505", "4873110610", "4873110637", "4873110785", "4873110793", "4873110998", "487311134X", "4873111471", "4873111544", "487311165X", "4873111714", "4873111811", "4873111978", "4873112125", "487311215X", "4873112222", "4873112265", "4873112281", "487311232X", "4873112346", "4873112354", "4873112370", "4873112389", "4873112435", "487311246X", "4873112516", "4873112524", "4873112540", "4873112567", "4873112575", "4873112664", "4873112680", "4873112702", "4873112729", "4873112737", "4873112753", "4873112796", "4873112818", "4873112826", "4873112842", "4873112850", "4873112869", "4873112885", "4873112893", "4873112907", "4873112915", "487311294X", "4873112990", "4873113008", "4873113024", "4873113032", "4873113059", "4873113067", "4873113075", "4873113083", "4873113091", "4873113105", "4873113113", "4873113121", "9784873112763", "9784873112770", "9784873113135", "9784873113159", "9784873113166", "9784873113173", "9784873113210", "9784873113234", "9784873113241", "9784873113258", "9784873113265", "9784873113272", "9784873113289", "9784873113296", "9784873113302", "9784873113319", "9784873113326", "9784873113333", "9784873113340", "9784873113364", "9784873113371", "9784873113418", "9784873113425", "9784873113432", "9784873113456", "9784873113463", "9784873113487", "9784873113494", "9784873113500", "9784873113524", "9784873113531", "9784873113548", "9784873113555", "9784873113562", "9784873113586", "9784873113593", "9784873113616", "9784873113623", "9784873113630", "9784873113654", "9784873113661", "9784873113678", "9784873113692", "9784873113708", "9784873113715", "9784873113722", "9784873113739", "9784873113746", "9784873113760", "9784873113814", "9784873113821", "9784873113838", "9784873113845", "9784873113852", "9784873113869", "9784873113876", "9784873113883", "9784873113890", "9784873113906", "9784873113913", "9784873113920", "9784873113937", "9784873113944", "9784873113951", "9784873113968", "9784873113975", "9784873113982", "9784873113999", "9784873114002", "9784873114026", "9784873114033", "9784873114101", "9784873114125", "9784873114132", "9784873114156", "9784873114163", "9784873114170", "9784873114194", "9784873114200", "9784873114224", "9784873114231", "9784873114248", "9784873114255", "9784873114262", "9784873114279", "9784873114286", "9784873114293", "9784873114309", "9784873114316", "9784873114323", "9784873114347", "9784873114354", "9784873114385", "9784873114408", "9784873114439", "9784873114446", "9784873114453", "9784873114460", "9784873114477", "9784873114507", "9784873114514", "9784873114521", "9784873114538", "9784873114569", "9784873114583", "9784873114590", "9784873114606", "9784873114620", "9784873114644", "9784873114651", "9784873114668", "9784873114675", "9784873114682", "9784873114699", "9784873114712", "9784873114729", "9784873114767", "9784873114774", "9784873114798" }) { params.put("ItemId", isbn); String content = getContent(new URL(srh.sign(params))); list.add(builder.parse(new InputSource(new StringReader(content)))); } Document[] docs = list.toArray(new Document[list.size()]); Arrays.sort(docs, new Comparator<Document>() { @Override public int compare(final Document o1, final Document o2) { int i = 0; try { i = Integer.parseInt(xpath.evaluate( "/ItemLookupResponse/Items/Item/SalesRank", o1)) - Integer.parseInt(xpath.evaluate( "/ItemLookupResponse/Items/Item/SalesRank", o2)); } catch (Exception e) { throw new RuntimeException(e); } return i; } }); System.out.println("SalesRank |ISBN |Title"); System.out.println("----------+--------------+------------------------------"); for (Document doc : docs) System.out .format("%10s| %13s| %s\n", xpath.evaluate( "/ItemLookupResponse/Items/Item/SalesRank", doc), xpath.evaluate( "/ItemLookupResponse/Items/Item/ItemAttributes/ISBN", doc), xpath.evaluate( "/ItemLookupResponse/Items/Item/ItemAttributes/Title", doc)); } private static String getContent(URL url) throws Exception { StringBuffer sb = new StringBuffer(); HttpURLConnection con = null; BufferedReader br = null; try { con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8")); String s; while ((s = br.readLine()) != null) { sb.append(s); sb.append("\r\n"); } } finally { if (br != null) br.close(); if (con != null) con.disconnect(); } return sb.toString(); } }
うわっ・・・私のコード、使い捨てっぽ過ぎ?
www
byうわっ・・・メーカー
http://park14.wakwak.com/~tsuyoshi/uwa/uwa_maker.html
SignedRequestsHelperはこのヘンから
http://docs.amazonwebservices.com/AWSECommerceService/latest/DG/index.html?AuthJavaSampleSig2.html
全リスト
SalesRank |ISBN |Title ----------+--------------+------------------------------ 816| 4873114799| プログラマが知るべき97のこと 1708| 487311456X| Android Hacks ―プロが教えるテクニック & ツール 3894| 4873113989| Arduinoをはじめよう (Make:PROJECTS) 4644| 4873114268| 実践ハイパフォーマンスMySQL 第2版 8994| 9784873114293| ソフトウェアアーキテクトが知るべき97のこと 9093| 9784873113852| Subject To Change ―予測不可能な世界で最高の製品とサービスを作る 9794| 4873113911| JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス 10175| 9784873113746| C#クックブック 第3版 13952| 9784873113296| JavaScript 第5版 14248| 4873114535| Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ (Make:PROJECTS) 14259| 4873114683| jQueryクックブック 14715| 4873114721| iOS SDK Hacks ―プロが教えるiPhoneアプリ開発テクニック 15171| 4873113733| Head First JavaScript ―頭とからだで覚えるJavaScriptの基本 17203| 487311313X| 詳解 Linuxカーネル 第3版 20229| 4873114713| 言語設計者たちが考えること 20611| 9784873112916| PHP Hacks ―プロが教えるWebプログラミングテクニック 22921| 4873114586| クラウド セキュリティ&プライバシー ―リスクとコンプライアンスに対する企業の視点 25633| 4873113482| プログラミングGauche 27490| 4873113075| エンジニアのための時間管理術 29634| 4873112753| データベース実践講義 ―エンジニアのためのリレーショナル理論 (THEORY/IN/PRACTICE) 30383| 4873114276| 初めてのPerl 第5版 32716| 4873114691| 初めてのプログラミング 第2版 35274| 4873114454| Rubyベストプラクティス -プロフェッショナルによるコードとテクニック 36256| 4873114128| オープンソースソフトウェアの育て方 36591| 4873114772| Make: Electronics ―作ってわかる電気と電子回路の基礎 ((Make:PROJECTS)) 39250| 4873114500| 正規表現クックブック 39580| 4873113598| 詳説 正規表現 第3版 40622| 4873114179| iPhone SDK アプリケーション開発ガイド 43505| 4873114357| 並行コンピューティング技法 ―実践マルチコア/マルチスレッドプログラミング 43992| 4873113431| 詳解 MySQL 46001| 4873113814| Apacheクックブック 第2版 ―Webサーバ管理者のためのレシピ集 46035| 4873114314| オプティマイジングWebサイト ―SEO・サーバ・クライアントの最適化技術 48209| 9784873114408| 実用Git 48660| 9784873111476| RADIUS―ユーザ認証セキュリティプロトコル 51227| 4873113210| Google Hacks 第3版 ―プロが使うテクニック & ツール 100選 51903| 4873113679| 初めてのRuby 57755| 4873114764| 検索と発見のためのデザイン ―エクスペリエンスの未来へ 58255| 4873113164| デザイニング・インターフェース ―パターンによる実践的インタラクションデザイン 60177| 4873112990| アート・オブ・プロジェクトマネジメント ―マイクロソフトで培われた実践手法 (THEORY/IN/PRACTICE) 61864| 4873114284| アルゴリズムクイックリファレンス 64504| 4873114039| リファクタリング・ウェットウェア ―達人プログラマーの思考法と学習法 64869| 4873112575| 初めてのPHP5 66300| 4873112885| Binary Hacks ―ハッカー秘伝のテクニック100選 68748| 4873113636| ビューティフルコード 70025| 4873110637| C++プログラミング入門 71294| 4873114136| 詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識 73854| 4873113539| RESTful Webサービス 77429| 4873113822| Windows PowerShellクックブック 78369| 4873112850| Windowsサーバークックブック ―ネットワーク管理者のためのレシピ集 79986| 9784873113005| Perlベストプラクティス 83763| 4873113288| IPv6 エッセンシャルズ 第2版 84640| 4873113091| WSHクイックリファレンス 第2版 89366| 9784873111346| Web情報アーキテクチャ―最適なサイト構築のための論理的アプローチ 93020| 9784873112770| 入門 GNU Emacs 第3版 93840| 4873111544| UMLデスクトップリファレンス 93882| 4873113725| Prototype & script.aculo.us ―JavaScriptライブラリによるAjaxアプリケーション開発 94179| 4873114527| セマンティックWeb プログラミング 94864| 9784873113944| プログラミング言語 Ruby 97540| 4873114624| iPhone/iPadゲーム開発ガイド ―Objective-Cで作る2D/3Dゲーム 99215| 4873113377| Mind パフォーマンス Hacks ―脳と心のユーザーマニュアル 99260| 4873113938| 初めてのPython 第3版 100190| 4873113113| スケーラブルWebサイト 101576| 4873114306| ビューティフルアーキテクチャ 102433| 4873114209| Head First Statistics ―頭とからだで覚える統計の基本 103315| 4873114381| Head First Rails ―頭とからだで覚えるRailsの基本 104408| 4873110793| 不正アクセス調査ガイド―rootkitの検出とTCTの使い方 104664| 9784873113951| アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング 105861| 4873113652| 初めてのPHP & MySQL 第2版 106342| 487311425X| 初めてのJavaScript 第2版 109545| 4873112818| 初めてのSQL 110788| 487311361X| ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール 117319| 4873112842| UML2.0クイックリファレンス 120617| 4873113253| JavaScriptクイックリファレンス 122608| 4873112222| PDF Hacks ―文書作成、管理、活用のための達人テクニック 122963| 487311232X| CSS完全ガイド 第2版 124919| 4873113490| Head Firstオブジェクト指向分析設計 ―頭とからだで覚えるオブジェクト指向の基本 124925| 4873114101| デザイニング・ウェブナビゲーション ―最適なユーザーエクスペリエンスの設計 128668| 9784873113586| Ajaxアプリケーション & Webセキュリティ 128713| 4873113415| Google Maps Hacks 第2版 ―地図検索サービスをもっと活用するテクニック 130710| 4873113172| 入門 UML 2.0 133102| 4873113105| Head Rush Ajax ―学びながら読むAjax入門 136234| 4873113849| Making Things Talk ―Arduinoで作る「会話」するモノたち (Make:PROJECTS) 136685| 4873112826| 入門Webマッピング ―自分で作るオリジナルのデジタル地図 137625| 4873114675| JavaによるRESTfulシステム構築 138901| 4873113873| 詳説 ActionScript 3.0 141685| 9784873110998| SAN & NASストレージネットワーク管理 150529| 9784873113692| Head First SQL ―頭とからだで覚えるSQLの基本 151106| 4873112567| Apacheセキュリティ 153148| 4873113458| イノベーションの神話 153333| 4873113059| 続・初めてのPerl 改訂版 153718| 4873114438| Head Firstネットワーク ―頭とからだで覚えるネットワークの基本 154302| 9784873113661| インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践 155611| 4873113717| 初めてのActionScript 3.0 ―Flashユーザーのためのステップアップガイド 158660| 4873112796| Head First Java 第2版 ―頭とからだで覚えるJavaの基本 161112| 4873113997| キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 162858| 4873113423| プログラミングPHP 第2版 163357| 4873113970| マスタリングPerl 168535| 4873112761| Python クックブック 第2版 170929| 4873114519| セキュリティの神話 171766| 4873113628| Linuxシステムプログラミング 172708| 4873114004| Railsデプロイ 174222| 9784873113272| ネットワークセキュリティHacks 第2版 ―プロが使うテクニック & ツール 100+ 176906| 4873114349| デザイニング・ウェブインターフェース ―リッチなウェブアプリケーションを実現する原則とパターン 185297| 4873113881| Tomcatハンドブック 第2版 188012| 4873113962| プログラミングC# 第5版 190186| 4873114462| 続・ハイパフォーマンスWebサイト ―ウェブ高速化のベストプラクティス 193274| 4873114640| Head Firstデータ解析 ―頭とからだで覚えるデータ解析の基本 194419| 4873112540| 入門bash 第3版 195600| 4873113067| Linuxサーバ Hacks 2 ―コネクティング、モニタリング、トラブルシューティング 197553| 4873114195| Silverlightで開発するデータ駆動アプリケーション 199371| 4873113334| Ajax&JavaーJavaプログラマのためのAjaxプライマー 202182| 4873113563| Rubyスクリプティングテクニック ―テスト駆動による日常業務処理術 206680| 4873114020| プロダクティブ・プログラマ -プログラマのための生産性向上術 207996| 4873114446| Head First PHP & MySQL ―頭とからだで覚えるWebアプリケーション開発の基本 209220| 4873112869| 入門PHPセキュリティ 210337| 487311215X| Hibernate (開発者ノートシリーズ) 211479| 4873114594| ビューティフルセキュリティ 214618| 4873112265| Windowsサーバー Hacks ―管理者必携のテクニック & WSHスクリプト 100選 215696| 4873114152| Adobe AIR クックブック ―プロフェッショナルに学ぶRIAプログラミングの実践 215781| 9784873112350| Flash Hacks ―プロが教えるテクニック&ツール100選 217363| 4873114225| 組み込みLinuxシステム構築 第2版 219530| 4873114233| Real World Haskell―実戦で学ぶ関数型言語プログラミング 221519| 4873113520| 初めてのFlash Video 229075| 4873113903| DNS & BIND 第5版 232727| 4873114241| アート・オブ・アプリケーション パフォーマンステスト 233398| 4873113083| 802.11無線ネットワーク管理 第2版 234009| 9784873113548| ネットワークウォリア ―戦う管理者のための知識とテクニック 236150| 4873112893| Asterisk ―テレフォニーの未来 239762| 487311389X| ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション 241002| 4873113466| Linuxシステム管理 243056| 4873113024| Web解析Hacks ―オンラインビジネスで最大の効果をあげるテクニック & ツール 248752| 4873112281| Knoppix Hacks ―カスタマイズとシステム管理のテクニック 250591| 4873110610| Javaネットワークプログラミング 第2版 256072| 4873113326| Ajax on Rails 259383| 4873114608| アプレンティスシップ・パターン ―徒弟制度に学ぶ熟練技術者の技と心得 261361| 4873113555| インテル スレッディング・ビルディング・ブロック ―マルチコア時代のC++並列プログラミング 270759| 4873113865| 実践 Rails ―強力なWebアプリケーションをすばやく構築するテクニック 271210| 4873112389| Word Hacks ―プロが教える文書活用テクニック 273565| 4873114667| プログラミングF# 277361| 4873112516| LinuxデスクトップHacks ―プロが教えるテクニック&ツール100選 279600| 4873112729| プレファクタリング ―リファクタリング軽減のための新設計 (THEORY/IN/PRACTICE) 282938| 4873112907| 詳説 ビジネスプロセスモデリング ―SOAベストプラクティス (THEORY/IN/PRACTICE) 292037| 4873113261| CとGNU開発ツールによる組み込みシステムプログラミング 第2版 292584| 4873112524| MySQLクイックリファレンス 293180| 4873113369| アート・オブ・SQL ―パフォーマンスを引き出すSQLプログラミング手法 295815| 487311246X| GDBハンドブック 299958| 4873114160| エンタープライズ Rails ―企業ユーザのためのWebアプリケーション設計術 300308| 4873113318| SQL Hacks ―データベースを自由自在に操るテクニック 305166| 4873113768| bashクックブック 305266| 4873111811| Amazon Hacks 世界最大のショッピングサイト完全活用テクニック100選 305402| 4873113156| SQLクックブック ―データベースエキスパートのための実践レシピ集 312203| 9784873112664| Podcasting Hacks ―構成、録音、発信の必須テクニック 324583| 4873113709| JavaScript & DHTMLクックブック 第2版 ―Webエキスパート必携テクニック集 331356| 4873114322| ウェブアプリケーションのためのユニバーサルデザイン 333882| 9784873112732| Jakarta Strutsクックブック 334064| 487311330X| Linuxカーネル クイックリファレンス 340056| 4873111978| JavaServer Faces完全ガイド 341237| 4873114659| Erlangプログラミング 360339| 4873113245| Rubyクックブック ―エキスパートのための応用レシピ集 365951| 4873112370| Linuxハンドブック ―機能引きコマンドガイド 366864| 9784873112947| 初めてのC# 第2版 375635| 4873113830| Head First C# ―頭とからだで覚えるC#の基本 382941| 4873113237| Ajaxデザインパターン ―ユーザビリティと開発効率の向上のために 383632| 4873110505| 入門Perl DBI 388502| 4873114470| マスタリングXMPP 390028| 487311392X| Head Firstソフトウェア開発 ―頭とからだで覚えるソフトウェア開発の基本 391406| 4873113121| Railsレシピ 403808| 4873113032| C++クックブック 423939| 4873113342| エンタープライズSOA ―ビジネス革新実現に向けたITデザイン 431524| 4873110785| NFS&NIS 第2版 438615| 4873113504| Web 2.0ストラテジー ―ウェブがビジネスにもたらす意味 443760| 4873112680| JBoss (開発者ノートシリーズ) 491177| 4873112125| Google―電網打尽のインターネット掌握術 (THE MISSING MANUALシリーズ) 502384| 4873112702| Maven (開発者ノートシリーズ) 559425| 4873112346| Mono (開発者ノートシリーズ) 591413| 4873112435| ブラウザ選択の時代を読み解く 612265| 487311165X| ActionScriptデスクトップリファレンス 953714| 4873111714| Excelポケットガイド
関連リンク
http://internet.watch.impress.co.jp/docs/news/20110323_434606.html
http://www.oreilly.co.jp/editors/archives/2011/03/deal-of-the-days-support-disater-relief.html?utm_source=oreilly.co.jp=rss10
http://m.japan.cnet.com/#story,35000837
Enjoy!