annotate slide/thesis.pdf.html @ 17:55e745a21506 default tip

add abstruct & slide
author ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
date Sun, 16 Feb 2020 17:54:28 +0900
parents 7293b6481e32
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 <!DOCTYPE html>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 <html>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 <head>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 <meta http-equiv="content-type" content="text/html;charset=utf-8">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 <title>分散フレームワークChristieを用いたリモートエディタの実装</title>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 <meta name="generator" content="Slide Show (S9) v4.1.0 on Ruby 2.6.3 (2019-04-16) [universal.x86_64-darwin19]">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 <meta name="author" content="Takahiro Ikki, Shinji Kono" >
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 <!-- style sheet links -->
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 <link rel="stylesheet" href="s6/themes/screen.css" media="screen">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 <link rel="stylesheet" href="s6/themes/print.css" media="print">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 <link rel="stylesheet" href="s6/themes/blank.css" media="screen,projection">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 <!-- JS -->
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 <script src="s6/js/jquery-1.11.3.min.js"></script>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 <script src="s6/js/jquery.slideshow.js"></script>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 <script src="s6/js/jquery.slideshow.counter.js"></script>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 <script src="s6/js/jquery.slideshow.controls.js"></script>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 <script src="s6/js/jquery.slideshow.footer.js"></script>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 <script src="s6/js/jquery.slideshow.autoplay.js"></script>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 <!-- prettify -->
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 <link rel="stylesheet" href="scripts/prettify.css">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 <script src="scripts/prettify.js"></script>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 <style>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 .slide {page-break-after: always;}
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 </style>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 </head>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 <body>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 <div class="layout">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 <div id="header"></div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 <div id="footer">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 <div align="right">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 <img src="s6/images/logo.svg" width="200px">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 <div class="presentation">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 <div class='slide cover'>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 <table width="90%" height="90%" border="0" align="center">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 <tr>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 <td>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 <div align="center">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 <h1><font color="#808db5">分散フレームワークChristieを用いたリモートエディタの実装</font></h1>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 </td>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 </tr>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 <tr>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 <td>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 <div align="left">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 Takahiro Ikki, Shinji Kono
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 琉球大学
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 <hr style="color:#ffcc00;background-color:#ffcc00;text-align:left;border:none;width:100%;height:0.2em;">
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 </td>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 </tr>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 </table>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 <div class='slide'>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 <!-- _S9SLIDE_ -->
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 <h2 id="研究目的-背景">研究目的, 背景</h2>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 <li>ペアプログラミングなどでは同時に複数人が一つのファイルを編集することができるリモートエディタが有効である。</li>
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
81 <li>既存のリモートエディタアプリケーションとしてVisual Stdio Codeのlive share機能があげられる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
82 <li>編集に参加するユーザーがそれぞれ好きなエディタが使えるアプリケーションを作成する。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
83 <li>本研究室で開発している分散フレームワークChristieはGearという概念の性質上リモートエディタと相性が良い。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
84 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
85
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
86 <!--
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
87 ## 発表の流れ
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
88 - リモートエディタの機能と開発手順の解説
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
89 - javaで制作したテスト用エディタ
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
90 - コマンドパターンによる命令オブジェクトの作成
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
91 - 編集位置の相違とその解消方法
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
92 - スター型接続によるネットワーク通信
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
93 - Christieの解説
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
94 - Gearの概念
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
95 - アノテーション
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
96 - TopologyManager
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
97 - 今後の課題とまとめ
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
98 !-->
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
99
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
100
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
101
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
102 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
103
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
104 <div class='slide'>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
105 <!-- _S9SLIDE_ -->
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
106 <h2 id="リモートエディタの概要説明">リモートエディタの概要説明</h2>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
107 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
108 <li>本研究で作成するリモートエディタはChristieの機能を用いて通信環境を構成する。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
109 <li>同期編集セッションに接続したユーザーは自身のマシン上でエディタを使って編集対象ファイルを開く。
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 <ul>
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
111 <li>ユーザーが起こしたファイルへの変更を、命令コマンドとして接続しているサーバー(ハブ)へ送信&amp;実行させる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
112 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
113 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
114 <li>命令コマンドはサーバーへ集められ、サーバーは受け取ったコマンドを他の接続ノードへ送信し、実行させる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
115 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
116
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
117 <div style="text-align: center;">
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
118  <img src="images/RemoteEditor.pdf" alt="MetaGear" width="800" />
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
119 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
120
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
121
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
122
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
123 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
124
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
125 <div class='slide'>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
126 <!-- _S9SLIDE_ -->
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
127 <h2 id="テスト用テキストエディタ">テスト用テキストエディタ</h2>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
128 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
129 <li>通信の構成を行うChristieはjava言語で作成されているため、javaのswingを用いてテキストエディタを制作した。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
130 <li>エディタ部分の入力、削除の取得はDocument Listenerクラスを使った。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
131 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
132 <li>insertUpdate、removeUpdateメソッドがそれぞれ挿入、削除を検知した時に動作する。</li>
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 </li>
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
135 <li>このエディタはファイルの内容をオフセット番号で取り扱っている。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
136 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
137
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
138 <div style="text-align: center;">
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
139  <img src="images/Editor.png" alt="MetaGear" width="800" />
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
140 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
141
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
142
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
143
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
144 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
145
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
146 <div class='slide'>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
147 <!-- _S9SLIDE_ -->
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
148 <h2 id="documentlistenerの記述部分">DocumentListenerの記述部分</h2>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
149
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
150 <pre><code>public class MyDocumentListener implements DocumentListener {
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
151 @Override
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
152 public void insertUpdate(DocumentEvent e) {
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
153 Document doc = e.getDocument();
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
154 loc = e.getOffset();
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
155 System.out.println(loc);
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
156
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
157 }
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
158
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
159 @Override
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
160 public void removeUpdate(DocumentEvent e) {
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
161 Document doc = e.getDocument();
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
162 sendLoc = e.getOffset();
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
163 System.out.println("delete " + sendLoc);
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
164 }
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
165 @Override
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
166 public void changedUpdate(DocumentEvent e) {
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
167 }
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
168 }
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
169 </code></pre>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
170
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
171
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
172
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
173 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
174
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
175 <div class='slide'>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
176 <!-- _S9SLIDE_ -->
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
177 <h2 id="コマンドパターンの解説">コマンドパターンの解説</h2>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
178 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
179 <li>リモートエディタの通信では、各ノード(参加ユーザのエディタ)がそれぞれ自身のファイルの変更内容を他のノードに送信する。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
180 <li>コマンドパターンとは命令を一つのオブジェクトとして表現するプログラム手法である。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
181 <li>命令を表すクラスを作成し、インスタンスを作成と同時に命令の中身を入力することで命令を作成する。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
182 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
183 <li>リモートエディタにおいては「オフセットn番目に に 文字列 “A”を入力した」という変更を命令にして送信する。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
184 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
185 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
186 <li>コマンドパターンの利点として、
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
187 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
188 <li>ChristieのGearの概念と相性がいい。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
189 <li>命令に必要な内容をまとめて送信するため、時間差による相違の発生が防げる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
190 <li>オブジェクトとして取り扱えるため管理が行いやすい。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
191 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
192 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
193 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
194
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
195 <pre><code> package christie.example.RemoteTake;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
196 import org.msgpack.annotation.Message;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
197
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
198 @Message
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
199 class RTCommand {
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
200 public String line;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
201 public String cmd;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
202 public int offset;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
203
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
204 public RTCommand () {}
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
205
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
206 public RTCommand(String cmd, String line, int i) {
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
207 this.cmd = cmd;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
208 this.line = line;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
209 this.offset = i;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
210 }
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
211
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
212 @Override
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
213 public String toString() {
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
214 return "RTCommand{" +
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
215 "line='" + line + '\'' +
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
216 ", cmd='" + cmd + '\'' +
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
217 ", offset=" + offset +
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
218 '}';
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
219 }
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
220 }
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
221 </code></pre>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
222
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
223
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
224
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
225 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
226
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
227 <div class='slide'>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
228 <!-- _S9SLIDE_ -->
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
229 <h2 id="コマンドパターン実装の際に起こった問題">コマンドパターン実装の際に起こった問題</h2>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
230 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
231 <li>クラスを他ノードに送信するためには、クラスをシリアライズして送信する必要がある。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
232 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
233 <li>コマンドの送信にはmsgpackクラスとjavassistを利用している。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
234 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
235 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
236 <li>しかし、送信がうまく行えなかったため、原因を調査した。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
237 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
238 <li>javaのバージョン進行のため、msgpackバージョン0.6.12が非対称となっていた。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
239 <li>msgpackの最新バージョン0.8.20はシリアライズ機能が含まれなくなった。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
240 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
241 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
242 <li>以上の原因に対処するため
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
243 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
244 <li>javassistのバージョンを最新版へ変更した。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
245 <li>シリアライズする命令クラスに対し、クラスをpublicに変更した。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
246 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
247 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
248 <li>以上の対処によりコマンドパターンでの命令実装を行うことができた。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
249 <li>自身でシリアライズ機能をChristieに内蔵してしまえば、これらのパッケージは不要になる。</li>
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
250 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
251
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
252
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
253
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
254 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
255
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
256 <div class='slide'>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
257 <!-- _S9SLIDE_ -->
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
258 <h2 id="編集位置の相違">編集位置の相違</h2>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
259 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
260 <li>同期編集のセッションでは命令コマンドの送信のすれ違いにより、ノードごとのファイル状態が異なってしまうことがある。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
261 <li>EditorAとEditorBはそれぞれの命令を自身のエディタバッファに施してから命令を送信するため、お互いバッファ状態が異なる状態で受け取った命令を実行してしまう。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
262 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
263
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
264 <div style="text-align: center;">
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
265  <img src="images/difference_offset.pdf" alt="MetaGear" width="800" />
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
266 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
267
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
268
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
269
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
270 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
271
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
272 <div class='slide'>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
273 <!-- _S9SLIDE_ -->
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
274 <h2 id="編集の相違の解消">編集の相違の解消</h2>
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
275 <ul>
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
276 <li>同期編集のセッションはスター型の通信接続で行うため、サーバー対複数ノードの通信間で相違が発生する。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
277 <li>編集の相違を防ぐためには二つの処理を行う必要がある。
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
278 <ul>
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
279 <li>サーバーとノード間の命令のすれ違いが発生したことを検知する。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
280 <li>すれ違いが発生した際に、オフセットのズレを修正する。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
281 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
282 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
283 <li>サーバーが正しいファイルの状態を保持するためサーバーの状態にノードが合わせる必要がある。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
284 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
285
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
286
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
287
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
288 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
289
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
290 <div class='slide'>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
291 <!-- _S9SLIDE_ -->
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
292 <h2 id="命令コマンドに番号をつけ相違を解消する">命令コマンドに番号をつけ相違を解消する</h2>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
293 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
294 <li>命令コマンド番号には以下の特性がある。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
295 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
296 <li>全てのノード(サーバーを含める)は事前に処理した命令コマンドの番号を記憶している。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
297 <li>新しく作られた命令コマンドは作られたノードの命令実行済み番号+1 を自身の命令コマンド番号とする。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
298 <li>ノードは自身が作成したか、他のノードに送られてきたかに関わらず命令コマンドを実行したら命令実行済み番号をその命令コマンドの番号と同じにする。</li>
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
299 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
300 </li>
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
301 <li>もしノードが送られてきた命令コマンドを見て、そのコマンドが自身の実行済み番号と同値以下の場合、送信元のノードとの命令のすれ違いが発生していることが分かる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
302 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
303
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
304 <div style="text-align: center;">
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
305  <img src="images/FixCommand.pdf" alt="MetaGear" width="800" />
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
306 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
307
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
308
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
309
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
310 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
311
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
312 <div class='slide'>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
313 <!-- _S9SLIDE_ -->
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
314 <h2 id="すれ違いが発生した際の処理">すれ違いが発生した際の処理</h2>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
315 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
316 <li>全てのノードは自分が実行した命令コマンドを記録しており、後からオフセットや文字列を取り出すことができる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
317 <li>すれ違いが発生した時点からの命令の中身を集計、参照しすれ違いで送られてきたコマンドを修正する。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
318 <li>insertを例とすると
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
319 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
320 <li>受け取ったコマンドのオフセット &gt; 受信コマンドとすれ違ったコマンドのオフセット のとき、受診したコマンドのオフセットに+1 する。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
321 <li>受け取ったコマンドのオフセット &lt;= 受信コマンドとすれ違ったコマンドのオフセット のとき、受診したコマンドのオフセットを変えずにそのまま実行できる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
322 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
323 </li>
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
324 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
325
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
326
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
327
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
328 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
329
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
330 <div class='slide'>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
331 <!-- _S9SLIDE_ -->
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
332 <h2 id="スター型通信">スター型通信</h2>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
333 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
334 <li>Christieにはノードの通信接続を行うTopologyManagerという機能がある。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
335 <li>同期通信はスター型での接続を行う。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
336 <li>スター型通信の利点は
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
337 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
338 <li>サーバーが正しいファイル状態を保持するため、整合性を保つことができる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
339 <li>どこかのノードが切断されても、要害の範囲をそのノードのみに抑えることができる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
340 <li>新しいノードが参加した、もしくは復帰の際にはサーバーのファイル状況を参照するのみで参加、復帰ができる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
341 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
342 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
343 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
344
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
345 <div style="text-align: center;">
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
346  <img src="images/Star-Topology.pdf" alt="MetaGear" width="800" />
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
347 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
348
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
349
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
350
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
351 </div>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
352
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
353 <div class='slide'>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
354 <!-- _S9SLIDE_ -->
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
355 <h2 id="christie">Christie</h2>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
356 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
357 <li>Christieは当研究室で開発している、信頼性を重視した分散フレームワークである.</li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
358 <li>現在はjava上で開発されているが、別言語(CbC)で構成されたGearsOSに組み込む予定があるため,それに向けて書き換え可能な構成となっている。</li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
359 <li>ChristieではデータをGearという単位で分割して記述を行う。
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
360 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
361 <li>CodeGear(以下CG)
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
362 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
363 <li>スレッドやクラスに相当し、javaの継承を用いて記述する。keyに全てのDGが格納された際に動作する。</li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
364 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
365 </li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
366 <li>DataGear(以下DG)
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
367 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
368 <li>DGは変数に相当し、CG内でアノテーションを用いてデータを取り出せる。</li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
369 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
370 </li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
371 <li>CodeGearManager(以下CGM)
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
372 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
373 <li>ノードに相当し, DG, CG, DataGearManagerの管理をする.</li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
374 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
375 </li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
376 <li>DataGearManager(以下DGM)
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
377 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
378 <li>DGを管理するものであり, putという操作にて変数(DG)をkeyに格納する。</li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
379 </ul>
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
380 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
381 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
382 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
383 </ul>
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
384
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
385
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
386
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
387 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
388
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
389 <div class='slide'>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
390 <!-- _S9SLIDE_ -->
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
391 <h2 id="christieのコード例">Christieのコード例</h2>
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
392 <pre><code>package christie.example.HelloWorld;
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
393
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
394 import christie.codegear.CodeGearManager;
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
395 import christie.codegear.StartCodeGear;
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
396
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
397 public class StartHelloWorld extends StartCodeGear {
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
398
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
399 public StartHelloWorld(CodeGearManager cgm) {
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
400 super(cgm);
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
401 }
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
402
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
403 public static void main(String[] args){
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
404 CodeGearManager cgm = createCGM(10000);
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
405 cgm.setup(new HelloWorldCodeGear());
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
406 cgm.setup(new FinishHelloWorld());
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
407 cgm.getLocalDGM().put("helloWorld","hello");
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
408 cgm.getLocalDGM().put("helloWorld","world");
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
409 }
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
410 }
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
411 </code></pre>
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
412
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
413 <pre><code>ChristieDaemon.listen: bind to /0:0:0:0:0:0:0:0:10000
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
414 hello world
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
415 </code></pre>
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
416
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
417 <!--
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
418 - 立ち上げ後はManager名を指定してDataSegmentAPI用いてDSのやり取りを行うため、プログラマはManager名を意識することでLocalへの操作もRemoteへの操作も同様に扱える。
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
419 -->
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
420
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
421 <!--
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
422
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
423 ## Christieの言語概念
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
424 - CGはスレッド, クラスに相当し, javaの継承を用いて記述する.
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
425 - DGは変数データに相当し, CG内でアノテーションを用いて変数データを取り出せる.
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
426 - CGMはノードであり, DG, CG, DGMを管理する.
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
427 - DGMはDGを管理するものであり, putという操作により, 変数データ(DG)を格納できる.
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
428 - DGMにはLocalDGMとRemoteDGMが存在する。LocalDGMは各ノード固有のデータベースである。RemoteDSMは他ノードのLocalDGMに対応するproxyであり、接続しているノードの数だけ存在する。
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
429 - DGMのput操作を行う際にはLocalとRemoteのどちらかを選ぶ.Localであれば、LocalのCGMが管理するDGMに対しDGを格納し, Remoteの場合は接続したRemoteさきのCGMのDGMにDGを格納する.
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
430
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
431 -->
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
432
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
433 <!--
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
434 ## DGM
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
435 - CGMはDGをputという操作を使って、自身や他ノードのDGMに書き込ませる。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
436 - LocalDGMが自身、RemoteDGMが他ノードのDGMである。
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
437
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
438 <div style="text-align: center;">
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
439 <img src="images/remote_datasegment.pdf" alt="MetaGear" width="800">
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
440 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
441
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
442 !-->
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
443
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
444 <!--
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
445 - RocalDGMを立ち上げるにはDataSegmentクラスが提供する、connectメソッドを用い、接続したいポートのipアドレスとport番号、そして任意のManager名を指定することで立ち上げる。
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
446 -->
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
447
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
448
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
449
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
450 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
451
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
452 <div class='slide'>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
453 <!-- _S9SLIDE_ -->
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
454 <h2 id="dgのアノテーション">DGのアノテーション</h2>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
455 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
456 <li>DGを取り出す際にはCG内で宣言した変数にアノテーションをつける。DGアノテーションには
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
457 Take、Peek、TakeFrom、PeekFrom、の4つがある。
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
458 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
459 <li>Take
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
460 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
461 <li>先頭のDGを読み込み、そのDGを削除する。</li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
462 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
463 </li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
464 <li>Peek
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
465 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
466 <li>先頭のDGを読み込むが、DGが消去されない。そのため特に操作をしない場合、同じデータを参照し続ける。</li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
467 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
468 </li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
469 <li>TakeFrom
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
470 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
471 <li>Remote DGM nameを指定することで、その接続先のDGM からTake操作をおこえる。</li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
472 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
473 </li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
474 <li>PeekFrom
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
475 <ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
476 <li>Remote DGM nameを指定することで、その接続先のDGM からPeek操作をおこえる。</li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
477 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
478 </li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
479 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
480 </li>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
481 </ul>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
482
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
483 <pre><code>package christie.example.HelloWorld;
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
484
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
485 import christie.annotation.Peek;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
486 import christie.annotation.Take;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
487 import christie.codegear.CodeGear;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
488 import christie.codegear.CodeGearManager;
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
489
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
490 public class HelloWorldCodeGear extends CodeGear {
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
491
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
492 @Take
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
493 String helloWorld;
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
494
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
495 @Override
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
496 protected void run(CodeGearManager cgm) {
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
497 System.out.print(helloWorld + " ");
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
498 cgm.setup(new HelloWorldCodeGear());
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
499 cgm.getLocalDGM().put(helloWorld,helloWorld);
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
500 }
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
501 }
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
502 </code></pre>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
503
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
504 <!--
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
505 ## TopologyManager
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
506 - TopologyManagerとはTopologyを形成のために、参加を表明したノード、TopologyNodeに名前を与え、必要があればノード同士の配線を行うノードである。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
507 - TopologyManagerのTopology形成方法として、静的Topologyと動的Topologyがある。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
508 - 動的Topologyは参加を表明したノードに対し、動的にノード同士の関係を作る。例えばTreeを構成する場合、参加したノードから順にrootに近い役割を与え、またCodeGearはノードが参加し、parentに接続された後に実行される。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
509 - 静的Toopologyはdotファイルを与えることノード関係の構築を行う。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
510
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
511 ```Code
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
512 digraph test {
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
513 node0 -> node1 [label="right"]
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
514 node1 -> node2 [label="right"]
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
515 node2 -> node0 [label="right"]
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
516 }
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
517 ```
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
518
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
519 <div style="text-align: center;">
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
520  <img src="images/ring.pdf" alt="MetaGear" width="500">
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
521 </div>
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
522 !-->
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
523
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
524
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
525
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
526 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
527
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
528 <div class='slide'>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
529 <!-- _S9SLIDE_ -->
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
530 <h2 id="まとめとこれから">まとめとこれから</h2>
17
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
531 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
532 <li>本研究発表ではリモートエディタの開発とそれに伴う技術について述べた。現時点で実装できた構成は以下である。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
533 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
534 <li>リモートエディタの基本となる命令のやり取り部分のコマンドパターン実装。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
535 <li>編集相違を防ぐためのアルゴリズムの発案と検証。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
536 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
537 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
538 <li>現時点では最低限のセッションを動かすまでの最低限の実装は終わっていない。これから取り組まなければならない課題として以下が挙げられる。
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
539 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
540 <li>スター型Topologyの接続を動的に行わせる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
541 <li>編集するファイルの共有方法
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
542 <ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
543 <li>ファイルをそのまま送信すると、負担が大きいと予想される。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
544 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
545 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
546 <li>既存のエディタを同期通信に対応させる。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
547 </ul>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
548 </li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
549 <li>以上の課題の課題に取り組み、これからも実装を続けていきたい。</li>
55e745a21506 add abstruct & slide
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents: 16
diff changeset
550 </ul>
16
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
551
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
552 </div>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
553
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
554
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
555 </div><!-- presentation -->
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
556 </body>
7293b6481e32 add slide & tweak
ichikitakahiro <e165713@ie.u-ryukyu.ac.jp>
parents:
diff changeset
557 </html>