■概略
blosxomというブログcgiを設置してみたりプラグインを作ってみたり人のプラグインを見て感心したりするもの

■暦
2004年12月
      01 02 03 04
05 06 07 08 09 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
Report
1 [Blosxom3.0] timestampプラグイン 04/07/02 01:45
04/07/02 (いしだ) Comment

[3.0] 記事を編集しても日付が変わらないようにするプラグイン。 timestamp.pm

要はentries_indexプラグインと全く一緒なんだけど、日付のエディット機能がついてます。

Blosxom3.0設置場に設置したので興味のある人は動作を見てやって下さい。

右側のメニューその2のところの「記事の日付を変更する 」ってのをポチッと押すと日付編集モードに変わります

インストール
{handlers.flow}
 
Blosxom::find_entries
Blosxom::timestamp::run
Blosxom::sort_entries
( ・∀・)つ〃∩ ヘェーヘェーヘェー

直リン | 編集 | コメント

2 entries_indexプラグインを3.0でも使えるように 04/06/30 03:26
04/06/30 (いしだ) Comment
entries_indexのラッピングプラグインを作りました。

詳しいことは↓
http://blosxom3.s60.xrea.com/blosxom/plugin/entries_indx_3.0_plugin.html



あとcategoriesのユーザー設定的な変数をsettingsに書けるようにもしました。

詳しいことは↓
http://blosxom3.s60.xrea.com/blosxom/plugin/categories_3.0_plugin.html


ところでstateディレクトリのパーミッションには注意しましょう。
settingsファイルの改行コードにも注意しましょう。
↑で小一時間ハマってしまいましたのでとっても手抜きな記事です。

あぁもうこんな時間
( ・∀・)つ〃∩ ヘェーヘェーヘェー

直リン | 編集 | コメント

3 entries.flowファイルが読み込まれない現象について 04/06/29 01:24
04/06/29 (いしだ) Comment

編集途中でエンター押してしまった... 弁明ついでにもう1つ何か書きます。

Blosxom3.0+3iでは「handlers.flow」に書いたフローが読み込まれないという現象が起こっているようです。
しょうがないので私はメインのcgiを↓のように書いて使ってます。

#!/usr/bin/perl
    
use Blosxom;
    
    
my $blosxom = new Blosxom;
    
my $basedir = File::Spec->rel2abs('.');
$basedir =~ s!\\!/!g;  # 「Windowsでも動け!」というおまじない
    
my $settings = {
    basedir             => $basedir,
    find_entries_dir    => "$basedir/data",
    plugin_dir          => "$basedir/plugins",
    state_dir           => "$basedir/state",
    settings_subdir     => '.settings',
    templates_subdir    => '.templates',
    default_flavour     => 'html',
};
    
$blosxom->settings($settings);
    
    
# メインフロー前半 ベタ打ちです。
$blosxom->get_plugins();
Blosxom::xrea::parse_request($blosxom);  # xrea対策プラグイン
$blosxom->find_settings_and_handlers();
$blosxom->handle_settings();
$blosxom->handle_handlers();
    
$blosxom->run_flow();

メインフローの前半(settingsとhandersの読み込みまで)をベタ打ちして、後半部分は「handlers.flow」に書いてます。
あとsettingsの中には、ファイルに書いてもしょうがないものがあるので
そういうものはメインcgiに、それ以外はsettingsに、という感じで分けて使ってます。

「正式版リリースされるまで待ってろよ」という声が聞こえてきそうなので寝ます。泣






カテゴリがその他だと寂しいので「お知らせ」のとこに書くことにしました。どうでもいいか

( ・∀・)つ〃∩ ヘェーヘェーヘェー

直リン | 編集 | コメント

4 2.0のcategoriesプラグインを3.0で動くように 04/06/29 00:48
04/06/29 (いしだ) Comment

categoriesプラグインの3.0ラッパーを作りました。

ソースはこんな感じ categories.pm

pluginsフォルダに2.0のcategoriesプラグインと一緒に保存して
メインフローの「find_entries」と「sort_entries」の間に「categories::start」を入れると動作します。
それ以外の仕様は本家と全く一緒(のハズ..)

本家のcategoriesファイルに手を加えずに実現できたので少し嬉しい。
この調子で既存のプラグインのラッパーを作り続けていれば、いつか汎用的なものに辿り着くかもしれない。ワクワク。

blosxom3.0設置場で元気に動いてます。

( ・∀・)つ〃∩ ヘェーヘェーヘェー

直リン | 編集 | コメント

5 04/06/26 03:34
04/06/26 (いしだ) Comment
Blosxom3.0は記事フォルダの階層ごとにtemplate,settings,flowの三点セットが定義できるようになっているので、そいつらをブラウザから操作できるコントロールパネルがあったらステキやん?と思いました。とても。
これから布団に入って寝ながら構想を練ろうと思います。

寝ながら設計してモノになった試しがないよなぁ とも思いました。

明日明日 明日がんばろう
( ・∀・)つ〃∩ ヘェーヘェーヘェー

直リン | 編集 | コメント

6 04/06/24 03:06
04/06/24 (いしだ) Comment
今気づいたんだけどBlosxom3.0は記事の階層ごとにsettingsもhandlersも設定できるんだな。
.htaccessと同じような感じで、一番内側のフォルダにある設定ファイルが適用されるような気がする。
ソース読んだだけで実験してないけど...

mtに対抗するためにコントロールパネルのプラグインを作れないかなと妄想してたんだけど、これは面白そうだ。
北国っぽいことができるんじゃないかしら

しかしこれを踏まえるとhandles.flowが読み込まれない問題がどう解決されるのか見ものだ。
設定ファイル読み込みを最初に実行しようとしてもparse_requestを最初にしないと読み込むファイルが決定できないし
でもparse_requestの中で{settings}->{default_flavour}使ってるから循環

デフォルトフレーバーはhtml固定でいいんじゃねーのと無責任に考えてみたり

中のRael Dornfestさんに頑張れ念力を送ります。エールのオーラ。
みんなも送るといいよ。
( ・∀・)つ〃∩ ヘェーヘェーヘェー

直リン | 編集 | コメント

7 Blosxom3.0+3i。xrea上のアレコレ 04/06/24 00:54
04/06/24 (いしだ) Comment

今日たまたまxreaを覗くいてみたらPC用サイトの受付やってたので借りて設置しました。

http://blosxom3.s60.xrea.com

例によって設置しただけでは動きませんでした。
何だかよくわかんないんだけどxreaさんトコはperlで

use CGI;
    
my $cgi = new CGI;
    
$cgi->path_info();

ってやると、URLの***.cgi以降のパスが2回繰り返されて返ってくるみたい。(オレだけ?)

つまり「http://oreore.oredayo.com/Blosxom.cgi/unko/morimori/index.html」というURLでアクセスするとほんとは「/unko/morimori/index.html」が返ってきて欲しいんだけど「/unko/morimori/index.html/unko/morimori/index.html」と二回繰り返されたものが返ってくるようで、これがpath_info変数に影響を与えていました。

原因が判明したので、今回もプラグインで修正。
「繰り返しっぽい文字列だったら真っ二つに切り裂く。」という処理を加えました。 これ→xrea.pm
「Blosxom::xrea」パッケージで「xrea.pm」プラグインを作成。こいつをpluginsフォルダにあげて、index.cgiの中でメインフローが並んでいる箇所を書き換えます。

#   ↓修正する前の行だよ
#   'Blosxom::parse_request',
    'Blosxom::xrea::parse_request',

これで記事が表示されました。めでたしめでたし。

( ・∀・)つ〃∩ ヘェーヘェーヘェー

直リン | 編集 | コメント

8 blosxom3.0+3i。設定とかフローの外部ファイル化についてちょっと 04/06/23 00:36
04/06/23 (いしだ) Comment
blosxom3.0は設定を外部ファイルで定義することができるそうです。
今まではBlosxom.cgiの中身を直接編集してエンヤコラしていたのが設定ファイルみたいな感じで外部に出たので
blosxomの設定を変更するプラグインとかが出てくるかもしれません。

「何だよ、設定ファイルがあるんだったらindex.cgiで$blosxom->settings($settings); なんてやらなくていいんじゃん。全部settingsファイルに移しちゃえー!」
と安易に思って全部移してみたんだけど、、、そしたら動かなくなった。何で?



Blosxom3.0のフローって初期状態では以下のように進むんだけど

get_plugins  (プラグインフォルダにある.pmファイルをオラオラとrequireする)
parse_request  (URLの後ろの文字列を解析して日付だとかカテゴリだとかを判断する)
find_settings_and_handlers  (.settingsフォルダを漁って設定ファイルを見つける)
handle_settings  (設定ファイルから変数に値をセット)
(↑ココ!!)
handle_handlers  (設定ファイルからメインフローとエントリごとのフローを読み込んでセット)

handle_settingsのところでやっと設定ファイルが読み込まれるってスンポーなので
それ以前のget_pluginsとかで既に参照されている変数は、最初にセットしておかないといけないみたいだ。
なるほど、そりゃそうだよな。

find_entries_dir
plugin_dir
state_dir
settings_subdir
default_flavour

というわけで、外部ファイルにいけなかった可哀想な変数たちを晒しておきます。
彼らはindex.cgiの中で設定してあげないといけません。
settingsファイルの世界には行けないんです。生`。

あれ?「plugin_dir」がカブってるじゃないか。片方消しても問題ないので消しちゃいましょう。
「default_flavour」は設定ファイルでも生きられると思ってたんだけどダメだった。以外。
あと何だか一見重要そうな「basedir」変数はどこからも参照されていなかったです。あと「state_dir」も。きっとプラグインがブイブイ使うんでしょう。

「templates_subdir」が設定ファイルでOKというのはなんだかステキな予感がします。私だけですか。



眠くなったのでフローの外部化についてはまた今度ゆっくりとやります。
( ・∀・)つ〃∩ ヘェーヘェーヘェー

直リン | 編集 | コメント

9 blosxom3.0+3i。windows上でのアレコレ 04/06/22 23:52
04/06/22 (いしだ) Comment
blosxom3.0+3iを入れました。
ほいでwindowsで動かそうと思ったら色々と問題にぶつかったので忘れないようにメモしておきます。

★環境

WindowsXP + Apache2.0.49 + ActivePerl5.6.1
Blosxom.pmと同じフォルダにindex.cgiというファイルを作成してそこから呼び出している

index.cgiの中身はこんな感じ

★記事がいっぱいあるはずなのに何故か1つしか表示されない。

+3iをダウンロードして解凍するとdataディレクトリに何個かの記事があります。
ホントならこれらが全部表示されるハズなのに一個しか表示されない。

Blosxom::render_entryルーチンの中で記事ファイルのinode情報を取得して記事が重複しないようにしている部分があります。
windowsではinode情報なんて取得できないので全て同じファイル扱いとなってしまい、記事がいくつあっても1件しか表示されないみたいです。
render_entryルーチンを書き換えればいいんだけど、なるべく本体には触らないようにしたいのでプラグイン的に修正することに。
Blosxom::Windowsという勝手なパッケージ名で、inodeチェックをハズしたrender_entryルーチンを作ります。
それをwindows.pmというファイル名でpluginsフォルダに保存

package Blosxom::Windows; sub render_entry { my $self = shift; # $self->{rendered}->{ $self->{state}->{current_entry}->{inode} } # and $self->{state}->{stop}->{handlers}->{entry}++, return 0; my $template = $self->get_template('entry'); $self->{entries}->{ $self->{state}->{current_entry}->{id} }->{rendered} = $self->interpolate($template); $self->{rendered}->{ $self->{state}->{current_entry}->{inode} }++; push @{$self->{response}->{entries}}, $self->{state}->{current_entry}->{id}; 1; } 1

あとはdata/.settingsフォルダのhandlers.entryの中を
Blosxom::render_entry
 ↓
Blosxom::Windows::render_entry
と修正。アレ?「Blosxom::render_entry」の行がコメントアウトされてる。何だコリャ?まぁいいか。
コメントを外して上記の通り修正。おお、いっぱい出てきた。


★permanent linkのURLを開いても記事が表示されない。

Blosxom::filter_entry_by_pathルーチンが邪魔をしていました。
permanent linkのURLで開こうとすると、パスの部分に一致する記事ファイルだけを表示させるためにフィルターがかかるのだけれど
URLのパスは「/folder/work」で、記事ファイルは「\\folder\\work」なのでいつまでたっても一致する記事が発見できません。

例によってBlosxom::Windows::filter_entry_by_pathルーチンを作ります。
↑で書いたWindows.pmファイルの中に追加して書きました。

sub filter_entry_by_path { my $self = shift; # \\ を / に置換してから比較するように変えた my $tmp = File::Spec->catfile($self->{state}->{current_entry}->{path}, $self->{state}->{current_entry}->{fn}). '.' . $self->{request}->{flavour}; $tmp =~ s!\\!/!g; unless ( $self->{state}->{current_entry}->{path} =~ /^$self->{request}->{path_info}/ or $self->{request}->{path_info} eq $tmp) { $self->{state}->{stop}->{handlers}->{entry}++, return 0; } 1; }

上と同様にhandlers.entryの中を今作ったルーチンに置き換え。
Blosxom::filter_entry_by_path
 ↓
Blosxom::Windows::filter_entry_by_path

よく似た名前でBlosxom::filter_entry_by_dateというのがあるので間違えないように。
なんとか記事が表示されました。ワッショイ

( ・∀・)つ〃∩ ヘェーヘェーヘェー

直リン | 編集 | コメント

10 ブロッサムについての個人的備忘録スタート 04/03/10 11:59
04/03/10 電波2ちゃんねる (2ch-blog) Comment
ブロッサムについての個人的備忘録スタートです













( ・∀・)つ〃∩ ヘェーヘェーヘェー

直リン | 編集 | コメント

Powered by PUBLOG

[Blosxom3.0] timestampプラグイン
entries_indexプラグインを3.0でも使えるように
entries.flowファイルが読み込まれない現象について
2.0のcategoriesプラグインを3.0で動くように


Blosxom3.0+3i。xrea上のアレコレ
blosxom3.0+3i。設定とかフローの外部ファイル化についてちょっと
blosxom3.0+3i。windows上でのアレコレ
ブロッサムについての個人的備忘録スタート