現在考案中のWikiEngineについて。
クラス→X
既存のWikiEngineについては→ tag:解析

 

目次 Edit

 
 

関連 Edit

 
 

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

 

WikiEngineとは Edit

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

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

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

参考 Edit

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

思い付き Edit

実装 Edit

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

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

というわけで、

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

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

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

負荷軽減 Edit

→負荷[?]

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

  1. クエリー保存、ページ更新のキュー入れ
    衝突時の警告ができなくなってしまうので不可。編集対象ページはすぐに更新、衝突したらそのときのレスポンスで利用者に知らせなければならない。
  2. 対象となるページの更新、関連するページ更新のキュー入れ
  3. 関連するページの更新(複数回)

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

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

…を返す。

 

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

設計 Edit

名称 Edit

クラス間のつながり Edit

WikiEngine.gif

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

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

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

コラボレーション図 HTML出力.png

ページプラグイン Edit

クラス図 ページ.png

モデルはページ中心 Edit

オブジェクトの生成 Edit

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

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

"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つでいい。

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

擬似言語 Edit

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

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

Perl Edit

code*:362

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

やること Edit

データ変換 Edit

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

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

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

アカウント Edit

利用者

派閥 Edit

派閥[?]