changeset 15:2dd23f9603b3

update chapter Christie example
author riono <e165729@ie.u-ryukyu.ac.jp>
date Tue, 04 May 2021 23:41:09 +0900
parents 73a3c53c7568
children c65256380a80
files Paper/riono-sigos.pdf Paper/riono-sigos.tex Paper/src/FinishHelloWorld.java Paper/src/HelloWorldCodeGear.java sigos2021.mm
diffstat 5 files changed, 83 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
Binary file Paper/riono-sigos.pdf has changed
--- a/Paper/riono-sigos.tex	Tue May 04 20:17:17 2021 +0900
+++ b/Paper/riono-sigos.tex	Tue May 04 23:41:09 2021 +0900
@@ -94,6 +94,15 @@
 
 \section{オンラインゲームにおけるデータ通信}
 
+
+
+\section{Chrisite のC\#への書き換えについて}
+Chrisite はAlice というプロジェクトで開発が行われていた。しかしAlice には様々な問題点があった。
+
+
+
+
+
 \section{Christieの基礎概念}
 Chrisiteは当研究室で開発している分散通信フレームワークである。同じく当研究室で開発している GearsOSのファイルシステムに組み込まれる予定があるため、GearsOSを構成する言語 Continuation based Cと似た概念を持っている。 Chrisiteに存在する概念として以下のようなものがある。
 
@@ -121,19 +130,40 @@
 \end{description}
 
 \section{プログラムの例}
-Code \ref{code:javaSHW} はChrisite の機能を使用してhello world を出力する例題である。
-CodeGearManager を作り、setup(new CodeGear) を行うことで各CodeGear に記述されたDataGear の待ち合わせを行う。全てのDataGear が揃った場合にCodeGear が実行される。CodeGearaManager の作成方法はStartCodeGear を継承したものから、createCGM(port) を実行することにより、CodeGearManager が作成できる。
+Code \ref{code:javaSHW} 、Code \ref{code:javaHWC} 、Code \ref{code:javaFHW} はChrisite の機能を使用してhello world を出力する例題である。
+
+\lstinputlisting[caption=StartHelloWorld, label=code:javaSHW]{src/StartHelloWorld.java}
+\lstinputlisting[caption=HelloWorldCodeGear, label=code:javaHWC]{src/HelloWorldCodeGear.java}
+\lstinputlisting[caption=FinishHelloWorld, label=code:javaFHW]{src/FinishHelloWorld.java}
+
+Code \ref{code:javaSHW} ではCodeGearManager を作り、setup(new CodeGear) を行うことで各CodeGear に記述されたDataGear の待ち合わせを行う。全てのDataGear が揃った場合にCodeGear が実行される。CodeGearaManager の作成方法はStartCodeGear を継承したものから、createCGM(port) を実行することにより、CodeGearManager が作成できる。
+
+Code \ref{code:javaSHW} の11、12行目はput(key, data) を行うことでDataGearManager のqueue にデータを格納することができる。key はstring 型のみで格納したい変数名を指定する。11、12行目のput ではCode \ref{code:javaHWC} のフィールド変数helloWorld を指定し、データは"hello" と"world" を逐次的に格納している。
+
+Code \ref{code:javaHWC} 、Code \ref{code:javaFHW} がCodeGearにあたる。それぞれのフィールド変数には@Take annotation が付いており、DataGearManager に格納されたkey を参照してデータを取得する。その後DataGearManger に格納されたデータは破棄される。
+
+Code \ref{code:javaHWC} では最初にフィールド変数 helloWorld にstring 型の"hellow"を取得、print を行い、再びkey hello、data "hello" をDataGearManager にput している。また8行目で自らをsetpuしているため、再帰的にHelloWorldCodeGear が再実行される。2回目の実行ではフィールド変数 helloWorld に"world" が格納と出力がされ、key world、data "world" がDataGearManager に格納される。Code \ref{code:javaHWC} でput した"hello" と"world" は最終的に、Code \ref{code:javaFHW} の同名のフィールド変数に格納される。
+2回目の実行でもsetup しているが、DataGearManagerにはkey helloWorld のデータが無いため、3回目以降は実行されない。
+
+Code \ref{code:javaHWC} の2回の実行後、Code \ref{code:javaHWC} のローカル変数hello とworld が全て揃ったことによりCode \ref{code:javaHWC} が実行されプログラムは終了する。
 
 
-\lstinputlisting[caption=StartHelloWorld, label=code:javaSHW]{src/StartHelloWorld.java}
+\section{Unity}
 
 
 
-\section{歴史について}
+\section{C\# でのChristie}
+
+Code \ref{code:javaSHW} 、Code \ref{code:javaHWC} 、Code \ref{code:javaFHW} がC\#ではこうなります
+
+\lstinputlisting[caption=C\# StartHelloWorld, label=code:csSHW]{src/StartHelloWorld.cs}
 
 
 
-\section{Unity}
+\section{Unityでの動作}
+
+
+
 
 \section{annotation の書き換え}
 java 版ではDataGear を取得する際に、annotation という java の機能を用いて行った。C\#には annotation はなく、代わりにattribute を利用して DataGear の取得を行っている。
@@ -172,13 +202,6 @@
 java では別Thread を
 
 
-\section{C\#への書き換え後のプログラムの例}
-
-\lstinputlisting[caption=C\# StartHelloWorld, label=code:csSHW]{src/StartHelloWorld.cs}
-
-
-\section{Unityでの動作}
-
 
 \section{チート対策について}
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/FinishHelloWorld.java	Tue May 04 23:41:09 2021 +0900
@@ -0,0 +1,9 @@
+public class FinishHelloWorld extends CodeGear {
+    @Take String hello;
+    @Take String world;
+
+    @Override
+    protected void run(CodeGearManager cgm) {
+        cgm.getLocalDGM().finish();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Paper/src/HelloWorldCodeGear.java	Tue May 04 23:41:09 2021 +0900
@@ -0,0 +1,11 @@
+public class HelloWorldCodeGear extends CodeGear {
+
+    @Take String helloWorld;
+
+    @Override
+    protected void run(CodeGearManager cgm) {
+        System.out.print(helloWorld + " ");
+        cgm.setup(new HelloWorldCodeGear());
+        cgm.getLocalDGM().put(helloWorld,helloWorld);
+    }
+}
--- a/sigos2021.mm	Tue May 04 20:17:17 2021 +0900
+++ b/sigos2021.mm	Tue May 04 23:41:09 2021 +0900
@@ -1,7 +1,7 @@
 <map version="freeplane 1.8.0">
 <!--To view this file, download free mind mapping software Freeplane from http://freeplane.sourceforge.net -->
-<node TEXT="継続を使用する並列分散フレームワークのUnity実装" FOLDED="false" ID="ID_487332376" CREATED="1619755414416" MODIFIED="1620046996513"><hook NAME="MapStyle">
-    <properties edgeColorConfiguration="#808080ff,#ff0000ff,#0000ffff,#00ff00ff,#ff00ffff,#00ffffff,#7c0000ff,#00007cff,#007c00ff,#7c007cff,#007c7cff,#7c7c00ff" fit_to_viewport="false" show_icon_for_attributes="true"/>
+<node TEXT="継続を使用する並列分散フレームワークのUnity実装" FOLDED="false" ID="ID_487332376" CREATED="1619755414416" MODIFIED="1620058705065"><hook NAME="MapStyle">
+    <properties edgeColorConfiguration="#808080ff,#ff0000ff,#0000ffff,#00ff00ff,#ff00ffff,#00ffffff,#7c0000ff,#00007cff,#007c00ff,#7c007cff,#007c7cff,#7c7c00ff" show_icon_for_attributes="true" fit_to_viewport="false"/>
 
 <map_styles>
 <stylenode LOCALIZED_TEXT="styles.root_node" STYLE="oval" UNIFORM_SHAPE="true" VGAP_QUANTITY="24.0 pt">
@@ -62,10 +62,23 @@
 </map_styles>
 </hook>
 <node TEXT="章構成" POSITION="right" ID="ID_1198757723" CREATED="1619756376189" MODIFIED="1619756381807">
-<node TEXT="はじめに" ID="ID_1680956445" CREATED="1619881006204" MODIFIED="1619881008023"/>
+<node TEXT="はじめに" ID="ID_1680956445" CREATED="1619881006204" MODIFIED="1619881008023">
+<node TEXT="オンラインゲームにおけるデータ通信" ID="ID_1594851102" CREATED="1620127110294" MODIFIED="1620127112435"/>
+</node>
 <node TEXT="Chrisiteの基礎概念" ID="ID_829515532" CREATED="1619881009429" MODIFIED="1619881564341"/>
+<node TEXT="ChrisiteのC#への書き換え" ID="ID_1515152892" CREATED="1620127145093" MODIFIED="1620127192649">
+<node TEXT="C#に書き直す理由について" ID="ID_1010697844" CREATED="1620127291834" MODIFIED="1620127306656"/>
+<node TEXT="annotationについて" ID="ID_385442849" CREATED="1620127205311" MODIFIED="1620127211667">
+<node TEXT="ユーザーの使用例" ID="ID_129408890" CREATED="1620127227118" MODIFIED="1620127246337"/>
+</node>
+<node TEXT="keyについて" ID="ID_1836173751" CREATED="1620127213690" MODIFIED="1620127219436"/>
+</node>
 <node TEXT="Unity" ID="ID_1940500532" CREATED="1619881615121" MODIFIED="1619881621836"/>
-<node TEXT="書き換えの方針" ID="ID_886769487" CREATED="1619881623845" MODIFIED="1619881628823"/>
+<node TEXT="書き換えの方針" ID="ID_886769487" CREATED="1619881623845" MODIFIED="1619881628823">
+<node TEXT="annotation" ID="ID_1575265406" CREATED="1620127338849" MODIFIED="1620127344761"/>
+<node TEXT="MessagePack" ID="ID_839127787" CREATED="1620127345893" MODIFIED="1620127351486"/>
+<node TEXT="ThreadからTaskへ" ID="ID_105028350" CREATED="1620127352019" MODIFIED="1620127370790"/>
+</node>
 <node TEXT="チート対策について" ID="ID_1117874565" CREATED="1619881632334" MODIFIED="1619881637003"/>
 <node TEXT="まとめ" ID="ID_1303888531" CREATED="1619881638327" MODIFIED="1619881642359"/>
 </node>
@@ -156,10 +169,20 @@
 <node TEXT="詳細" ID="ID_1773448852" CREATED="1619879977664" MODIFIED="1619879987047">
 <node TEXT="プログラムを書いたものを書く" ID="ID_1672514353" CREATED="1619880037661" MODIFIED="1619880051961"/>
 <node TEXT="annotationとattibuteについて" ID="ID_1857958118" CREATED="1619879987454" MODIFIED="1619879999567"/>
-<node TEXT="messagepackの違い" ID="ID_42679650" CREATED="1619880001386" MODIFIED="1619880010425"/>
+<node TEXT="messagepackの違い" ID="ID_42679650" CREATED="1619880001386" MODIFIED="1619880010425">
+<node TEXT="java版は古いものを使っている" ID="ID_1904877888" CREATED="1620058837272" MODIFIED="1620058849124"/>
+<node TEXT="C#はjava版と同じように書くものを使っている" ID="ID_1438697742" CREATED="1620058850775" MODIFIED="1620058870778"/>
+<node TEXT="パケットの中身を変更した" ID="ID_1805162337" CREATED="1620058883327" MODIFIED="1620058904446"/>
+</node>
 <node TEXT="ExcuterをTaskにした" ID="ID_199684922" CREATED="1619880056153" MODIFIED="1619880080017"/>
 </node>
 </node>
+<node TEXT="C#での書き換え後のプログラム例" POSITION="left" ID="ID_349126780" CREATED="1620058760028" MODIFIED="1620058777763">
+<node TEXT="java版と比較する" ID="ID_69807001" CREATED="1620058781266" MODIFIED="1620058788908"/>
+</node>
+<node TEXT="Unityでの動作" POSITION="left" ID="ID_788621253" CREATED="1620058690977" MODIFIED="1620058706651">
+<node TEXT="コード例" ID="ID_2986440" CREATED="1620058715991" MODIFIED="1620058720589"/>
+</node>
 <node TEXT="チート対策について" POSITION="left" ID="ID_459484271" CREATED="1619757884807" MODIFIED="1619761959958">
 <node TEXT="チートの定義" ID="ID_1377341220" CREATED="1619762172620" MODIFIED="1619762178344">
 <node TEXT="メモを取るのは?" ID="ID_774204501" CREATED="1619769398229" MODIFIED="1619769403550"/>