Ellinikonblue.net Devlosxom

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

Posted on Oct 07, 2007 at 20:53

この Devlosxom に迷い込まれた方へ

 10/5 に Ellinikonblue.com の トップページを大幅に更新したため、そろそろこの Ellinikonblue.net Devlosxom に 迷い込まれる方が出てくるかと思いますので。。。

 このサイトは最初のエントリ 「 はじめに」 にも書きましたが、 blosxom 関連の 開発を中心に様々な実験を行うために運用していますので、常に安定した閲覧は保証しかねます。
 また Ellinikonblue.com Weblog とは異なり、 rwbc プラグイン を 導入していませんのでトラックバック、コメントには即座に反応できませんし、 古いエントリへのトラックバック、コメントには気づかない可能性があります。 また wikieditsh プラグイン を導入していないためにこちらからトラックバックをお返しすることもできません。
 これらの未導入のプラグインに起因する問題はそのうち何とかするつもりですのでご容赦ください。

 またこちらで開発、実験を続けているプラグインですでにある程度完成しているものはありますが、 納得できる完成域に入ったら、 Ellinikonblue.com Weblog で 報告しますので、常にはそちらをご覧いただいていればよいかと思います。

 まぁ陰でこそこそこういうこともやっているんだと言うことを 頭の片隅にでもおいといていただければ十分かと思います。 以後、お見知りおきを m(_ _)m

Posted on Sep 25, 2007 at 23:26

AJAX な折りたたみ

小粋空間 「 WordPress で『続きを読む』の折りたたみ Web2.0 」

 ちょっと前からやってみたいと思っていた AJAX ライブラリを使った ナビゲーションの折りたたみ。上記のページを参考に(ぱく…?)すればできそうな感じ。
 メモっとこう φ(.. )
Posted on Sep 17, 2007 at 13:05

gsitemap 仕様 v2007.9.16

 bsnap_hs/bsnap_tx プラグイン より先に手をつけていた gsitemap プラグイン を公開しました。
 entries_kache プラグイン のインデックスファイル出力タイミングとのかねあいで、 試行錯誤したために少々手こずった上、詰めの際に凡ミスを連発しましたが何とか entries_kache プラグイン のインデックス更新タイミングに同期して、 出力できるようになったので、ここで FIX しました。

 以下に 2007 年版 gsitemap プラグイン の 2007.9.16 時点の仕様をまとめておきます。
  1. entries_kache プラグイン が出力するインデックスファイルをサイトマップファイルに変換するため、 このプラグインのインストールは必須です。 インデックスファイルの仕様上、entries_index プラグインファイルでも代替可能。
     ただし、entries_index プラグインの場合は、アクセスごとにインデックスファイルが更新されるため、 サイトマップファイルもその都度更新されます。効率低下の原因になるため、 entries_kache プラグイン のインストールを強く推奨します。
  2. タイムゾーンの設定は自動で行うようになっています。 国外のレンタルサーバなどではプログラム的に修正が必要かもしれません。
    (要望があれば、手動設定するように修正することは簡単なので用意します)
  3. 本バージョンは 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>
Posted on Sep 12, 2007 at 22:08

bracket_fep 用 bsnap_hs/bsnap_tx プラグイン

 Highslide JS を利用した 機能強化版 snap_in プラグイン の実装はほぼ終わりました。
 highslide プラグインと命名しようかと思ったのですが、 あまりにもひねりがないので、 bsnap_hs プラグイン とすることにしました。
 この bsnap_hs プラグインは bracket_fep プラグイン 用のプラグインとして実装していて、 これまでの snap_in プラグイン 同様、エントリ内で
[imagefile.jpg]
とした位置に画像を挿入します。 ただし、プラグイン内のパラメータで指定する画像ディレクトリと サムネイルディレクトリに同名の画像ファイルが存在すると Highslide JS が有効になり、 通常状態ではサムネイル画像が表示され、クリックすると画像ファイルに拡大されます。
 サムネイルが存在せず、画像ファイルだけが存在する場合は、 これまでの snap_in プラグインと同様の動きになります (単にエントリに画像を挿入するだけ)。

 以下は Highslide JS を 有効にした場合の利用例。
Image:20070910highslide_on.jpg
 無効にした場合の利用例。
Image:20070910highslide_off.jpg
 上記二つの画像は、エントリテキスト上は同じ表現になっていますが、 サムネイルディレクトリに同名のファイルがあるかないかで 動作が変化しています。

 さて、もともとの snap_in プラグイン は、画像を取り込む以外に、定型のテキストを取り込む機能を有しています。 この機能も bsnap_hs プラグインに取り込もうと思ったのですが、 コードが汚くなりそうだったので、突貫で定型テキストを取り込むだけの bracket_fep プラグイン 用プラグインも別途用意しました。
 以下、その bsnap_tx プラグイン のテストです。
 我ながらいい感じなので、さていつ公開しようかな。。。というとこです。
 なんせこの Devlosxom だけで こそこそやってることなんで気軽気軽 (^ε^)
Posted on Sep 05, 2007 at 22:05

bfep 版 highslide プラグイン(仮称)開発開始

 いきなり Highslide JS を 利用したサムネイル対応画像挿入プラグインの実装に入りました。
 このエントリが開発のためのテストエントリになります。
 進行状況は、下図の写真をいじっているとわかるかも… (^^;>
Image:20070904bhighslide.jpg
Posted on Sep 03, 2007 at 22:18

Highslide JS で snap_in をパワーアップする

 …なんてことをしてみたい衝動に駆られました。 本当にできるかどうかなんてことまでは、今、考えが及んでません (>_<;>
 だいぶ前から、元絵とサムネイルを用意すればリンクして表示ができるように、 snap_in プラグイン を改良したいなとは思っていましたが、 とにかく 小粋空間Highslide JS が 使用されているのを見て一目惚れです。とにかくすてき )*^O^*(
 ちょっと時間ができたら、すぐに取り組みたいと思います。
# まずはきれいな実装ができるかどうかをじっくり考えるべし。。。
Posted on Sep 01, 2007 at 12:00

gsitemap プラグイン 2007 年版

 ひらめきました! (^^)b
 なにをかというと、 gsitemap プラグイン の新しい実装方法です。

 そもそもこの gsitemap プラグイン はどういうものかというと、 名前から察することができる方もいると思いますが、 Google サイトマップ に 提供する XML ファイルを生成するプラグインです。
 意外にこのプラグイン、うちのいい加減にでっち上げたプラグインの中では、 ご使用いただいている方の多いプラグインではあるのですが、 開発(と言うほど偉そうなものではありませんが) 当時 、 即興で作ったために、エントリ数が多いと Internal Server Error を引き起こす 問題を解決しないまま、サイトマップに記載するエントリ数を制限するリミッタを設定するという 超いい加減な方法でアドホックに対処して、ほったらかしにしていました。

 後になって冷静に考えると、専用フレーバーを使って blosxom の フレームワークをそのまま利用して、 サイトマップデータをメモリ上に生成するので、 あまりにもエントリ数が多い場合、メモリがオーバーフローするだろうとすぐに想像がつきました。
 ではデータをファイルとして生成してしまえばよいのですが、 この生成するスクリプトをどう実装するかと言う問題になります。 CGI で作り込んでしまえば、さほど労せずできそうですが、 それは blosxom の スタイルではありません。「機能はプラグインで追加する」というのが正道です。

 と言うことで悩んでいたのですが、最近、 gin プラグインに entries_kache プラグイン の機能を取り込んでいくにあたって、 このエントリインデックスファイルをサイトマップファイルに変換するプラグインにする と言う実装方法を思いつきました。
 これなら gin プラグインが entries_kache プラグイン の機能を取り込んでも、 JSON 形式のエントリインデックスを読み込む部分だけをすり替えるだけで使えそうです。
 方向性が決まれば、実装はそんなに難しくなさそうですので、 この Devlosxom の方で、 早速実験して、うまくいくようでしたら早々に公開したいと思います。
Posted on Aug 30, 2007 at 22:04

Devlosxom 公開準備開始

 幸い 仕様変更した ことで gin プラグインも不具合なく動作するようになりましたので、 gin プラグインが生成するインデックス情報を元に動作する archives/categories プラグインも含めて、 Ellinikonblue.com Weblog の方にも導入し、 これらに関しても現状問題なく動作しているようです。
 ひいき目もあるかもしれませんが、 現在 1,000 弱のエントリ数がある Ellinikonblue.com Weblog への 導入効果は絶大で、表示のもたつき感がなくなったように感じます。

 一応、gin プラグイン開発の STEP1 だと思っていたところまでは、 成果を上げたと判断しましたので、今後、STEP2 ( entries_kache プラグイン の機能を取り込みが最大の目標。あわせて余裕があれば、 gin プラグインのインデックス情報を利用する calendar プラグインを開発する)は 少し時間をおきたいと思います。
 その STEP2 開始までに、 ここまでの gin プラグインのコードをもう一度見直して、 シェイプアップする傍ら、 この Devlosxom の公開を、 Ellinikonblue.com 側の トップページ更改とあわせて準備していきたいと思います。

 Devlosxom 側の作業として、 いくつかプラグインを付け足してから、 Google Analytics へ情報送信を 開始していきたいと思います。
# その後は、Ellinikonblue.com 側の トップページ更改へ集中したいと思います。
Posted on Aug 12, 2007 at 00:25

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 の方でテストを開始するつもりです。
Posted on Jul 18, 2007 at 23:09

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