目次
YukiWiki2への機能追加とその仕様
WalWikiはWalrus:WalWikiで配布されている、YukiWikiにいくつかの機能追加をしたWikiWiki? Cloneです。
現在、YukiWiki 2.0.0をベースとしたものを配布しております。
Walrus:MoreInformation、Walrus:RecentChangesもごらんください。
追加機能の仕様
概略レベルですが。
別名リンク
[[タイトル URL/WikiName]]とすると、表示されるのはタイトル、リンク先はURL/WikiNameに対応したページになります。
- 多くのWikiでは[[URL/WikiName タイトル]]の順ですが、記述の自然さからこの順に。
- [[YukiWiki http://www.hyuki.com/yukiwiki/index.html]]のように使用します。
- $InterWikiNameで指定したページでは動作しません。
Amazon Associate Program用のInterWikiNameを登録するためのオプション。
- $1内から'-'を取り除きます。
- $1が/^(?d-?){9}[0-9x]$/にマッチする時だけ作用します。
- [[ISBN http://www.amazon.co.jp/exec/obidos/ASIN/isbn($1)/walrdigi-22]]のように登録し、[[ ISBN:012-345-678-9 ]]のように使用します。
- walrdigi-22の部分は各自のIDにして下さい。
Inter Wiki Box
[[ #box : InterWikiName ]]とすると、小さなインプットボックスとSubmitボタンが生成されます。
適当なテキストを入れてSubmitすると、テキストをInterWikiNameの$1に与えた際のURLが開かれます。
([[ ]]内での順序が変わりました)
HTMLの直接記述
<HTML>だけの行から、</HTML>だけの行まではHTMLを直接記述できる。
- スクリプト中で指定したページのみHTMLモードを使用可能。
- スクリプト中で指定したHTMLタグみ使用可能。
- より強い安全対策が必要。
Wikiアンテナ
他のサイト/Wikiの更新情報を取得し、表示する機能。
Walrus:WikiAntennaテクニカルもご覧ください。
- InterWikiのように、Walrus:AntennaSiteNameに登録したページの情報を、好きなページにWalrus:WikiAntennaの例のように設置できる仕組。
- YukiWiki/WalWikiの更新履歴ページと、RSSに対応。
- ...のつもりなんですが、RSSやRDFの仕様を知らないので、とりあえずみようみまね。
- HTTPプロトコルで取得できるサイトにのみ対応。
- HTTP::Liteモジュールの制約。
- LWP::Simpleなどが使える環境であれば、そちらを使うとHTTPSでもFTPでもOKですね。
- 負荷低減のため取得頻度は抑え目。
- 30分以内に更新情報を取得しているサイトについては、キャッシュを使用。
- 表示が必要な時だけ取得。
リンクキャッシュ
1ページ内に同じ単語でのリンクが何度もでてくる時、前回の変換結果を使ってオーバーヘッドを減らす機能。
特にYukiWikiDBを使っている場合、1リンク変換するごとにタイトル行を取りにいってファイルの開閉してるため、効くのではないかと。
- 一度make_linkしたリンクは、変換結果をハッシュに入れておく。
- メモリを圧迫しないよう、ハッシュに入れてられる1リンクあたりのサイズを制限
- 2度目以降はキャッシュされていれば、それを使用。
データ更新時のロック
データ更新時はflockを使用。
YukiWikiDBによるデータ変更では、さらに一時ファイルを使用してディスク書き込み後、アトミックなrename使用。
- カウンタなど、更新の激しいCGIで一般的な手法しか使ってません。
間借りコーナー:もうちょっとだけ、こうならいいのに計画。
YukiWiki や WalWiki の魅力には、そのシンプルさもありますが、「色んなことに使える wiki」だけに、用途によっては「あともうちょっとだけ、こうならいいのに」と思うことがあります。
そこで、散在している「ちょっとこうしてみたコード」の情報を、リンク集として纏めてみようという計画です。
まだかなり未整理ですが、WalWiki を改造するための手がかりリンク集。
- sbox さんのページにはいつもお世話になっています... YukiWiki向けにも、こういうページがあったらいいですね。