nDiki : WikiEngine
WikiEngine - Wiki エンジン
WikiForum を実現するソフトウェア。 Web ブラウザから誰でも編集できるページを提供する。
関連情報
- WiKicker
- emacs-wiki
- MediaWiki
- Kwiki
- JotSport
- Socialtext
スポンサード リンク
Related term
2003年9月19日 (金)
■ [ WiKicker ] If-Modified-Since: 関連作業ほぼ済

一昨日から着手した WikiEngine 改良作業。 NaneyOrgWiki で Last-Modified: HTTP ヘッダが出力されていなかったのは、単純に機能追加してから一度もページ更新がなかっただけだった(ページ更新があると DB の最終更新日を記録する機能を追加したので、一度も更新がないと更新日は未定という仕様にしたのを忘れていた)。 ダミーで編集をかけたらきちんと Last-Modified: を吐くようになり、あわせて If-Modified-Since: な GET に対して 304 を返せるようになった。
昨日まで RecentChanges と IndexPage に限定していたが、問題なさそうなので通常の WikiPage にも同様の処理を追加。 これで、何度か同じページをいったりきたりする閲覧がしやすくなるはず。
アンテナのようなデータベース外の情報により HTML 生成が変化するような機能を今後つけた場合は、その時またいろいろ考えなければいけないな。
- [ WiKicker ] If-Modified-Since: (2003-09-18)
- Wiki考 (2002-09-20)
- WiKicker における PageName 最長文字数 (2006-06-10)
- [ WiKicker ] Last-Modified: 実装準備 (2003-09-17)
- WiKicker に JSON でのページ出力機能を追加 (2007-04-03)
2003年12月31日 (水)
■ 私的10大ニュース2003

今年の大事件、マイブームなど。
@ [web] WiKicker 公開
オリジナル WikiEngine 「WiKicker」を公開し、 www.naney.org での運用を開始。 機能追加、負荷軽減など定期的にメンテナンスを継続中。 今年も1年 Wiki の年だった。
12月からは WiKicker ベースの日記システム「DiKicker」の開発も開始。
@ [comp] cool programs
- bogofilter ... spam メールが苦にならなくなった & 楽しくなった。
- SpeedyCGI ... WiKicker の高速化にかなり効果
- Unison ... 双方向同期では rsync より便利。
@ [net] ADSLトラブル
春の数ヶ月間悩まされ続けた。 一度常時接続に慣れてしまうと、もう戻れない。 結局モデムの故障。 その間「@FreeD」も契約してみたが、ADSL復旧に合わせて解約。
@ [comp] 適応型ソフトウェア開発
仕事でのソフトウェアプロジェクトでの適用を開始しはじめてみた。
@ [comp] ThinkPad X31 2672-PHJ
3年ぶりのメインノート PC の買い換え。 Pentium M 1.6GHz + 1GBメモリ。 また3年は頑張ってもらわないと。
@ [camera] TC-1、GR1s修理
愛用のTC-1が故障したため修理。 修理費16,300円也。
新規に購入したのは、Ai Nikkor 45mm F2.8P(10月12日)、 F3接眼補助レンズ 、 ドンケ F-2 ぐらい。 あまり散財しなかった。
今年は撮影枚数が伸びず。
近所のミニラボが閉店したのも痛い。
@ [misc] レザークラフト
昨年買ったままだったレザークラフトセットを使ってレザークラフトを始めた。 パスケース、LEDフラッシュライトケース x 2、ツールナイフケース x 2、露出計ケース などを製作。 最近は何も作ってないな。 また何か作りたい。
@ [misc] LEDフラッシュライト
LEDフラッシュライトに興味を持つ。 SureFire E1e + KL1 、 ARC-AAA 、 Arc LSL-P などを購入。
- [ WiKicker ] 日記機能開発開始 (2003-12-27)
- 私的10大ニュース2004 [ web ] (2004-12-31)
- ケータイ用にプライベート Wiki を設置 (2008-01-07)
- 私的10大ニュース2005 [ comp ] (2005-12-31)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
2004年2月10日 (火)
■ Wikiの文法の標準化

今まで触れなかったが、やはり文法拡張する際は気になる存在。
各方面で出ている賛否どちらの意見もうなずける点が多く、自分の思いつく点もだいたいどこかで語られている感じ。
私が最初に Wiki の存在を知ったのは、やまだ君からだった。 当然「記法(文法)は?」というのがまず気になった点だったが、その時すでに「Wikiの文法はWikiEngine毎に異なる」という事だった。
WiKicker という新しい WikiEngine を作る際には、もちろん各 Wiki の文法を調べたのだが、それはもう様々で。 「見出し」記号など単純に流派的なものと、ブロックやプラグインなど設計思想に依存するものがあって、特に後者はどれかを統一して選択するのは難しいと感じた。
WiKicker では(もともと利用していた) YukiWiki2 に emacs-wiki の [[A][B]] を加え、その他の文法要素と表記は、
- 見やすさ
- メジャー度
- WiKicker のベースの文法と衝突しない
- 行指向を採用(行を越えた、開始・終了を利用者が明記しないで済むように)
- 構文解析しやすい (実装の容易性は、高速化・独自ツール作成時に重要)
あたりをポイントに決めた。
@ 将来標準(ができたとして)に準拠する?
多分しないな。 面倒だし。
- [ WiKicker ] WiKicker へ脚注機能追加 (2004-02-10)
- [ WiKicker ] hell mode - HTMLタグ付けブロックの導入 (2005-09-13)
- 無制限 HTML タグ付けブロックを使って nDiki に Google ... (2007-08-23)
- [ WiKicker ] touch (2003-05-14)
- [ WiKicker ] リビジョンが追加されていかない (2003-04-22)
■ [ WiKicker ] WiKicker へ脚注機能追加

WiKicker スタイルで日記を記述するにあたり欠けている機能として「脚注」がある。 Wiki としては必須でないので WiKicker には導入していないのだが、日記としては無いと困る。 脚注が使えると文を書く時に正直手を抜ける。 また hns 上の旧記事をコンバートする時にも無いといろいろ面倒だし。
ということで実装。
@ インラインブロック
さてどうしたものか。 WiKicker の WRI (BracketName 等を含む識別子)としての実装なら、parser の変更もなく新しいWRI scheme の追加と対応するクラスを書くだけですむ。 しかし WRI は終端記号なので、そうすると脚注の中でWRIを使えなくなる。 それは困る。
ということで、やはり非終端記号が必要。 悩んだあげく、
{{scheme: ... }}
という「インラインブロック非終端記号」を導入。 {{..}} というのは確かいくつかの WikiEngine でプラグイン呼び出しで使っている記法だったような。
- 一般的な文章中には現れず、
- かといって文章中に混ぜてもそれほど違和感なく(wiki ではこれが重要)
- これ以上文法を追加したくないので、今後機能追加の際に利用できるように scheme 指定できる
といった点から、このようにしてみた。 2番目の点で合格点の出せる記法かどうかは微妙だが、まぁ許せる範囲かな。
{{ }} は、1行中に現れる必要有り。 「...」は scheme specific part だが、今のところ scheme によらず、InlineParser で解析されて部分木になるため、WRI とか ... とかも書ける。 InlineParser では正規表現を使っていて括弧の数は数えないので、今のところ {{ }} の中に {{ }} は書けないが、まぁ問題ないでしょう。
@ 脚注記法
で脚注は、
{{fn: ...}}
となる。 普通。
@ 実装
- InlineParser の拡張
- InlineBlockNode クラスの追加
- 各 Visitor に visit_InlineBlockNode を追加。
- HtmlFragmentVisitor に fn: の処理を追加。
いざ実装してみると、ちょこっとのコードで実現。 脚注番号の降り方とか、今後改良する点はあるけど、大枠は完成。
- Wikiの文法の標準化 (2004-02-10)
- [ WiKicker ] hell mode - HTMLタグ付けブロックの導入 (2005-09-13)
- 無制限 HTML タグ付けブロックを使って nDiki に Google ... (2007-08-23)
- WiKicker に JSON でのページ出力機能を追加 (2007-04-03)
- キックオフミーティング2日目 (2004-10-26)
2005年1月27日 (木)
■ 国際化識別子IRIのRFC

WiKicker を含めた WikiEngine など(非ASCII)キーワードからURIを生成するタイプのソフトウェア開発において今後要チェック。
- WiKicker における PageName 最長文字数 (2006-06-10)
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- [ WiKicker ] WiKicker へ脚注機能追加 (2004-02-10)
- [ WiKicker ] 複数のキーワード集合による、AutomaticLink (2004-02-07)
- [ WiKicker ] If-Modified-Since: 関連作業ほぼ済 (2003-09-19)
2005年4月10日 (日)
■ Windows 上での Apache 2.0.53 では PATH_INFO が シフト JIS に

WiKicker の Windows 上での動作確認の続き。 WiKicker のPPM パッケージを作成して ActivePerl 5.8.6.811 上にインストール。 依存するモジュールで、ActivePerl に入っていないものは以下の通り。
- Algorithm::Diff
- Jcode
- Log::Log4perl
- Time::Zone (TimeDate)
既に手元で PPM パッケージ化済みなので、これもインストールしておく。
後は RCS をパスの通っているディレクトリに入れてタイムゾーンを設定。
TZ=JST-9
で CGI プログラムとして実行。 お、表示できた。 書き込みはと。
エラー。
予想していたけれど、sendmail に依存していたところ。 sendmail が見つからない場合はメールの送信をスキップするように修正。
これでうまく動くかなと思ったら、日本語名のページを作るとうまく表示できない問題を発見。
@ PATH_INFO がシフト JIS で渡される
WiKicker では UTF-8 文字列をURIエスケープして WikiPage のURLを生成している。 このURIにアクセスされると WiKicker は、PATH_INFO から WikiName を取り出す。 この文字列がシフト JIS になってしまっている。
Windows がファイル名に使用する charset にあわせて、Apache が変換してしまっているようだ。 調べてみると他の WikiEngine でも同様の問題にあっているという記事が見つかった。
将来の 2.0 系でパッチが取り込まれて修正されるとか、そうでないとか。
現状どうするかなぁ。 WiKicker 側でシフト JIS から UTF-8 に戻すというのもできない事はないけれど、あまりやりたくはないな。 いったんシフト JIS を介しているという時点で、シフト JIS に無い文字の扱いに関する問題をかかえてしまっているし(Apache が)。
対策案:
- Apache 1.x 系を使う (まだ未確認だが、こちらだと勝手に変換されないらしい)
- WiKicker に PATH_INFO を使わないオプションをつける(URI Query Component は勝手に変換されない)
- WiKicker 側でシフト JIS から UTF-8 に変換する
- WiKicker における PageName 最長文字数 (2006-06-10)
- WiKicker 0.35 リリース - 添付機能の修正など (2006-06-20)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- PATH_INFO のかわりに REQUEST_URI と SCRIPT_... (2005-04-15)
- [ Perl ] Log::Log4perlのはまりどころ (2004-03-02)
2006年5月24日 (水)
■ 「s」文字をキー入力できない WikiEngine

昨日早速社内の Wiki を WiKicker 0.30 に上げておいたのだが、同僚からバグレポート。
「s」を入力できません。s を押すとプレビュー画面になっちゃいます。
あ。
Internet Explorer の JavaScript コードにバグあって、Ctrl+S でプレビュー画面に遷移するようにイベント処理していたつもりが、s キー一発でそう動いてしまっているらしい。
あわてて修正。
はやく WiKicker の修正リリースを出さねば。
- WikiPage 編集画面で Ctrl+S を押すとプレビューするようにしてみる (2006-04-29)
- WiKicker における PageName 最長文字数 (2006-06-10)
- WiKicker 0.31 リリース - s キー問題を修正 (2006-05-28)
- L10N改善を行った WiKicker 0.26 リリース (2005-05-10)
- WiKicker 0.34 リリース - 添付機能のコードを追加 (2006-06-11)
2006年6月10日 (土)
■ WiKicker における PageName 最長文字数

WiKicker では PageName を エンコードした文字列を URI に埋め込んだり、サーバで保存する際のファイル名にしたりしている。 このため、PageName の最長文字数はそれらの最長文字数に依存しているはずである。
今まで確認を後回しにしていたのだが、新しい機能の追加の際に確認しておく必要があるので調査してみた。
@ WiKicker の実装
WiKicker の実装がらみとして最長を決める要素としては
- PageName の UTF-8 表現を URI エスケープしてページ URI に含めている。→ URI、HTTP、HTML、Web サーバ、Web ブラウザの実装による最長の制約
- PageName を base64 にエンコードしてファイル名にしている。→ ファイルシステムのファイル名、パス名の最長の制約
がある。
@ 各仕様等による制約
- HTTP では URI の長さには制限なし (RFC2616 3.2.1)
- Web サーバは Request-URI が長いと 414 Request-URI Too Long を返す (RFC2616 10.4.15)。Apache は LimitRequestLine ディレクティブにより、URI を含むリクエスト行のサイズを制限することができる(配布時には 8190)。
- Internet Explorer が扱える URL の長さは 2083文字。
- ext2 はファイル名は 255文字まで(増やすこともできる)。
- 手元の Linux 2.6.15 で試したところ、パス名は 4095文字まで。
@ WiKicker で問題が出ない PageName 最長文字数
上記の中ではファイル名による制約が一番大きい。
WiKicker 内部でファイル名として base64 (の亜種) でエンコードしたものを使っているので、元の文字列はは最長 189バイトまでなければならない。base64 だと3バイトで4文字になるため、189バイトで 252文字となる。
WiKicker ではここでさらにファイル名に ',v'、'-lock' をつける事があるので、実際には元の文字列は最長 186 バイトまでとなる。
PageName が 186 バイトまでだとすると、URL エスケープしたとして558バイト。 WikiEngine のスクリプトの URL や他のパラメータとあわせても、これぐらいなら大丈夫のはずである。
ということで WiKicker では Linux 上だと通常 PageName は 186 バイトが最長と言ってよさそうだ。 日本語の文字はだいたい UTF-8 で3バイトになるので、62 文字までということになる。
そのうち、WiKicker に制約チェックを入れることにしよう。 そのうち。
- Windows 上での Apache 2.0.53 では PATH_INF... (2005-04-10)
- WiKicker 0.35 リリース - 添付機能の修正など (2006-06-20)
- 最後がピリオド(.)で終わるファイル名をつけられない (2005-04-19)
- WiKicker 実装 (2002-10-20)
- AWStats 6.0 (2004-05-21)
2007年8月23日 (木)
■ 無制限 HTML タグ付けブロックを使って nDiki に Google Maps を貼る

Google Maps が ID を取得しないでも簡単に自分のサイトに貼れるようになった。 Google Maps で表示される HTML コードをページに埋め込めば、好きな場所の地図を貼ることができる。 これは嬉しい。
早速 nDiki でも貼りたい。
しかし WiKicker という WikiEngine をベースとした DiKicker を使っている nDiki では、現在のところ直接 HTML コードを使えるようにしていないのである。
「HTML タグ付けを許すのは嫌」というスタンスできたのだが、他のサービスを貼るという魅力にはやはり勝てないな。 HTML 直書きを許すのは大局的にはデータ活用性などで好ましくない部分もあるが、各種サービスを活用できないで利用価値が下がるのは本末転倒なので、わかった上で使うということで。
ということで nDiki で HTML タグ付けブロック機能を有効に設定。
ちなみに現行では HTML::Scrubber ベースで、使えるタグ・属性に制限をつけるフィルタしか用意してなかった。これだと Google Maps のコードがそのまま貼れない。 ということで「DiKicker」および「書く人が限定されているような Wiki」での利用を想定した無制限にスルーするフィルタモジュールを新規追加。
これで Google Maps を貼れるようにした。
では早速。
拡大地図を表示
- [ WiKicker ] hell mode - HTMLタグ付けブロックの導入 (2005-09-13)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
- Debian GNU/Linux に Hyper Estraier 1.2... (2006-05-31)
- [ WiKicker ] form/list の paragraph から... (2003-05-03)
- Wikiの文法の標準化 (2004-02-10)
2008年1月6日 (日)
■ 今日のさえずり - バスクリンに「マジッ」をたすとバスマジックリン

- 10:32 親戚から 050 で電話がかかってきた。
- 12:54 PC 触っているときりがない。
- 14:29 毎日曜日は基本ノー PC デーにしようかな。今日はもう結構使ったけれど。[mb]
- 16:04 年賀状投函。ポストがもう年賀状モード解除されてる。[mb]
- 16:55 今日のサウンドロップ クレヨンしんちゃん「いや~それほどでもぉ」[mb]
- 18:09 バスクリンに「マジッ」をたすとバスマジックリンになることに気づいた。[mb]
- 18:22 Amazon.co.jp 使ったギフトが初めてウチにきた。[mb]
- 18:34 まりもの水交換した。[mb]
- 23:59 Google proxy 経由でiモードから拙作 WikiEngine に書き込めた。[mb]
- ケータイ用にプライベート Wiki を設置 (2008-01-07)
- 今日のさえずり - 金メダルのネックストラップには、ケータイ用のヒモが付い... (2008-08-24)
- メールボックスを Gmail に集約 (2007-08-08)
- 今日のさえずり - 鳩三郎が会社にきた (2008-09-25)
- 今日のさえずり - 開き括弧がいわゆる全角文字で閉じ括弧が半角文字になる人多すぎ (2008-08-25)
2008年1月7日 (月)
■ ケータイ用にプライベート Wiki を設置

パケ・ホーダイを契約してから、MovaTwitter・RTM・モバイル Gmail などで携帯電話を活用するようになった。そんななか、決定打がないのが、ノートアプリケーション。電車の中などの隙間時間に、この nDiki の 下書きなどはケータイでできるようにしたい。
Google ドキュメントが使えればいいが、前年ながらまだiモードでは使えない。 メールベースでやる手もあるが、メモには良いものの再編集を繰り返したいようなものに難がある。
ということで自前でプライベート Wiki を立てそこに書き込んでみることにした。
@ iモードから WiKicker
使う WikiEngine はいつも通り自作の WiKicker。
書き込んだテキスト内のキーワードを nDiki へ自動リンクさせることができるので、パーソナルナレッジベースとして自分にとっては一番便利。書式も同じなので、Wiki に書いた下書きを、そのまま nDiki で使える。
肝心のケータイからの書き込みだが Ajax 等凝った技術を使っていないおかげで、問題なく FOMA 端末(D703i)からiモードで読み書きできた。WiKicker は UTF-8 でページを出力しているが、網側か端末側の処理かは知らないが今のところ問題なし。
なお認証は簡単に Basic 認証で済ますことにした。 安全とは言えないがそれほど重要なデータを置くわけではないしいいかな。 cookie は必要ないし WikiEngine に手を入れなくてもよいので、すぐできるのはコレ。
ユーザ名とパスワード付きのトップページ URL を端末でブックマークしておけば1発でアクセスできる。
@ Google Mobile Proxy 経由で使う
これでケータイ(と PC)から使えるプライベート Wiki を設置できたわけだが、なにぶんもともとケータイをサポートしている WikiEngine ではないため、長いページの分割機能などはないのがちょっと不安。PageName で生成される URL が長くなった時の振る舞いもちょっと不安。
そこで Google Mobile Proxy (http://www.google.co.jp/gwt/n) 経由で Wiki を使うことにした。 ページを携帯端末向けに変換してくれる proxy で、Basic 認証もできるしフォーム の POST もできる。
Google Mobile Proxy 経由で見たページ内のリンク先も全て自動的に proxy 経由になるので、 PC 向け Web ページの URL を書いておけばそのまま携帯電話で見ることができる。
安全のためか、比較的短い一定時間立つと認証の再確認画面が表示されてしまうが、ユーザ名とパスワードを入力すれば、セッションは継続される。 テキスト編集に時間がかかってしまうと POST する時にひっかかってしまい認証の再入力がちょっと面倒だが、再認証が通れば POST リクエスト自体は有効で書き込みがロストすることはないようだ。
しばらくはこれで読み書きしてみよう。
- 半分は Twitter のためにパケ・ホーダイを契約 (2007-08-01)
- ビジネス用電話番号をマルチナンバーで追加した (2007-09-20)
- さよなら PHS (2007-02-10)
- SO905iCS ファーストインプレッション (2008-02-16)
- Rubric でプライベート SBS を立てるも 0.140 では日本語に不具合 (2006-07-22)
スポンサード リンク
■よく検索されるキーワード
perl(62) torrent(54) linux(48) 提案書(47) windows(43) 書き方(41) 使い方(29) アジェンダ(26) x31(25) 充電式カイロ(25) cvs(22) インストール(20) サンプル(20) thinkpad(19) アジェンダとは(19) f-01a(18) wiki(17) c#(16) 感想(16) カイロ(16) usb(16) java(16) 秋葉原(15) debian(15) ヨドバシカメラ(15) subversion(15) 壁紙(15) 作り方(15) 静電気(14) apache(14) グッズ(14) デロンギ(13) フリー(13) sh-01a(13) ganttproject(13) 修理(13) ssh(12) svn(12) ヨドバシ(12) truecrypt(12) ダイソー(11) 手帳(11) activeperl(11) ubuntu(11) ほぼ日手帳(11) firefox(10) mew(10) mp980(10) ドラマ(10) 日本語(10) n-01a(10) google(10) tc-1(10) 評判(10) ツール(10) djunit(9) cgi(9) 動画(9) mp3(9) オイルヒーター(9) docomo(9) rcs(9) 除去(9) centos(9) メモリ(9) エネループ(9) 設定(9) p-01a(9) tortoisesvn(9) 無印(8) ケース(8) 口コミ(8) ミノルタ(8) メール(8) インストーラ(8) 会議(8) xampp(8) 加湿器(8) af(7) 値段(7)■注目キーワード
購入 買った 発売日 フリー 無料 価格 値段 作り方 選び方 使い方 方法 設定 サンプル ダウンロード 限定 在庫 予約 穴場 比較 検証 レビュー 感想 評価 評判 使用感 使ってみた 口コミ 噂 最新 MP3 動画 意味 お薦め お勧め おすすめ 便利 Blog ブログ mixi 修理 デザインProcess Time: 15.36789s / load averages: 0.14, 0.11, 0.13
nDiki by WATANABE Yoshimasa (profile)
Powered by DiKicker
Base theme by Nana (for tDiary)



スポンサード リンク