changeset 68:73352d3ae92b

fix
author Kazuma Takeda
date Fri, 06 Jan 2017 21:40:48 +0900
parents b0acdf8e1f1c
children 0c8be5003f0f
files Slide/prosym.md
diffstat 1 files changed, 63 insertions(+), 66 deletions(-) [+]
line wrap: on
line diff
--- a/Slide/prosym.md	Fri Jan 06 19:43:04 2017 +0900
+++ b/Slide/prosym.md	Fri Jan 06 21:40:48 2017 +0900
@@ -129,8 +129,9 @@
 ``` Java
 // ノードが持っている子どもの個数を返す
 int size()
+
 // ノードが持つ子どもの中から、 変数numで指定された位置にある子ノードを返す
-<Either Error,TreeNode> at(int num)
+Either<Error, TreeNode> at(int num)
 ```
 
 Attributeクラスを利用し、ノードの保持する値にアクセスする。
@@ -138,6 +139,7 @@
 ``` Java
 // ノードが持つ値から、属性名 keyとペアの属性値をByteBuffer型で返す
 ByteBuffer get(String key)
+
 // ノードが持つ値から、属性名 keyとペアの属性値をString型で返す
 String getString(String key)
 ```
@@ -241,7 +243,7 @@
 DefaultNodePath editNodePath = new DefaultNodePath();
 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(editNodePath, 0);
 if (either.isA()) 
-  throw new IllegalStateException();
+  // throw error.
 editor = either.b();
 editor.success();
 
@@ -249,7 +251,7 @@
 
 # 検索APIの実装
 
-属性名key 属性値valueの組で検索を行うAPIの実装を、木の走査を行うTraverserクラス内に、lambda式を用いて行った。
+属性名key 属性値valueの組で検索を行うAPIの実装を、木の走査を行うTraverserクラス内に、ラムダ式を用いて行った。
 
 以下に検索を行う関数findの定義を記述する。
 
@@ -315,14 +317,14 @@
 
 # Indexの実装
 
-Indexから属性名 name 属性値 Kanagawa のデータを持つ、ノードのIteratorを取得するサンプルコードを記述する。
+Indexから属性名"name" 、属性値"Takeda" のデータを持つ、ノードのIteratorを取得するサンプルコードを記述する。
 
 ``` Java
 Optional<TreeMap<String, List<TreeNode>>> indexOp = indexMap.get("name");
 if (!indexOp.isPresent())
   return new NulIterator<TreeNode>();
 TreeMap<String, List<TreeNode>> index = indexOp.get();
-Optional<List<TreeNode>> nodeListOp = index.get("kanagawa");
+Optional<List<TreeNode>> nodeListOp = index.get("Takeda");
 if (!nodeListOp.isPresent())
   return new NulIterator<TreeNode>();
 // 持っていた場合OptionalオブジェクトからノードリストのIteratorを返す。
@@ -333,7 +335,7 @@
 
 ・中身が入っているか確認、入っていた場合Indexを取得する。
 
-・取得したIndexに、検索で使用する属性値"kanagawa"でgetを行う。属性名"name" 属性値kanagawaの値を持つノードのリストが、Optionalクラスに包まれて返ってくる。
+・取得したIndexに、検索で使用する属性値"Takeda"でgetを行う。属性名"name" 属性値"Takeda"の値を持つノードのリストが、Optionalクラスに包まれて返ってくる。
 
 ・中身が入っているか確認、入っていた場合OptionalオブジェクトからノードリストのIteratorを返す。
 
@@ -351,14 +353,14 @@
 
 このレンダリングエンジンでは以下の2つの木からなる。
 
+- <u>ContentTree</u>
+
+出力するデータが記述された木
+
 - <u>LayoutTree</u>
 
 出力する形式が記述された木
 
-- <u>ContentTree</u>
-
-出力するデータが記述された木
-
 レンダリングエンジンでは、この木同士を参照しながらレンダリングしていく。
 
 # ContentTree
@@ -432,7 +434,7 @@
   </tr>
   <tr>
     <td>use</td>
-    <td>このノードが、どのContentsに対してのLayoutを持つかを記述するタグ。表\ref{tag}にタグとContentsの対応を記述する</td>
+    <td>このノードが、どのContentsに対してのLayoutを持つかを記述するタグ。次のページのスライドにタグとContentsの対応を記述する</td>
   </tr>
   <tr>
     <td>その他</td>
@@ -440,62 +442,50 @@
   </tr>
 </table>
 
-# multiComponent
+# useにおけるタグ対応表
 
-Layoutが複数のComponentを参照する際は以下のような木構造を構築する。
+<center>
+<table border="1">
+  <tr>
+    <td>tag</td>
+    <td>content</td>
+  </tr>
+  <tr>
+    <td>image</td>
+    <td>画像の表示</td>
+  </tr>
+  <tr>
+    <td>cals</td>
+    <td>table</td>
+  </tr>
+  <tr>
+    <td>date</td>
+    <td>日付の表示</td>
+  </tr>
+  <tr>
+    <td>text</td>
+    <td>日記の本文</td>
+  </tr>
+  <tr>
+    <td>title</td>
+    <td>日記のタイトル</td>
+  </tr>
+  <tr>
+    <td>fileName</td>
+    <td>画像の名前</td>
+  </tr>
+</table>
+</center>
+
+# multiComponent
 
 <div style="text-align: center;">
- <img src="./images/multiComponent.pdf" alt="message" width="300">
-</div>
-
-上の例ではdiaryMulti@componentはdiaryText@componentとdiaryImage@componentを参照している。
-
-# レンダリングの流れ
-
-ContentTreeとLayoutTreeの2つを使用したレンダリングの流れを記述する。
-
-・ContentsTreeのルートノードは、属性名 component 属性値 Multi@Componentの組を持つので、LayoutTreeのNode2を参照する。
-
-<div style="text-align: center;">
- <img src="./images/multiComponent01.pdf" alt="message" width="400">
-</div>
-
-# レンダリングの流れ
-
-・Node2は自身のNodeNameしか持たないので、子ノードであるNode3,Node4に記述されているデータの参照を行う。
-
-<div style="text-align: center;">
- <img src="./images/multiComponent02.pdf" alt="message" width="400">
+  <img src="./images/multiComponent.pdf" alt="message" width="300">
 </div>
 
-# レンダリングの流れ
-
-・Node3は属性名 displayComponentName、属性名 diaryImageの組を持つため、NodeNameがdiaryText@componentのノードを参照している。
-
-<div style="text-align: center;">
- <img src="./images/multiComponent04.pdf" alt="message" width="400">
-</div>
-
-# レンダリングの流れ
-
-・レンダリングエンジンは、参照先のノードに記述されたルールに則ってHTMLを生成する。
-
-・Node3は、これ以上データを持たないため、次はNode4を参照する。
+Layoutが複数のComponentを参照する際は上の例のような木構造を構築する。
 
-<div style="text-align: center;">
- <img src="./images/multiComponent05.pdf" alt="message" width="400">
-</div>
-
-
-# レンダリングの流れ
-
-・Node4は属性名 displayComponentName 属性名 dialyText@Componentの組を持つため、NodeNameがdialyText@Componentのノードを参照している。
-
-<div style="text-align: center;">
- <img src="./images/multiComponent05.pdf" alt="message" width="400">
-</div>
-
-・レンダリングエンジンは、参照先のノードに記述されているルールに則ってhtmlを生成する。
+上の例のMulti@componentはdiaryText@componentとdiaryImage@componentを参照している。
 
 # 設計
 
@@ -528,14 +518,21 @@
 先ほどのギャップのあるコードの木と、ギャップのないコードの木を使った2つのrenderingEngineの性能測定を行い、木の構造が実行速度にどれだけ影響するかを確かめる。
 測定は100000回のレンダリングリクエストを処理するまでの時間の比較で行う。
 
-<div style="text-align: center;">
- <img src="./images/benchMark.pdf" alt="message" width="400">
-</div>
+<center>
+<table border="1">
+  <tr>
+    <td>設計を行った木</td>
+    <td>249s</td>
+  </tr>
+  <tr>
+    <td>設計を行わなかった木</td>
+    <td>277s</td>
+  </tr>
+</table>
+</center>
 
 測定結果より、Jungleデータベースは、設計を行うとプログラム内のデータ構造とギャップがなく、高速に動作するプログラムを簡潔に記述できるようになる。
 
-
-
 # まとめ
 
 本研究ではJungleを使った例題アプリケーションとしてRenderingEngineの実装を行った。