Send to your Kindle **作るモノと実装方法 [#h44b203b] -フレームワークとページ ASP.NETを使うならフレームワーク/Webアプリケーションは不要。 その他、[[ウィキエンジンX/ウォークスルー]]にあるものを。 -Notationからプラグイン呼び出し・HTML化する仕組み つまりNotationが機能するように。 --リンク リンク先と関連名を受ける。 --ページ埋め込み --外部サイトの画像埋め込み(imgタグ化) -プラグインの仕組み Plugin/Usecase、Plugin/Notation 差し替え可能Usecaseと、NotationとそのプラグインAPI。 …をプラグインではなく組み込み済みクラスとして実装。呼び出しはリフレクションでプラグイン用呼び出し。プラグインの配置が違うだけ。 --%%記法 (Notation)%% %%プラグイン呼び出しの代替。%% -検索 実体はNotationから呼ばれるプラグインだけどここではコントローラーとして。 Notation同士の比較でスコア算出。Notation別評価。 --検索/サブセットWiki Wiki内に存在するページの集まり。 検索結果ページ内のプラグインに与えるページセットを変える。 -ページ Page、PageFactory DB RIGHT:[[:t/プロトタイピング]] プロトタイピング03のメモ。 [[http://x03.pmint.name/>http://x03.pmint.name/]] &ref(X03.zip); (VS2008Proj、C#) -------------------------------------------------------------------------------- -実装した --WikiText→HTML変換 --検索記法 --<form>→検索記法→検索結果 --日付記法 --bi-gram単位のテキスト比較 --検索/スコアリングに距離を導入、クエリーに適合した箇所が集まっているほど高スコア --記法はプラグイン定義のもの。正規表現で定義。 --データコンテキスト、プラグイン次第のコンテキスト -まだ --検索結果のソート Table記法の機能でソート。 --WikiTextの文字列探索 変換前、保存されているままのテキストを普通に探索。スコアに加算。 --HTMLの文字列探索 変換後のテキストを普通に探索。スコアに加算。これはGoogleがWikiをサイト検索するときと似た結果になる。 #br -------------------------------------------------------------------------------- #br #contents **出力にNotationを使うか [#r6834e3a] ElementはWikiTextを出力しないことにするのでTable不要。 (組み込み済みの記法なら使用可能。でも不自由なので意味薄) 検索記法でhtml出力。同時にTableと同等の表形式データも出力。 →フレームワークに組み込み済みの記法なら使ってもいいかも。でも記法は変えられるしデフォルトの書式やWikiCreoleも変わっているかも知れない。 →Notationに依らない方法…Elementクラスにパラメーターを与える形で(Notation解析の後の処理から)Elementを生成できるなら組み込み済みElementだけ使えていい。 **作るモノと実装方法 [#h44b203b] -フレームワークとページ ASP.NETを使うならフレームワーク/Webアプリケーションは不要。 その他、[[ウィキエンジンX/ウォークスルー]]にあるものを。 -Notationからプラグイン呼び出し・HTML化する仕組み つまりNotationが機能するように。 --リンク リンク先と関連名を受ける。 --ページ埋め込み --外部サイトの画像埋め込み(imgタグ化) -プラグインの仕組み Plugin/Usecase、Plugin/Notation 差し替え可能Usecaseと、NotationとそのプラグインAPI。 …をプラグインではなく組み込み済みクラスとして実装。呼び出しはリフレクションでプラグイン用呼び出し。プラグインの配置が違うだけ。 --%%記法 (Notation)%% %%プラグイン呼び出しの代替。%% -検索 実体はNotationから呼ばれるプラグインだけどここではコントローラーとして。 Notation同士の比較でスコア算出。Notation別評価。 --検索/サブセットWiki Wiki内に存在するページの集まり。 検索結果ページ内のプラグインに与えるページセットを変える。 -ページ Page、PageFactory DB **WikiText→中間表現→Element [#b486234f] 中間表現 <Link:j722bd6b> Elementに変換後、正規表現の邪魔にならないように Elementの具象クラス名とインスタンスIDを置いておく。Elementコンストラクターには中間表現が渡る。 変換前にWikiText内の < > は置き換え。 +文字列置換 WikiText→中間表現 Notation定義ごとに置き換え。Notationの数だけ置き換え処理。 +WikiTextがすべて< >表現に置き換わる +文字列置換 中間表現→Element 外側から。中間表現1つごとにElement生成。 内側にある中間表現はElementに渡す。それをどうするかはElementによる。→NoWiki記法ではそれ以上深い処理をしなくていい。 最後にPlainText変換。< >以外をオブジェクト化。< >が区切りになる。 **チェックリスト [#k642720b] -同じNotationのネスト {{ ... {{{ ... {{ ... }} ... }}} ... }} …を正しく処理できるか。3つのElementが生成されるか。 -交差 {{ ... {{{ ... }} ... }}} …を正しく処理できるか。優先順位(設定による)の高いほうだけが生成される。生成されるElementは1つ。 -NoWikiを正しく処理できるか。NoWikiの中で変換は行なわれていいがWikiTextに戻せるか。 -連結できるか。 -Notationで始まりNotationで終わるWikiText、先頭と末尾のNotationは処理できるか? **スコアはNotationごと [#vb2ccccf] Notationが科目、Notation集約であるページが学生。 科目ごとにスコア算出、検索クエリーによってどの科目を重視するか決まるので、それでページの順位を決められる。 スコアは100%〜0%、マイナス値は(特に決められないので)下限なし。 これでプラグイン側でのスコアの重みを自由にできる。 他のプラグインと重みを揃えなくていい。 ---------- ページ順位の中では偏差値を使ってページをクラス分け。順位1つ違いでも差があるところは分かるように。→というのを[[あとで]]。 **クエリー文字列では後方参照 [#p4369810] クエリー文字列→ページ。ここでは後方参照のようなものでNotationパラメーターを指定。そうしないとフォームから入力できない。 クライアント側でフォームからの入力の前後にNotationを付加してサーバーに送るようにするなら話は別。 **Elemはクエリーから自分の欲しいデータを入手 [#ze7f388a] Elementはクエリーから自分の解釈できる部分を読む。 クエリーは全てのElementから参照可能。内容は不変。→引数にする意味無し。グローバルオブジェクト。 **Element内部処理でWikiTextを使うことは可能 [#h3d57d0c] コード内で未処理WikiTextを持っていい。 ただし、出力前にHTML変換。 →ElementからのHTML出力にWikiTextを含まないことにする。 **1つのElementで1つの<form> [#t6503588] form記法で複数の入力欄記法をくくっても入力しにくい。 意味ある単位でデータ入力・送信するものなので、1つのElementが1つのformを担当。