Mercurial > hg > Papers > 2021 > riono-sigos
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{チート対策について}