ここで作っているWikiEngineについて。
既存のWikiEngineについては「WikiEngine[?]」に。
現在考案中のWikiEngineについて。
- フレームワーク/WikiEngineでやること
- クラス設計→X
- フレームワーク/Webアプリケーションはもう一つのフレームワーク
WikiEngineとは † ![Edit Edit](image/plus/paraedit.png)
目次 † ![Edit Edit](image/plus/paraedit.png)
関連 † ![Edit Edit](image/plus/paraedit.png)
- :/ページを更新できるのは自身だけ
- :/ページ要素間の連携方法
- :/疑似言語とPerlでフレームワーク
- :/要素からWikiEngineインスタンスを起動可能
- :Done/SPAM対策
- :Done/データアクセスでページ要素を更新したい
- :Done/属性の継承法則
- :RenameLog/2009
- :RenameLog/2010
- :RenameLog/2013
- :RenameLog/2014
- :i/クエリーパラメーターはユースケースクラスのもの
- :i/プラグインで独自のシステムを作れるか
- :i/プロトタイピング
- :i/プロトタイピング/01
- :i/ログインはWebフレームワーク、ユーザー管理はWikiフレームワーク
- :i/利用者ページの下位に利用者設定を
- :i/状況依存のページ選択
- :t/Wiki
- API
- X
- fw/Wiki
- テンプレート
- フレームワーク
- フレームワーク/Webアプリケーション
- フレームワーク/Webアプリケーションでやること
- フレームワーク/WikiEngineでやること
- ページ
- ページ/権限
- 下位展開でやること
- 全てURIで
- 利用者
- 権限
検索:フレームワーク 検索:WikiEngine
- -
フレームワーク/WikiEngine † ![Edit Edit](image/plus/paraedit.png)
Xのシステム部分。(サイトとしてのWikiは半分が利用者のアイデア次第)
利用者から与えられたデータをページ化して保存するもの。
利用者からの要求に応じてページを切ったり貼ったりしてから見せる。
キーワード:WikiEngine
キーワード:Wiki OR ウィキ
思い付き † ![Edit Edit](image/plus/paraedit.png)
利用者から与えられたデータをページ化して保存するもの。
利用者からの要求に応じてページを切ったり貼ったり整形してから見せる。
実装 † ![Edit Edit](image/plus/paraedit.png)
URLクエリーに置くデータ † ![Edit Edit](image/plus/paraedit.png)
URLに付けるデータはネット上で共通のもののみ。
個人領域のデータ、状況に左右されるデータは置かない。
URLはどれもパーマリンクにすること。
というわけで、
- 検索/クエリー
…はURLクエリーに含める。
「次」や「前」という表現は使わない † ![Edit Edit](image/plus/paraedit.png)
新/旧、大/小などにする。
ソート順が分かる表現に。
やること † ![Edit Edit](image/plus/paraedit.png)
- -
データ変換 † ![Edit Edit](image/plus/paraedit.png)
テキスト→オブジェクト→HTML
オブジェクト→永続オブジェクト
ユーザーとページ/要素をつなぐもの。それとページ/要素の動作環境の提供も。
もしWikiFormatやプラグインをまったく使えないWikiEngineを作ったら…
テキストを記録するだけ。
ファイル名とテキストを与えると記録、ファイル名のみならテキストを出力。
呼び出し順序…
これにプラグイン独自のデータと処理を加えて、プラグインごとに違うHTML出力ができるようにする。
中心はプラグインを作るためのAPI。
認証について † ![Edit Edit](image/plus/paraedit.png)
利用者認証とID取得はフレームワーク/Webアプリケーション。
利用者IDを利用して、実用的な利用者情報を利用可能にするのはフレームワーク/WikiEngine。
アカウント † ![Edit Edit](image/plus/paraedit.png)
利用者
派閥 † ![Edit Edit](image/plus/paraedit.png)
WikiEngine/ † ![Edit Edit](image/plus/paraedit.png)
派閥[?]
負荷軽減 † ![Edit Edit](image/plus/paraedit.png)
→負荷[?]
編集後の更新処理を分割。
設計 † ![Edit Edit](image/plus/paraedit.png)
- ユースケースをモデルに入れる。
- ログインページの次はHTTP_REFERERにあるページ。
- ファイルはFlyweightであるべき。
- オブジェクトモデル上ではinclude.incのような機能を考慮しない。
include.incのような機能はデータコピーで実現。 - アクセスログはページの属性。
- 利用者はページにある情報を元に作られる。
- ページが他のページインスタンス宛に編集クエリーを作る。
- 検索はプラグイン化する。
名称 † ![Edit Edit](image/plus/paraedit.png)
クラス間のつながり † ![Edit Edit](image/plus/paraedit.png)
![WikiEngine.gif WikiEngine.gif](https://wiki.pmint.name/?plugin=ref&page=%3AImage&src=WikiEngine.gif)
検索時、オブジェクト間のつながり † ![Edit Edit](image/plus/paraedit.png)
![コラボレーション図 検索.png コラボレーション図 検索.png](https://wiki.pmint.name/?plugin=ref&page=%3AImage&src=%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%9B%B3%20%E6%A4%9C%E7%B4%A2.png)
ページがHTML出力する時、オブジェクト間のつながり † ![Edit Edit](image/plus/paraedit.png)
![コラボレーション図 HTML出力.png コラボレーション図 HTML出力.png](https://wiki.pmint.name/?plugin=ref&page=%3AImage&src=%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%9B%B3%20HTML%E5%87%BA%E5%8A%9B.png)
ページとプラグイン † ![Edit Edit](image/plus/paraedit.png)
![クラス図 ページ.png クラス図 ページ.png](https://wiki.pmint.name/?plugin=ref&page=%3AImage&src=%E3%82%AF%E3%83%A9%E3%82%B9%E5%9B%B3%20%E3%83%9A%E3%83%BC%E3%82%B8.png)
モデルはページ中心 † ![Edit Edit](image/plus/paraedit.png)
- ページ中心
- MVCのVとCは決まりきっている
Mはページとページに関連するクラス。プラグインにはあるかも知れないし無いかも知れない。
Cはフレームワークと各プラグインにある。
フレームワークが持つVのクラスは1つだけ。それ以外にはプラグインが独自に持つかも知れない。 - 要点はプラグインが持てる可能性
オブジェクトの生成 † ![Edit Edit](image/plus/paraedit.png)
![コラボレーション図 オブジェクト生成.png コラボレーション図 オブジェクト生成.png](https://wiki.pmint.name/?plugin=ref&page=%3AImage&src=%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%9B%B3%20%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E7%94%9F%E6%88%90.png)
- クラス名とインスタンスの対応はFlyweightFactoryが決める。
コード † ![Edit Edit](image/plus/paraedit.png)
プロトタイピング[?]の実装。
擬似言語 † ![Edit Edit](image/plus/paraedit.png)
[フレームワーク/Webアプリケーションから呼ばれて…]
- セッションデータを受け取る。
- クエリーを処理する。
- HTMLを返す。
Perl † ![Edit Edit](image/plus/paraedit.png)
code*:362
あとはX::Pageの永続化を。
プロトタイプではFlyweightFactoryを実装しない。
X::Pageのインスタンスは1つか2つでいい。