- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- :i/プロトタイピング へ行く。
- 1 (2010-11-21 (日) 14:30:48)
- 2 (2010-12-27 (月) 20:10:43)
- 3 (2011-03-24 (木) 18:31:00)
- 4 (2011-04-07 (木) 08:04:26)
- 5 (2011-04-07 (木) 08:10:05)
- 6 (2011-04-07 (木) 08:11:11)
- 7 (2011-04-07 (木) 19:59:56)
- 8 (2011-04-07 (木) 20:15:22)
- 9 (2011-04-07 (木) 20:32:47)
- 10 (2011-04-07 (木) 20:49:58)
- 11 (2011-04-08 (金) 05:31:08)
- 12 (2011-04-08 (金) 13:47:44)
- 13 (2011-04-13 (水) 05:21:22)
- 14 (2011-04-13 (水) 07:40:12)
- 15 (2011-04-16 (土) 07:22:53)
- 16 (2011-04-20 (水) 06:07:18)
- 17 (2011-04-27 (水) 10:07:28)
- 18 (2011-04-27 (水) 19:35:55)
- 19 (2011-04-29 (金) 13:13:08)
- 20 (2011-07-14 (木) 14:43:57)
- 21 (2011-07-14 (木) 15:36:08)
- 22 (2011-07-16 (土) 21:17:15)
- 23 (2011-07-16 (土) 21:30:05)
- 24 (2011-07-19 (火) 19:35:35)
- 25 (2011-07-19 (火) 19:45:44)
- 26 (2011-07-20 (水) 17:20:14)
- 27 (2011-07-21 (木) 10:19:36)
- 28 (2011-07-21 (木) 14:04:31)
- 29 (2011-07-21 (木) 22:33:49)
- 30 (2011-07-21 (木) 22:42:13)
- 31 (2011-07-23 (土) 02:15:52)
- 32 (2011-07-26 (火) 00:00:26)
- 33 (2011-07-27 (水) 21:05:52)
- 34 (2011-07-27 (水) 21:07:17)
- 35 (2011-08-24 (水) 23:43:52)
- 36 (2011-08-25 (木) 02:54:58)
- 37 (2011-09-08 (木) 04:50:45)
- 38 (2011-09-08 (木) 15:09:27)
- 39 (2011-10-02 (日) 15:27:42)
- 40 (2011-10-24 (月) 17:40:57)
- 41 (2011-10-25 (火) 01:43:19)
- 42 (2011-10-25 (火) 01:50:01)
- 43 (2011-10-28 (金) 09:06:36)
- 44 (2011-11-02 (水) 23:45:34)
- 45 (2011-11-06 (日) 00:43:36)
- 46 (2011-12-09 (金) 11:29:42)
- 47 (2011-12-09 (金) 11:52:47)
- 48 (2011-12-09 (金) 11:59:14)
- 49 (2011-12-14 (水) 01:29:17)
- 50 (2011-12-14 (水) 20:16:57)
- 51 (2011-12-18 (日) 03:42:28)
- 52 (2011-12-27 (火) 18:17:13)
- 53 (2011-12-28 (水) 03:29:53)
- 54 (2012-01-08 (日) 03:46:50)
- 55 (2012-02-12 (日) 17:43:20)
- 56 (2012-03-23 (金) 03:07:15)
- 57 (2012-03-24 (土) 02:33:38)
- 58 (2012-05-31 (木) 20:30:06)
- 59 (2012-06-01 (金) 06:16:49)
- 60 (2012-06-14 (木) 09:16:44)
- 61 (2012-06-25 (月) 23:48:04)
- 62 (2012-07-29 (日) 20:27:52)
- 63 (2012-07-30 (月) 01:22:26)
- 64 (2012-07-30 (月) 17:42:39)
- 65 (2012-07-31 (火) 00:55:39)
- 66 (2012-08-03 (金) 13:58:41)
- 67 (2012-08-03 (金) 14:09:06)
- 68 (2012-08-03 (金) 14:22:56)
- 69 (2012-08-04 (土) 06:01:00)
- 70 (2012-08-04 (土) 06:28:33)
- 71 (2012-08-04 (土) 06:30:10)
- 72 (2012-08-08 (水) 15:26:38)
- 73 (2012-08-08 (水) 16:35:41)
- 74 (2012-08-19 (日) 02:13:39)
- 75 (2012-08-19 (日) 02:41:24)
- 76 (2012-08-25 (土) 01:19:54)
- 77 (2012-08-27 (月) 20:01:17)
- 78 (2012-09-09 (日) 06:51:00)
- 79 (2012-09-09 (日) 06:56:35)
- 80 (2012-09-09 (日) 07:25:59)
- 81 (2012-09-09 (日) 08:05:56)
- 82 (2012-09-10 (月) 01:46:29)
- 83 (2012-09-10 (月) 04:04:11)
- 84 (2012-09-20 (木) 06:49:03)
- 85 (2012-10-30 (火) 03:38:50)
- 86 (2012-11-04 (日) 23:31:07)
- 87 (2012-11-07 (水) 06:35:35)
- 88 (2012-11-07 (水) 06:38:36)
- 89 (2012-12-09 (日) 07:43:33)
- 90 (2012-12-09 (日) 07:53:31)
- 91 (2012-12-09 (日) 08:26:55)
- 92 (2012-12-09 (日) 08:46:09)
- 93 (2012-12-09 (日) 09:07:46)
- 94 (2013-02-07 (木) 13:06:39)
- 95 (2013-02-07 (木) 14:13:45)
- 96 (2013-02-07 (木) 17:48:41)
- 97 (2013-02-07 (木) 18:53:49)
- 98 (2013-02-07 (木) 20:39:28)
- 99 (2013-02-07 (木) 22:44:58)
- 100 (2013-02-08 (金) 06:23:20)
- 101 (2013-02-08 (金) 21:18:14)
- 102 (2013-02-10 (日) 01:44:32)
- 103 (2013-02-21 (木) 02:47:56)
- 104 (2013-03-03 (日) 03:36:07)
- 105 (2013-03-03 (日) 03:57:29)
- 106 (2013-03-03 (日) 04:14:22)
- 107 (2013-03-03 (日) 04:17:56)
- 108 (2013-03-03 (日) 05:29:19)
- 109 (2013-03-03 (日) 05:45:56)
- 110 (2013-03-03 (日) 05:52:32)
- 111 (2013-03-05 (火) 04:03:15)
- 112 (2013-03-06 (水) 03:27:09)
- 113 (2013-03-06 (水) 12:38:20)
- 114 (2013-03-08 (金) 08:49:33)
- 115 (2013-03-13 (水) 18:00:21)
- 116 (2013-03-14 (木) 04:45:36)
- 117 (2013-03-15 (金) 11:43:18)
- 118 (2013-03-20 (水) 22:35:51)
- 119 (2013-03-25 (月) 00:48:55)
- 120 (2013-04-04 (木) 23:03:15)
- 121 (2013-04-09 (火) 16:12:25)
- 122 (2013-04-16 (火) 18:16:52)
- 123 (2013-04-16 (火) 18:27:27)
- 124 (2013-04-16 (火) 18:30:07)
- 125 (2013-04-16 (火) 21:34:33)
- 126 (2013-04-17 (水) 00:36:20)
- 127 (2013-04-17 (水) 02:33:47)
- 128 (2013-04-17 (水) 03:14:32)
- 129 (2013-04-18 (木) 20:20:20)
- 130 (2013-04-18 (木) 21:06:03)
- 131 (2013-04-18 (木) 21:15:41)
- 132 (2013-04-18 (木) 21:20:28)
- 133 (2013-04-19 (金) 11:05:00)
- 134 (2013-07-08 (月) 03:56:37)
- 135 (2014-02-20 (木) 05:45:20)
- 136 (2014-02-20 (木) 09:10:13)
- 137 (2014-02-25 (火) 05:50:34)
- 138 (2014-11-03 (月) 03:02:22)
- 139 (2016-02-27 (土) 03:26:25)
- 140 (2016-02-27 (土) 06:31:21)
- 141 (2016-07-02 (土) 15:38:51)
- 142 (2021-01-01 (金) 18:41:02)
- 143 (2021-03-15 (月) 22:34:06)
- 144 (2021-03-17 (水) 08:05:19)
- 145 (2021-03-17 (水) 11:43:20)
実装したものと実装のための情報。
このWikiを洗練させるための試作。
http://x.pmint.name/
プロトタイピング/05 † 
やること † 
- ページの永続化と復帰
→ フレームワーク/WikiEngine
ページ/名前が必要。 - ページ/名前
X/Pages/Name
外部名4区分と内部名、順不同パス(4区分中の"Entry") - ビューとテンプレート
WikiEngineレベルでのビュー。
ページ/属性が必要。 - ページ/属性
属性の継承
権限の継承
データアクセスとデータコンテキスト(属性コンテキスト)
X/Elementが必要。 下位展開プレビューモード
セッションが必要。セッション
→ フレームワーク/Webアプリケーション
認証が必要。認証- X/Element
全てURIで、セレクター(参照記法)
概要図 † 
fw/Web † 
クラス構成 † 
各クラスのプラグインは書かない。
あとはVisitorをElement周辺に付け足すだけでクラスが揃う。
資料 † 
フレームワーク † 
:t/Webフレームワーク部分と、その上の:t/Wikiフレームワーク部分。
ページ/:t/要素が動く環境を作る。
ユーザーからのリクエストを対応する要素に伝えて、その結果をレスポンスに変える。
権限 † 
:t/汎用記法で:t/埋め込み機能を呼び出して権限情報を表示。
ページとその属性名を全て:t/URIで指定・参照・ページ上にレンダリング。
下位展開 † 
対象になるページは:t/順不同な:t/名前での下位に位置するページ。
ページ間の:t/リンクも下位展開に対応する必要がある。
まとめられたページは:t/見出しとして表示されるので、リンク先もそこへつなげなければならない。
プレビューモード † 
:t/プレビューモードは:t/名前の補完ルールに細工をすることで実現。
タイムマシンモードも同じ発想。
まだ投稿していないページは:t/セッションに一時保存。
セッションの実体は特殊な:t/ページ。一時的ではあるが:t/永続化することになる。
紹介 † 
相変わらずページの保存が出来ないバージョン。
サンプルデータとして http://wiki.pmint.name/ のページをインポートしてみた。
実装したこと † 
- 下位展開
このシステムはページが他のページを含むツリー構造になっている。1つのページに含まれるページ階層を深い階層まで一括表示。 - 下位展開を利用した自動リンク先
深い階層のページは浅い階層の一部(見出し)として表示されるので、素直にはリンクしない。浅いページ/深いページ[?]を、浅いページ#深いページへのリンクに。 - プレビューモード
編集プレビュー中に他のページを開いて、編集の影響を見ることが出来る。「仮の未来」を見る機能。 - タイムマシンモード
過去のある時点でのWikiを再現。「実在した過去」を見る機能。 - アクセス制御
アクセスコントロール。ページ側に「錠」となる属性、ユーザー側に「鍵」となる属性を与えて随時適合するかどうか判定。適合することを各ユースケースの事前条件に。 - リンク一覧
内部リンク(同一Wiki内リンク)のリンク先一覧。リンクの属性「関連名」でフィルタリング。これで「あるユーザーが閲覧できるページ一覧」と「あるページを閲覧できるユーザー一覧」を生成。
記法は特に考えず#links(リンク先のほう|リンク対象テキストのほう|全部)
そのほか † 
- multi-gram
自動リンク処理で行なっていた”bi-gramを使ったページ名探索”。連続する2文字をインデックス化していたが、数字列では1つのキーに集まり過ぎ、漢字を使う単語では分散し過ぎだったので、文字種により0文字から3文字を使うよう変更。
実装方法 † 
- ページ作成フォーム記法
新規ページ作成の入力欄生成。入力受け付け、ページ生成。
とりあえず #newpage()
[Notationsにクラス作成] - 自動リンクの下位展開対応[Autolink]
/ページ名#セクションID
リンク対象文字列が /セクション名/ページB/ページA ならリンク先は /ページA/ページB#セクションID/ページ名#セクションIDでもリンク対象になるように。リンク先をコピペしてもリンクするように。
- ページ名を4区分に[Pagename]
Wiki, Entry, Side, Revision - ページ→ページ(→セクション0〜1コ)
Compositパターン - 閲覧時展開[Section.toHtml()]/編集時展開[Section.toWikitext()]
- プレビューWiki
[Pagename、Wikiを明示指定]
Previewモード
指定されたWikiにページが無ければ、デフォルトWikiのページを使う。
デフォルトWikiにも無ければ、指定されたWikiでページが存在しない処理。 - タイムマシンWiki
[Pagename、版の補完方法で](プレビューとは実装方法が違う)
Back way to ... モード
日時指定→版の補完時に版番号に置き換え
日時指定用のUI: 版の中から選択、あらかじめページ名と見解が指定されていないと
ページ(Entry)が無ければ、普通にページが存在しないときの処理。
「C#に依存するコードが増えてきましたが」
そのうちやること † 
自動リンク † 
アカウント † 
フレームワーク間の関係 † 
HTMLを要求するのはフレームワーク/Webアプリケーションのほう。
WebアプリケーションはWikiEngineを3回呼ぶ。
- エントリーポイント
- フレームワーク/Webアプリケーション
Xオブジェクトを生成。 - フレームワーク/WikiEngine
Xオブジェクトを作る(だけ)。 - フレームワーク/Webアプリケーション
Xオブジェクトにリクエストを伝える(そのまま渡すのではなく、変数の形で) - フレームワーク/WikiEngine
自身の状態を変化させる。状態は永続化する。 - フレームワーク/Webアプリケーション
XにHTMLを要求。 - フレームワーク/WikiEngine
HTMLを生成。 - フレームワーク/Webアプリケーション
HTMLにヘッダーを付けてWebページ化。
排他制御 † 
永続化クラスを排他制御不要な方式に。
モデル系クラスでは自分で自身を書き換える。他のクラスを扱うのはPageFactoryくらい。
実装からTips作成 † 
実装からTips作成、よりよいコードのヒント集め。
実装以外にも、アイデア、方式、UIなどでも。
仕様の分け方 † 
フレームワークは空気。ページが本体でユーザーがそれを利用できるようにするのがフレームワークの役目。
UIの内訳
1. 読みUI
ページ/履歴含む。
2. 書きUI
エディターなども。
3. 探しUI
検索の他に関連情報やおすすめの類も。
4. 組み立てUI
管理とWiki構築。テンプレートやデータコンテキストなどページ/要素を使ったプログラミング部分。
PageElement系クラス † 
- Wikitext
処理前の文字列状態。
stringをPageElementとして扱えるようにするクラス。stringからPageElementツリーを作るクラス。 @done - Document
1ページに1つだけ。PageElementツリーのルート要素。 - Notation系
- Nestable系 @done
中に他のPageElementを含むことができる。 @done
- Nestable系 @done
- Autolink
自動リンク。Plaintextを含む。 - Plain系
Plaintextを末端とするネスト構造。Plain系のなにか→Plain系のなにか→Plaintext。
Plaintextは別。PageElements構造の末端。
ページの設計 † 
物理: - 領域 テキストファイルを複数組み合わせて1ページ 保存しなければならないのは投稿されたままのデータ - 表 - 属性領域 - 本文 - 裏 - 属性領域 - 書き込みキュー - 1トランザクションのなかでキューをページに反映 - 最新版 キューを全て反映したページ - 現在版 古いかも?参照用 - キューの内容は新しいページそのもの 差分ではなく単体で新しいページになれる。処理の単純化のため。 反映時は全面書き換え。 ────────────────── 属性: ページの属性はただNotationを書くだけ。参照時に内容と統合されて1つのelement構造になる。書くところが分かれているだけ。 - 裏 - 内部名 - 凍結 凍結してるか?はページ/属性。 編集不可能→編集権限を無視してどんな場合も権限なしと判断。 凍結解除してから編集、再凍結までを一度に行うことで編集可能に見せることはできる。 編集ビューは凍結されていても閲覧権限で見られる。 - 不特定多数には非公開属性=特定者にのみ公開属性 公開範囲別に複数の属性になる? - 隠し属性、ページ名が明示されたときに見える。 - 古い自動生成ページを自動更新 - 自動更新間隔。elementが更新間隔を持つ。更新はページごとなので、ページ内で最も短い間隔で自動更新。自動生成ページだけでなく一般化。 ページの属性 - 基本がリンクか埋め込みか。という属性。 - 属性値を書く欄。ほかにページ名の接頭辞も属性値の一部。 ───────────────────── 内容: - 見出し始まり、無ければ自動で作る - ページの分割、統合、入れ替え支援 - バックリンク - ウォッチリスト - Web標準 - 更新日時一覧には編集対象ページ(編集対象としてパラメーターになったページ)と、実際に更新されたページの両方を載せる。
できること:
- 自分宛のクエリーを読める - 自分宛のクエリーはHTML出力で作る - 添付ファイルもページ化 - HTMLテンプレートもページに書く - データベースでもある。elementクラス別のデータベースでもある。 - サイトのアクセスログでもある。ページに記録 - クリップボードでもある。 - 多階層ビュー、埋め込みのネスト。html1ページはヘッダーやシステムメッセージ領域など、複数層の埋め込みでできている。 - 存在しないページはない - 更新できるのは自身だけ。遅延書き込みと前バージョン参照 - DOMアクセス
名前で3層組み合わせ:
内部名と表示名 項目→ディレクトリ、見解→ディレクトリ、版→ファイル 内部名を使って 版、見解はページの応用。 - 代表 ワイルドカードを使った一覧から1つ選ぶ仕組み。 - ワイルドカードで一覧 ワイルドカードを使った不完全な指定、で、代表を要求しない - 項目指定なし、つまり何にもなしのリスト要求 全ページ一覧 代表要求するとルート(FrontPage) - 見解指定なしのリスト要求 見解一覧 投稿できないので、一覧は表示だけ。 代表要求すると有力見解←投票で - 履歴指定なしのリスト要求 版リスト 投稿できないので、履歴一覧表示だけ。 代表要求すると最新版 履歴(版だけ組み合わせ): 履歴はモデルに含めない。履歴はワイルドカードを使って検索した一覧。 - 2履歴間の差分 - 最新の差分は閲覧ビューでも強調 クライアント側で - 編集履歴(差分)表示 異なる見解の最新版比較(差分表示)も? 通常の差分は同項目・同見解・異版間のもの。 下位: - 属性の継承 下位展開と関係ある? - 属性の継承、下位ページに - 下位展開(閲覧時/編集時) 下位ページ展開 - 下位ページの更新は上位の更新日時を変えない。更新日時一覧に上位ページ名も載せる。それで同じ効果。 投票: 見解に投票 ───────────────────── Archive: - 複数のビュー。elementクラスごとに分ける・分けない、どれとどれが同じかなどいろいろ。 @done @project(できること) 版、履歴: @done @project(物理 / 版、履歴 @done) Merge可能かどうかをインターフェイスで。: @project(Merge可能かどうかをインターフェイスで。) @done インスタンス生成せずに呼び出すメソッドはインターフェイス化できない。
プロトタイピング/ † 
- :i/プロトタイピング/01
- :i/プロトタイピング/01/検索
- :i/プロトタイピング/02
- :i/プロトタイピング/03
- :i/プロトタイピング/04
- :i/プロトタイピング/05
- :i/プロトタイピング/p05
- :i/プロトタイピング/Snippet
- :i/プロトタイピング/Snippet/AutoloadAccessor
- :i/プロトタイピング/Snippet/Mergeable.cs
- :i/プロトタイピング/Snippet/Nestable.cs
- :i/プロトタイピング/Snippet/NotNestable.cs
- :i/プロトタイピング/Snippet/NotNestables.cs
- :i/プロトタイピング/Snippet/Ol.cs
- :i/プロトタイピング/Snippet/PageElementMerge.cs
- :i/プロトタイピング/Snippet/PageElementMerge2.cs
- :i/プロトタイピング/Snippet/Tokenize0.cs
- :i/プロトタイピング/Snippet/ToWikitext.cs