13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 <!DOCTYPE HTML>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 <html lang="en-US">
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 <head>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 <title>分散フレームワークAliceの圧縮機能</title>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 <meta charset="UTF-8">
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 <meta name="viewport" content="width=1274, user-scalable=no">
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 <meta name="generator" content="Slide Show (S9)">
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 <meta name="author" content="照屋のぞみ">
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 <link rel="stylesheet" href="themes/ribbon/styles/style.css">
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 </head>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 <body class="list">
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 <header class="caption">
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 <h1>分散フレームワークAliceの圧縮機能</h1>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 <p>照屋のぞみ</p>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 <div class="slide cover" id="Cover"><div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 <header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 <h2>分散フレームワークAliceの圧縮機能</h2>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 <h3 id="author">照屋のぞみ</h3>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 <h3 id="profile">琉球大学 工学部 情報工学科 4年</h3>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 <!-- todo: add slide.classes to div -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 <!-- todo: create slide id from header? like a slug in blogs? -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 <div class="slide" id="2"><div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 <header>
|
18
|
33 <h1 id="section">研究目的</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 <!-- === begin markdown block ===
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 generated by markdown/1.2.0 on Ruby 2.1.0 (2013-12-25) [x86_64-darwin13.0]
|
18
|
38 on 2015-05-25 18:01:27 +0900 with Markdown engine kramdown (1.5.0)
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 using options {}
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44 <ul>
|
18
|
45 <li>当研究室が開発している並列分散フレームワークAliceではスケーラブルな分散プログラムを信頼性高く記述できる環境を実現する。</li>
|
|
46 <li>Aliceのメタ計算として、通信が切断した際の処理やデータを圧縮する処理等を提供することで、プログラマがコードを大きく変更することなくプログラムの振る舞いを変えることを可能にする。</li>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 </ul>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
49
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
50
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
51 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
53
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54 <div class="slide" id="3"><div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
55 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56 <header>
|
18
|
57 <h1 id="data-segment--code-segment">Data Segment と Code Segment</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
59 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
60
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
61 <ul>
|
18
|
62 <li>Aliceではデータを <strong>Data Segment(DS)</strong> 、タスクを <strong>Code Segment(CS)</strong> という単位に分割してプログラミングを行う。</li>
|
|
63 <li>AliceはJavaで実装されており、CS をユーザーが記述する際には CodeSegment.class を継承することで CS で使用する API を利用する事ができる。</li>
|
|
64 <li>DSはAliceが内部にもつデータベースにより管理されており、CSはDSに対応する一意のkeyを使ってDSを操作する。</li>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
65 </ul>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
66
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
67
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
68
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
69 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
70 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
71
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
72 <div class="slide" id="4"><div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
73 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
74 <header>
|
18
|
75 <h1 id="data-segment--code-segment-1">Data Segment と Code Segment</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
76 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
77 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
78
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
79 <ul>
|
18
|
80 <li>CSはInput DS(入力されるDS)とOutput DS(出力されるDS)を持つ。</li>
|
|
81 <li>CSはkeyで指定されたDSが揃うと実行されるという性質を持つ。
|
|
82 <img src="./images/dsandcs.svg" alt="opt" /></li>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
83 </ul>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
84
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
85
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
86
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
87 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
88 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
89
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
90 <div class="slide" id="5"><div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
91 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
92 <header>
|
18
|
93 <h1 id="codesegment">CodeSegmentの依存関係</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
94 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
95 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
96
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
97 <ul>
|
18
|
98 <li>データの依存関係にないCSは並列実行される</li>
|
|
99 <li>データの依存関係がある場合は Input DS が揃うと順に実行される
|
|
100 <img src="./images/dsandcs2.svg" alt="opt" /></li>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
101 </ul>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
102
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
103
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
104
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
105 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
106 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
107
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
108 <div class="slide" id="6"><div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
109 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
110 <header>
|
18
|
111 <h1 id="data-segment">Data Segment</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
112 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
113 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
114
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
115 <ul>
|
18
|
116 <li>整数や文字列などの基本的なデータの集まり</li>
|
|
117 <li>Aliceの場合はJavaオブジェクトに対応</li>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
118 </ul>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
119
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
120
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
121
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
122 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
123 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
124
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
125 <div class="slide" id="7"><div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
126 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
127 <header>
|
18
|
128 <h1 id="data-segment-manager">Data Segment Manager</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
129 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
130 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
131
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
132 <ul>
|
18
|
133 <li>DS の集合体であるデータベースを Alice では DS Manager(DSM) と呼ぶ。 </li>
|
|
134 <li>DSM 内の DS には対になる String型のkey が存在し、 DSM 名と key を指定しすることで DS の保存、取得を行う。</li>
|
|
135 <li>DS の追加<br />
|
|
136 put(String managerKey, String key, Object val) </li>
|
|
137 <li>DS の取得<br />
|
|
138 take(String managerKey, String key) </li>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
139 </ul>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
140
|
18
|
141 <!--![opt](./images/dsm.svg)-->
|
|
142
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
143
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
144
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
145 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
146 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
147
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
148 <div class="slide" id="8"><div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
149 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
150 <header>
|
18
|
151 <h1 id="data-segment-manager-1">Data Segment Manager</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
152 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
153 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
154
|
18
|
155 <img src="./images/remote_datasegment.svg" alt="opt" width="450px" rightmargin="0"/></li>
|
|
156 <ul>
|
|
157 <li>Local DSM … 各ノード固有のデータベース。</li>
|
|
158 <li>Remote DSM … 他のノードの Local DSM の proxy。接続しているノードの数だけ存在する。<br />
|
|
159 </ul>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
160
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
161
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
162
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
163 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
164 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
165
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
166 <div class="slide" id="9"><div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
167 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
168 <header>
|
18
|
169 <h1 id="data-segment-">Data Segment の表現</h1>
|
14
|
170 </header>
|
|
171 <!-- _S9SLIDE_ -->
|
|
172
|
|
173 <ul>
|
18
|
174 <li>DSは複数の表現を同時に持っており、現在は3種類の表現がある。
|
|
175 <ol>
|
|
176 <li>一般的な Java のクラスオブジェクト</li>
|
|
177 <li>MessagePack for Java でシリアライズ化されたバイナリオブジェクト。Remoteとの通信の際に用いる。</li>
|
|
178 <li>2 を圧縮したバイナリオブジェクト。圧縮機能の一部として今回追加。 </li>
|
|
179 </ol>
|
14
|
180 </li>
|
|
181 </ul>
|
|
182
|
|
183
|
|
184
|
|
185 </section>
|
|
186 </div></div>
|
|
187
|
|
188 <div class="slide" id="10"><div>
|
|
189 <section>
|
|
190 <header>
|
18
|
191 <h1 id="messagepack">MessagePackとは</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
192 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
193 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
194
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
195 <ul>
|
18
|
196 <li>Sadayuki Furuhashiが開発したシリアライズのための機能をまとめたオープンソースライブラリ。</li>
|
|
197 <li>シリアライズ/デシリアライズを高速に行うことができ、整数、浮動小数点数、Boolean、文字列、配列、連想配列、nilをバイト列にシリアライズできる。</li>
|
|
198 <li>JSONのようにプログラミング言語に依存しないデータの表現形式として使用できる。</li>
|
14
|
199 </ul>
|
|
200
|
|
201
|
|
202
|
|
203 </section>
|
|
204 </div></div>
|
|
205
|
|
206 <div class="slide" id="11"><div>
|
|
207 <section>
|
|
208 <header>
|
18
|
209 <h1 id="cs--input-ds-">CS と Input DS の対応付け</h1>
|
14
|
210 </header>
|
|
211 <!-- _S9SLIDE_ -->
|
|
212
|
|
213 <ul>
|
18
|
214 <li>setKey()にtakeコマンドをセットすることで Input DS を指定する</li>
|
|
215 <li>実際にtakeしたデータを参照するときには、asClass()を用いて任意のJavaのオブジェクトとして扱えるようにする </li>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
216 </ul>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
217
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
218
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
219
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
220 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
221 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
222
|
14
|
223 <div class="slide" id="12"><div>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
224 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
225 <header>
|
18
|
226 <h1 id="cs--">CS の 例</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
227 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
228 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
229
|
18
|
230 <p lang="java">RemoteDSM から DSをtakeし、LocalDSM に put を10回繰り返す</p>
|
|
231 <pre><code>public class RemoteIncrement extends CodeSegment {
|
|
232
|
|
233 public Receiver num = ids.create(CommandType.TAKE);
|
|
234
|
|
235 @Override
|
|
236 public void run() {
|
|
237 int num = this.num.asClass(Integer.class);
|
|
238 if (num == 10) System.exit(0);
|
|
239
|
|
240 RemoteIncrement cs = new RemoteIncrement();
|
|
241 cs.num.setKey("remote", "num");
|
|
242
|
|
243 ods.put("local", "num", num);
|
|
244 }
|
|
245
|
|
246 }
|
|
247 </code></pre>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
248
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
249
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
250
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
251 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
252 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
253
|
14
|
254 <div class="slide" id="13"><div>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
255 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
256 <header>
|
18
|
257 <h1 id="treevnc">TreeVNC</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
258 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
259 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
260
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
261 <ul>
|
18
|
262 <li>Aliceを用いて実装する実用的な分散プログラムの例題</li>
|
|
263 <li>当研究室で開発したノードを木構造に配置して負荷分散を行う授業向け画面共有システム</li>
|
|
264 <li>TightVNCがもとになっている<br />
|
|
265 <img src="./images/treeVNC.svg" alt="opt" /></li>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
266 </ul>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
267
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
268
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
269
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
270 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
271 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
272
|
14
|
273 <div class="slide" id="14"><div>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
274 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
275 <header>
|
18
|
276 <h1 id="computation">Computation</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
277 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
278 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
279
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
280 <ul>
|
18
|
281 <li>Aliceでは、計算の本質的な処理をComputatin、Computationとは直接関係ないが別のレベルでそれを支える処理をMeta Computationとして分けて考える。</li>
|
|
282 <li>Alice の Computationは、keyによりDSを待ち合わせ、DSが揃ったCSを並列に実行する処理。</li>
|
|
283 <li>TreeVNC の Computationは、VNCサーバからデータを受け取って表示する処理。</li>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
284 </ul>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
285
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
286
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
287
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
288 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
289 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
290
|
14
|
291 <div class="slide" id="15"><div>
|
|
292 <section>
|
|
293 <header>
|
18
|
294 <h1 id="meta-computation">Meta Computation</h1>
|
14
|
295 </header>
|
|
296 <!-- _S9SLIDE_ -->
|
|
297
|
|
298 <ul>
|
18
|
299 <li>通信の切断・再接続時の処理や分散トポロジーの構成、データの表現形式の選択など、Computationを支えている処理。</li>
|
|
300 <li>TreeVNCの場合、VNCサーバのデータを各VNCノードにコピーする処理。</li>
|
|
301 <li>Aliceの機能を追加するということは Meta Computation を追加すると言い換えられる</li>
|
14
|
302 </ul>
|
|
303
|
|
304
|
|
305
|
|
306 </section>
|
|
307 </div></div>
|
|
308
|
|
309 <div class="slide" id="16"><div>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
310 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
311 <header>
|
18
|
312 <h1 id="treevncalicemeta-computation">TreeVNCで用いるAliceのMeta Computation</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
313 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
314 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
315
|
14
|
316 <ul>
|
18
|
317 <li>TreeTopologyの構成</li>
|
|
318 <li>ノード間通信の切断時・再接続時の処理</li>
|
|
319 <li>データの圧縮</li>
|
|
320 <li>子ノードへのデータの複製</li>
|
14
|
321 </ul>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
322
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
323
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
324
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
325 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
326 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
327
|
14
|
328 <div class="slide" id="17"><div>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
329 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
330 <header>
|
18
|
331 <h1 id="dsmapi">データの転送 - DSMとAPIの追加</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
332 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
333 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
334
|
15
|
335 <ul>
|
18
|
336 <li>Local と Remote それぞれに圧縮表現を扱う Compressed DSM を追加。</li>
|
|
337 <li>指定する DSM を Compressed DSM に変えるだけで扱うデータ表現を変更できる<br />
|
|
338 put(String <strong>“compressed”</strong> + managerKey, String key, Object val)<br />
|
|
339 take(String <strong>“compressed”</strong> + managerKey, String key) </li>
|
15
|
340 </ul>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
341
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
342
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
343
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
344 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
345 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
346
|
14
|
347 <div class="slide" id="18"><div>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
348 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
349 <header>
|
18
|
350 <h1 id="section-1">データの転送 - データ表現の自動生成</h1>
|
16
|
351 </header>
|
|
352 <!-- _S9SLIDE_ -->
|
|
353
|
18
|
354 <ul>
|
|
355 <li>DS が圧縮表現を持っていれはそれをそのまま子ノードにputする</li>
|
|
356 <li>持っていなければその時点でCompressed DSM内部で圧縮表現を生成してputする</li>
|
|
357 <li>DS はオブジェクト表現と圧縮表現を同時にもつため、TreeVNCでは受け取った画面データを伸長をした後、転送のために再圧縮することはない。</li>
|
|
358 </ul>
|
16
|
359
|
|
360
|
|
361
|
|
362 </section>
|
|
363 </div></div>
|
|
364
|
|
365 <div class="slide" id="19"><div>
|
|
366 <section>
|
|
367 <header>
|
18
|
368 <h1 id="section-2">データの受け取り - 任意の形式での取得</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
369 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
370 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
371
|
14
|
372 <ul>
|
18
|
373 <li>圧縮表現で画面データ受け取り、Compressed DSM 内に格納。</li>
|
|
374 <li>TightVNCが画面表示のためにデータを必要としたときに、 asClass() を用いて任意の形式でデータを取り出す。</li>
|
|
375 <li>asClass() は DS のcastメソッドであり、内部で伸長と MessagePack での変換を行う。</li>
|
14
|
376 </ul>
|
|
377
|
|
378
|
|
379
|
|
380 </section>
|
|
381 </div></div>
|
|
382
|
16
|
383 <div class="slide" id="20"><div>
|
14
|
384 <section>
|
|
385 <header>
|
18
|
386 <h1 id="alice">データの受け取り - Aliceの通信パケット変更</h1>
|
14
|
387 </header>
|
|
388 <!-- _S9SLIDE_ -->
|
|
389
|
18
|
390 <ul>
|
|
391 <li>通信ヘッダにデータの状態を表すフラグを追加したことで、受け取ったデータを適切な形式でDSM内に格納できる。</li>
|
|
392 <li>圧縮前と圧縮後のデータサイズを入れたことにより、受け取ったデータの適切な伸長が可能。</li>
|
|
393 </ul>
|
|
394
|
|
395 <table style="border-collapse: collapse;border:1px solid #000000;">
|
|
396 <td style="border:1px solid #000000;"> serialized </td>
|
|
397 <td style="border:1px solid #000000;">データ本体のシリアライズ状態を示す</td>
|
|
398
|
|
399 <tr>
|
|
400 <td style="border:1px solid #000000;"> compressed </td>
|
|
401 <td style="border:1px solid #000000;">データ本体の圧縮状態を示す</td>
|
|
402 </tr>
|
|
403 <tr>
|
|
404 <td style="border:1px solid #000000;"> objectDataSize </td>
|
|
405 <td style="border:1px solid #000000;">圧縮前のオブジェクトのデータサイズを表す</td>
|
|
406 </tr>
|
|
407 <tr>
|
|
408 <td style="border:1px solid #000000;"> dataSize </td>
|
|
409 <td style="border:1px solid #000000;">送信するDSのデータサイズを表す</td>
|
|
410 </tr>
|
|
411 </table>
|
14
|
412
|
|
413
|
|
414
|
|
415 </section>
|
|
416 </div></div>
|
|
417
|
16
|
418 <div class="slide" id="21"><div>
|
14
|
419 <section>
|
|
420 <header>
|
18
|
421 <h1 id="alice1---erlang">Aliceと他言語等との比較(1) - Erlang</h1>
|
14
|
422 </header>
|
|
423 <!-- _S9SLIDE_ -->
|
|
424
|
18
|
425 <ul>
|
|
426 <li>
|
|
427 <p>ネットワークに依存しない通信が可能</p>
|
|
428 </li>
|
|
429 <li>
|
|
430 <p>Topologyは自分で管理</p>
|
|
431 </li>
|
|
432 </ul>
|
14
|
433
|
|
434
|
|
435
|
|
436 </section>
|
|
437 </div></div>
|
|
438
|
16
|
439 <div class="slide" id="22"><div>
|
14
|
440 <section>
|
|
441 <header>
|
18
|
442 <h1 id="alice1---linda">Aliceと他言語等との比較(1) - Linda</h1>
|
14
|
443 </header>
|
|
444 <!-- _S9SLIDE_ -->
|
|
445
|
|
446 <ul>
|
18
|
447 <li>keyでタプルというデータの集合を管理している</li>
|
|
448 <li>
|
|
449 <p>in/outでAliceのput/takeに対応する操作を行う</p>
|
14
|
450 </li>
|
18
|
451 <li>タスクはinで単一のタプルを待つ</li>
|
|
452 <li>MetaComputationがない</li>
|
14
|
453 </ul>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
454
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
455
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
456
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
457 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
458 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
459
|
16
|
460 <div class="slide" id="23"><div>
|
14
|
461 <section>
|
|
462 <header>
|
18
|
463 <h1 id="alice1---corba">Aliceと他言語等との比較(1) - Corba</h1>
|
14
|
464 </header>
|
|
465 <!-- _S9SLIDE_ -->
|
|
466
|
18
|
467 <ul>
|
|
468 <li>
|
|
469 <p>オブジェクト間のRPC</p>
|
|
470 </li>
|
|
471 <li>DSがない。keyという概念がない。</li>
|
|
472 <li>データの待ち合わせがない</li>
|
14
|
473 </ul>
|
|
474
|
|
475
|
|
476
|
|
477 </section>
|
|
478 </div></div>
|
|
479
|
16
|
480 <div class="slide" id="24"><div>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
481 <section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
482 <header>
|
18
|
483 <h1 id="alice1---http">Aliceと他言語等との比較(1) - HTTP</h1>
|
14
|
484 </header>
|
|
485 <!-- _S9SLIDE_ -->
|
|
486
|
18
|
487 <ul>
|
|
488 <li>get/putで通信を行う</li>
|
|
489 <li>
|
|
490 <p>URLがデータベースのkeyとなる</p>
|
|
491 </li>
|
|
492 <li>MIME形式で送信。複数の表現を持つMeta Computationがない。 </li>
|
|
493 <li>セッション管理はクライアント自身がやる </li>
|
|
494 <li>並列処理できない </li>
|
|
495 <li>get/putをRPC的に扱わない</li>
|
|
496 </ul>
|
14
|
497
|
|
498
|
|
499
|
|
500 </section>
|
|
501 </div></div>
|
|
502
|
16
|
503 <div class="slide" id="25"><div>
|
14
|
504 <section>
|
|
505 <header>
|
18
|
506 <h1 id="treevncalicetreevnc">TreeVNCとAliceを用いたTreeVNCの比較</h1>
|
14
|
507 </header>
|
|
508 <!-- _S9SLIDE_ -->
|
|
509
|
15
|
510 <ul>
|
18
|
511 <li>
|
|
512 <p>TreeVNC<br />
|
|
513 通信プロトコルを定義や圧縮を自前で行う<br />
|
|
514 通信スレッドを複数作成<br />
|
|
515 様々な部分で通信APIを呼び出す </p>
|
|
516 </li>
|
|
517 <li>
|
|
518 <p>Aliceを用いたTreeVNC<br />
|
|
519 Aliceと接続する最小限の変更<br />
|
|
520 木の構成部分や圧縮形式での通信はMeta Computation </p>
|
|
521 </li>
|
15
|
522 </ul>
|
14
|
523
|
|
524
|
|
525
|
|
526 </section>
|
|
527 </div></div>
|
|
528
|
16
|
529 <div class="slide" id="26"><div>
|
14
|
530 <section>
|
|
531 <header>
|
18
|
532 <h1 id="treevncalicetreevnc-1">TreeVNCとAliceを用いたTreeVNCの比較</h1>
|
14
|
533 </header>
|
|
534 <!-- _S9SLIDE_ -->
|
|
535
|
15
|
536 <ul>
|
18
|
537 <li>TightVNCからのコードの増加量</li>
|
|
538 <li>Aliceを用いれば通常の TreeVNC の 20% の行数で記述できる。</li>
|
15
|
539 </ul>
|
14
|
540
|
18
|
541 <table style="border-collapse: collapse;border:1px solid #000000;">
|
|
542 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;"></th>
|
|
543 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;"> 行数 </th>
|
|
544 <th style="border:1px solid #000000;padding:5px 15px 5px 15px;">単語数</th>
|
|
545 <tr>
|
|
546 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"> TreeVNC </td>
|
|
547 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">5049</td>
|
|
548 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">14191</td>
|
|
549 </tr>
|
|
550 <tr>
|
|
551 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;"> Aliceを用いたTreeVNC </td>
|
|
552 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">989</td>
|
|
553 <td style="border:1px solid #000000;padding:5px 15px 5px 15px;">2355</td>
|
|
554 </tr>
|
|
555 </table>
|
|
556
|
14
|
557
|
|
558
|
|
559 </section>
|
|
560 </div></div>
|
|
561
|
16
|
562 <div class="slide" id="27"><div>
|
14
|
563 <section>
|
|
564 <header>
|
18
|
565 <h1 id="section-3">まとめ</h1>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
566 </header>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
567 <!-- _S9SLIDE_ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
568
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
569 <ul>
|
18
|
570 <li>Alice が実用的なアプリケーションを記述するための Meta Computation として、データに多態性を持たせ、指定するDSMによってデータ表現を変える機能を実装した。</li>
|
14
|
571 <li>これによりユーザが記述する Computation 部分を大きく変えずに自由度の高い通信を行うことが可能になった。</li>
|
|
572 <li>同様の手法により、暗号形式・JSON 形式など複数のデータ表現を扱えるように拡張できる。</li>
|
18
|
573 <li>今後の課題としては、圧縮機能を TreeVNC で用 いることで有効性を測る必要がある。</li>
|
13
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
574 </ul>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
575 <!-- === end markdown block === -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
576
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
577 </section>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
578 </div></div>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
579
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
580
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
581 <script src="scripts/script.js"></script>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
582 <!-- Copyright © 2010–2011 Vadim Makeev, http://pepelsbey.net/ -->
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
583 </body>
|
Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
584 </html>
|