gin プラグイン仕様 v2007.8.11

[ プラグイン » 仕様 ]

 対策を 施した にもかかわらず、また消えました。。。エイリアス情報 orz
 アルゴリズム的に消えないと思っていましたが、 ここは消えた現実を真摯に受け止めて、気合いを入れ直してコードを見直したのですが、 私の能力ではもう解決不能。。。

 と言うことで、仕様を変更することにしました。
 これまでは gin プラグインが出力したカテゴリ情報ファイル (categories_index.json) に直接、カテゴリに対するエイリアス情報を 書き込んでいましたが、エイリアス情報は別ファイル (categories.alias) とし、カテゴリ情報出力時にエントリ情報シーク結果とマージして、 出力するようにします。
 この仕様であれば、一度作成したエイリアス情報は基本読み込むだけですから、 消えることはありません。 また、gin プラグインが出力するカテゴリ情報を利用する categories プラグインを 作り替える必要もありません。名案!(自画自賛。失礼 (_ _"> )

 エイリアス情報を記載する categories.alias ファイル(ファイル名はデフォルト)は 以下のようなディレクトリ名とエイリアス名をセットにして記載する JSON 形式ファイルとします。
{
  { "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": "仕様" }
}
 現在、この仕様で gin プラグインを改装中です。
 そんなに難しい改造でもないので、時間さえとれればすぐにできると思います。 うまく動き始めたら即 Ellinikonblue.com Weblog の方でテストを開始するつもりです。

Aug 12, 2007 at 00:25 | コメント (0) | トラックバック (0)

gin プラグイン:エイリアス消失対策

[ プラグイン ]

 blosxom に おけるエントリのメタ情報を JSON 形式で出力する gin プラグインEllinikonblue.com Weblog の方で 最終的なテストしていたのですが、重大な一つ問題が見つかりました。
 実は Ellinikonblue.net Photolog で 実験していたときに一度だけ発現した問題で、 gin プラグイン はエントリのメタ情報の一つとして、 カテゴリ情報を一つの JSON ファイルとして出力します。 各カテゴリへのエイリアス(別名)は、このファイルに直接記述することで実現しますが、 この JSON ファイルに記述したエイリアスが消失すると言う問題です。
 Ellinikonblue.net Photolog で 発現した際もそのときは原因がわからず放置していたのですが、 うちの blosxom で 動作しているサイト群で、最大の PV を誇る Ellinikonblue.com Weblogで 三ヶ月テストして、たった一回と言う発生頻度も非常に少ない問題でした。
 ただやはりエイリアス情報とは言え、消失するということは大問題です。

 ソースコードとにらめっこした結果、 この消失問題が発生する条件は、ごく短いタイムスライスの間に gin プラグイン が多重起動した場合(通常、更新タイミングでない限り機能(起動)しない)、 entries_kache プラグイン と同期して、メタ情報を更新する際の JSON ファイル出力最中に、 同ファイルのオープンを要求することしか考えられません。 この条件を満たしてしまうと書き換え中の JSON ファイルの内容を 読み込まずに処理を先に進めるアルゴリズムになっています。
 上記の条件を熟考して、最初はロック機構を実装しようと思ったのですが、 gin プラグイン が機能しているのは、ごく短い時間で、 かつ機能する頻度も通常は1時間に一度なので、 万が一このタイミングでカテゴリ情報ファイルを開き損なった場合、 5 秒間スリープして、再度オープンを試みるか、それでもだめなら 機能を中断すると言う処理を入れ込みました。
 これでクリティカルなタイムスライスに多重起動しても、 リトライするか、最悪、エイリアス情報消失につながる書き込みをしません(そのはず…)。

 この対処を施した gin プラグイン でまた少々テストです。
 ここ の 公開がまた延びたな…これで orz

Jul 18, 2007 at 23:09 | コメント (0) | トラックバック (0)

asin_complex プラグインアップデート

[ プラグイン ]

 一ヶ月くらい前の話になるのですが、 asin_complex plug-inAmazon.co.jp の 商品画像へのリンクを作成する際、失敗することが目立って多くなっていることが 気になり始めました。

 これまでも商品画像が落ちることはあって、それなりに対策は打っていたのですが、 どうもこれまでとは違う「新商品でかつ商品画像が登録されていない 製品のものに限って落ちる」という規則性があることに気づきました。
 よくよく調べてみると、これまでは商品画像がまだ登録されていない新商品には、 ダミーの商品画像への URL が XSLT の問い合わせで返ってきたのですが、 新製品に関しては全く画像への URL を返さないようになっていました。 いつから仕様が変わったのかわかりませんが、 直近で登録されている商品については、 商品画像が登録されるまでは商品画像への URL は何も返さないようです。
 これに対しての対策と、商品画像があってもうまく判別できないことがあったので、 以下の対策を施しました。
  1. 問い合わせの結果で商品画像の URL を返さないときの処理を追加
  2. 商品画像の確認は 5 秒おきに 5 回までリトライを行って、成功した時点で 商品画像への URL を確定する
 半月くらい試した結果、安定性も向上したように思いますので、 Ellinikonblue.com PukiWiki でも 公開することにしました。 もしご使用の方がいらっしゃいましたら、アップデートをご検討ください。

Jul 15, 2007 at 00:46 | コメント (0) | トラックバック (0)

地図系ウェブサービス API まとめ

[ ドキュメント » 参考資料・メモ ]

「 ぐるなびが API 公開、全国約 4 万件の飲食店情報が利用可能に」CNET Japan より)

 エントリを書いている際、まれに地図情報が必要になるときがあるので、 そのうち何らかのサービスもしくはその API を利用して、 blosxom のプラグインをでっち上げたいと思っています。
 いつかその日がきたときのために、 ちょっと今現在気になっている地図系ウェブサービスを整理しておきます。

Jun 12, 2007 at 22:23 | コメント (0) | トラックバック (0)

デフォルトスタイルの差異をなくす CSS

[ ドキュメント » 参考資料・メモ ]

3ping.org 「 デフォルトスタイルの差異を無くす CSS 」

 blosxom の フレーバーを作るときなど、結構重要なテクニックになるそうな予感 (._.)φ

【ネタもと】

Jun 07, 2007 at 00:27 | コメント (0) | トラックバック (0)

asin_complex ライクなものを作るためのネタ

[ ドキュメント » 参考資料・メモ ]

「 バリューコマース、商品検索 API サービスをバージョンアップ -- システムも増強」CNET Japan より)

 blosxom で エントリ中で取り上げる商品をアフィリエイトと連携させたい場合、 意外に多そうでそうでもない Amazon.co.jp だけでは、 商品ラインナップとして物足りなさを感じることがあります。  楽天 API や、 バリューコマース ・ウェブサービス 2.0 などで、 asin_complex プラグインみたいなプラグインを作り込めないか研究したいと思っていますが、 やるとしたらちょっとまとまった時間が必要っぽい。
 asin_complex も 相当、手こずりましたし。。。

Jun 04, 2007 at 22:16 | コメント (0) | トラックバック (0)

gin プラグイン仕様 v2007.5.4

[ プラグイン » 仕様 ]

 blosxom における エントリのメタ情報を一括してインデクシングするプラグインを こつこつ作っていました。 gin(Generate INdex) プラグインと命名しました。 ジン (gin) は様々なカクテルのベースになるお酒なので、それにちなんでみました。
 この gin プラグインが、ある程度形になってきましたので、 とりあえずここまでの仕様とまとめておきます。
  1. エントリの分類(カテゴリ)、エントリ日時を一括してインデクシングします
  2. インデクシングされた情報は JSON 形式で出力されます
  3. エントリの分類情報で、子カテゴリ数を親カテゴリに含めるかどうかは、 このプラグイン内で設定します
  4. エントリの分類名に対するエイリアス(別名)は、このプラグインが出力する JSON ファイルに記述します
  5. gin プラグインが出力する JSON ファイルを元にする archives/categories プラグイン互換のプラグインを用意しました
    (現在このページで使用中)
 分類情報の JSON ファイルは以下のようになります。
{
	{ "directory": "/home/public_html/devlosxom/data", "count": 7 },
	{ "directory": "/home/public_html/devlosxom/data/About", "count": 2, "alias": "このブログについて" },
	{ "directory": "/home/public_html/devlosxom/data/Doc", "count": 4, "alias": "ドキュメント" },
	{ "directory": "/home/public_html/devlosxom/data/Doc/Idea", "count": 1, "alias": "アイデア" },
	{ "directory": "/home/public_html/devlosxom/data/Plugin", "count": 1, "alias": "プラグイン" },
	{ "directory": "/home/public_html/devlosxom/data/Plugin/Spec", "count": 1, "alias": "仕様" }
}
 エントリ日時情報の 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
}
 今後、さらに以下の機能を追加していく予定です(優先順位順)。
  1. entries_kache プラグイン に同期して、メタ情報を更新するようにする
  2. 最終的には entries_kache プラグインの機能を取り込んで、 entries_kache プラグインが出力するエントリに関するメタ情報も JSON 形式で出力するようにする
 entries_kache プラグインと同期して更新するところまでできれば、 Ellinikonblue.com Weblog の方でも紹介して、 そろそろこのブログもオープンにしようかな。。。

May 05, 2007 at 13:52 | コメント (0) | トラックバック (0)

nofound プラグイン仕様 v2007.4.18

[ プラグイン » 仕様 ]

Ellinikonblue.com Weblog 「 nofound プラグイン」

 ずいぶん前に Ellinikonblue.com Weblog の 方に書きましたが、 徒書notfound プラグイン をベースにした nofound プラグイン が何とかできました。
 これ以上手を加えることもないとは思いますので、 その改変した部分を仕様としてまとめておきます。
  1. @noindex_flavours に設定したフレーバーに対して、インデックスページを要求する (例 index.writeback )は not found を返すように設定可能にした
  2. 設定値 @except_flavours, @noindex_flavours は正規表現形式ではなく、 リスト形式で記述できるように変更

May 04, 2007 at 13:39 | コメント (0) | トラックバック (1)

iCalendar 形式のエントリ日付データを生成する

[ ドキュメント » 参考資料・メモ ]

 どこまで意味があるかは不明。
 イメージとして、iCal でエントリ日時のメタ情報をはけば、 例えば Google カレンダー のような オンラインカレンダーサービスとマッシュアップしておもしろそうなものができそうな気がする。。。
 何となく調べていると、iCalender 形式の仕様が出てきたのでとりあえずメモ (._.)φ

Apr 18, 2007 at 00:13 | コメント (0) | トラックバック (0)

nofound プラグイン

[ ドキュメント ]

 先般 から blosxom の エントリをインデックス化するプラグインを試作しているのですが手間取っています。
 インデックスを JSON 形式で出力すると決めたところまではよかったのですが、 何を思ったか(って一応、それなりに思うところはあったのですが…) この JSON 形式の ファイル入出力を CPANJSON モジュール を 使わないと決めたのが運の尽き。出力はそれなりにできたのですが、入力でこけてます。
 しかし、JSON モジュール は使わないという ポリシーは貫こうと思うので、もう少しこちらは時間がかかりそう。

 それと並行して、徒書notfound プラグイン の改造をやっています。
 Ellinikonblue.com Weblog の方のことなんですが、 以前から妙な URL へのアクセスが頻発していて、一度、この notfound プラグイン を導入してみたことがあるのですが、 オリジナルのままではこのアクセスを排除できませんでした。
 ただ発想は同じ方法で排除できると思うので、本来インデックスページがあるはずのない フレーバー のインデックスページへのアクセスを排除する機能だけを付け加えようと思ったのですが、 とちくるって全面改装しています。 ということで、名前も nofound プラグイン と改名しようかと。 できあがればですけどね f^-^;

Apr 07, 2007 at 00:15 | コメント (0) | トラックバック (0)