bfep_asin プラグインをちょっと改良
久々に思い立って
blosxom のプラグインを
いじってみた。
bsnap_asin
プラグイン を延々と使っていると、
キャッシュファイルが一つのディレクトのしたにどんどんできるので、
あまりたくさんのファイルが一つのディレクトリ下にできるとファイルの検索効率が落ちると思い、
サブディレクトリを切ってキャッシュファイルをができるように改良。
思ったより簡単に出来ました。
現状、ASIN コードの下一桁をとってきて最大 36 ディレクトリができるようになっていますが、 原理的には、以下の三か所
問題なさそうなので近々、 Weblog の方にも導入予定。 その後、Ellinikonblue.com PukiWiki で ドキュメント整理&公開予定。。。
思ったより簡単に出来ました。
現状、ASIN コードの下一桁をとってきて最大 36 ディレクトリができるようになっていますが、 原理的には、以下の三か所
:(略) $cache_dir = $asin_dir.'/'.substr( $1, 9, 1 ); :(略) my $cache = "$asin_dir/".substr( $asinCode, 9, 1 )."/$asinCode.html"; :(略) my $tmp_file = "$asin_dir/".substr( $asinCode, 9, 1 )."/$asinCode.tmp"; :(略)の substr の第二引数を 8 に、第三引数を 2 に設定すれば、 さらにたくさんのサブディレクトリを切るようになります(おそらく)。
問題なさそうなので近々、 Weblog の方にも導入予定。 その後、Ellinikonblue.com PukiWiki で ドキュメント整理&公開予定。。。
Markdown ってなに?
「
『 Google Insights for Search 』日本語化、未来予測機能も公開」
( INTERNET Watch より)
ということで、Google Insights for Search で 検索ワードとして「 blosxom 」を 分析した結果
まぁ、上記の検索結果は普段から何となく想像はつくことなんですが、
その関連情報に注目検索クエリとして「急激増加」となっていた 「 blosxom markdown 」
Markdown ってなに?気になって調べますと…
hail2u.net 「 Markdown 」
にーやんのブログ
「 Markdown を Blosxom のプラグインとして使用する」
「 Markdown のシンタックス」
チェリオメアリー 「 Markdown 入れた」
要は Wiki みたいに簡単に HTML を記述してしまって、 それが blosxom で使えて便利だねと。
う~確かに便利そうだけど、記述シンタックスを見ていると、 うちの bracket_fep プラグイン と もろにコンフリクトしそう。。。
一応こういうものがあるといことは覚えとく。。。ということで。
しかし、私が今頃になって調べている話を hail2u.net では 5 年も前の話題。。。 やっぱりこの中の人はすげー。。。
ということで、Google Insights for Search で 検索ワードとして「 blosxom 」を 分析した結果
Markdown ってなに?気になって調べますと…
hail2u.net 「 Markdown 」
にーやんのブログ
「 Markdown を Blosxom のプラグインとして使用する」
「 Markdown のシンタックス」
チェリオメアリー 「 Markdown 入れた」
要は Wiki みたいに簡単に HTML を記述してしまって、 それが blosxom で使えて便利だねと。
う~確かに便利そうだけど、記述シンタックスを見ていると、 うちの bracket_fep プラグイン と もろにコンフリクトしそう。。。
一応こういうものがあるといことは覚えとく。。。ということで。
しかし、私が今頃になって調べている話を hail2u.net では 5 年も前の話題。。。 やっぱりこの中の人はすげー。。。
bsnap_asin: Product Advertising API 対応…勝った
bsnap_asin プラグイン の
Product Advertising API 対応、
何とかできたみたいです。
ここ一週間ぐらい、 ここ と Ellinikonblue.com Weblog で 試験を続けましたが、特に問題なく動いているようです。
やっと「勝った」って気分です (^^)b
うまくいかなかった大きな原因は、XML の名前空間の問題。
XSL スタイルシート中に記載していた以下の部分
この Version の指定で帰ってくる XML の内容も違うので、 ちょっと時間をおいてじっくり見直して新しい XSL スタイルシートも考え直したいと思います。
# ひとまず今回はこれまでと同じ「 2005-07-26 」の名前空間を使っています。
ひとまずどうにかこうにか 8 月以降も Amazon アソシエイト Web サービス 続行可ということで。 ほっ f^O^;
# ここまでの成果は近々、 Ellinikonblue.com PukiWiki の方で 公開いたします。
ここ一週間ぐらい、 ここ と Ellinikonblue.com Weblog で 試験を続けましたが、特に問題なく動いているようです。
やっと「勝った」って気分です (^^)b
うまくいかなかった大きな原因は、XML の名前空間の問題。
XSL スタイルシート中に記載していた以下の部分
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:aws="http://webservices.amazon.com/AWSECommerceService/2005-07-26">とリクエスト時に渡す Version 引数で同じ日付を指定しなければならず、 これを新しい日付にしていたら、そもそもその日付に名前空間が Amazon 側にないという、 ならどの日付の名前空間ならあるんだとちょっと調べてみましたがこちらで見あたらず、 結果、以前使っていた日付の名前空間を利用してみたところやっとうまくいきました。
この Version の指定で帰ってくる XML の内容も違うので、 ちょっと時間をおいてじっくり見直して新しい XSL スタイルシートも考え直したいと思います。
# ひとまず今回はこれまでと同じ「 2005-07-26 」の名前空間を使っています。
ひとまずどうにかこうにか 8 月以降も Amazon アソシエイト Web サービス 続行可ということで。 ほっ f^O^;
# ここまでの成果は近々、 Ellinikonblue.com PukiWiki の方で 公開いたします。
bsnap_asin: Product Advertising API 対応…光は見えた
bsnap_asin プラグイン の
Product Advertising API 対応ですが、
やっと光が見えてきました。
とは言っても、リクエストを出して、応答が帰ってきたところまでなんですが…
bsnap_asin プラグイン は XSL スタイルシートを指定して、その応答をキャッシュして出力しているのですが、 これまで使用していた XSL スタイルシートを指定しても、 XML の生の応答が帰ってくるだけで、スタイルシートを適用してくれません。
そもそもにして、webservices.amazon.co.jp や ecs.amazonaws.jp に リクエストを送っても 403 Forbidden が帰ってきますが、 同じリクエストを xml-jp.amznxslt.com に送れば応答は帰ってきます。 しかし、 XSL スタイルシートは適用されて戻ってきません。
Signature を生成してつけるだけでこれまで通りなどとは思わぬ方がよいようです。 ぐったりです。
とりあえず、以前 疑問に思っていたことがだいたい解決したのでその回答をメモ。
web2.0 的ラボ 「 Amazon Product Advertising API 電子署名と XSLT のまとめ」
RinGoon POP!! 「 [PHP] Amazon Product Advertising API で認証付きリクエストを送る方法まとめ」
もう一息!?…そうなのか?くじけそう orz
とは言っても、リクエストを出して、応答が帰ってきたところまでなんですが…
bsnap_asin プラグイン は XSL スタイルシートを指定して、その応答をキャッシュして出力しているのですが、 これまで使用していた XSL スタイルシートを指定しても、 XML の生の応答が帰ってくるだけで、スタイルシートを適用してくれません。
そもそもにして、webservices.amazon.co.jp や ecs.amazonaws.jp に リクエストを送っても 403 Forbidden が帰ってきますが、 同じリクエストを xml-jp.amznxslt.com に送れば応答は帰ってきます。 しかし、 XSL スタイルシートは適用されて戻ってきません。
Signature を生成してつけるだけでこれまで通りなどとは思わぬ方がよいようです。 ぐったりです。
とりあえず、以前 疑問に思っていたことがだいたい解決したのでその回答をメモ。
- Secret Access Key ってなに?
Subscription ID (AWSAccessKeyId) をしたときと 同じで Amazon Web Services のホームページ にログインすれば表示されます。 - タイムスタンプは GMT or 日本時間?
たとえ日本のサイトにリクエストするときでも GMT です。 - Signiture を作る際のテキストの改行コードは CR or LF or CR+LF ?
LF 。
web2.0 的ラボ 「 Amazon Product Advertising API 電子署名と XSLT のまとめ」
RinGoon POP!! 「 [PHP] Amazon Product Advertising API で認証付きリクエストを送る方法まとめ」
もう一息!?…そうなのか?くじけそう orz
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 のサーバにはインストールされてないみたいなので、 ソースを引っ張ってきて、サーバにアップロード。そしてソースコード中に以下のコードを追加。
どうも SHA.pm は ソースだけでは動かないらしい。
そこで今度は Digest::SHA::PurePerl を アップロード。
これを use してもエラーは出なくなりました。 これでおそらくハッシュエンコードは大丈夫?
ところがプラグインはうまく動作しない。というか、そもそもプラグインが有効になっていないよう。
ここで時間切れで 1st Try は終了しましたが、 あとでよくよく考えてみると、 blosxom は プラグインのファイルの名前の最後に _ (アンダーバー)をつけると、 一時的にそのプラグインを無効にできますが、 bracket_fep プラグイン も 専用プラグインを読み込むときはアルゴリズムが同じで、 このため古い方をアンダーバー付き、新しい方をなしで、同じファイル名でアップロードしてしまうと、 両方ともプラグインが無効になることがソースを読んでみてわかりました。
以上、作業日報かねて経過報告。
余裕がないときに焦ってやると何でもうまくいかないものです。。。 時間に余裕があるときに再チャレンジすることにします。 (_ _;>
まずは 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 プラグイン も 専用プラグインを読み込むときはアルゴリズムが同じで、 このため古い方をアンダーバー付き、新しい方をなしで、同じファイル名でアップロードしてしまうと、 両方ともプラグインが無効になることがソースを読んでみてわかりました。
以上、作業日報かねて経過報告。
余裕がないときに焦ってやると何でもうまくいかないものです。。。 時間に余裕があるときに再チャレンジすることにします。 (_ _;>
gin プラグイン再考
そもそもにして、このサイトを立ち上げた理由の一つは、
この gin
プラグイン を開発するためだったのですが、
すでに丸二年経過… orz
なんでこんなに放置プレーになっているかというと、 途中で JSON の仕様を勘違いしていることに気づいたから。
しかし、そろそろ初心に戻ろうと、今年は少し進展させたい。
と言うことで、しっかり JSON の仕様を理解して(ると思う)、 このプラグインの入出力の鍵となる各ファイルの形式をもう一度見直した結果。
まず categories_index.json 。
どこまでコードを使い回さなければならないかもだいたい見えたので、 ちょっとまじめにプログラム構造を考え直そうかと思っています。
ただすぐにコーディングに入らない理由が一つ。 archives_index.json のデータを内部的にどういう構造で扱うかというところで、 ひらめきがない。。。これがひらめいたら。。。今年はちょっと進むと思うな > gin プラグイン
なんでこんなに放置プレーになっているかというと、 途中で 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 プラグイン
bsnap_asin プラグインの仕様と今後
ここ でテストを始めた
bsnap_asin
プラグイン ですが、
今回は非常に調子よく動作したので、
Weblog への導入と
うちの PukiWiki でも
ページを作ってひとまず公開しました。
アルゴリズムはほぼ元の asin_complex プラグイン のままですが、 ロック処理を見直し、ロック時間を極小化したおかげでこれまでよりもうまく動作しているようです。
Weblog 側に導入したバージョンには、 以下の新しい例外処理を組み込んでいます。
# 別途、jasin プラグイン として実装済み。
ひとまず、おざなりになっている PukiWiki の ページを整理することが優先ですが、今後、 以前に まとめたアイデア や その他の例外処理を順次実装していければなぁ…と考えています。
とりあえず、今回をもって、単機能版の asin_complex プラグイン 開発はおしまいと言うことで。
アルゴリズムはほぼ元の asin_complex プラグイン のままですが、 ロック処理を見直し、ロック時間を極小化したおかげでこれまでよりもうまく動作しているようです。
Weblog 側に導入したバージョンには、 以下の新しい例外処理を組み込んでいます。
- Amazon.co.jp 側がうまく XML スタイルシートを取得できなかったとき、 リクエストした商品の XML ファイルをまるのまま返すので、 一定量以上のデータが帰ってきたときはその応答を無視する
# 別途、jasin プラグイン として実装済み。
ひとまず、おざなりになっている PukiWiki の ページを整理することが優先ですが、今後、 以前に まとめたアイデア や その他の例外処理を順次実装していければなぁ…と考えています。
とりあえず、今回をもって、単機能版の asin_complex プラグイン 開発はおしまいと言うことで。
bsnap_asin のテスト
問題が起こるたびに突貫で何とかしていた
asin_complex
プラグイン のコードを見直ました。
また今回は
bracket_fep
対応を優先させました。
そろそろ Weblog の方もこちらで置き換えようと
言うこともあります。
何よりコードがひどい。
思いつきでコードを付け加えてきたボロ雑巾のようなコードで、 この上、ECS4.0 対応を 行ったとき にほとんどエラー処理を考慮しなかったもので、 いざエラー処理を加えようとしてももう無理。。。何せコードを読み返していると 自分が何がしたかったのかが読めないコードに。。。 orz
で、一気に見直し、比較的すっきりしましたし、 デバッグにも手こずらず、一応動いているように見えます。
と言うことで当面 このサイトでテスト。
問題がなければこのまま公開して、 Weblog の方も置き換え、 エラー処理の実装に入りたいと思います。
と言うことで、今ほしいものリストなどを並べてみる… (^^;>
何よりコードがひどい。
思いつきでコードを付け加えてきたボロ雑巾のようなコードで、 この上、ECS4.0 対応を 行ったとき にほとんどエラー処理を考慮しなかったもので、 いざエラー処理を加えようとしてももう無理。。。何せコードを読み返していると 自分が何がしたかったのかが読めないコードに。。。 orz
で、一気に見直し、比較的すっきりしましたし、 デバッグにも手こずらず、一応動いているように見えます。
と言うことで当面 このサイトでテスト。
問題がなければこのまま公開して、 Weblog の方も置き換え、 エラー処理の実装に入りたいと思います。
と言うことで、今ほしいものリストなどを並べてみる… (^^;>
![]() |
Tokina AF12-24mmF4 (IF) ASPHERICAL ニコンデジタル用 AT-X124PRODX ( Tokina ) ¥ 52,439 |
|---|
![]() |
サンワサプライ microSDカードリーダライタ ADR-MCU2BK ( サンワサプライ ) ¥ 980 |
|---|
bsnap_lt プラグイン仕様 v2009.1.17
bracket_fep
プラグイン 専用プラグインとして、
bsnap_lt プラグインの実装が一応終了しました。
事前に 仕様を考えました が 自動サムネイル機能以外は思ったより簡単に実装できました。
こちらの エントリ のように、エントリのごとに表示することもできますし、 すべての画像を こちらの エントリ のように個別に表示させることもできます。
またページごとにまとめて表示させることもできます。
ざっと仕様は以下の通り。
まぁひとまずできは悪くないので、 暇をみて Ellinikonblue.com PukiWiki の方に ページを作ってアップしたいと思います。
事前に 仕様を考えました が 自動サムネイル機能以外は思ったより簡単に実装できました。
こちらの エントリ のように、エントリのごとに表示することもできますし、 すべての画像を こちらの エントリ のように個別に表示させることもできます。
またページごとにまとめて表示させることもできます。
ざっと仕様は以下の通り。
- Lightbox2 利用
- blosxom エントリ中の 記述方法は snap_in / bsnap_hs プラグイン互換
- 実際の画像とサムネイルの結びつけルールは bsnap_hs 互換
- グルーピングなし、エントリごとグルーピング、ページごとグルーピングをオプションで設定可
まぁひとまずできは悪くないので、 暇をみて Ellinikonblue.com PukiWiki の方に ページを作ってアップしたいと思います。




