久々に更新。
元祖Wikiの伝統に則り、ページのh1ヘッダを「このページへのリンク」をサーチする アンカーにしていたのですが、クローラがそのリンクを辿るためにサーバに意味の無い負荷が かかっていました。逆リンクを検索するのはそれほど頻繁に使う機能でもないので、 ナビゲーションのボタンの方でPOSTリクエストで起動するように変更しました。
ソースコードリポジトリをSourceforge.netからgithub.comに移行しました。
https://github.com/shirok/WiLiKi
ソースコードリポジトリをsubversionからgitに移行しました。
git://wiliki.git.sourceforge.net/gitroot/wiliki/WiLiKi
(read-only)
ssh://USERNAME@wiliki.git.sourceforge.net/gitroot/wiliki/wiliki
(developer only)
ここまでの変更をまとめて0.6.2としてリリースしました。
https://sourceforge.net/projects/wiliki/
<code></code> を挿入できるマークアップを追加しました。3連ダブルクオートで
囲みます。例: gauche-config --reconfigure | sh
ダブルクオート二つだと空文字列の表記とかぶるので3つにしました。 行頭空白を使ったpre表記でpythonのコードを貼り付けてる場合は 問題が出ちゃうかもしれませんが…
マークアップはあまり増やさずにマクロでなるべく対応する方針なんですが、 <code>もしくは<tt>は前からずーっと要るなあと思っていたので この際だから入れちゃいました。
あと、書くのを忘れていたけれど、(make <wiliki> ...)
に渡す
:style-sheet
オプションに複数のスタイルシートを設定できるように
なっています (文字列のリストを渡す)。
スパム対策はちょこちょこアップデートしています。
最近、一行だけこそっとspam linkを置いて行く編集が入るようになりました。 マークアップ文法としてはvalidなので機械的にはじくわけにもいかず、 仕方ないので書き込まれたurlに対するblacklistingを導入しました。
spamに気づいてrevertした場合、log messageにその旨入れといてください。 後でチェックして必要ならblacklistに追加します。
spamに対するアドホックな対策をちょこちょこと入れています。
(make <wiliki> ...) の引数に :event-log-file <filename> を与えると、 rejectしたspamについての情報などを<filename>に記録してゆくようにしました。
前回のリリースから1年以上経っているので、とりあえずここまでの変更をまとめて version 0.6.1としてリリースしました。
サーチエンジンで検索した際に、c=eつきのリンクの方が先に出てきてしまい、 そこから訪問するユーザがいきなり編集画面を見てしまうのは不便、という話がありました。 既に編集画面への遷移はformで行うようになっていますが、少なくともこのWiLiKiに 関しては、以前拾われたc=eつきURLがいまだに生きているとみなされているようです。
そこで、c=eによる編集画面への遷移はPOSTのみを許容するようにしました。 GETでアクセスにゆくと閲覧画面へとリダイレクトします。 (ただし、編集履歴からの編集画面への遷移('t'パラメータつき)はまだGETを許しています。 こっちも問題になるようなら考えます)。
存在しないページを指すWikiNameにもc=eつきのリンクが生成されていましたが、 こちらは新たにc=nというアクションを作りました。「ページがまだ存在しない時のみ、 そのページの編集画面になる」という動作をします。ページが既に存在していたら 閲覧画面へとリダイレクトします。
RSSにページ内容を入れたいという要望をちらほら聞いていたので、対応しました (rev420)。 RSSに最近更新されたページの(1)従来どおりタイトルのみ、(2)wikiマークアップされた原文、 (3)HTMLフォーマットされた内容、のどれを入れるかをサイト単位で設定できます。 また、(2)(3)の場合は全文配信か部分配信かも選べます。
cgiスクリプト内にこんな感じで指定を入れます。
(use wiliki.rss) (rss-item-description 'html)
rss-item-descriptionの引数は以下のシンボルのいずれかで。
*-partial で何行分取るかはrss-partial-content-linesを呼べば変えられます。例:
(use wiliki.rss) (rss-item-description 'html-partial) (rss-partial-content-lines 30)
none以外はRSSが要求されるたびにDBの複数ページへのアクセスが発生するので 重くなります。性能が問題になるようならキャッシュするかもしれません。
html, html-partialで、リードマクロの展開はいまのところ行っていません。 しばらく使ってみて具合をみようと思います。
なお、上の指定方法は "?c=rss" をつけてアクセスした場合のデフォルトの 形式をサイト単位で設定するものですが、その設定にかかわらず "?c=rss&type=html-partial" などとURLで指定することで 別形式でRSSを得ることが可能です。
しばしば要望が出ていた、コメント内のテキストを検索から除外する 処理を入れました。コメントに隠して検索にヒットさせる、みたいな 用法を考えていたのだけれど、凝ったことがしたければそういうマクロを 書けば良いし、むしろ通常の使用においては混乱の元、と考え直しました。
ページにタグをつけられる機能を試しに入れてみました。 ページの末尾に(末尾じゃなくてもいいんだけど) [[$$tag 継続 call/cc]] のようにマクロを書いておくとそれがTag:継続、Tag:call/ccなどの ページへのリンクになります。これらのページはvirtual pageで、 同じタグを持つページのリンクの一覧を表示します。 (クローラのアクセスにより検索が頻繁にトリガされるのを防ぐため、 virtual pageは検索結果をキャッシュします。従ってタグを 編集しても最長で1時間はTag:*のページに反映されません。 "Update cache now" のボタンをクリックするとキャッシュを破棄して 検索しなおします。)
あと、writer macro内でもwiliki:current-pageにアクセス可能に なっています。
いつまでもちょこまかいじっていてもキリがないので、 ひとまずの区切りとして0.6をリリースします。 スナップショット的な意味合いが強いです。特に内部APIはまだまだ 変更の可能性が高いです。 ダウンロードはSourceForgeの ページからどうぞ。
追記(2008/02/15 04:49:15 PST): 0.5.xから0.6へアップグレードした場合に、ボタンなどの メッセージが日本語にならない場合がありかもしれません。 0.6ではgettext形式のメッセージカタログを使うようになっていて、それが
${prefix}/share/locale/ja/LC_MESSAGES/WiLiKi.mo
にインストールされるのですが、ここがgettextのカタログサーチパスに 入っていないと日本語のカタログが見つけられずに英語になります。 その場合、wiliki.cgiのmake <wiliki>のところに :gettext-pathsキーワード引数でディレクトリ名を与えてください。 例えばprefixが/usr/local (デフォルト) であった場合はこんな感じです。
(wiliki-main (make <wiliki> ... :gettext-paths '("/usr/local/share/locale/") ...))