changeset 31:11dc58bf5a2b

fix
author tatsuki
date Tue, 29 Nov 2016 18:36:23 +0900
parents 4845a4f7b02a
children 8512227869d5
files bbs.tex jungle.tex
diffstat 2 files changed, 30 insertions(+), 31 deletions(-) [+]
line wrap: on
line diff
--- a/bbs.tex	Tue Nov 29 17:59:09 2016 +0900
+++ b/bbs.tex	Tue Nov 29 18:36:23 2016 +0900
@@ -4,9 +4,9 @@
 よって、組み込みWEBサーバーであるJettyを使用し、Servletとして木の表示と編集を実現した。
 
 \subsection{木構造の表示}
-Jungle DBはWEBサーバー内に存在し、それから表示に必要なHTMLを生成してブラウザに転送する。
-図\ref{printNode}は、サーバからデータを送りブラウザ上でノードを可視化するまでの流れである。
-この流れはJungleのNodePathの処理を除けば通常のデータベースのレコードの表示と同等である。
+JungleTreeブラウザにおいて、Jungle DBはWEBサーバー内に存在し、それから表示に必要なHTMLを生成してブラウザに転送する。
+図\ref{printNode}は、サーバからデータを送り、ブラウザ上でノードを可視化するまでの流れである。
+この流れは、JungleのNodePathの処理を除けば通常のデータベースのレコードの表示と同等である。
 \begin{figure}[h]
 \begin{center}
 \includegraphics[height = 6cm , bb=0 0 622 497]{images/printNodeValue.pdf}
@@ -16,9 +16,9 @@
 \end{figure}
 
 \begin{enumerate}
-\item ユーザーは表示したいノードのパスをJungleTreeブラウザに送る。
+\item ユーザーは表示したいノードのパスを、JungleTreeブラウザに送る。
 \item JungleTreeブラウザは、WEBサーバ内にあるJungleから、対応した木を取得する。
-\item JungleTreブラウザは、パスで指定した位置のノードを返す関数tree.getNodeOfPath()を用いて、木から表示するノードを取得する。
+\item JungleTreブラウザは、パスで指定した位置のノードを返す関数、tree.getNodeOfPath()を用いて、木から表示するノードを取得する。
 \item (3)で取得したノードの中身を、JungleTreeブラウザが表示する。
 \end{enumerate}
 
@@ -43,17 +43,17 @@
 \end{figure}
 
 \begin{enumerate}
-\item ユーザーはJungleTreeブラウザで編集したいノードを表示するページに移動する 
-\item ユーザーはJungleTreeブラウザに木の変更要求を送る
-\item JungleTreeブラウザはWebサーバー内にあるJungleから、対応した木を取得する
-\item 木からJungleTreeEditorクラスを取得する
-\item JungleTreeEditorクラスを使用して木の変更を行う
-\item 木の変更をJungleにコミットする
-\item 木の変更の結果を表示する
+\item ユーザーはJungleTreeブラウザで編集したいノードを表示するページに移動する 。
+\item ユーザーはJungleTreeブラウザに木の変更要求を送る。
+\item JungleTreeブラウザはWebサーバー内にあるJungleから、対応した木を取得する。
+\item 編集を行う木から、JungleTreeEditorクラスを取得する。
+\item JungleTreeEditorクラスを使用して木の変更を行う。
+\item 木の変更をJungleにコミットする。
+\item 木の変更の結果を表示する。
 \end{enumerate}
 
-パスを使用することにより木の変更をRestfulに行うことができるように見えるが、木のパスは特定の木の版に固有のものである。
-ブラウザとWEBサーバはセッションで結合されており、そのセッションが同じ版の木を編集していれば問題なく成功する。
+パスを使用することにより、木の変更をRestfulに行うことができるように見えるが、木のパスは特定の木の版に固有のものである。
+ブラウザとWEBサーバは、セッションで結合されており、そのセッションが同じ版の木を編集していれば問題なく成功する。
 ただし、編集し終わった時に、他の編集が割り込んでいたら、その編集は無効となる。この点が既存のRDBとは異なる。
 また巨大な木を操作する時には、Pathを直接URLに含むことはできないので、他の工夫が必要になると考えられる。
 このアプリケーションでは任意の木を取り扱うので、木の大きさの現実的な制限を除けば木の設計の問題はない。
--- a/jungle.tex	Tue Nov 29 17:59:09 2016 +0900
+++ b/jungle.tex	Tue Nov 29 18:36:23 2016 +0900
@@ -8,7 +8,7 @@
 
 
 Jungleは、データの編集を一度生成した木を上書きせず、ルートから編集を行うノードまでコピーを行い新しく木構造を構築し、そのルートをアトミックに入れ替えることで行う(図\ref{nonDestractTreeEdit})。
-その際、編集に関係ないノードは参照を行い、複製元の木と共有する。
+その際、編集に関係ないノードは参照を行い、複製元の木と共有する(図\ref{nonDestractTreeEdit}の例ではノードB D Eは編集に関係ないためノードAから参照を行い、過去の木と共有を行っている)。
 これを非破壊的木構造と呼ぶ。非破壊木構造は新しい木を構築している時にも、現在の木を安定して読み出せるという特徴がある。
 しかし、書き込み時の手間は大きくなる。
 
@@ -21,13 +21,11 @@
 \label{nonDestractTreeEdit}
 \end{center}
 \end{figure}
-図\ref{nonDestractTreeEdit}の例ではノードB D Eは編集に関係ないためノードAから参照を行い、過去の木と共有を行っている。
 
-
-通常のRDBと異なり、Jungleは木構造をそのまま読み込むことができる。例えば、XMLやJsonで記述された構造をデータベースを設計することなく読み込むことが可能であり、実際、そのような機能が実装されている。この木をそのままデ
-ータベースとして使用することも可能である。しかし、木の変更の手間は木の構造に依存する。
+\newpage
+通常のRDBと異なり、Jungleは木構造をそのまま読み込むことができる。例えば、XMLやJsonで記述された構造を、データベースを設計することなく読み込むことが可能であり、実際、そのような機能が実装されている。この木をそのままデータベースとして使用することも可能である。しかし、木の変更の手間は木の構造に依存する。
 %特に非破壊木構造を採用しているJungleでは木構造の変更にo(1)からo(n)の様々な選択肢がある。つまり、アプリケーションに合わせて木を設計しない限り、
-特に非破壊木構造を採用しているJungleでは木構造の変更の手間はO(1)からO(n)となる。つまり、アプリケーションに合わせて木を設計しない限り、
+特に非破壊木構造を採用しているJungleでは、木構造の変更の手間はO(1)からO(n)となる。つまり、アプリケーションに合わせて木を設計しない限り、
 十分な性能を出すことはできない。逆に言えば、正しい木の設計を行えば高速な処理が可能である。
 
 Jungleは基本的にon memoryで使用することを考えており、一度、木のルートを取得すれば、その上で木構造として自由にアクセスして良い。
@@ -55,11 +53,11 @@
 \end{center}
 \end{table}
 
-
+\newpage
 \subsection{TreeNode}
-Jungleが保持している木は複数のノードの集合で出来ている。
-ノードは自身の子のListと属性名と属性値の組でデータを持つ。
-ノードに対するアクセスは表\ref{TreeNodeAPI}に記述されているAPIを用いて行われる。
+Jungleが保持している木は、複数のノードの集合で出来ている。
+ノードは、自身の子のListと属性名と属性値の組でデータを持つ。
+ノードに対するアクセスは、表\ref{TreeNodeAPI}に記述されているAPIを用いて行われる。
 
 \begin{table}[htb]
 \begin{center}
@@ -109,6 +107,7 @@
 \end{center}
 \end{table}
 
+ \newpage
 以下にルートノードの2番目の子供から、属性名 nameとペアになっている属性値を取得するサンプルコードを記述する。
 \begin{lstlisting}[frame=lrbt,numbers=left,label=getAttributeCode]
 JungleTree tree = jungle.getTreeByName("TreeName");
@@ -136,7 +135,7 @@
 
 
 \subsection{NodePath}
-Jungleでは、木のノードの位置はNodePathクラスを使って表す。
+Jungleでは、木のノードの位置をNodePathクラスを使って表す。
 NodePathクラスはルートノードからスタートし、対象のノードまでの経路を、数字を用いて指し示すことで対象のノードの場所を表す。また、ルートノードは例外として-1と表記される。
 NodePathクラスが\textless -1,1,2,3\textgreater を表している際の例を図\ref{NodePath}に記す。
 \begin{figure}[h]
@@ -197,11 +196,11 @@
 \end{table}
 
 
-編集後に返されるJungleTreeEditorクラスは、編集された木構造を保持しているため、編集前の木構造を保持しているJungleTreeEditorクラスとは別のオブジェクトである。
+編集後に返されるJungleTreeEditorクラスは、編集後の木構造を保持しているため、編集前の木構造を保持しているJungleTreeEditorクラスとは別のオブジェクトである。
 編集を行った後は、関数editor.success()で今までの編集をコミットすることができる。その際他のJungleTreeEditorクラスによって木が更新されていた場合はコミットに失敗する。
 その場合は最初からやり直す必要がある。
 
-以下にJungleTreeEditorクラスを使ったサンプルコードを記述する。
+以下にJungleTreeEditorクラスを用いて、木の編集を行うサンプルコードを記述する。
 
 \begin{lstlisting}[frame=lrbt,numbers=left,label=editorCode]
 JungleTreeEditor editor = tree.getTreeEditor();
@@ -214,13 +213,13 @@
 \end{lstlisting}
 
 \begin{enumerate}
-\item 関数tree.getEditor()で変数treeからJungleTreeEditorクラスを取得する。 
-\item 次に変更するノードの場所を指すNodePathクラスを作成する。
-\item 関数editor.addNewChildAtを用いて、変数pathで指定したノードの子供の0番目に子ノードを追加する。
+\item 関数tree.getEditor()で編集を行う木から、JungleTreeEditorクラスを取得する。 
+\item 次に変更するノードの場所を示す、NodePathクラスを作成する。
+\item 関数editor.addNewChildAt()を用いて、変数pathで指定したノードの子供の0番目に子ノードを追加する。
 \item 返り値の変数EitherがErrorクラスを保持していないか(編集に失敗していないか)を確認する。
 \item Errorクラスを保持していた場合Exceptionを投げる。
 \item 編集に成功していた場合、編集後のJungleTreeEditorクラスを取得する。
 \item (6)で取得したJungleTreeEditorクラスを用いて木の変更をコミットする。
 \end{enumerate}
 
-これらのAPIによりJungleは木構造を格納、編集する機能を持っている。
+これらのAPIにより、Jungleは木構造を格納、編集する機能を持っている。