お名前.com VPSで名前解決不具合

年末からお名前.comのVPSを借りて、いろいろと試してみている。

正月にこのブログなど、個人のサイトをこのサーバへ移行して運用を始めた。

その際にブログと一緒にサーバ移行をした自分用システムのレスポンスが
異常に遅くなったことに気づいた。

これはAmazonのAPI (Product Advertising API)を利用するシステムで、Rubyで開発している。

“お名前.com VPSで名前解決不具合” の続きを読む

Thinkpad トラックポイント

こんなものまでアマゾンで売ってるとは思わなかった。

大きめのThinkpadを使っているときは持ち運びはしなかったので
マウスを使うのは当然だったけど、

X61にしてからは軽いので持ち歩くのが常になった
そうするとマウスが邪魔になるわけだけど

しょうがないのでThinkpadのキーボードの真ん中にある赤いやつで
操作するようになる。

どうにも最初はなれなかったけど、人間の慣れとはスゴイもので
逆にこれがないと駄目なんじゃないかと思えてくる。

初めての人にちょっとPCを操作してもらうときには
かなり戸惑われること間違いなしだ

そうなるとトラックポイント(赤いやつ)がないノートPCは選択肢に
入らなくなる? となるとThinkpadしか買わなくなるのか。。。。

x61を買ったとき3種類ついてきたらしい。

いまはクラシックドームというやつが一番良い。

まさか、10個いりパックも売っているとは。

実は東京に出張中にこのトラックポイントを紛失してしまったことがあり、
マウスのない状態でスゴしたことがある。

うーん、予備に買っておくか。

Rubyで電子署名 Amazon アソシエイト Web サービス


Amazon Web Services

2009年8月15日からAmazon Web Servicesを利用するときはアクセスキーだけではなく電子署名も埋め込む必要があるというメールが来ていた。

まあ、アクセスキーが分かれば誰でもリクエスト出来るというのは
いかがなものかなとは思っていたところだったので良いことかと。

と言うことで、電子署名をする方法をRubyで確認。

さて、このたび、Amazon アソシエイト Web サービスの名称を、「Product Advertising API」と変更しましたことをお知らせいたします。この新名称は、開発者の皆様が Amazon サイトで販売されている商品の広告作成を行い、これによって Amazon より広告費を受け取るという、API の目的をより正しく表しています。

名称変更にともない、Product Advertising API にリクエストを送信いただく都度、認証のための電子署名を含めていただくことが必要になります。この変更は、2009年5月11日より3ヶ月の間の移行期間の後、2009年8月15日には、Product Advertising API へ送信されるリクエストは全て認証されることとなり、認証されない場合、リクエストは処理されなくなります。

以前はリクエストのURIにアクセスキーを埋め込みさえすれば良かったけど
今度はsecret keyを使って認証しなければならないとのこと。

secret keyは「Product Advertising API」のアカウントにログインして
「Access Identifiers」で確認できる。

amazon1

署名については以下のサイトを参考にした。
Amazon Product Advertising APIの認証の件 zorioの日記

Base64.encode64の文末に改行コードが入ることを知らずにいたことが原因で小一時間はまってしまった。

RubyのBase64エンコード ayucatのRuby/Rails日記

オフィシャルのマニュアル
Product Advertising API Request Authentication

require "cgi"
require "openssl"
require "base64"
require "digest/sha2"
require "time"

aws_host   = "webservices.amazon.co.jp"

access_key = '00000000000000000000'
secret_key = '1234567890'

req = ["Service=AWSECommerceService","AWSAccessKeyId=#{access_key}",
"Version=2009-06-01"]

req << "ItemId=0679722769"
req << "Operation=ItemLookup"
req << "ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews"
req << "Timestamp=#{CGI.escape(Time.now.getutc.iso8601)}"

req.sort!

message = ['GET',aws_host,'/onca/xml',req.join('&')].join("\n")

hash = OpenSSL::HMAC::digest(OpenSSL::Digest::SHA256.new, 
secret_key, message)

sign = Base64.encode64(hash).split.join

req << "Signature=#{CGI.escape(sign)}"

url = "http://#{aws_host}/onca/xml?" + req.join('&')

puts url

Perlについては小飼 弾さんの「404 Blog Not Found」を見ておけば大丈夫だ。
perl - URI::Amazon::APA released! 404 Blog Not Found