Mercurial > hg > Papers > 2014 > nobuyasu-master
comparison paper/chapter4.tex @ 71:4e8bfd65768f
Fixed
author | Nobuyasu Oshiro <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 02 Feb 2014 07:12:30 +0900 |
parents | 4f31182c8244 |
children | 6f73e05d5024 |
comparison
equal
deleted
inserted
replaced
70:26bfd74c4c41 | 71:4e8bfd65768f |
---|---|
248 実装にあたり, 解決しなければならない問題はまず, ログをDataSegmentで扱える形にすることである. | 248 実装にあたり, 解決しなければならない問題はまず, ログをDataSegmentで扱える形にすることである. |
249 そのためには, @Messageアノテーションを付けたログのクラスの作成を行わなければならない. | 249 そのためには, @Messageアノテーションを付けたログのクラスの作成を行わなければならない. |
250 | 250 |
251 | 251 |
252 \subsection{TreeOperationLogのシリアライズ} | 252 \subsection{TreeOperationLogのシリアライズ} |
253 TreeOperationLogをシリアライズ可能な形にするにあたって気をつけなければならないのが, フィールドを | 253 ログの実体であるTreeOperationLogをシリアライズ可能な形にするにあたって気をつけなければならないのが, フィールドを |
254 シリアライズ可能にする部分である. | 254 シリアライズ可能にする部分である. |
255 TreeOperationLogはTreeOperationをいくつも保持し, TreeOperationはNodePathとNodeOperationを保持するものであった. | 255 TreeOperationLogはTreeOperationをいくつも保持し, TreeOperationはNodePathとNodeOperationを保持するものであった. |
256 そのため, これら全てをシリアライズ可能な形にしなければならない. | 256 そのため, これら全てをシリアライズ可能な形にしなければならない. |
257 | 257 |
258 基本的にこれらの実装は, フィールドを全てプリミティブなものだけにすればよい. | 258 基本的にこれらの実装は, フィールドを全てプリミティブなものだけにすればよい. |
259 MessagePackはListを扱うこともできるため, TreeOperationLogで継承されていたIterableの挙動もListを使うことで | 259 MessagePackはListを扱うこともできるため, TreeOperationLogで継承されていたIterableの挙動もListを使うことで |
260 実装を行うことができた. | 260 実装を行うことができた. |
261 | 261 |
262 \subsection{ログに対する情報の追加} | 262 \section{ログに対する情報の追加} |
263 TreeOperationLogをシリアライズ可能な形にした後, 問題が発生した. | 263 TreeOperationLogをシリアライズ可能な形にした後, 問題が発生した. |
264 それは, TreeOperationLog自体は木の名前を保持していないというものである. | 264 それは, TreeOperationLog自体は木の名前を保持していないというものである. |
265 そのため, TreeOperationLogだけを受け取っても, そのログがどの木に対して行われるのか | 265 そのため, TreeOperationLogだけを受け取っても, そのログがどの木に対して行われるのか |
266 わからなかった. | 266 わからなかった. |
267 そこで, TreeOperationLogの情報だけでなく, 木の名前とUUID, それとtimestampの情報も付与 | 267 そこで, TreeOperationLogの情報だけでなく, 木の名前とUUID, それとtimestampの情報も付与 |
270 % TreeOperationLog に木の名前の情報がない | 270 % TreeOperationLog に木の名前の情報がない |
271 % そのため木の名前を追加して持たせた | 271 % そのため木の名前を追加して持たせた |
272 % 木がなければそのばでつくるようにした | 272 % 木がなければそのばでつくるようにした |
273 | 273 |
274 \subsection{NetworkTreeOperationLogの実装} | 274 \subsection{NetworkTreeOperationLogの実装} |
275 NetworkTreeOperationLogの実装の一部を以下(\ref{fig:netlog})に示す. | 275 NetworkTreeOperationLogの実装の一部を以下(\ref{src:netlog})に示す. |
276 \begin{lstlisting}[frame=lrbt,label=src:netlog,caption=NetworkTreeOperationが持つフィールド,numbers=left] | 276 \begin{lstlisting}[frame=lrbt,label=src:netlog,caption=NetworkTreeOperationが持つフィールド,numbers=left] |
277 @Message | 277 @Message |
278 public class NetworkTreeOperationLog implements TreeOperationLog | 278 public class NetworkTreeOperationLog implements TreeOperationLog |
279 { | 279 { |
280 public LinkedList<NetworkTreeOperation> list; | 280 public LinkedList<NetworkTreeOperation> list; |
414 %データ編集が行われ, | 414 %データ編集が行われ, |
415 | 415 |
416 \newpage | 416 \newpage |
417 \section{永続性の実装} | 417 \section{永続性の実装} |
418 次は, ログの書き出しによる永続性の実装について述べる. | 418 次は, ログの書き出しによる永続性の実装について述べる. |
419 第3章でJungleはWriterいう永続性実装のための機能が元々用意されていることを述べた. | 419 第3章でJungleはWriterという永続性実装のための機能が元々用意されていることを述べた. |
420 永続性で考えなければならないことは, どのようなデータをどんなデータ表現で書き込むかということである. | 420 永続性で考えなければならないことは, どのようなデータをどんなデータ表現で書き込むかということである. |
421 今回の実装ではログであるTreeOperationLogを書き出す. | 421 今回の実装ではログであるTreeOperationLogを書き出す. |
422 また, TreeOperationLogの情報を保持しつつ, MessagePackでシリアライズできるクラスとして | 422 また, TreeOperationLogの情報を保持しつつ, MessagePackでシリアライズできるクラスとして |
423 NetworkTreeOperationLogの実装を行った. | 423 NetworkTreeOperationLogの実装を行った. |
424 | 424 |