Mercurial > hg > Papers > 2016 > parusu-thesis
annotate paper/main.tex @ 3:0fa28652aa74
Add TreeVNC outline for prosym
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 04 Feb 2016 18:50:39 +0900 |
parents | 2ab5639a8ea7 |
children | 77b8edf27879 |
rev | line source |
---|---|
0 | 1 \documentclass[a4j,12pt]{jreport} |
2 \usepackage[dvips]{graphicx} | |
3 \usepackage{mythesis} | |
4 \usepackage{multirow} | |
5 \usepackage{here} | |
6 \setlength{\itemsep}{-1zh} | |
2 | 7 \title{PC画面配信システムTreeVNCの NAT への対応} |
0 | 8 \icon{ |
2 | 9 \includegraphics[width=80mm,bb=0 0 595 842]{fig/ryukyu.pdf} |
10 } | |
11 \year{平成27年度 卒業論文} | |
0 | 12 \belongto{琉球大学工学部情報工学科} |
2 | 13 \author{125716B 伊波 立樹 \\ 指導教員 {河野 真治} } |
14 | |
15 %% TreeVNC のNATへの対応 | |
16 %% マルチスクリーン TreeVNC | |
0 | 17 %% プリアンブルに記述 |
18 %% Figure 環境中で Table 環境の見出しを表示・カウンタの操作に必要 | |
19 %% | |
20 \makeatletter | |
21 \newcommand{\figcaption}[1]{\def\@captype{figure}\caption{#1}} | |
22 \newcommand{\tblcaption}[1]{\def\@captype{table}\caption{#1}} | |
23 \makeatother | |
24 \setlength\abovecaptionskip{0pt} | |
25 | |
26 \begin{document} | |
27 | |
28 % タイトル | |
29 \maketitle | |
30 \baselineskip 17pt plus 1pt minus 1pt | |
31 | |
32 \pagenumbering{roman} | |
33 \setcounter{page}{0} | |
34 | |
35 \tableofcontents % 目次 | |
36 \listoffigures % 図目次 | |
37 \listoftables % 表目次 | |
38 | |
39 %以下のように、章ごとに個別の tex ファイルを作成して、 | |
40 % main.tex をコンパイルして確認する。 | |
41 %章分けは個人で違うので下のフォーマットを参考にして下さい。 | |
42 | |
43 % はじめに | |
2 | 44 |
45 \chapter{画面共有を利用したコミュニケーション} | |
46 \label{chap:introduction} | |
47 \pagenumbering{arabic} | |
48 | |
49 %序論の目安としては1枚半ぐらい. | |
50 %英語発表者は,最終予稿の「はじめに」の英訳などを載せてもいいかも. | |
51 | |
0 | 52 |
2 | 53 \chapter{TreeVNC の概念} |
54 \label{chap:concept} | |
55 | |
56 \section{VNC} | |
3
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
57 VNC(Virtual Network Computing) は、 RFBプロトコルを用いて遠隔操作を行うリモートデスクトップソフトウェアである。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
58 VNC はサーバー側とクライアント(ビューア)側に分かれている。 サーバを起動し、クライアントがサーバに接続を行い遠隔操作を可能とする。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
59 |
2 | 60 \section{RFB プロトコル} |
3
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
61 RFB(remote frame buffer)プロトコル\cite{rfbProtocol}とは、自身の画面を送信し、ネットワーク越しに他者の画面に表示するプロトコルである。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
62 ユーザが居る側をRFBクライアント側と呼び、Framebufferへの更新が行われる側はRFBサーバと呼ぶ。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
63 Framebufferとは、メモリ上に置かれた画像データのことである。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
64 RFBプロトコルでは、最初にプロトコルバージョンの確認や認証が行われる。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
65 その後、クライアントに向けてFramebufferの大きさやデスクトップに付けられた名前などが含まれている初期メッセージが送信される。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
66 RFBサーバ側はFramebufferの更新が行われるたびに、RFBクライアントに対してFramebufferの変更部分だけを送信する。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
67 更にRFBクライアントのFramebufferUpdateRequestが来るとそれに答え返信する。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
68 RFBプロトコルは、描画データに使われるエンコードが多数用意されており、また独自のエンコードを実装することもできるプロトコルである。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
69 |
2 | 70 \section{多人数で VNC を使用する際の問題} |
3
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
71 VNCを使用すればクライアント側にサーバー側の画面を表示することが可能である。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
72 しかし、多人数のクライアントが1つのサーバーに接続してしまうと処理性能が落ちてしまうという問題点がある。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
73 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
74 また、 ゼミ等の発表で画面配信者が頻繁に切り替わる場合、 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
75 配信者が替わる度にアプリケーションを終了し、接続をし直さないといけないという問題がある。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
76 |
2 | 77 \section{TreeVNC の構造} |
3
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
78 TreeVNC は Java を用いて作成された TightVNC(Tight Virtual Network Computing)\cite{tightvnc} を元に作成されている。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
79 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
80 TreeVNC は クライアント同士を接続させ、画面描画のデータを受け取ったクライアントが次のクライアントにデータを流す方式を取っている。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
81 また、サーバへ接続しに来たクライアントをバイナリツリー状に接続する(図\ref{fig:tree})。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
82 バイナリツリー状に接続することで、$N$台のクライアントが接続しに来た場合、画面配信の画像データをコピーする回数は従来の VNC ではサーバ側で$N$回する必要があるが、TreeVNCでは各ノードが2回ずつコピーするだけで済む。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
83 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
84 TreeVNCで通信される画像のデータ量は大きいため、大きなネットワークスループットが必要である。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
85 そのため、有線接続が必須である。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
86 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
87 バイナリツリーのルートのノードを Root Node と呼び、 Root Node に接続されるノードを Node と呼ぶ |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
88 Root Node は子 Nodeにデータを流す機能に加え、各 Node の管理、 VNC サーバーから流れてきた画像データの管理を行う。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
89 Node は 親 Node から送られたデータを 自分の子 Node に流す機能、 逆に子 Node から送られてきたデータを 親 Node に流す機能がある。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
90 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
91 \begin{figure}[ht] |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
92 \begin{center} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
93 \includegraphics[width=70mm]{./pic/TreeVNC.pdf} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
94 \end{center} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
95 \caption{構成される木構造} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
96 \label{fig:tree} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
97 \end{figure} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
98 |
2 | 99 \section{圧縮形式} |
3
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
100 TreeVNC は ZRLEE\cite{taninari:2012a} というエンコードでデータのやり取りを行う。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
101 ZRLEE はRFB プロトコルで使えるエンコーディングタイプの ZRLE を元に生成される。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
102 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
103 ZRLE は Zlib\cite{zlib} で圧縮されたデータとそのデータのバイト数がヘッダーとして付けて送られてくる。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
104 Zlib は java.util.zip.deflater と java.util.zip.inflater で圧縮と解凍が行える。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
105 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
106 しかし、 java.util.zip.deflater は解凍に必要な辞書を書き出す(flush)ことが出来ない。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
107 辞書を書き出すことが出来ないため、 Zlib圧縮されたデータを途中から受け取ってもデータを正しく解凍することが出来ない。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
108 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
109 そこで ZRLEE は 一度 Root Node で受け取った ZRLE のデータを unzip し、 データをzip し直して最後に finish() をいれることで初めからデータを呼んでいなくても解凍を行えるようにした。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
110 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
111 一度 ZRLEE に変換してしまえば子 Node はそのデータをそのまま流すだけで良い。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
112 ただし、deflater と inflater では前回までの通信で得た辞書をクリアしないといけないため、 Root Node と Node 側では毎回新しく作る必要がある。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
113 |
2 | 114 \section{通信経路} |
3
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
115 TreeVNC の通信経路として以下が挙げられる |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
116 \begin{itemize} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
117 \item ある Node から Root Node に直接通信を行う send direct message (Node to Root) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
118 \item Root Node からある Node に直接通信を行う send direct message (Root to Node) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
119 \item Root Node から木の末端の Node までのすべての Nodeに通信を行う messeage down tree (Root to Node) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
120 \item ある Node から木構造を上に辿って Root Nodeまで通信を行う message up tree (Node to Root) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
121 \item Root Node から配信者の VNC サーバーへの通信を行う send message (Root to VNCServer) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
122 \item VNC サーバーから Root Node への通信を行う send message (VNCServer to Root) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
123 \end{itemize} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
124 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
125 \section{ノード間で行われるメッセージ通信} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
126 RFBプロトコルで提供されているメッセージに加え、 TreeVNC 独自のメッセージを使用している。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
127 TreeVNC で使用されるメッセージの一覧を表\ref{tb:message}に示す。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
128 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
129 \begin{table}[h!] |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
130 \caption{通信経路とメッセージ一覧} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
131 \large |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
132 \scalebox{0.4} { |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
133 \begin{tabular}{|l|l|l|} \hline |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
134 通信経路 & message & 説明 \\ \hline \hline |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
135 & FIND\_ROOT & TreeVNC接続時にRoot Nodeを探す。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
136 send direct message & WHERE\_TO\_CONNECT & 接続先をRoot Nodeに聞く。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
137 (Node to Root) & LOST\_CHILD & 子Nodeの切断をRoot Nodeに知らせる。 \\ \hline \hline |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
138 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
139 & FIND\_ROOT\_REPLY & FIND\_ROOTへの返信。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
140 send direct message & CONNECT\_TO\_AS\_LEADER & 左子Nodeとして接続する。接続先のNodeが含まれている。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
141 (Root to Node) & CONNECT & 右子Nodeとして接続する。接続先のNodeが含まれている。 \\ \hline \hline |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
142 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
143 message down tree & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。\\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
144 (Root to Node) & CHECK\_DELAY & 通信の遅延を測定する。 \\ \hline \hline |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
145 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
146 message up tree & CHECK\_DELAY\_REPLY & CHECK\_DELAYへの返信。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
147 (Node to Root) & SERVER\_CHANGE\_REQUEST & 画面切り替え要求。 \\ \hline \hline |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
148 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
149 & FRAMEBUFFER\_UPDATE\_REPLY & 画像データの要求。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
150 send message & SET\_PIXEL\_FORMAT & pixel値の設定。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
151 (Root to VNCServer) & SET\_ENCODINGS & pixelデータのencodeTypeの設定。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
152 & KEY\_EVENT & キーボードからのイベント。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
153 & POINTER\_EVENT & ポインタからのイベント。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
154 & CLIENT\_CUT\_TEXT & テキストのカットバッファを持った際のmessage。 \\ \hline \hline |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
155 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
156 & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
157 send message & SET\_COLOR\_MAP\_ENTRIES & 指定されているpixel値にマップするRGB値。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
158 (VNCServer to Root) & BELL & ビープ音を鳴らす。 \\ \cline{2-3} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
159 & SERVER\_CUT\_TEXT & サーバがテキストのカットバッファを持った際のmessage。 \\ \hline |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
160 \end{tabular} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
161 } |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
162 \label{tb:message} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
163 \end{table} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
164 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
165 図\ref{fig:message}は TreeVNC で Node が Root Node に接続し、画像データを受信するまでのメッセージ通信の様子である。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
166 図\ref{fig:message}の手順として |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
167 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
168 \begin{itemize} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
169 \item 接続を行う Node (以下 Client Node)はMulticast通信で Root Node に対してFIND\_ROOTを送信する(1:findRoot()) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
170 \item Root NodeがFIND\_ROOTを受信し、FIND\_ROOT\_REPLYを送信する(2:findRootReplay()) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
171 \item Client Node 側で、どのRoot Nodeに接続するかを選択するパネルが表示される |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
172 \item Client Node はパネルで接続するRoot Nodeを選択し、Rootに対して接続先を要求するWHERE\_TO\_CONNECTを送信する(3:whereToConnect()) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
173 \item 受信した Root Node は Client Node の接続先をCONNECT\_TOで送信する(4:connectTo) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
174 \item Client Node は Root の指定した接続先に接続しに行く |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
175 \item Root Node, Client Node間の接続が確立後、Root Node から Clinet Node に対して定期的に画像データFRAME\_BUFFER\_UPDATEを送信する(5:framebufferUpdate()) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
176 \end{itemize} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
177 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
178 を行っている。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
179 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
180 \begin{figure}[ht] |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
181 \begin{center} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
182 \includegraphics[width=65mm]{./pic/message.pdf} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
183 \end{center} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
184 \caption{node 間で行われるメッセージ通信} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
185 \label{fig:message} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
186 \end{figure} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
187 |
2 | 188 \section{MulticastQueue} |
189 \section{木の再構成} | |
3
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
190 TreeVNC はバイナリツリーでの接続という特性上 Node が切断されたことを検知できずにいると、Node 同士で構成された木構造が崩れてしまい、新しい Node が接続に来た場合に適切な場所に Node を接続することができなくなってしまう。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
191 木構造を崩さないよう、Node 同士の接続を再構成を行う必要がある。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
192 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
193 TreeVNC の木構造のネットワークトポロジーは Root Node が持っている nodeList というリストで管理している。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
194 つまり、Node の接続が切れた場合、木の再構成を行うため Root Node に知らせなければならない。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
195 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
196 TreeVNC は Lost\_CHILD というメッセージ通信で Node の切断を検知・木の再構成を行っている。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
197 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
198 TreeVNC は VNC サーバーから送られる画像データ(FRAME\_BUFFER\_Update)を MulticastQueue というキューに蓄積しており、 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
199 Node はこのキューから画像データを取得し、画面を描画している。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
200 Lost\_Child の検出方法はこの MulticastQueue を使用している。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
201 ある一定時間 MulticastQueue から画像データが取得されない場合 Memory Over Flow を回避するために Timeout スレッドが用意されている。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
202 Timeout を検知した際、Node との接続が切れたと判断する。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
203 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
204 Lost\_Child の検知・木の再構成を以下に示す。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
205 \begin{itemize} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
206 \item 子 Node の切断を検知した Node が Root Node へ LOST\_CHILD メッセージを送信する(図\ref{fig:lostchild1}中, 1:lostChild()) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
207 \item LOST\_CHILD メッセージを受け取った Root Node は nodeList の更新を行う(図\ref{fig:lostchild1}中, 2:updateNodeList()) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
208 \item 切断した Node を nodeList から消し、nodeList の最後尾の Node に切断した node number を割り当てる |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
209 \item Root Node は最後尾の Node に、切断した子 Node が接続していた親 Node に接続する様に CONNECT\_TO メッセージを送信する(図\ref{fig:lostchild1}中, 3:connectTo(1)) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
210 \item 最後尾の Node が子 Node を失った親 Node へ接続しに行く(図\ref{fig:lostchild1}中, 4:connectToParent(1)) |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
211 \end{itemize} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
212 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
213 \begin{figure}[ht] |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
214 \begin{center} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
215 \includegraphics[width=70mm]{./pic/lostChild1.pdf} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
216 \end{center} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
217 \caption{LOST\_CHILD を検知・再接続} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
218 \label{fig:lostchild1} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
219 \end{figure} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
220 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
221 LOST\_CHILD によって、 切断された全ての Node を検知することができるため、 nodeList の更新が正しく行われる。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
222 よって、新しく接続に来た Node を適切な場所に接続することが可能となる。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
223 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
224 \section{共有画面切り替え} |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
225 ゼミでは発表者が順々に入れ替わる。発表者が入れ替わる度に共有する画面の切り替えが必要となる。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
226 ゼミを円滑に進めるために、画面の切り替えをスムーズに行いたい。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
227 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
228 画面の共有にプロジェクタを使用する場合、 発表者が変わる度にケーブルの抜き差しを行う必要がある。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
229 その際に、ディスプレイ解像度を設定し直す必要が出たり、 接続不良が起こる等の煩わしい問題が生じることがある。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
230 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
231 従来のVNCを使用する場合、 画面の切り替えの度に一旦VNCを終了し、発表者の VNC サーバーへと再接続を行う必要がある。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
232 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
233 TreeVNC は配信者の切り替えの度に生じる問題を解決している。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
234 TreeVNC を立ち上げることで、ケーブルを使用する必要なしに、各参加者の手元のPCに発表者の画面を共有することができる。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
235 画面の切り替えはユーザが VNC サーバーへの再接続を行うことなく、ビューアの Share Screen ボタンを押すことによって、配信者の切り替えを行うことができる。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
236 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
237 TreeVNC の Root Node は配信者の VNC サーバーと通信を行っている。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
238 VNC サーバーから画面データを受信し、そのデータを 子 Node へと送信している。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
239 配信者切り替え時に Share Screen ボタンが押されると、 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
240 Root Node は Share Screen ボタン を押したクライアントの VNC サーバーと通信を始める。 |
0fa28652aa74
Add TreeVNC outline for prosym
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
2
diff
changeset
|
241 そのためTreeVNCは配信者切り替えの度に VNC を終了し、再接続する必要がない。 |
2 | 242 \section{複数ネットワークへの対応} |
0 | 243 |
244 % 実験 | |
2 | 245 \chapter{TreeVNC の追加機能} |
246 \label{chap:poordirection} | |
247 \section{マルチディスプレイ対応} | |
248 \section{NAT越え} | |
249 \section{ネックになっているノードへの対処} | |
250 \section{別 Thread での画面切り替え} | |
0 | 251 |
2 | 252 \chapter{TreeVNC の評価} |
253 \section{画像データ伝達の遅延} | |
254 \section{実験環境} | |
255 \section{メッセージを使用した実測} | |
256 \section{結果} | |
0 | 257 |
258 % 今後の課題 | |
2 | 259 |
260 \chapter{まとめ} | |
261 \section{NATを越えた画面切り替え} | |
262 \section{新機能の評価} | |
0 | 263 |
264 % 参考文献 | |
2 | 265 \def\line{−\hspace*{-.7zw}−} |
266 | |
267 \begin{thebibliography}{99} | |
268 %\bibitem{*}内の * は各自わかりやすい名前などをつけて、 | |
269 %論文中には \cite{*} のように使用する。 | |
270 %これをベースに書き換えた方が楽かも。 | |
271 %書籍、論文、URLによって若干書き方が異なる。 | |
272 %URLを載せる人は参考にした年月日を最後に記入すること。 | |
273 | |
274 \bibitem{hoge} | |
275 hoge | |
276 \end{thebibliography} | |
0 | 277 |
278 % 謝辞 | |
2 | 279 |
280 \chapter*{謝辞} | |
281 \thispagestyle{empty} | |
282 | |
283 %基本的な内容は以下の通り.参考にしてみて下さい. | |
284 %厳密な決まりは無いので,個々人の文体でも構わない. | |
285 %GISゼミや英語ゼミに参加した人はその分も入れておく. | |
286 %順番は重要なので気を付けるように.(提出前に周りの人に確認してもらう.) | |
287 | |
288 \hspace{1zw}本研究の遂行,また本論文の作成にあたり、御多忙にも関わらず終始懇切なる御指導と御教授を賜わりましたhoge助教授に深く感謝したします。 | |
289 | |
290 また、本研究の遂行及び本論文の作成にあたり、日頃より終始懇切なる御教授と御指導を賜わりましたhoge教授に心より深く感謝致します。 | |
291 | |
292 数々の貴重な御助言と細かな御配慮を戴いたhoge研究室のhoge氏に深く感謝致します。 | |
293 | |
294 また一年間共に研究を行い、暖かな気遣いと励ましをもって支えてくれたhoge研究室のhoge君、hoge君、hogeさん並びにhoge研究室のhoge、hoge君、hoge君、hoge君、hoge君に感謝致します。 | |
295 | |
296 最後に、有意義な時間を共に過ごした情報工学科の学友、並びに物心両面で支えてくれた両親に深く感謝致します。 | |
297 | |
298 \begin{flushright} | |
299 2010年 3月 \\ hoge | |
300 \end{flushright} | |
0 | 301 |
302 % 付録 | |
303 | |
304 \end{document} |