- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- :i/プロトタイピング/03 へ行く。
- 1 (2011-10-01 (土) 08:21:27)
- 2 (2011-10-02 (日) 15:23:20)
- 3 (2011-10-04 (火) 00:10:28)
- 4 (2011-10-06 (木) 13:28:26)
- 5 (2011-10-06 (木) 16:47:50)
- 6 (2011-10-06 (木) 17:02:33)
- 7 (2011-10-06 (木) 17:06:52)
- 8 (2011-10-20 (木) 00:01:15)
- 9 (2011-10-20 (木) 23:38:36)
- 10 (2011-10-21 (金) 07:16:31)
- 11 (2011-10-21 (金) 07:38:18)
- 12 (2011-10-23 (日) 18:02:56)
- 13 (2011-10-23 (日) 18:10:54)
- 14 (2011-10-24 (月) 00:04:58)
- 15 (2011-10-28 (金) 09:06:37)
- 16 (2011-11-02 (水) 23:45:50)
- 17 (2011-11-06 (日) 00:50:31)
- 18 (2011-11-06 (日) 19:09:37)
- 19 (2011-11-11 (金) 16:26:36)
- 20 (2011-11-11 (金) 18:23:34)
- 21 (2011-11-15 (火) 14:15:29)
- 22 (2011-11-16 (水) 12:34:12)
- 23 (2011-11-23 (水) 05:52:38)
- 24 (2011-11-23 (水) 06:00:44)
- 25 (2011-11-23 (水) 06:09:14)
- 26 (2011-11-30 (水) 08:12:01)
- 27 (2011-12-09 (金) 11:41:17)
- 28 (2011-12-09 (金) 11:48:50)
- 29 (2011-12-09 (金) 11:55:48)
- 30 (2011-12-14 (水) 01:29:17)
- 31 (2012-01-10 (火) 06:07:24)
- 32 (2012-01-10 (火) 06:55:26)
- 33 (2012-01-11 (水) 00:52:40)
- 34 (2012-03-23 (金) 03:06:22)
- 35 (2012-04-26 (木) 13:45:47)
- 36 (2012-09-20 (木) 06:47:12)
- 37 (2013-03-20 (水) 22:35:53)
- 38 (2013-03-25 (月) 14:20:00)
- 39 (2014-01-18 (土) 14:57:34)
プロトタイピング03のメモ。
http://x03.pmint.name/
ソース &ref(): File not found: "X03.zip.tgz" at page ":i/プロトタイピング/03"; VS2008Proj、C#
- 実装した
- まだ
出力にNotationを使うか † 
ElementはWikiTextを出力しないことにするのでTable不要。
(組み込み済みのWikiNotationなら使用可能。でも不自由なので意味薄)
検索記法でhtml出力。同時にTableと同等の表形式データも出力。
→フレームワークに組み込み済みの記法なら使ってもいいかも。でも記法は変えられるしデフォルトの書式やWikiCreoleも変わっているかも知れない。
→Notationに依らない方法…Elementクラスにパラメーターを与える形で(Notation解析の後の処理から)Elementを生成できるなら組み込み済みElementだけ使えていい。
作るモノと実装方法 † 
- フレームワークとページ
ASP.NETを使うならフレームワーク/Webアプリケーションは不要。
その他、ウィキエンジンX/ウォークスルーにあるものを。
- Notationからプラグイン呼び出し・HTML化する仕組み
つまりNotationが機能するように。 - プラグインの仕組み
Plugin/Usecase、Plugin/Notation
差し替え可能Usecaseと、NotationとそのプラグインAPI。
…をプラグインではなく組み込み済みクラスとして実装。呼び出しはリフレクションでプラグイン用呼び出し。プラグインの配置が違うだけ。 - 検索
実体はNotationから呼ばれるプラグインだけどここではコントローラーとして。
Notation同士の比較でスコア算出。Notation別評価。 - ページ Page、PageFactory
DB
WikiText→中間表現→Element † 
中間表現 <j722bd6b>
Elementに変換後、正規表現の邪魔にならないように
ElementのインスタンスIDを置いておく。Elementコンストラクターには中間表現が渡る。
変換前にWikiText内の < > は置き換え。
- 文字列置換 WikiText→中間表現
Notation定義ごとに置き換え。Notationの数だけ置き換え処理。 - WikiTextがすべて< >表現に置き換わる
- 文字列置換 中間表現→Element
外側から。中間表現1つごとにElement生成。
内側にある中間表現はElementに渡す。それをどうするかはElementによる。→NoWiki記法ではそれ以上深い処理をしなくていい。
最後にPlainText変換。< >以外をオブジェクト化。< >が区切りになる。
チェックリスト † 
- 同じNotationのネスト
{{ ... {{{ ... {{ ... }} ... }}} ... }}
…を正しく処理できるか。3つのElementが生成されるか。 - 交差
{{ ... {{{ ... }} ... }}}
…を正しく処理できるか。優先順位(設定による)の高いほうだけが生成される。生成されるElementは1つ。 - NoWikiを正しく処理できるか。NoWikiの中で変換は行なわれていいがWikiTextに戻せるか。
- 連結できるか。
スコアはNotationごと † 
Notationが科目、Notation集約であるページが学生。
科目ごとにスコア算出、検索クエリーによってどの科目を重視するか決まるので、それでページの順位を決められる。
スコアは100%〜0%、マイナス値は(特に決められないので)下限なし。
これでプラグイン側でのスコアの重みを自由にできる。
他のプラグインと重みを揃えなくていい。
ページ順位の中では偏差値を使ってページをクラス分け。順位1つ違いでも差があるところは分かるように。→というのをあとで。 :t/あとで[?]
クエリー文字列では後方参照 † 
クエリー文字列→ページ。ここでは後方参照のようなものでNotationパラメーターを指定。そうしないとフォームから入力できない。
クライアント側でフォームからの入力の前後にNotationを付加してサーバーに送るようにするなら話は別。
Elemはクエリーから自分の欲しいデータを入手 † 
Elementはクエリーから自分の解釈できる部分を読む。
クエリーは全てのElementから参照可能。内容は不変。→引数にする意味無し。グローバルオブジェクト。
Element内部でWikiTextを使うことは可能 † 
ただし、HTML変換してから出力。
→Elementからの出力にWikiTextは無い。
1つのElementで1つの<form> † 
form記法で複数の入力欄記法をくくっても入力しにくい。
意味ある単位でデータ入力・送信するものなので、1つのElementが1つのformを担当。