changeset 24:fce3f9c18d8d

add src and update chapter4
author riono <e165729@ie.u-ryukyu.ac.jp>
date Fri, 14 Feb 2020 23:11:38 +0900
parents e18aecd16936
children f98010ed4fa9
files FinalThesis/chapter4.tex FinalThesis/main.pdf FinalThesis/main.tex FinalThesis/src/IsRetina.java FinalThesis/src/RetinaScale.java FinalThesis/src/RetinaScale_old.java riono-thesis.mm
diffstat 7 files changed, 109 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/FinalThesis/chapter4.tex	Fri Feb 14 18:21:24 2020 +0900
+++ b/FinalThesis/chapter4.tex	Fri Feb 14 23:11:38 2020 +0900
@@ -2,9 +2,38 @@
 \label{chap:otherInplementation}
 
 \section{Gradle 6.1対応}
+TreeVNCはソースのbuildにGradleを使用している。しかし使用しているGradleのバージョンは4.8であった。これを現行の最新バージョンであるGradle 6.1でbuildを実行すると、build faildとなってしまう。
 
+build faildの原因となっていたのは、MacOS用のapplicationに書き出すためのプラグインedu.sc.seis.macAppBundleのバージョンが古かったことが原因だった。これまで使用していたedu.sc.seis.macAppBundleのバージョンは2.1.7であったが、これを最新の2.3.0に変更することで、Gradle 6.1でソースコードのbuildが可能となった。
 
 \section{java9以降のRetinaAPI対応}
+現在のMacにはRetinaディスプレイが搭載されている。Retinaディスプレイとはこれまでに使用されていた液晶ディスプレイよりも画素が細かく、画面がより鮮明に描画されるディスプレイである。画素数が異なるため、画面配信のためには接続されているディスプレイが、液晶ディスプレイか、Retinaディスプレイかの判別が必要となる。
+
+javaにはRetinaディスプレイ判別のためのAPIが提供されている。しかしjava9より大きな仕様変更があり、TreeVNCで使用しているRetinaのAPIは非推奨となってしまったため、書き換えを行なった。非推奨となったコードを以下のソースコード\ref{code:oldRetina}、書き換え後のコードを以下のソースコード\ref{code:IsRetina}、\ref{code:RetinaScale}に示す。
+
+\newpage
+
+\lstinputlisting[caption=java8以前のRetinaディスプレイAPI, label=code:oldRetina]{./src/RetinaScale_old.java}
+
+\lstinputlisting[caption=Retinaディスプレイの判別関数, label=code:IsRetina]{./src/IsRetina.java}
+
+\lstinputlisting[caption=Retinaディスプレイの表示倍率を取得する関数, label=code:RetinaScale]{./src/RetinaScale.java}
+
+java8以前では表示倍率を取得し、その値よりRetinaディスプレイかを判断していた(ソースコード\ref{code:oldRetina} 中14行目)。java9以降ではRetinaディスプレイの判断を行えるAPIが提供された(ソースコード\ref{code:IsRetina} 中5行目)。
+またソースコード\ref{code:RetinaScale}の6行目にて、接続しているディスプレイの表示倍率を取得するAPIも提供されため、例外を考える必要がなくなり、コード量が減少した。
+
+\newpage
+
+\section{デバッグオプションの修正}
+TreeVNCのオプションの1つに-pオプションがある。通常、TreeVNCのデバッグを行うにはサーバ側とクライアント側の2つを同じPC上で実行する必要があった。また、ソースコードを変更後にはbulidを行わないとデバッグできないという煩わしさがあった。
+
+-pオプションはその煩わしさを解消するために、自らとソケット通信を行うことでデバッグが可能となるオプションとして設計されている。しかし、TreeVNCの仕様変更等の理由により画面データとしてのRectnagleがうまく構成されず使用できないという状態だった。
+
+Blockingの実装中は何度もデバッグを行う必要があったため、前述の煩わしさの解消のために-pオプションの修正を行った。
+
+-pオプションが正常作動しなかった原因として、ディスプレイの選択を行なっていなかったことが挙げられる。設計当初の-pオプションはCUIでの動作を想定しており、ディスプレイがない場合もあるという想定だった。
+そのため、画面配信用の画面が選択されておらず、画面データがうまく生成されない状況が発生していた。
+
+これを、確実にGUIでビューワーを表示するという前提でディスプレイ選択を行うことで、正確に画面データの生成を行わせ-pオプションでのデバッグが可能となった。
 
 
-\section{デバッグ環境の構築}
Binary file FinalThesis/main.pdf has changed
--- a/FinalThesis/main.tex	Fri Feb 14 18:21:24 2020 +0900
+++ b/FinalThesis/main.tex	Fri Feb 14 23:11:38 2020 +0900
@@ -7,7 +7,7 @@
 \usepackage{cite}
 \usepackage{url}
 \usepackage{scalefnt}
-
+\usepackage{listings}
 
 
 \usepackage{pxjahyper}
@@ -39,6 +39,29 @@
 \setlength\abovecaptionskip{0pt}
 
 \begin{document}
+\lstset{
+  language=java, 
+  tabsize=2, 
+  numbers=left,
+  frame=single, 
+  basicstyle={\ttfamily\footnotesize}, % 
+  identifierstyle={\footnotesize}, % 
+ commentstyle={\footnotesize\itshape}, % 
+  keywordstyle={\footnotesize\bfseries}, % 
+  ndkeywordstyle={\footnotesize}, % 
+  stringstyle={\footnotesize\ttfamily}, 
+  breaklines=true, 
+  captionpos=t, 
+  columns=[l]{fullflexible}, % 
+  xrightmargin=0zw, % 
+  xleftmargin=1zw, % 
+  aboveskip=1zw, 
+  numberstyle={\scriptsize}, % 
+  stepnumber=1, 
+  numbersep=0.5zw, % 
+  lineskip=-0.5ex, 
+}
+\def\lstlistingname{ソースコード}
 
 % タイトル
 \maketitle
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FinalThesis/src/IsRetina.java	Fri Feb 14 23:11:38 2020 +0900
@@ -0,0 +1,6 @@
+ public boolean getIsRetinaDisplay(int shareScreenNumber) {
+        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
+        final GraphicsDevice[] devices = env.getScreenDevices();
+        GraphicsConfiguration conf = devices[shareScreenNumber].getDefaultConfiguration();
+        return ! conf.getDefaultTransform().isIdentity();
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FinalThesis/src/RetinaScale.java	Fri Feb 14 23:11:38 2020 +0900
@@ -0,0 +1,8 @@
+public static int getRetinaScale(int shareScreenNumber) {
+        int scale = 1;
+        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
+        final GraphicsDevice[] devices = env.getScreenDevices();
+        GraphicsConfiguration conf = devices[shareScreenNumber].getDefaultConfiguration();
+        scale = (int)conf.getDefaultTransform().getScaleX();
+       return scale;
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FinalThesis/src/RetinaScale_old.java	Fri Feb 14 23:11:38 2020 +0900
@@ -0,0 +1,20 @@
+public static int getRetinaScale(int shareScreenNumber) {
+    int scale = 1;
+    GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
+    final GraphicsDevice[] devices = env.getScreenDevices();
+
+    try {
+        Field field = devices[shareScreenNumber].getClass().getDeclaredField("scale");
+
+        if (field != null) {
+            field.setAccessible(true);
+            Object retinaScale = field.get(devices[shareScreenNumber]);
+
+            if (retinaScale instanceof Integer) {
+                scale = (Integer) retinaScale;
+                return scale;
+            }
+        }
+    } catch (Exception ignore) {}
+    return scale;
+}
--- a/riono-thesis.mm	Fri Feb 14 18:21:24 2020 +0900
+++ b/riono-thesis.mm	Fri Feb 14 23:11:38 2020 +0900
@@ -39,7 +39,7 @@
 <node CREATED="1581591179689" ID="ID_1334851042" MODIFIED="1581591185747" TEXT="&#x5148;&#x884c;&#x7814;&#x7a76;">
 <node CREATED="1581591189182" ID="ID_194833918" MODIFIED="1581591201877" TEXT="1&#x30e9;&#x30a4;&#x30f3;&#x3067;&#x534a;&#x5206;&#x3001;&#x534a;&#x5206;"/>
 </node>
-<node CREATED="1581581091049" ID="ID_108796196" MODIFIED="1581581112405" TEXT="Rectangle&#x306e;&#x500b;&#x6570;&#x304c;1~N&#x500b;&#x304b;&#x3089;1~3&#x500b;&#x306b;&#x306a;&#x308b;">
+<node CREATED="1581581091049" ID="ID_108796196" MODIFIED="1581674778859" TEXT="Rectangle&#x306e;&#x500b;&#x6570;&#x304c;1&#x500b;&#x304b;&#x3089;1~3&#x500b;&#x306b;&#x306a;&#x308b;">
 <node CREATED="1581581176641" ID="ID_1331144395" MODIFIED="1581581193708" TEXT="&#x5404;Phase&#x306e;&#x8aac;&#x660e;"/>
 </node>
 </node>
@@ -52,6 +52,10 @@
 <node CREATED="1581578986016" ID="ID_953146837" MODIFIED="1581582025419" POSITION="right" TEXT="TreeVNC&#x306e;&#x4fee;&#x6b63;">
 <node CREATED="1581579001483" ID="ID_460490271" MODIFIED="1581579012139" TEXT="Gradle&#x306e;&#x6700;&#x65b0;&#x7248;&#x5bfe;&#x5fdc;"/>
 <node CREATED="1581579013064" ID="ID_972768773" MODIFIED="1581579025263" TEXT="RetinaAPI&#x3092;java11&#x306b;&#x5bfe;&#x5fdc;">
+<node CREATED="1581674752142" ID="ID_806190282" MODIFIED="1581674758241" TEXT="Retina&#x30c7;&#x30a3;&#x30b9;&#x30d7;&#x30ec;&#x30a4;&#x3068;&#x306f;"/>
+<node CREATED="1581674784897" ID="ID_289765074" MODIFIED="1581674793525" TEXT="java&#x306e;API">
+<node CREATED="1581674794092" ID="ID_636793795" MODIFIED="1581674815909" TEXT="java8&#x4ee5;&#x524d;&#x3068;java9&#x4ee5;&#x964d;&#x3067;API&#x304c;&#x5909;&#x66f4;&#x3055;&#x308c;&#x305f;"/>
+</node>
 <node CREATED="1581579888471" ID="ID_1588121025" MODIFIED="1581581880187" TEXT="ex: &#x5909;&#x66f4;&#x3057;&#x305f;&#x30b3;&#x30fc;&#x30c9;&#x3092;&#x8cbc;&#x308b;"/>
 </node>
 <node CREATED="1581579027357" ID="ID_1166848043" MODIFIED="1581579046272" TEXT="-p &#x30aa;&#x30d7;&#x30b7;&#x30e7;&#x30f3;&#x3067;&#x30c7;&#x30d0;&#x30c3;&#x30b0;&#x53ef;&#x80fd;&#x306b;&#x306a;&#x3063;&#x305f;"/>
@@ -134,11 +138,25 @@
 </node>
 </node>
 <node CREATED="1580926577657" ID="ID_1208584088" MODIFIED="1580926589549" POSITION="left" TEXT="&#x3084;&#x3063;&#x305f;&#x3053;&#x3068;">
-<node CREATED="1580926590109" ID="ID_432214879" MODIFIED="1580926603899" TEXT="Gradle&#x306e;&#x6700;&#x65b0;&#x7248;&#x306b;&#x5bfe;&#x5fdc;"/>
-<node CREATED="1580926604757" ID="ID_440901689" MODIFIED="1580926618662" TEXT="RetinaAPI&#x3092;java11&#x306b;&#x5bfe;&#x5fdc;"/>
 <node CREATED="1580926636276" ID="ID_712918922" MODIFIED="1580926648759" TEXT="&#x30d6;&#x30ed;&#x30c3;&#x30ad;&#x30f3;&#x30b0;"/>
+<node CREATED="1580926590109" ID="ID_432214879" MODIFIED="1581670942062" TEXT="Gradle&#x306e;&#x6700;&#x65b0;&#x7248;(6.1)&#x306b;&#x5bfe;&#x5fdc;">
+<node CREATED="1581670942607" ID="ID_1787037031" MODIFIED="1581670954736" TEXT="&#x3053;&#x308c;&#x307e;&#x3067;&#x306f;4.8&#x3060;&#x3063;&#x305f;"/>
+</node>
+<node CREATED="1580926604757" ID="ID_440901689" MODIFIED="1580926618662" TEXT="RetinaAPI&#x3092;java11&#x306b;&#x5bfe;&#x5fdc;">
+<node CREATED="1581674936569" ID="ID_639861613" MODIFIED="1581674956846" TEXT="&#x6db2;&#x6676;&#x30c7;&#x30a3;&#x30b9;&#x30d7;&#x30ec;&#x30a4;&#x3088;&#x308a;&#x3082;&#x7d30;&#x304b;&#x304f;&#x63cf;&#x753b;&#x3055;&#x308c;&#x308b;"/>
+<node CREATED="1581674957829" ID="ID_275455912" MODIFIED="1581674983188" TEXT="TreeVNC&#x3067;&#x3082;&#x5224;&#x65ad;&#x304c;&#x5fc5;&#x8981;">
+<node CREATED="1581674994973" ID="ID_1749871398" MODIFIED="1581675005766" TEXT="&#x901a;&#x5e38;&#x306e;&#x30c7;&#x30a3;&#x30b9;&#x30d7;&#x30ec;&#x30a4;&#x3068;&#x306f;&#x7570;&#x306a;&#x308b;&#x305f;&#x3081;"/>
+</node>
+<node CREATED="1581675056324" ID="ID_408533724" MODIFIED="1581675068551" TEXT="java9&#x4ee5;&#x4e0a;&#x3088;&#x308a;&#x975e;&#x63a8;&#x5968;&#x306e;API&#x3092;&#x4f7f;&#x3063;&#x3066;&#x3044;&#x305f;"/>
+</node>
 <node CREATED="1581426652807" ID="ID_390140448" MODIFIED="1581426663644" TEXT="&#x30c7;&#x30d0;&#x30c3;&#x30b0;&#x74b0;&#x5883;&#x3092;&#x6574;&#x3048;&#x305f;">
 <node CREATED="1581426664019" ID="ID_1878703111" MODIFIED="1581426668359" TEXT="-p &#x30aa;&#x30d7;&#x30b7;&#x30e7;&#x30f3;"/>
+<node CREATED="1581675109254" ID="ID_420471956" MODIFIED="1581675125988" TEXT="&#x30c7;&#x30a3;&#x30b9;&#x30d7;&#x30ec;&#x30a4;&#x9078;&#x629e;&#x30eb;&#x30fc;&#x30c1;&#x30f3;&#x3092;&#x542b;&#x3093;&#x3067;&#x3044;&#x306a;&#x304b;&#x3063;&#x305f;">
+<node CREATED="1581675146140" ID="ID_1626771715" MODIFIED="1581675161088" TEXT="&#x30c7;&#x30d0;&#x30c3;&#x30b0;&#x6642;&#x306b;&#x30c7;&#x30a3;&#x30b9;&#x30d7;&#x30ec;&#x30a4;&#x3092;&#x6301;&#x3063;&#x3066;&#x3044;&#x308b;&#x304b;&#x308f;&#x304b;&#x3089;&#x306a;&#x304b;&#x3063;&#x305f;">
+<node CREATED="1581675127344" ID="ID_770215795" MODIFIED="1581675144894" TEXT="&#x30c7;&#x30d0;&#x30c3;&#x30b0;&#x3057;&#x3066;&#x3044;&#x308b;&#x6642;&#x70b9;&#x3067;&#x78ba;&#x5b9f;&#x306b;&#x30c7;&#x30a3;&#x30b9;&#x30d7;&#x30ec;&#x30a4;&#x306f;&#x3042;&#x308b;"/>
+</node>
+</node>
+<node CREATED="1581675181104" ID="ID_1798436804" MODIFIED="1581675206834" TEXT="&#x30b5;&#x30fc;&#x30d0;&#x3068;&#x30af;&#x30e9;&#x30a4;&#x30a2;&#x30f3;&#x30c8;&#x3092;&#x4e8c;&#x3064;&#x7acb;&#x3061;&#x4e0a;&#x3052;&#x3066;&#x63a5;&#x7d9a;&#x3092;&#x884c;&#x3046;&#x5fc5;&#x8981;&#x304c;&#x306a;&#x304f;&#x306a;&#x3063;&#x305f;"/>
 </node>
 </node>
 <node CREATED="1580926503596" ID="ID_897446703" MODIFIED="1580926564774" POSITION="left" TEXT="&#x4eca;&#x5f8c;&#x306e;&#x8ab2;&#x984c;">