to your Kindle バックアップ一覧 バックアップ を表示 ページ/123 は削除されています。 1 (2013-03-01 (金) 22:36:01) RIGHT:&tag(ページ,思い付き,方法,目次); 詳細な設計→Page *目次 [#d9e1706e] #contents ---- #lsx(new=true); **関連 [#x654e041] #lsx(tag=ページ,new=true,except=^ページ(/.*)?$) [[検索:ページ]] #tagcloud(0,related=ページ) #br *ページとは [#x1fc8f6a] RIGHT:&tag(ページ,フィルタリング,拡張,アクセス権,リダイレクト); → [[Page]] ページは再帰構造のデータベース。''MVCのModelの中核。MVCのViewでもある。'' ページがMまたはVに属するのではなく、ページの中にMとVが存在する。 wikiは1つのページ。 **ページとは [#aea8d8cd] RIGHT:&tag(自動生成ページ,テンプレート,属性); ページは… -データ保存場所 -保持しているデータや関連情報を提供する -利用者から送られてきたクエリーのうち、自身に関する部分だけは解釈できる →これはフレームワークに。他のクラスにおいても同じ。 -%%入れ子関係になっている場合、親になるページインスタンスから属性を受け継ぐ%% →入れ子にはしない。埋め込みリンクで閲覧時にそう見えるようにするだけ。でも下位にあるページは属性を継承できる。 *思い付き [#o96998b0] **ページの内容はコードと見なせる [#xae85282] ページ内容をコードと見なすと… -ページの内容は基本的に全てコメント -ただし、#(機能の接頭辞)で始まる行はコード -コードの出力はコメント コードとして再処理することは無い。 他のコードの引数(データ)になることはある。 -コードの出力はコードと置き換わる。 **ファイルと類似 [#s9dbd154] Wikiのページにはファイルと同様にアクセス許可リスト、日付、読み専用などの属性、パスなどがある。 ** スレッドモード [#hef972b0] コメント、トラックバック、Wikipediaでのノートのようなものは裏に隠す。(ページ/裏に限らず、普段見えないところ) UIはWikipedia式のタブでいい。 フローとストックのフロー側。 **Wiki構築をページで [#g3e22770] Wiki構築をページで。 APIでページ内の表をレコード単位で読み出しするようなことができれば実現しやすい。 RIGHT:&tag(組み立て); **%%アクセス権は引き継がれる%% [#cfbd8cd4] %%自動生成ページは元のページ(入力されたページ)すべてのアクセス権を引き継ぐ。アクセス権の合成ルールが必要。%% RIGHT:&tag(アクセス権); →[[:ToDo/ページ自動更新時の権限]] **Wikiは1ページが1つの板 [#g198eae4] -この範囲で検索 -書き込み -削除 …などを。 ※利用者登録も?WikiFarmとは違う? →[[ToDo/ブログや掲示板として利用できるか]] **HTML許可ページ [#ac7869e0] ブログパーツなど、サイトに貢献する人だけが作れるページ。 HTMLタグなどが閲覧ページまでエスケープされずに残る。 作った後は(ページの機能を利用して)他のページに埋め込んだりできる。言い換えればホワイトリスト。 **ヘッダーの使い道 [#s9cf9fc3] ページ内容以外から呼ばれた機能のディスプレイとして使用。 形式いくつか用意。上部にテキスト表示するバナー、下部に表示するバルーン、右上にアイコンや通知バッジ出すなど。コードで指定。そのためフレームワーク側にライブラリとして用意を。 組み込み済みの基本的な記法を使えるように。 ヘッダー。つまり通常のページを埋め込みリンクで埋め込むだけ。 内容は… -(管理者からではなく)システムからのメッセージ リンクやボタンなども含む。 -検索に適合した部分リスト 前後の数文字、数行を含めて表示。 ページ内リンクも生成して。ページ内にはアンカーを埋め込んで。 …などをAPI経由で追加。 *方法 [#t1357f32] **canonical [#y61ffcd2] [[正規化 - ウェブマスター ツール ヘルプ>http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=139066&topic=2371375&ctx=topic]] link rel="canonical" にするページは -同じページの編集ビュー・履歴ビューなど ページ名(外部名)が同じページはすべてデフォルトビュー(閲覧ビュー)をおすすめ。 -データフォーマットの違い HTML/プレーンテキスト/印刷用など デフォルトのデータ形式(HTML)に。 スタイル・体裁のほうのフォーマットなどは対象外。 読む側設定のスタイルは無視できないのでおすすめ条件にしない。 体裁の方もそのまま。 これはGoogleに見せるためのメタデータ。 **セクションと比べると… [#c9fee6e2] ページはセクションの集約。 Wikitextを持たない。代わりに(Wikitextを持った)セクションを持つ。 作り方はページ作成フォームとか、DanglingLinkとかから。 リンク先になれる。URIを持つ。 下位展開のルールによって一度に展開される埋め込みの深度に制限がかかる。 **全ページ見出しから始める [#q76e9492] 閲覧時、ページ名を見出しと同様に表示。 見出しになったページ名にもEditボタンを付ける。 ページ内容の有効な一行目がページ名。なのでページ名を見出しにすればいい。 記法/タイトル記法もあるけど、これは後に続く要素にタイトルを付けるものなのでページタイトルには向かない。でも最初の記法/タイトルをタイトルにしてもいいかも? **new機能を標準に [#b38375a2] ページ名の隣(一覧や検索結果や自動リンク)には[[機能/New!]]が付く。 実装するならオプション。サイト設定でon/off。 RIGHT:&tag(機能,設定); **添付ファイルもページ [#hf16f53a] →[[機能/ファイルアップロード]] **存在しないページは無い [#pc2d3b3b] 存在しないページ=内容が空で存在するページ。 ページ管理クラス(ページとファイルを結び付けるクラス)以外では(UIからも含めて)そうなっているように。つまりこれを実現するのはページ管理クラス(PageFactory) **本文のレンダリングは最後 [#ua1b6934] 描画順序は内容が変わりにくい順で、上から。ヘッダー、サイドバー、フッター、本文。 これは重複描画の判定を考えて。 1つの画面に重複部分があるとき、ヘッダーなどを優先、重複判定は本文側でする。 二重展開を防ぐようにした場合、先にヘッダーなどを展開しないとヘッダー編集時のプレビューができなくなるから。 **ページを更新できるのは自身だけ [#e17f3c5c] 編集など、ページの属性を変更する操作は自身が全て行なう。 (自身とはインスタンス) 他から変更したいときは、指示を対象ページにキューイング。 そのページは最新状態をリクエストされるまでに自身を変更すればいい。 キュー出し/入れはフレームワーク/WikiEngineで。それを呼び出すのはページクラス。ページだけのものではないので。 ページの参照は自由にできていい。普通にロックを掛けて読むだけ。 編集は遅延処理。 ページに手を加えるにはページごとに{属性→値}という形式で指示をキューイング。 適当なときに処理。 最新版が必要なときはそのページを呼び出して、最新版になってもらう。 これはページの特殊な参照方法。 衝突したか知らせるために、編集後のレスポンスには最新版が必要。それまでに更新しなければならない。 RIGHT:&tag(遅延処理); **Webページのテンプレートは特定のページに書く [#e7516dbe] システムが用意するページ(Webページ)は:config/Page/Editのような特定のページで定義。 WikiTextの編集方法でページデザインやヘッダーの機能を変更。 このページを書き換えて… -ページの構造・内容(HTML) -どんなときにどんなページを使うか User-Agent別に定義して、フルブラウザ用とか、ケータイ用とか、スマートフォン用とか。 利用者の権限別とか。 条件、それに合ったときの戻り値は特定のページに。 条件に使えるデータ、戻り値の用途はシステムにコードで定義。(用意されている中から選択して設定で利用) RIGHT:&tag(構築,設定); **%%リストとハッシュ%% [#z69970b0] エントリー、見解はハッシュ構造。順序なし。キー指定で参照。 版はリスト構造。末尾が最新版。 **ページ内容がオブジェクト構成を表す [#qdd0826b] ページは独立したオブジェクト。 それを構成するPageElementを決めるのはページ内容。 機能からはこのオブジェクト構成を参照できるように。 WebページのDOM風アクセスと同様に。 **1つのページ内部名にインスタンスは1つ [#ocee16cb] Flyweight。内部名がID。ページ名は同じものが複数あっていいが内部名は重複なし。 **アクセスログはページの属性 [#i50a7b52] アクセスログもページ化する。 機能から扱えるように。 RIGHT:&tag(フレームワーク,属性); アクセスログから逆リンクを表示すればその場しのぎの低負荷のBackLinkになる。 **ページは機能のDB [#d6676d32] 機能が生成するデータはPageElementを通じてページに記録。見ることは出来るので、読みやすいデータ書式がいい。 機能が独自にデータ保存するよりも使いやすくなければ無意味。 例えばテーブル(表)にレコード形式のデータ、定義リスト(DD)にキー・バリュー形式のデータ、のように。 機能の設定もページ。 これは利用者が書いて機能が読む。 **資料 [#sb6c1333] ごく簡単なHTMLの説明 - The Web KANZAKI [[http://www.kanzaki.com/docs/htminfo.html>http://www.kanzaki.com/docs/htminfo.html]] 閲覧時のページ→HTML変換の参考に。 **空のページ [#o6881ae4] 空でページ名だけのページは、閲覧時に編集画面。DanglingLinkのかわり。 内容が無いからといって削除されたりはしない。 **属性と内容 [#kcd08e8d] ページ/属性と、ページ/内容。 「属性」という言葉が紛らわしい。&tag(ToDo); :属性| WikiTextのリスト。下位ページが継承する。(1項目ごとに)。ページ/裏と違い、利用者が書いてシステムが読むもの。 :内容| WikiText1つ。継承されない。 どちらも記法あり。内容の方はそれに加えてプレーンテキストも。 属性の方にプレーンテキストを書いてもいいが特に意味がない。 APIや機能呼び出しからは区別なし。指定すると呼び出しが煩雑になるので。 継承処理後の属性と内容を1つにしたものが参照可能になる。 属性部分を何かで括ったりもしない。 **他オブジェクトとの関わり合い [#wf50993c] ページ…Elementのコンテナー。ページがページを含むことはできない。 ページ同士に関連は無し。リンクオブジェクトでつながりが分かるだけ。 Element…ページの要素。ページはElementに含まない。深い構造にしないため。 ページ/セクション(実装がページと類似)はセクション同士でネスト可能。 *コード [#b9332bbb] [[code*:364]] Perl