Mercurial > hg > Papers > 2019 > riono-sigos
annotate Paper/riono-sigos.tex @ 16:86575cab4d17
fix Image position and add Makefile
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 08 May 2019 14:00:33 +0900 |
parents | 095e808d1ee2 |
children | 2cd3823d5a44 |
rev | line source |
---|---|
2
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 %% |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 %% 研究報告用スイッチ |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 %% [techrep] |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 %% |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 %% 欧文表記無しのスイッチ(etitle,eabstractは任意) |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 %% [noauthor] |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 %% |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 %\documentclass[submit,techrep]{ipsj} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 \documentclass[submit,techrep,noauthor]{ipsj} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 |
10 | 14 %\usepackage[dvips]{graphicx} |
15 \usepackage[dvipdfmx]{graphicx} | |
2
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 \usepackage{latexsym} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 \def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 \def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 \def\|{\verb|} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 % |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 %\setcounter{巻数}{59}%vol59=2018 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 %\setcounter{号数}{10} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 %\setcounter{page}{1} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 \begin{document} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 \title{画像配信システム TreeVNC のマルチキャストの導入} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33 \etitle{} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 %\affiliate{IPSJ}{情報処理学会\\ |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 %IPSJ, Chiyoda, Tokyo 101--0062, Japan} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 \paffiliate{IEUR}{琉球大学工学部情報工学科\\ |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 Information Engineering, University of the Ryukyus.} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 |
5 | 42 \author{安田 亮}{Ryo Yasuda}{IEUR}[riono210@cr.ie.u-ryukyu.ac.jp] |
2
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 \author{大城 由也}{Yuya Oshiro}{} |
5 | 44 \author{河野 真治}{Shinji Kono}{IEUR}[kono@ie.u-ryukyu.ac.jp] |
2
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46 \begin{abstract} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 TreeVNCとは当研究室で開発している画面配信システムである。しかし、画面共有は送信するデータ量が多いため、無線 LAN 接続の場合、画面の配信に遅延が生じてしまう。そこで、multicast でのデータ通信の実装やデータの分割・圧縮方法の評価を行い、TreeVNC のmulticastの有用性を評価する。 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48 \end{abstract} |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
49 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
50 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
51 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52 \maketitle |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
53 |
5 | 54 \section{画面配信ソフトウェア TreeVNCの活用} |
55 現代の講義や発表、プレゼンなどではPC画面で用意した資料を見ながら進行することが多い。ゼミでは発表者のPC画面を切り替えを行いながら発表を行う場合もある。通常このような場面では資料やスライドを表示するためにプロジェクタが利用される。その際、発表者のPC画面を切り替えるたびにケーブルを差し替える必要がある。発表者のPCによっては接続するアダプターの種類や解像度の設定により、正常にPC画面を表示できない場合がある。また、参加者もプロジェクタに集中を割く必要があり、手元のPCと相互に参照する場合、負担になる場合がある。 | |
56 | |
7 | 57 当研究室で開発している画面配信システムTreeVNC\cite{taninari:2011a}は、発表者の画面を参加者のPCに表示するソフトウェアである。そのため、参加者は不自由なく手元のPCを操作しながら講義を受けることが可能になる。更に発表者の切り替えの際もケーブルを差し替えずに、共有する画面の切り替えが可能になっている。 |
2
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 |
7 | 59 TreeVNCはVNC\cite{vnc}を利用した画面配信を行なっている。しかし通常のVNCでは配信側のPCに全ての参加者が |
2
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
60 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
61 |
5 | 62 \section{TreeVNCの基本概念} |
7 | 63 \subsection{VNCについて} |
64 VNC(Virtual Network Computing)は、クライアント(ビューワー)側とサーバ側からなるリモートデスクトップソフトウェアである。遠隔操作にはサーバを起動し、クライアント側がサーバに接続をすることで可能としている。また、動作にはRFBプロトコルを用いている。 | |
65 | |
66 \subsection{RFBプロトコルについて} | |
8 | 67 RFB(Remote Frame Buffer)プロトコル\cite{rfbprotocol}とは、自身のPC画面をネットワーク上に送信し他人の画面に表示を行うプロトコルである。画面が表示されるユーザ側をRFBクライアントと呼び、画面を送信のためにFramebufferの更新が行われる側をRFBサーバと呼ぶ。Framebufferとは。メモリ上に置かれた画像データのことである。RFBプロトコルでは、最初にプロトコルのバージョン確認や認証が行われる。その後、クライアントへ向けてFramebufferの大きさやデスクトップに付けられた名前などが含まれている初期メッセージを送信する。RFBサーバ側はFramebufferの更新が行われるたびに、RFBクライアントに対してFramebufferの変更部分のみを送信する。更に、RFBクライアントのFramebufferUpdateRequestが来るとそれに答え返信する。変更部分のみを送信する理由は、更新がある度に全画面を送信すると、送信するデータ面と更新にかかる時間面において効率が悪くなるからである。 |
68 | |
69 | |
70 \subsection{TreeStructure} | |
10 | 71 TreeVNCはサーバに接続してきたクライアントをバイナリツリー状に接続している。また、接続してきたクライアントをノードとし、その下に新たなノードを接続していくことでサーバが画面のデータを配信する回数を抑え、負荷分散を行なっている(図\ref{fig:TreeStructure})。バイナリツリー状に接続することで、N台のクライアントが接続しにきた場合、従来のVNCではサーバ側がN回のコピーを行なって配信をする必要がある(図\ref{fig:UntilVNC})が、TreeVNCでは各ノードが2回ずつコピーをするだけで配信が可能となる。 |
8 | 72 |
73 バイナリツリーのルートのノードをRoot Nodeと呼び、そこに接続されるノードをNodeと呼ぶ。Root Nodeは子Nodeにデータを渡す機能、各Nodeの管理、VNCサーバから送られてきたデータの管理を行なっている。各Nodeは、親Nodeから送られてきたデータを自身の子Nodeに渡す機能、子Nodeから送られてきたデータを親Nodeに渡す機能がある。 | |
5 | 74 |
10 | 75 \begin{figure}[htb] %PDF |
76 \begin{center} | |
16
86575cab4d17
fix Image position and add Makefile
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
77 \includegraphics[scale=0.4]{Image/treevnc-crop.pdf} |
10 | 78 \caption{TreeVNCの接続方法} |
79 \label{fig:TreeStructure} | |
80 \end{center} | |
81 \end{figure} | |
82 | |
83 | |
84 \begin{figure}[htb] %PDF | |
85 \begin{center} | |
16
86575cab4d17
fix Image position and add Makefile
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
86 \includegraphics[scale=0.4]{Image/vnc-crop.pdf} |
10 | 87 \caption{従来のVNCの接続方法} |
88 \label{fig:UntilVNC} | |
89 \end{center} | |
90 \end{figure} | |
91 | |
11 | 92 \subsection{通信経路} |
93 TreeVNCの通信経路として以下の6つが挙げられる。 | |
94 | |
95 | |
96 \begin{itemize} %箇条書き | |
97 \item Root Nodeから任意のNodeに直接通信を行う send direct message (Root to Node) | |
98 \item 任意のNodeからRoot Nodeに直接通信を行う send direct message (Node to Root) | |
99 \item Root Nodeから木の末端までの全てのNodeに通信を行う message down tree (Root to Node) | |
100 \item 任意のNodeから上に辿ってRoot Nodeまで通信を行う message up tree (Node to Root) | |
101 \item Root Nodeから配信者へのVNCサーバへの通信を行う send message (Root to VNCServer) | |
102 \item 配信者のVNCサーバからRoot Node への通信を行う send message (VNCServer to Root) | |
103 \end{itemize} | |
104 | |
105 | |
12 | 106 \subsection{メッセージ通信} |
107 TreeVNCの各NodeとVNCServer間で通信されるメッセージを表\ref{tb:message}に示す。 | |
108 | |
109 \begin{table}[htbp] | |
110 \caption{通信経路とメッセージ一覧} | |
111 \scalebox{0.55}{ | |
112 \begin{tabular}{|l|l|l|} \hline | |
113 通信経路 & message & 説明 \\ \hline \hline | |
114 & FIND\_ROOT & TreeVNC接続時にRoot Nodeを探す。 \\ \cline{2-3} | |
115 send direct message & WHERE\_TO\_CONNECT & 接続先をRoot Nodeに聞く。 \\ \cline{2-3} | |
116 (Node to Root) & LOST\_CHILD & 子Nodeの切断をRoot Nodeに知らせる。 \\ \hline \hline | |
117 | |
118 & FIND\_ROOT\_REPLY & FIND\_ROOTへの返信。 \\ \cline{2-3} | |
119 send direct message & CONNECT\_TO\_AS\_LEADER & 左子Nodeとして接続する。接続先のNodeが含まれている。 \\ \cline{2-3} | |
120 (Root to Node) & CONNECT\_TO & 右子Nodeとして接続する。接続先のNodeが含まれている。 \\ \hline \hline | |
121 | |
122 message down tree & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。\\ \cline{2-3} | |
123 (Root to Node) & CHECK\_DELAY & 通信の遅延を測定する。 \\ \hline \hline | |
124 | |
125 message up tree & CHECK\_DELAY\_REPLY & CHECK\_DELAYへの返信。 \\ \cline{2-3} | |
126 (Node to Root) & SERVER\_CHANGE\_REQUEST & 画面切り替え要求。 \\ \hline \hline | |
127 | |
128 & FRAMEBUFFER\_UPDATE\_REPLY & 画像データの要求。 \\ \cline{2-3} | |
129 send message & SET\_PIXEL\_FORMAT & pixel値の設定。 \\ \cline{2-3} | |
130 (Root to VNCServer) & SET\_ENCODINGS & pixelデータのencodeTypeの設定。 \\ \cline{2-3} | |
131 & KEY\_EVENT & キーボードからのイベント。 \\ \cline{2-3} | |
132 & POINTER\_EVENT & ポインタからのイベント。 \\ \cline{2-3} | |
133 & CLIENT\_CUT\_TEXT & テキストのカットバッファを持った際のmessage。 \\ \hline \hline | |
134 | |
135 & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。 \\ \cline{2-3} | |
136 send message & SET\_COLOR\_MAP\_ENTRIES & 指定されているpixel値にマップするRGB値。 \\ \cline{2-3} | |
137 (VNCServer to Root) & BELL & ビープ音を鳴らす。 \\ \cline{2-3} | |
138 & SERVER\_CUT\_TEXT & サーバがテキストのカットバッファを持った際のmessage。 \\ \hline | |
139 \end{tabular} | |
140 } | |
141 \label{tb:message} | |
142 \end{table} | |
14 | 143 |
12 | 144 \subsection{MulticastQueue} |
145 配信側の画面が更新されるとVNCServerから画像データがFRAME\_BUFFER\_UPDATEメッセージとして送られる。その際、画像データの更新を複数のNodeに同時に伝えるためにMulticast Queueというキューに画像データを格納する。 | |
146 | |
10 | 147 |
13 | 148 \subsection{木構造の再構成} |
149 TreeVNCはバイナリツリーでの接続のため、Nodeが切断されたことを検知できないと構成した木構造が崩れてしまい、新しいNodeを適切な場所に接続できなくなってしまう。そこで木構造を崩さないよう、Node同士の接続の再構成を行う必要がある。 | |
150 | |
151 TreeVNCの木構造のネットワークトポロジーはRoot Nodeが持っているnodeListで管理している。Nodeの接続が切れた場合、Root Nodeに切断を知らせなければならない。 | |
152 | |
153 TreeVNCはLOST\_CHILDというメッセージ通信で、Nodeの切断を検知および木構造の再構成を行なっている。LOST\_CHILDの検出方法にはMulticastQueueを使用しており、ある一定時間MulticastQueueから画像データが取得されない場合、MemoryOverFlowを回避するためにTimeoutスレッドが用意されている。そして、Timeoutを検知した際にNodeとの接続が切れたと判断する。 | |
154 | |
14 | 155 \subsection{ZRLEE} |
156 TreeVNCでは、ZRLEE\cite{}というエンコード方法でデータの圧縮を行う。ZRLEEはRFBプロトコルで使用できるZRLEというエンコードタイプを元に生成される。 | |
157 | |
158 ZRLEはZlib\cite{}で圧縮されたデータとそのデータのバイト数がヘッダーとして送信される。Zlibはjava.util.zip.deflaterとjava.util.zip.inflaterで圧縮と解凍が行える。しかしjava.util.zip.deflaterはデコードに必要な辞書を書き出す(flush)ことが出来ない(図\ref{fig:ZRLE})。従って、圧縮されたデータを途中から受け取るとデータを正しく解凍することが出来ない。 | |
159 | |
160 そこでZRLEEは一度Root Nodeで受け取ったZRLEのデータをunzipし、データをupdate rectangleと呼ばれる画面ごとのデータに辞書を付与してzipし直すことで初めからデータを読み込んでいなくても解凍できるようになった(図\ref{fig:ZRLEE})。一度ZRLEEに変換してしまえば子Nodeはそのデータを渡すだけで良い。ただしdeflaterとinflaterでは前回までの通信で得た辞書をクリアしなければならないため、Root NodeとNode側では毎回新しく作成する必要がある。 | |
161 | |
15 | 162 |
163 \subsection{ShareScreen} | |
164 従来のVNCでは、配信者が切り替わるたびにVNCの再起動、サーバ、クライアント間の再接続を行う必要がある。TreeVNCは配信者の切り替えのた度に生じる問題を解決している。 | |
165 TreeVNCを立ち上げることで、ケーブルを使用する必要なしに、各参加者の手元のPCに発表者の画面を共有することができる。画面の切り替えについてはユーザがVNCサーバへの再接続を行うことなく、ビューワー側のShare Screenボタンを押すことで配信者の切り替えが可能になっている。 | |
166 | |
167 TreeVNCのRoot Nodeは配信者のVNCサーバと通信を行なっている。VNCサーバから画面データを受信し、そのデータを子Nodeへと送信している。配信者切り替え時にShare Screenを実行すると、Root Nodeに対し SERVER\_CHANGE\_REQUESTというメッセージが送信される。このメッセージにはShare Screenボタンを押したNodeの番号やディスプレイ情報が付加されている。メッセージを受け取ったRoot Nodeは配信を希望しているNodeのVNCサーバと通信を始める。 | |
168 | |
169 | |
170 \subsection{ネットワーク複数時の接続} | |
171 TreeVNCはRoot Nodeが複数のネットワークに接続している場合、図\ref{fig:multinetworktree}のようにネットワーク別に木構造を形成する。 | |
172 | |
173 \begin{figure}[htb] %PDF | |
174 \begin{center} | |
16
86575cab4d17
fix Image position and add Makefile
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
15
diff
changeset
|
175 \includegraphics[scale=0.4]{Image/MultiNetworkTree.pdf} |
15 | 176 \caption{Multi Network Tree} |
177 \label{fig:multinetworktree} | |
178 \end{center} | |
179 \end{figure} | |
180 | |
181 TreeVNCはRoot NodeがTreeManagerというオブジェクトを持っている。TreeManagerはTreeVNCの接続部分を管理しており、木構造を管理するnodeListを生成する。このnodeListを元に、新しいNodeの接続や、切断検出時の接続の切り替え等を行う。Tree ManagerはRoot Nodeの保持しているネットワーク毎に生成される。新しいNodeが接続してきた際、interfacesからNodeのネットワークと一致するTree Managerを取得し、Node接続の処理を任せる。 | |
182 | |
183 | |
184 | |
5 | 185 \section{Multicastの導入} |
186 | |
187 \section{Blokingの手法} | |
188 | |
189 \section{まとめ} | |
2
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
190 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
191 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
192 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
193 |
d5ccc36d12b1
add Paper TEXsource and PDF
e165729 <e165729@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
194 \end{document} |