diff Paper/riono-sigos.tex @ 8:48c1f1d9fc65

add src and update chapter attribute vs annotation
author riono <e165729@ie.u-ryukyu.ac.jp>
date Mon, 03 May 2021 22:57:48 +0900
parents 65d3256f35d1
children c5abec609e35
line wrap: on
line diff
--- a/Paper/riono-sigos.tex	Sun May 02 01:39:52 2021 +0900
+++ b/Paper/riono-sigos.tex	Mon May 03 22:57:48 2021 +0900
@@ -26,6 +26,30 @@
 %\setcounter{号数}{10}
 %\setcounter{page}{1}
 
+\lstset{
+  language=java, 
+  tabsize=2, 
+  numbers=left,
+  frame=single, 
+  basicstyle={\ttfamily\footnotesize}, % 
+  identifierstyle={\footnotesize}, % 
+ commentstyle={\footnotesize\itshape}, % 
+  keywordstyle={\footnotesize\bfseries}, % 
+  ndkeywordstyle={\footnotesize}, % 
+  stringstyle={\footnotesize\ttfamily}, 
+  breaklines=true, 
+  captionpos=t, 
+  columns=[l]{fullflexible}, % 
+  xrightmargin=0zw, % 
+  xleftmargin=1zw, % 
+  aboveskip=1zw, 
+  numberstyle={\scriptsize}, % 
+  stepnumber=1, 
+  numbersep=0.5zw, % 
+  lineskip=-0.5ex, 
+}
+
+\renewcommand{\lstlistingname}{Code}
 
 \begin{document}
 
@@ -82,17 +106,38 @@
 
 以下はjava版のChrisiteについて解説を行う。
 CodeGearはクラスやスレッドに相当する。
-DataGearは変数データに相当し、CodeGear内でアノテーションを用いて変数データを取得する。CodeGear内に記述した全てのDataGearの中にデータが格納された際に、初めてそのCodeGearが実行されるという仕組みになっている。
+DataGearは変数データに相当し、CodeGear内でannotationを用いて変数データを取得する。CodeGear内に記述した全てのDataGearの中にデータが格納された際に、初めてそのCodeGearが実行されるという仕組みになっている。
 CodeGearManagerはノードであり、CodeGear、DataGear、DataGearManagerを管理する。
 DataGearManagerはDataGearを管理するものであり、putという操作により変数データ、つまりDataGearを格納できる。DataGearManagerのput操作を行う際にはLocalとRemoteのどちらかを選び、変数のkeyとデータを引数として渡す。
 Localであれば、LocalのCodeGearManagerが管理しているDataGearManagerに対しDataGearを格納していく。Remoteであれば、接続したRemote先のCodeGearManagerが管理しているDataGearManagerにDataGearを格納できる。
-put操作を行った後は、対象のDataGearManagerの中にqueueとして保管される。DataGearを取り出す際には、CodeGearm内で宣言した変数データにアノテーションをつける。DataGearのアノテーションにはTake、Peek、TakeFrom、PeekFromの4つがある。
+put操作を行った後は、対象のDataGearManagerの中にqueueとして保管される。DataGearを取り出す際には、CodeGearm内で宣言した変数データにannotationをつける。DataGearのannotationにはTake、Peek、TakeFrom、PeekFromの4つがある。
 
 
+\begin{description}
+\item[Take] 先頭のDataGear を読み込み、そのDataGear を削除する。DataGearが複数ある場合、この動作を用いる
+\item[Peek] 先頭のDataGear を読み込むが、DataGear が削除されない。そのため、特に操作をしない場合は同じデータを参照し続ける。
+\item[TakeFrom (Remote DGM name)] Take と似ているが、Remote DGM nameを指定することで、その接続先(Remote) のDataGearManager からTake 操作を行える。
+\item[PeekFrom (Remote DGM name)] Peek と似ているが、Remote DGM name を指定することで、その接続先(Remote) のDataGearManager からPeek 操作を行える。
+
+\end{description}
 
 \section{Unity}
 
-\section{書き換えの方針}
+\section{annotation の書き換え}
+java 版ではDataGear を取得する際に、annotation という java の機能を用いて行った。C\#には annotation はなく、代わりにattribute を利用して DataGear の取得を行っている。
+以下のCode \ref{code:javaTake}、Code \ref{code:csTake}はjava とC\# におけるTakeの実装である。
+
+
+\lstinputlisting[caption=java における Take annotation, label=code:javaTake]{src/Take.java}
+
+\lstinputlisting[caption=C\# における Take attribute, label=code:csTake]{src/Take.cs}
+
+java でannotation を自作する際には、 @interfacs で宣言する。また、Code \ref{code:javaTake} の8行目ではannotation情報をどの段階まで保持するかを指定しており、Take の場合 JVMによって保存され、ランタイム環境で使用できる。9行目ではannotationの適用可能箇所を指定しており、フィールド変数に対して適応可能となっている。
+
+C\# でattribute を作成する際には、 System.Attributeを継承する必要がある。attribute の適用可能箇所については、Code \ref{code:csTake} の4行目でフィールド変数を指定している。
+
+\section{MessagePackの相違点}
+
 
 \section{チート対策について}