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_lt プラグイン仕様 v2009.1.17
bracket_fep
プラグイン 専用プラグインとして、
bsnap_lt プラグインの実装が一応終了しました。
事前に 仕様を考えました が 自動サムネイル機能以外は思ったより簡単に実装できました。
こちらの エントリ のように、エントリのごとに表示することもできますし、 すべての画像を こちらの エントリ のように個別に表示させることもできます。
またページごとにまとめて表示させることもできます。
ざっと仕様は以下の通り。
まぁひとまずできは悪くないので、 暇をみて Ellinikonblue.com PukiWiki の方に ページを作ってアップしたいと思います。
事前に 仕様を考えました が 自動サムネイル機能以外は思ったより簡単に実装できました。
こちらの エントリ のように、エントリのごとに表示することもできますし、 すべての画像を こちらの エントリ のように個別に表示させることもできます。
またページごとにまとめて表示させることもできます。
ざっと仕様は以下の通り。
- Lightbox2 利用
- blosxom エントリ中の 記述方法は snap_in / bsnap_hs プラグイン互換
- 実際の画像とサムネイルの結びつけルールは bsnap_hs 互換
- グルーピングなし、エントリごとグルーピング、ページごとグルーピングをオプションで設定可
まぁひとまずできは悪くないので、 暇をみて Ellinikonblue.com PukiWiki の方に ページを作ってアップしたいと思います。
bsnap_lt 要求仕様
gsitemap 仕様 v2007.9.16
bsnap_hs/bsnap_tx
プラグイン より先に手をつけていた
gsitemap
プラグイン を公開しました。
entries_kache プラグイン のインデックスファイル出力タイミングとのかねあいで、 試行錯誤したために少々手こずった上、詰めの際に凡ミスを連発しましたが何とか entries_kache プラグイン のインデックス更新タイミングに同期して、 出力できるようになったので、ここで FIX しました。
以下に 2007 年版 gsitemap プラグイン の 2007.9.16 時点の仕様をまとめておきます。
entries_kache プラグイン のインデックスファイル出力タイミングとのかねあいで、 試行錯誤したために少々手こずった上、詰めの際に凡ミスを連発しましたが何とか entries_kache プラグイン のインデックス更新タイミングに同期して、 出力できるようになったので、ここで FIX しました。
以下に 2007 年版 gsitemap プラグイン の 2007.9.16 時点の仕様をまとめておきます。
- entries_kache
プラグイン が出力するインデックスファイルをサイトマップファイルに変換するため、
このプラグインのインストールは必須です。
インデックスファイルの仕様上、entries_index プラグインファイルでも代替可能。
ただし、entries_index プラグインの場合は、アクセスごとにインデックスファイルが更新されるため、 サイトマップファイルもその都度更新されます。効率低下の原因になるため、 entries_kache プラグイン のインストールを強く推奨します。 - タイムゾーンの設定は自動で行うようになっています。
国外のレンタルサーバなどではプログラム的に修正が必要かもしれません。
(要望があれば、手動設定するように修正することは簡単なので用意します) - 本バージョンは blosxom の
動的生成の仕組みを利用していないために専用のフレーバは必要ありません。
その代わりに、出力されるサイトマップファイルの形式の変更には、 プログラム本体の変更が必要になります(そんなに難しい修正ではないですが…)。
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://www.ellinikonblue.com/blosxom/</loc>
<changefreq>daily</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>http://www.ellinikonblue.com/blosxom/blosxom/plugins/20070916gsitemap2007.html</loc>
<lastmod>2007-09-16T17:30:01+09:00</lastmod>
</url>
:(以下、繰り返し)
</urlset>
gin プラグイン仕様 v2007.8.11
対策を
施した にもかかわらず、また消えました。。。エイリアス情報 orz
アルゴリズム的に消えないと思っていましたが、 ここは消えた現実を真摯に受け止めて、気合いを入れ直してコードを見直したのですが、 私の能力ではもう解決不能。。。
と言うことで、仕様を変更することにしました。
これまでは gin プラグインが出力したカテゴリ情報ファイル (categories_index.json) に直接、カテゴリに対するエイリアス情報を 書き込んでいましたが、エイリアス情報は別ファイル (categories.alias) とし、カテゴリ情報出力時にエントリ情報シーク結果とマージして、 出力するようにします。
この仕様であれば、一度作成したエイリアス情報は基本読み込むだけですから、 消えることはありません。 また、gin プラグインが出力するカテゴリ情報を利用する categories プラグインを 作り替える必要もありません。名案!(自画自賛。失礼 (_ _"> )
エイリアス情報を記載する categories.alias ファイル(ファイル名はデフォルト)は 以下のようなディレクトリ名とエイリアス名をセットにして記載する JSON 形式ファイルとします。
そんなに難しい改造でもないので、時間さえとれればすぐにできると思います。 うまく動き始めたら即 Ellinikonblue.com Weblog の方でテストを開始するつもりです。
アルゴリズム的に消えないと思っていましたが、 ここは消えた現実を真摯に受け止めて、気合いを入れ直してコードを見直したのですが、 私の能力ではもう解決不能。。。
と言うことで、仕様を変更することにしました。
これまでは 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 の方でテストを開始するつもりです。
gin プラグイン仕様 v2007.5.4
blosxom における
エントリのメタ情報を一括してインデクシングするプラグインを
こつこつ作っていました。
gin(Generate INdex) プラグインと命名しました。
ジン (gin) は様々なカクテルのベースになるお酒なので、それにちなんでみました。
この gin プラグインが、ある程度形になってきましたので、 とりあえずここまでの仕様とまとめておきます。
この gin プラグインが、ある程度形になってきましたので、 とりあえずここまでの仕様とまとめておきます。
- エントリの分類(カテゴリ)、エントリ日時を一括してインデクシングします
- インデクシングされた情報は JSON 形式で出力されます
- エントリの分類情報で、子カテゴリ数を親カテゴリに含めるかどうかは、 このプラグイン内で設定します
- エントリの分類名に対するエイリアス(別名)は、このプラグインが出力する JSON ファイルに記述します
- gin プラグインが出力する JSON ファイルを元にする
archives/categories プラグイン互換のプラグインを用意しました
(現在このページで使用中)
{
{ "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
}
今後、さらに以下の機能を追加していく予定です(優先順位順)。
- entries_kache プラグイン に同期して、メタ情報を更新するようにする
- 最終的には entries_kache プラグインの機能を取り込んで、 entries_kache プラグインが出力するエントリに関するメタ情報も JSON 形式で出力するようにする
nofound プラグイン仕様 v2007.4.18
Ellinikonblue.com Weblog
「
nofound プラグイン」
ずいぶん前に Ellinikonblue.com Weblog の 方に書きましたが、 徒書 製 notfound プラグイン をベースにした nofound プラグイン が何とかできました。
これ以上手を加えることもないとは思いますので、 その改変した部分を仕様としてまとめておきます。
ずいぶん前に Ellinikonblue.com Weblog の 方に書きましたが、 徒書 製 notfound プラグイン をベースにした nofound プラグイン が何とかできました。
これ以上手を加えることもないとは思いますので、 その改変した部分を仕様としてまとめておきます。
- @noindex_flavours に設定したフレーバーに対して、インデックスページを要求する (例 index.writeback )は not found を返すように設定可能にした
- 設定値 @except_flavours, @noindex_flavours は正規表現形式ではなく、 リスト形式で記述できるように変更

