目次 Edit

 
 

関連 Edit

検索:フレームワーク 検索:WikiEngine

WikiEngine周辺のタグ Edit

Array

WikiEngineとは Edit

Wikiのシステム部分。(サイトとしてのWikiは半分が利用者のアイデアでできている)

キーワード:WikiEngine
キーワード:Wiki OR ウィキ

利用者から与えられたデータをページ化して保存するもの。
利用者からの要求に応じてページを切ったり貼ったりしてから見せる。

このページは現在作成中のWikiEngineフレームワークについて。
既存のWikiEngineについては→ tag:解析

参考 Edit

人力検索はてな
http://q.hatena.ne.jp/1186417853

思い付き Edit

実装 Edit

ページを指定していないリクエストでは

  1. 最後に参照したページクライアントにあるデータによる)
  2. デフォルトページ(Wikiの設定による)

…を返す。

 

というわけで、トップページを見せたいときはトップページを指定したリンクを作り、通常はページを指定しないリンクを使う。
これで、静的なページからでもWebブラウザーの履歴を操作することなく、最後に参照したページに戻れる。

URLクエリーに置くデータ Edit

URLに付けるデータはネット上で共通のもののみ。
個人領域のデータ、状況に左右されるデータは置かない。
URLはどれもパーマリンクにすること。

というわけで、

…はURLクエリーに含める。

「次」や「前」という表現は使わない Edit

新/旧、大/小などにする。
ソート順が分かる表現に。

やること Edit

データ変換 Edit

テキスト→オブジェクト→HTML
オブジェクト→永続オブジェクト

もしWikiFormatやプラグインをまったく使えないWikiEngineを作ったら…
テキストを記録するだけ。
ファイル名とテキストを与えると記録、ファイル名のみならテキストを出力。

これにプラグイン独自のデータと処理を加えて、プラグインごとに違うHTML出力ができるようにする。
中心はプラグインを作るためのAPI

アカウント Edit

利用者

派閥 Edit

派閥[?]

負荷軽減 Edit

→負荷[?]

編集後の更新処理を分割。

  1. クエリー保存、ページ更新のキュー入れ(衝突時の警告ができなくなってしまうので不可)
  2. 対象となるページの更新、関連するページ更新のキュー入れ
  3. 関連するページの更新(複数回)

設計 Edit

"WikiEngine"というクラスについて。

ウィキエンジンを表すクラス。
名前が決まり次第、クラス名も変更。

名称 Edit

クラス間のつながり Edit

WikiEngine.gif

検索時、オブジェクト間のつながり Edit

コラボレーション図 検索.png

ページがHTML出力する時、オブジェクト間のつながり Edit

Decoratorパターン。
コラボレーション図 HTML出力.png

ページプラグイン Edit

ページプラグインもDecoratorパターンを構成する。

クラス図 ページ.png

モデルはページ中心 Edit

オブジェクトの生成 Edit

コラボレーション図 オブジェクト生成.png

  • クラス名とインスタンスの対応はFlyweightFactoryが決める。

コード Edit

プロトタイピング[?]の実装。

擬似言語 Edit

[フレームワーク/Webアプリケーションから呼ばれて…]

  1. セッションデータを受け取る。
  2. クエリーを処理する。
    1. ページを作っていろいろして保存したり、ページを開いていろいろする。
      ページ作成をFlyweightFactoryに要求して、得られたページにクエリーを渡すだけ。
    2. ページをHTML化、永続化する。
  3. HTMLを返す。

Perl Edit

code*:362

あとはX::Pageの永続化を。
プロトタイプではFlyweightFactoryを実装しない。
X::Pageのインスタンスは1つか2つでいい。