Ellinikonblue.net Devlosxom

ここはまだ壮大な夢の途中…

Posted on May 29, 2009 at 00:22

bsnap_asin: Product Advertising API 対応…悪戦苦闘中

 先週末に bsnap_asin プラグインProduct Advertising API 対応に向けて 1st Try してみた訳なんですが、一筋縄でいくはずないんですよね…これが orz

 まずは RFC 2104-compliant HMAC with the SHA256 hash algorithm で Signature を生成しないといけないのですが、このために Digest::SHA を use してみるとエラー。
 XREA のサーバにはインストールされてないみたいなので、 ソースを引っ張ってきて、サーバにアップロード。そしてソースコード中に以下のコードを追加。
use lib '/Common/perl/lib/';
 Perl のライブラリパスを追加してみてもエラー。
 どうも SHA.pm は ソースだけでは動かないらしい。

 そこで今度は Digest::SHA::PurePerl を アップロード。
 これを use してもエラーは出なくなりました。 これでおそらくハッシュエンコードは大丈夫?

 ところがプラグインはうまく動作しない。というか、そもそもプラグインが有効になっていないよう。
 ここで時間切れで 1st Try は終了しましたが、 あとでよくよく考えてみると、 blosxom は プラグインのファイルの名前の最後に _ (アンダーバー)をつけると、 一時的にそのプラグインを無効にできますが、 bracket_fep プラグイン も 専用プラグインを読み込むときはアルゴリズムが同じで、 このため古い方をアンダーバー付き、新しい方をなしで、同じファイル名でアップロードしてしまうと、 両方ともプラグインが無効になることがソースを読んでみてわかりました。

 以上、作業日報かねて経過報告。
 余裕がないときに焦ってやると何でもうまくいかないものです。。。 時間に余裕があるときに再チャレンジすることにします。 (_ _;>

Posted on May 14, 2009 at 21:53

bsnap_asin: Product Advertising API 対応

「 アマゾン API を使うのに 2009 年 8 月 15 日から認証が必要になるらしい」たつをの ChangeLog より)

 うちの貴重な収入源である Amazon アソシエイト Web サービスProduct Advertising API 移行に伴い、 bsnap_asin プラグイン の対応をしなければなりません。
 タイムリミットは 8/15 。

 PHP や Ruby の実装はすぐに見つかりましたが、 blosxom は Perl 。
 Perl の実装はないか?と探してみたらありました。これを参考に(ぱくっ (^^;> )すれば 何とか対応はできそう。
# 感謝> たつをの ChangeLog の中の人

 あと以下の問題点の解決、および捜し物が必要(と考えています)。
  1. Secret Access Key ってなに?(秘密鍵ってわかりますが、入手方法とか)
  2. タイムスタンプは GMT or 日本時間? hail2u.net さんちの Kyo さんによると Expired があるらしい
    ( GMT っぽい)
  3. Signiture を作る際のテキストの改行コードは CR or CR+LF ?
    ( CR っぽい)
  4. RFC 2104-compliant HMAC with the SHA256 hash algorithm を利用必須のため、 Digest::SHA のお勉強(のためのドキュメント)
  5. URL Encode のため、URI::Escape のお勉強(のためのドキュメント)
 やっぱスクラッチビルドで当たり散らしてみるしかないか…時間との戦いかな orz

hail2u.net 「 Amazon Product Advertising API の認証を JavaScript で」
Posted on May 09, 2009 at 22:09

gin プラグイン再考

 そもそもにして、このサイトを立ち上げた理由の一つは、 この gin プラグイン を開発するためだったのですが、 すでに丸二年経過… orz

 なんでこんなに放置プレーになっているかというと、 途中で JSON の仕様を勘違いしていることに気づいたから。

 しかし、そろそろ初心に戻ろうと、今年は少し進展させたい。
 と言うことで、しっかり JSON の仕様を理解して(ると思う)、 このプラグインの入出力の鍵となる各ファイルの形式をもう一度見直した結果。

まず categories_index.json 。
[
	{ "directory": "/home/public_html/devlosxom/data", "count": 7 },
	{ "directory": "/home/public_html/devlosxom/data/About", "count": 2 },
	{ "directory": "/home/public_html/devlosxom/data/Doc", "count": 4 },
	{ "directory": "/home/public_html/devlosxom/data/Doc/Idea", "count": 1 },
	{ "directory": "/home/public_html/devlosxom/data/Plugin", "count": 1 },
	{ "directory": "/home/public_html/devlosxom/data/Plugin/Spec", "count": 1 }
]

次 categories_alias.json(categories.alias) 。
[
  { "directory": "/home/public_html/devlosxom/data/About", "alias": "このブログについて" },
  { "directory": "/home/public_html/devlosxom/data/Doc", "alias": "ドキュメント" },
  { "directory": "/home/public_html/devlosxom/data/Doc/Idea", "alias": "アイデア" },
  { "directory": "/home/public_html/devlosxom/data/Doc/Resources", "alias": "参考資料・メモ" },
  { "directory": "/home/public_html/devlosxom/data/Plugin", "alias": "プラグイン" },
  { "directory": "/home/public_html/devlosxom/data/Plugin/Spec", "alias": "仕様" }
]
最後に archives_index.json 。
[
	{ "year": 2007, "count": 7 },
		{ "year": 2007, "month": 5, "count": 1 },
			{ "year": 2007, "month": 5, "day": 4, "count": 1 },
		{ "year": 2007, "month": 4, "count": 2 },
			{ "year": 2007, "month": 4, "day": 18, "count": 1 },
			{ "year": 2007, "month": 4, "day": 7, "count": 1 },
		{ "year": 2007, "month": 3, "count": 3 },
			{ "year": 2007, "month": 3, "day": 24, "count": 1 },
			{ "year": 2007, "month": 3, "day": 3, "count": 1 },
			{ "year": 2007, "month": 3, "day": 2, "count": 1 },
		{ "year": 2007, "month": 2, "count": 1 },
			{ "year": 2007, "month": 2, "day": 26, "count": 1 },
	{ "count" : 7 }
]
 このデータ形式を元にコード書き直し。
 どこまでコードを使い回さなければならないかもだいたい見えたので、 ちょっとまじめにプログラム構造を考え直そうかと思っています。

 ただすぐにコーディングに入らない理由が一つ。  archives_index.json のデータを内部的にどういう構造で扱うかというところで、 ひらめきがない。。。これがひらめいたら。。。今年はちょっと進むと思うな > gin プラグイン