AmazonのWebサービスを使って情報を取得する方法について
書いていきます。


WebアプリケーションとWebサービスの違いは


簡単に言うと 


 人間が画面を見ながら利用するのがWebアプリケーション


 機械が利用するのはWebサービス


となります(厳密にはだいぶ違いますが、機械が利用するならばWebサービスは必須と言ってもいいでしょう)。



AmazonのWebサービスを使うにはAccessKeyとSecretAccessKeyが
必要になります。


Access Key IDの取得方法について

http://www.ajaxtower.jp/ecs/pre/index1.html


署名の計算方法(REST)

https://affiliate.amazon.co.jp/gp/associates/help/t126/a11?ie=UTF8&pf_rd%5Ft=501&pf%5Frd%5Fm=AN1VRQENFRJN5&pf%5Frd%5Fp=&pf%5Frd%5Fs=center-1&pf%5Frd%5Fr=&pf%5Frd%5Fi=assoc%5Fhelp%5Ft126%5Fa9


で準備をします。




みみたれうさぎの実用Javaプログラムの考察


赤で囲った2つを保存しておいてください


↓AmazonでWebサービスに挑戦するならオススメです。

わかりやすいし、サンプルプログラムものっています。



俺流amazonの作り方―Amazon Webサービス最新活用テクニック/水野 貴明
¥2,730
Amazon.co.jp


次回、キーワードをセットして書籍の情報を取得する方法について書きます。

RESTで行う方法は上記のようにいくつか書いている人がいるので、SOAPで
行う方法について書きます。



へぇ~ 巨大な商品サイトのWebサービスを使いこなしたら
ひょっとしてマーチャンダイジングとかできるかも
と思われた方は↓をクリック




人気ブログランキングへ

以前買ったデジカメを持参してネコカフェに行ってきました。

猫カフェ れおん 石川町徒歩3分


http://nekocafe-leon.com/


以前買ったカメラ、youtubeに直接アップロードできます。

これを持っていきました。


SONY DSC-G3サイバーショット DSC-G3
¥42,000
楽天

※モバイル非対応




正規品↓

SONY リチャージャブルバッテリーパック NP-FD1/ソニー
¥5,880
Amazon.co.jp

互換バッテリ↓

DSC-T2.DSC-T200.DSC-T70の NP-BD1 対応バッテリー/ロワジャパン
¥価格不明
Amazon.co.jp



喫茶ゾーン と ネコゾーンに分かれています。




では、ネコゾーンに入ります。


みみたれうさぎの実用Javaプログラムの考察

住人がお出迎え



みみたれうさぎの実用Javaプログラムの考察


ぬくぬくと寝ています



みみたれうさぎの実用Javaプログラムの考察

ごろんちょしています



みみたれうさぎの実用Javaプログラムの考察


肉球激写





みみたれうさぎの実用Javaプログラムの考察


アイテム ささみ(100円) を買って再びネコゾーンへ






みみたれうさぎの実用Javaプログラムの考察

ぞろぞろと寄ってきます。



みみたれうさぎの実用Javaプログラムの考察

囲まれました (ちょっ おまっ




みみたれうさぎの実用Javaプログラムの考察


ササミが欲しいと、こんな顔で寄ってきます

(知り合いにこんな顔をしたやつがいたような・・・)




みみたれうさぎの実用Javaプログラムの考察

なんとなくりりしい



みみたれうさぎの実用Javaプログラムの考察

みみが小さい



今日は結局、Javaでもなくうさぎでもなく

買ったデジカメの性能試験をして終了でした。


うさぎじゃないじゃん。でも ネコカフェ実況もたまには

いいかな と思われた方は↓をクリック




人気ブログランキングへ


最近のWebアプリケーションでは、純粋なJsp/Servletを見なくなりました。

いろいろなWebアプリケーションのフレームワークが出ています。

それはさておき、Servlet における危険なコードについて見ていきます。


下記の本は本当に良い書籍でWebアプリケーションについてハマリやすい

罠について解説しています。ぜひお求めになってはどうでしょうか?

バグ攻略で極めるWeb開発のツボ 現場で必要不可欠なバッドノウハウ/山城 拓明
¥2,940
Amazon.co.jp
この本の第4章についてもう少しブレークダウンして見てみます。


------------------------------------------------------------------


public class TestServlet extends HttpServlet {


private Integer amount = 0;


protected void service(HttpServletRequest request

, HttpServletResponse response)

throws ServletException, IOException {


response.getWriter().print("<html><head><title>title</title></head><body>");


amount = amount + new Integer(100);

response.getWriter().println("Amount =>" + amount + "yen");

response.getWriter().print("</body></html>");


}

}


-------------------------------------------------------------------


サーブレットにアクセスした結果


Amount =>100yen



もう一回押してみます。



Amount =>200yen



どんどん値が増えていきます。


複数のブラウザを起動してアクセスしても同様です。


サーブレットでフィールド変数を宣言するときに初期化しても無駄で、サーバを再起動するまで

フィールド変数の値は保持されていることがわかります。


今度はアクセスするタイミングで金額が変わるサーブレットを見ていきます。


-------------------------------------------------------------------


public class TestServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;

  private Integer amount = 0;

  protected void service(HttpServletRequest request

                 ,HttpServletResponse response)

                 throws ServletException, IOException {
   response.getWriter().print("<html><head><title>title</title></head><body>");

   amount = 0;

  try {
     Thread.sleep(2 * 1000);
  } catch (InterruptedException e) {
  // TODO 自動生成された catch ブロック
    e.printStackTrace();
  }

  amount = amount + new Integer(100);

  try {
    Thread.sleep(3 * 1000);
  } catch (InterruptedException e) {
    // TODO 自動生成された catch ブロック
    e.printStackTrace();
  }

  response.getWriter().println("Amount =>" + amount + "yen");

  response.getWriter().print("</body></html>");
}

}


-------------------------------------------------------------------


時間を空けてアクセスした場合の出力結果は


   Amount =>100yen


です。


しかし、更新ボタンを連打したり、複数のブラウザからすばやくアクセスすると


   Amount =>200yen


   Amount =>300yen


などになってしまいます。


1つ目のスレッドがAmountを得た後に、2つ目のスレッドがsleep中だと、

printされるときに+100されます。


もしかすると、昔エンジニアだった人から指導を受けたときに、

  

   フィールド変数は NULL or 0 で初期化しなさい! 


とか 言われることがありましたけど、あれが勘違いを引き起こす原因なのでしょうか?



アクセスするタイミングによって、出たり出なかったりする再現性の低い不具合は


本番環境に乗ってしまう可能性があるので十分注意が必要です。


バグ攻略で極めるWeb開発のツボ 現場で必要不可欠なバッドノウハウ/山城 拓明
¥2,940
Amazon.co.jp

この本には、他にも


 ・文字化け

 ・セキュリティ対策

 ・ブラウザ&HTML


についてのバグとその対処方法についても丁寧に書いてあります。

オススメの一冊です。




プロパーさんに納品してもらったサーブレットに定数以外の

フィールド変数が書きまくってあると、なぜか動悸がす

お悩みの方は↓をクリック



人気ブログランキングへ












うさぎの写真をアップしたいのでカメラを買ったのですが
こんな↓デジカメはどうでしょう。



なんと!Wifi に対応していて、取った動画を直接Youtube にアップロードすることができます。


http://www.youtube.com/watch?v=-Lv0Pjzqid4


画像も問題はありません。


では、さっそく撮影したみみたれをアップします。


みみたれうさぎの実用Javaプログラムの考察


どあっぷのみみたれ 貫禄があります。




みみたれうさぎの実用Javaプログラムの考察

赤目怖い・・・ オウムの怒りだ




みみたれうさぎの実用Javaプログラムの考察

世界初! うさぎ専用赤目補正に対応!?(本当か?




みみたれうさぎの実用Javaプログラムの考察


ごろんちょ 世界同時不況に疲れ果てたようだ




ブログに特化したデジカメか~

ところで、やっぱり みみたれていない奴いたよね?と思われた方は

↓をクリック



人気ブログランキングへ
にほんブログ村 うさぎブログへ

昨日まで書き込みを休んでおりました。

理由はAmazonのWebサービスについて調べていたためです。


Webサービスとは、簡単にいうとXMLを介してよそのサーバの機能をまるで自分の

マシンの機能のごとく使えるようにするものです(ホウトウか?)


REST と SOAP の2種類があるのですが、どうやらSOAPのほうは推奨していない

ように思えます。


なぜかというと、WSDLに TimeStamp と Signature の2つがいくら探しても

ないからです。


WSDL


http://webservices.amazon.com/AWSECommerceService/JP/AWSECommerceService.wsdl


これが完璧ならば比較的簡単にWebサービスを構築することができるのですが

なければ REST(こちらが主流みたいですが・・・)で作るしかありません。


無理やりSOAP通信をやる方法も一応あるのですが・・・ そのうち Webサービスを使って

何か作ってみたいと思います。





AmazonのWebサービスに挑戦してみたいな~と思った方は↓をクリック



人気ブログランキングへ