Mercurial > hg > Papers > 2012 > yuu-sigos
changeset 1:9d9f6c9acfa0
add files
author | Yu Taninari <you@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 11 Apr 2012 02:35:00 +0900 |
parents | d3fec7fac2d3 |
children | 19e0e04dce74 |
files | fig/compare_encoding.eps fig/reconnectionCollaboration01.bb fig/reconnectionCollaboration01.pdf fig/reconnectionCollaboration02.bb fig/reconnectionCollaboration02.pdf yuu-sigos.tex |
diffstat | 6 files changed, 1103 insertions(+), 639 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fig/compare_encoding.eps Wed Apr 11 02:35:00 2012 +0900 @@ -0,0 +1,839 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: compare_encoding.eps +%%Creator: gnuplot 4.4 patchlevel 0 +%%CreationDate: Mon Aug 8 21:10:44 2011 +%%DocumentFonts: (atend) +%%BoundingBox: 50 50 482 352 +%%EndComments +%%BeginProlog +/gnudict 256 dict def +gnudict begin +% +% The following true/false flags may be edited by hand if desired. +% The unit line width and grayscale image gamma correction may also be changed. +% +/Color true def +/Blacktext false def +/Solid false def +/Dashlength 1 def +/Landscape false def +/Level1 false def +/Rounded false def +/ClipToBoundingBox false def +/TransparentPatterns false def +/gnulinewidth 5.000 def +/userlinewidth gnulinewidth def +/Gamma 1.0 def +% +/vshift -83 def +/dl1 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul sub dup 0 le { pop 0.01 } if } if +} def +/dl2 { + 10.0 Dashlength mul mul + Rounded { currentlinewidth 0.75 mul add } if +} def +/hpt_ 31.5 def +/vpt_ 31.5 def +/hpt hpt_ def +/vpt vpt_ def +Level1 {} { +/SDict 10 dict def +systemdict /pdfmark known not { + userdict /pdfmark systemdict /cleartomark get put +} if +SDict begin [ + /Title (compare_encoding.eps) + /Subject (gnuplot plot) + /Creator (gnuplot 4.4 patchlevel 0) + /Author (aotokage) +% /Producer (gnuplot) +% /Keywords () + /CreationDate (Mon Aug 8 21:10:44 2011) + /DOCINFO pdfmark +end +} ifelse +/doclip { + ClipToBoundingBox { + newpath 50 50 moveto 482 50 lineto 482 352 lineto 50 352 lineto closepath + clip + } if +} def +% +% Gnuplot Prolog Version 4.4 (January 2010) +% +%/SuppressPDFMark true def +% +/M {moveto} bind def +/L {lineto} bind def +/R {rmoveto} bind def +/V {rlineto} bind def +/N {newpath moveto} bind def +/Z {closepath} bind def +/C {setrgbcolor} bind def +/f {rlineto fill} bind def +/Gshow {show} def % May be redefined later in the file to support UTF-8 +/vpt2 vpt 2 mul def +/hpt2 hpt 2 mul def +/Lshow {currentpoint stroke M 0 vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Rshow {currentpoint stroke M dup stringwidth pop neg vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/Cshow {currentpoint stroke M dup stringwidth pop -2 div vshift R + Blacktext {gsave 0 setgray show grestore} {show} ifelse} def +/UP {dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def + /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def} def +/DL {Color {setrgbcolor Solid {pop []} if 0 setdash} + {pop pop pop 0 setgray Solid {pop []} if 0 setdash} ifelse} def +/BL {stroke userlinewidth 2 mul setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/AL {stroke userlinewidth 2 div setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +/UL {dup gnulinewidth mul /userlinewidth exch def + dup 1 lt {pop 1} if 10 mul /udl exch def} def +/PL {stroke userlinewidth setlinewidth + Rounded {1 setlinejoin 1 setlinecap} if} def +% Default Line colors +/LCw {1 1 1} def +/LCb {0 0 0} def +/LCa {0 0 0} def +/LC0 {1 0 0} def +/LC1 {0 1 0} def +/LC2 {0 0 1} def +/LC3 {1 0 1} def +/LC4 {0 1 1} def +/LC5 {1 1 0} def +/LC6 {0 0 0} def +/LC7 {1 0.3 0} def +/LC8 {0.5 0.5 0.5} def +% Default Line Types +/LTw {PL [] 1 setgray} def +/LTb {BL [] LCb DL} def +/LTa {AL [1 udl mul 2 udl mul] 0 setdash LCa setrgbcolor} def +/LT0 {PL [] LC0 DL} def +/LT1 {PL [4 dl1 2 dl2] LC1 DL} def +/LT2 {PL [2 dl1 3 dl2] LC2 DL} def +/LT3 {PL [1 dl1 1.5 dl2] LC3 DL} def +/LT4 {PL [6 dl1 2 dl2 1 dl1 2 dl2] LC4 DL} def +/LT5 {PL [3 dl1 3 dl2 1 dl1 3 dl2] LC5 DL} def +/LT6 {PL [2 dl1 2 dl2 2 dl1 6 dl2] LC6 DL} def +/LT7 {PL [1 dl1 2 dl2 6 dl1 2 dl2 1 dl1 2 dl2] LC7 DL} def +/LT8 {PL [2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 2 dl2 2 dl1 4 dl2] LC8 DL} def +/Pnt {stroke [] 0 setdash gsave 1 setlinecap M 0 0 V stroke grestore} def +/Dia {stroke [] 0 setdash 2 copy vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke + Pnt} def +/Pls {stroke [] 0 setdash vpt sub M 0 vpt2 V + currentpoint stroke M + hpt neg vpt neg R hpt2 0 V stroke + } def +/Box {stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke + Pnt} def +/Crs {stroke [] 0 setdash exch hpt sub exch vpt add M + hpt2 vpt2 neg V currentpoint stroke M + hpt2 neg 0 R hpt2 vpt2 V stroke} def +/TriU {stroke [] 0 setdash 2 copy vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke + Pnt} def +/Star {2 copy Pls Crs} def +/BoxF {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath fill} def +/TriUF {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath fill} def +/TriD {stroke [] 0 setdash 2 copy vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke + Pnt} def +/TriDF {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath fill} def +/DiaF {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath fill} def +/Pent {stroke [] 0 setdash 2 copy gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore Pnt} def +/PentF {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath fill grestore} def +/Circle {stroke [] 0 setdash 2 copy + hpt 0 360 arc stroke Pnt} def +/CircleF {stroke [] 0 setdash hpt 0 360 arc fill} def +/C0 {BL [] 0 setdash 2 copy moveto vpt 90 450 arc} bind def +/C1 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + vpt 0 360 arc closepath} bind def +/C2 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C3 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C4 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C5 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc + 2 copy moveto + 2 copy vpt 180 270 arc closepath fill + vpt 0 360 arc} bind def +/C6 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C7 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 270 arc closepath fill + vpt 0 360 arc closepath} bind def +/C8 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C9 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 270 450 arc closepath fill + vpt 0 360 arc closepath} bind def +/C10 {BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill + 2 copy moveto + 2 copy vpt 90 180 arc closepath fill + vpt 0 360 arc closepath} bind def +/C11 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 180 arc closepath fill + 2 copy moveto + 2 copy vpt 270 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C12 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C13 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 0 90 arc closepath fill + 2 copy moveto + 2 copy vpt 180 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/C14 {BL [] 0 setdash 2 copy moveto + 2 copy vpt 90 360 arc closepath fill + vpt 0 360 arc} bind def +/C15 {BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill + vpt 0 360 arc closepath} bind def +/Rec {newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto + neg 0 rlineto closepath} bind def +/Square {dup Rec} bind def +/Bsquare {vpt sub exch vpt sub exch vpt2 Square} bind def +/S0 {BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare} bind def +/S1 {BL [] 0 setdash 2 copy vpt Square fill Bsquare} bind def +/S2 {BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S3 {BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare} bind def +/S4 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S5 {BL [] 0 setdash 2 copy 2 copy vpt Square fill + exch vpt sub exch vpt sub vpt Square fill Bsquare} bind def +/S6 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S7 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S8 {BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare} bind def +/S9 {BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare} bind def +/S10 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill + Bsquare} bind def +/S11 {BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill + Bsquare} bind def +/S12 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare} bind def +/S13 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy vpt Square fill Bsquare} bind def +/S14 {BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill + 2 copy exch vpt sub exch vpt Square fill Bsquare} bind def +/S15 {BL [] 0 setdash 2 copy Bsquare fill Bsquare} bind def +/D0 {gsave translate 45 rotate 0 0 S0 stroke grestore} bind def +/D1 {gsave translate 45 rotate 0 0 S1 stroke grestore} bind def +/D2 {gsave translate 45 rotate 0 0 S2 stroke grestore} bind def +/D3 {gsave translate 45 rotate 0 0 S3 stroke grestore} bind def +/D4 {gsave translate 45 rotate 0 0 S4 stroke grestore} bind def +/D5 {gsave translate 45 rotate 0 0 S5 stroke grestore} bind def +/D6 {gsave translate 45 rotate 0 0 S6 stroke grestore} bind def +/D7 {gsave translate 45 rotate 0 0 S7 stroke grestore} bind def +/D8 {gsave translate 45 rotate 0 0 S8 stroke grestore} bind def +/D9 {gsave translate 45 rotate 0 0 S9 stroke grestore} bind def +/D10 {gsave translate 45 rotate 0 0 S10 stroke grestore} bind def +/D11 {gsave translate 45 rotate 0 0 S11 stroke grestore} bind def +/D12 {gsave translate 45 rotate 0 0 S12 stroke grestore} bind def +/D13 {gsave translate 45 rotate 0 0 S13 stroke grestore} bind def +/D14 {gsave translate 45 rotate 0 0 S14 stroke grestore} bind def +/D15 {gsave translate 45 rotate 0 0 S15 stroke grestore} bind def +/DiaE {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V closepath stroke} def +/BoxE {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V closepath stroke} def +/TriUE {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V closepath stroke} def +/TriDE {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V closepath stroke} def +/PentE {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + closepath stroke grestore} def +/CircE {stroke [] 0 setdash + hpt 0 360 arc stroke} def +/Opaque {gsave closepath 1 setgray fill grestore 0 setgray closepath} def +/DiaW {stroke [] 0 setdash vpt add M + hpt neg vpt neg V hpt vpt neg V + hpt vpt V hpt neg vpt V Opaque stroke} def +/BoxW {stroke [] 0 setdash exch hpt sub exch vpt add M + 0 vpt2 neg V hpt2 0 V 0 vpt2 V + hpt2 neg 0 V Opaque stroke} def +/TriUW {stroke [] 0 setdash vpt 1.12 mul add M + hpt neg vpt -1.62 mul V + hpt 2 mul 0 V + hpt neg vpt 1.62 mul V Opaque stroke} def +/TriDW {stroke [] 0 setdash vpt 1.12 mul sub M + hpt neg vpt 1.62 mul V + hpt 2 mul 0 V + hpt neg vpt -1.62 mul V Opaque stroke} def +/PentW {stroke [] 0 setdash gsave + translate 0 hpt M 4 {72 rotate 0 hpt L} repeat + Opaque stroke grestore} def +/CircW {stroke [] 0 setdash + hpt 0 360 arc Opaque stroke} def +/BoxFill {gsave Rec 1 setgray fill grestore} def +/Density { + /Fillden exch def + currentrgbcolor + /ColB exch def /ColG exch def /ColR exch def + /ColR ColR Fillden mul Fillden sub 1 add def + /ColG ColG Fillden mul Fillden sub 1 add def + /ColB ColB Fillden mul Fillden sub 1 add def + ColR ColG ColB setrgbcolor} def +/BoxColFill {gsave Rec PolyFill} def +/PolyFill {gsave Density fill grestore grestore} def +/h {rlineto rlineto rlineto gsave closepath fill grestore} bind def +% +% PostScript Level 1 Pattern Fill routine for rectangles +% Usage: x y w h s a XX PatternFill +% x,y = lower left corner of box to be filled +% w,h = width and height of box +% a = angle in degrees between lines and x-axis +% XX = 0/1 for no/yes cross-hatch +% +/PatternFill {gsave /PFa [ 9 2 roll ] def + PFa 0 get PFa 2 get 2 div add PFa 1 get PFa 3 get 2 div add translate + PFa 2 get -2 div PFa 3 get -2 div PFa 2 get PFa 3 get Rec + gsave 1 setgray fill grestore clip + currentlinewidth 0.5 mul setlinewidth + /PFs PFa 2 get dup mul PFa 3 get dup mul add sqrt def + 0 0 M PFa 5 get rotate PFs -2 div dup translate + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 M 0 PFs V} for + 0 PFa 6 get ne { + 0 1 PFs PFa 4 get div 1 add floor cvi + {PFa 4 get mul 0 2 1 roll M PFs 0 V} for + } if + stroke grestore} def +% +/languagelevel where + {pop languagelevel} {1} ifelse + 2 lt + {/InterpretLevel1 true def} + {/InterpretLevel1 Level1 def} + ifelse +% +% PostScript level 2 pattern fill definitions +% +/Level2PatternFill { +/Tile8x8 {/PaintType 2 /PatternType 1 /TilingType 1 /BBox [0 0 8 8] /XStep 8 /YStep 8} + bind def +/KeepColor {currentrgbcolor [/Pattern /DeviceRGB] setcolorspace} bind def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke} +>> matrix makepattern +/Pat1 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 8 8 L 0 8 M 8 0 L stroke + 0 4 M 4 8 L 8 4 L 4 0 L 0 4 L stroke} +>> matrix makepattern +/Pat2 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 0 M 0 8 L + 8 8 L 8 0 L 0 0 L fill} +>> matrix makepattern +/Pat3 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 8 M 8 -4 L + 0 12 M 12 0 L stroke} +>> matrix makepattern +/Pat4 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -4 0 M 8 12 L + 0 -4 M 12 8 L stroke} +>> matrix makepattern +/Pat5 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 8 M 4 -4 L + 0 12 M 8 -4 L 4 12 M 10 0 L stroke} +>> matrix makepattern +/Pat6 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop -2 0 M 4 12 L + 0 -4 M 8 12 L 4 -4 M 10 8 L stroke} +>> matrix makepattern +/Pat7 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 8 -2 M -4 4 L + 12 0 M -4 8 L 12 4 M 0 10 L stroke} +>> matrix makepattern +/Pat8 exch def +<< Tile8x8 + /PaintProc {0.5 setlinewidth pop 0 -2 M 12 4 L + -4 0 M 12 8 L -4 4 M 8 10 L stroke} +>> matrix makepattern +/Pat9 exch def +/Pattern1 {PatternBgnd KeepColor Pat1 setpattern} bind def +/Pattern2 {PatternBgnd KeepColor Pat2 setpattern} bind def +/Pattern3 {PatternBgnd KeepColor Pat3 setpattern} bind def +/Pattern4 {PatternBgnd KeepColor Landscape {Pat5} {Pat4} ifelse setpattern} bind def +/Pattern5 {PatternBgnd KeepColor Landscape {Pat4} {Pat5} ifelse setpattern} bind def +/Pattern6 {PatternBgnd KeepColor Landscape {Pat9} {Pat6} ifelse setpattern} bind def +/Pattern7 {PatternBgnd KeepColor Landscape {Pat8} {Pat7} ifelse setpattern} bind def +} def +% +% +%End of PostScript Level 2 code +% +/PatternBgnd { + TransparentPatterns {} {gsave 1 setgray fill grestore} ifelse +} def +% +% Substitute for Level 2 pattern fill codes with +% grayscale if Level 2 support is not selected. +% +/Level1PatternFill { +/Pattern1 {0.250 Density} bind def +/Pattern2 {0.500 Density} bind def +/Pattern3 {0.750 Density} bind def +/Pattern4 {0.125 Density} bind def +/Pattern5 {0.375 Density} bind def +/Pattern6 {0.625 Density} bind def +/Pattern7 {0.875 Density} bind def +} def +% +% Now test for support of Level 2 code +% +Level1 {Level1PatternFill} {Level2PatternFill} ifelse +% +/Symbol-Oblique /Symbol findfont [1 0 .167 1 0 0] makefont +dup length dict begin {1 index /FID eq {pop pop} {def} ifelse} forall +currentdict end definefont pop +/MFshow { + { dup 5 get 3 ge + { 5 get 3 eq {gsave} {grestore} ifelse } + {dup dup 0 get findfont exch 1 get scalefont setfont + [ currentpoint ] exch dup 2 get 0 exch R dup 5 get 2 ne {dup dup 6 + get exch 4 get {Gshow} {stringwidth pop 0 R} ifelse }if dup 5 get 0 eq + {dup 3 get {2 get neg 0 exch R pop} {pop aload pop M} ifelse} {dup 5 + get 1 eq {dup 2 get exch dup 3 get exch 6 get stringwidth pop -2 div + dup 0 R} {dup 6 get stringwidth pop -2 div 0 R 6 get + show 2 index {aload pop M neg 3 -1 roll neg R pop pop} {pop pop pop + pop aload pop M} ifelse }ifelse }ifelse } + ifelse } + forall} def +/Gswidth {dup type /stringtype eq {stringwidth} {pop (n) stringwidth} ifelse} def +/MFwidth {0 exch { dup 5 get 3 ge { 5 get 3 eq { 0 } { pop } ifelse } + {dup 3 get{dup dup 0 get findfont exch 1 get scalefont setfont + 6 get Gswidth pop add} {pop} ifelse} ifelse} forall} def +/MLshow { currentpoint stroke M + 0 exch R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MRshow { currentpoint stroke M + exch dup MFwidth neg 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/MCshow { currentpoint stroke M + exch dup MFwidth -2 div 3 -1 roll R + Blacktext {gsave 0 setgray MFshow grestore} {MFshow} ifelse } bind def +/XYsave { [( ) 1 2 true false 3 ()] } bind def +/XYrestore { [( ) 1 2 true false 4 ()] } bind def +end +%%EndProlog +gnudict begin +gsave +doclip +50 50 translate +0.050 0.050 scale +0 setgray +newpath +(Helvetica) findfont 250 scalefont setfont +1.000 UL +LTb +1375 800 M +63 0 V +6825 0 R +-63 0 V +stroke +1225 800 M +[ [(Helvetica) 250.0 0.0 true true 0 ( 0)] +] -83.3 MRshow +1.000 UL +LTb +1375 1300 M +63 0 V +6825 0 R +-63 0 V +stroke +1225 1300 M +[ [(Helvetica) 250.0 0.0 true true 0 (1000)] +] -83.3 MRshow +1.000 UL +LTb +1375 1799 M +63 0 V +6825 0 R +-63 0 V +stroke +1225 1799 M +[ [(Helvetica) 250.0 0.0 true true 0 (2000)] +] -83.3 MRshow +1.000 UL +LTb +1375 2299 M +63 0 V +6825 0 R +-63 0 V +stroke +1225 2299 M +[ [(Helvetica) 250.0 0.0 true true 0 (3000)] +] -83.3 MRshow +1.000 UL +LTb +1375 2799 M +63 0 V +6825 0 R +-63 0 V +stroke +1225 2799 M +[ [(Helvetica) 250.0 0.0 true true 0 (4000)] +] -83.3 MRshow +1.000 UL +LTb +1375 3298 M +63 0 V +6825 0 R +-63 0 V +stroke +1225 3298 M +[ [(Helvetica) 250.0 0.0 true true 0 (5000)] +] -83.3 MRshow +1.000 UL +LTb +1375 3798 M +63 0 V +6825 0 R +-63 0 V +stroke +1225 3798 M +[ [(Helvetica) 250.0 0.0 true true 0 (6000)] +] -83.3 MRshow +1.000 UL +LTb +1375 4298 M +63 0 V +6825 0 R +-63 0 V +stroke +1225 4298 M +[ [(Helvetica) 250.0 0.0 true true 0 (7000)] +] -83.3 MRshow +1.000 UL +LTb +1375 4797 M +63 0 V +6825 0 R +-63 0 V +stroke +1225 4797 M +[ [(Helvetica) 250.0 0.0 true true 0 (8000)] +] -83.3 MRshow +1.000 UL +LTb +1375 5297 M +63 0 V +6825 0 R +-63 0 V +stroke +1225 5297 M +[ [(Helvetica) 250.0 0.0 true true 0 (9000)] +] -83.3 MRshow +1.000 UL +LTb +1375 800 M +0 63 V +0 4434 R +0 -63 V +stroke +1375 550 M +[ [(Helvetica) 250.0 0.0 true true 0 ( 0)] +] -83.3 MCshow +1.000 UL +LTb +2001 800 M +0 63 V +0 4434 R +0 -63 V +stroke +2001 550 M +[ [(Helvetica) 250.0 0.0 true true 0 (200)] +] -83.3 MCshow +1.000 UL +LTb +2627 800 M +0 63 V +0 4434 R +0 -63 V +stroke +2627 550 M +[ [(Helvetica) 250.0 0.0 true true 0 (400)] +] -83.3 MCshow +1.000 UL +LTb +3254 800 M +0 63 V +0 4434 R +0 -63 V +stroke +3254 550 M +[ [(Helvetica) 250.0 0.0 true true 0 (600)] +] -83.3 MCshow +1.000 UL +LTb +3880 800 M +0 63 V +0 4434 R +0 -63 V +stroke +3880 550 M +[ [(Helvetica) 250.0 0.0 true true 0 (800)] +] -83.3 MCshow +1.000 UL +LTb +4506 800 M +0 63 V +0 4434 R +0 -63 V +stroke +4506 550 M +[ [(Helvetica) 250.0 0.0 true true 0 (1000)] +] -83.3 MCshow +1.000 UL +LTb +5132 800 M +0 63 V +0 4434 R +0 -63 V +stroke +5132 550 M +[ [(Helvetica) 250.0 0.0 true true 0 (1200)] +] -83.3 MCshow +1.000 UL +LTb +5758 800 M +0 63 V +0 4434 R +0 -63 V +stroke +5758 550 M +[ [(Helvetica) 250.0 0.0 true true 0 (1400)] +] -83.3 MCshow +1.000 UL +LTb +6384 800 M +0 63 V +0 4434 R +0 -63 V +stroke +6384 550 M +[ [(Helvetica) 250.0 0.0 true true 0 (1600)] +] -83.3 MCshow +1.000 UL +LTb +7011 800 M +0 63 V +0 4434 R +0 -63 V +stroke +7011 550 M +[ [(Helvetica) 250.0 0.0 true true 0 (1800)] +] -83.3 MCshow +1.000 UL +LTb +7637 800 M +0 63 V +0 4434 R +0 -63 V +stroke +7637 550 M +[ [(Helvetica) 250.0 0.0 true true 0 (2000)] +] -83.3 MCshow +1.000 UL +LTb +8263 800 M +0 63 V +0 4434 R +0 -63 V +stroke +8263 550 M +[ [(Helvetica) 250.0 0.0 true true 0 (2200)] +] -83.3 MCshow +1.000 UL +LTb +1.000 UL +LTb +1375 5297 N +0 -4497 V +6888 0 V +0 4497 V +-6888 0 V +Z stroke +LCb setrgbcolor +350 3048 M +currentpoint gsave translate -270 rotate 0 0 moveto +[ [(Helvetica) 250.0 0.0 true true 0 (number of bytes \(KBytes\))] +] -83.3 MCshow +grestore +LTb +LCb setrgbcolor +4819 175 M +[ [(Helvetica) 250.0 0.0 true true 0 (number of pixels \(KPixels\))] +] -83.3 MCshow +LTb +4819 5672 M +[ [(Helvetica) 250.0 0.0 true true 0 (compare number of each encoding bytes)] +] -83.3 MCshow +1.000 UP +1.000 UL +LTb +% Begin plot #1 +10.000 UL +LT0 +LCb setrgbcolor +7150 5109 M +[ [(Helvetica) 250.0 0.0 true true 0 (RAW)] +] -83.3 MRshow +LT0 +7300 5109 M +663 0 V +1757 1045 M +385 246 V +385 246 V +385 245 V +385 246 V +385 246 V +386 245 V +385 246 V +382 245 V +385 246 V +385 245 V +385 246 V +385 245 V +385 246 V +385 246 V +385 245 V +335 215 V +% End plot #1 +% Begin plot #2 +stroke +LT7 +LCb setrgbcolor +7150 4859 M +[ [(Helvetica) 250.0 0.0 true true 0 (ZRLE)] +] -83.3 MRshow +LT7 +7300 4859 M +663 0 V +1757 880 M +385 74 V +385 73 V +385 75 V +385 78 V +385 76 V +386 77 V +385 107 V +382 120 V +385 115 V +385 118 V +385 115 V +385 130 V +385 132 V +385 132 V +385 128 V +335 104 V +% End plot #2 +% Begin plot #3 +1.000 UP +stroke +LT2 +LCb setrgbcolor +7150 4609 M +[ [(Helvetica) 250.0 0.0 true true 0 (ZRLEE)] +] -83.3 MRshow +LT2 +7300 4609 M +663 0 V +1757 870 M +385 62 V +385 61 V +385 64 V +385 67 V +385 65 V +386 68 V +385 102 V +382 117 V +385 112 V +385 115 V +385 113 V +385 128 V +385 132 V +385 131 V +385 124 V +335 101 V +1757 870 Pls +2142 932 Pls +2527 993 Pls +2912 1057 Pls +3297 1124 Pls +3682 1189 Pls +4068 1257 Pls +4453 1359 Pls +4835 1476 Pls +5220 1588 Pls +5605 1703 Pls +5990 1816 Pls +6375 1944 Pls +6760 2076 Pls +7145 2207 Pls +7530 2331 Pls +7865 2432 Pls +7631 4609 Pls +% End plot #3 +1.000 UL +LTb +1375 5297 N +0 -4497 V +6888 0 V +0 4497 V +-6888 0 V +Z stroke +1.000 UP +1.000 UL +LTb +stroke +grestore +end +showpage +%%Trailer +%%DocumentFonts: Helvetica
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fig/reconnectionCollaboration01.bb Wed Apr 11 02:35:00 2012 +0900 @@ -0,0 +1,5 @@ +%%Title: ./fig/reconnectionCollaboration01.pdf +%%Creator: extractbb 20090506 +%%BoundingBox: 0 0 634 506 +%%CreationDate: Tue Apr 10 15:31:47 2012 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fig/reconnectionCollaboration02.bb Wed Apr 11 02:35:00 2012 +0900 @@ -0,0 +1,5 @@ +%%Title: ./fig/reconnectionCollaboration02.pdf +%%Creator: extractbb 20090506 +%%BoundingBox: 0 0 423 380 +%%CreationDate: Tue Apr 10 15:31:50 2012 +
--- a/yuu-sigos.tex Sun Apr 08 15:33:18 2012 +0900 +++ b/yuu-sigos.tex Wed Apr 11 02:35:00 2012 +0900 @@ -2,8 +2,10 @@ %\documentclass[submit,draft]{ipsj} %\documentclass[submit,techreq]{ipsj} \def\newblock{} -\usepackage[dvips]{graphicx} +%\usepackage[dvips]{graphicx} +\usepackage[dvipdfmx]{graphicx} \usepackage{latexsym} +\usepackage{listings} \def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline} \def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\} @@ -21,11 +23,11 @@ \begin{document} -\title{情報処理学会論文誌ジャーナル論文の準備方法\\ -(2012年2月4日版)} +\title{VNCを用いた授業用画面共有システムの設計・開発 +} -\etitle{How to Prepare Your Paper for IPSJ Journal \\ -(version 2012/2/4)} +\etitle{Design and implementation of Screen Sharing System with VNC for lecture +} \affiliate{IPSJ}{情報処理学会\\ IPSJ, Chiyoda, Tokyo 101--0062, Japan} @@ -34,18 +36,15 @@ \paffiliate{JU}{情報処理大学\\ Johoshori Uniersity} -\author{情報 太郎}{Joho Taro}{IPSJ}[joho.taro@ipsj.or.jp] -\author{処理 花子}{Shori Hanako}{IPSJ} -\author{学会 次郎}{Gakkai Jiro}{IPSJ,JU}[gakkai.jiro@ipsj.or.jp] +\author{谷成 雄}{Taninari Yu}{IPSJ}[you@cr.ie.u-ryukyu.ac.jp] +\author{大城 信康}{Oshiro Nobuyasu}{IPSJ} +\author{河野 真治}{Kono Shinji}{IPSJ} + \begin{abstract} -本稿は,情報処理学会論文誌ジャーナルに投稿する原稿を執筆する際,および論 -文採択後に最終原稿を準備する際の注意点等をまとめたものである.大きく分け -ると,論文投稿の流れと,\LaTeX と専用のスタイルファイルを用いた場合の論 -文フォーマットに関する指針,および論文の内容に関してするべきこと,するべ -きでないことをまとめたべからずチェックリストからなる.本稿自体も \LaTeX -と専用のスタイルファイルを用いて執筆されているため,論文執筆の際に参考に -なれば幸いである. +あとで書く + + \end{abstract} \begin{jkeyword} @@ -67,685 +66,301 @@ \maketitle %1 -\section{はじめに} +\section{研究背景と目的} +普段授業を行う際、プロジェクタなどを使って授業を進めている。 +しかし、後ろの席から見えにくいなどの不便を感じることがよくある。 +授業をうけている生徒の手元にパソコンがあるならば、そこに先生のスライドを +表示して授業を進めれば後ろの席に座っても手元に画面があるので見えづらいという問題は解消される。 + +Ustream Producerを使用することで画面を生徒のコンピュータに配信することができる。 +しかし、使用してみた結果解像度が低くて、ソースコードを読む際などに見えづらいという問題がはっせいした。 -情報処理学会では,基幹論文誌として論文誌ジャーナルの発行を行っている.こ -れまで論文誌ジャーナル編集委員会では,論文誌ジャーナルの論文掲載時のフォー -マットとしてA4横型2段組を採用してきたが,会員からの多くの要望に基づき, -A4縦型2段組に変更することにした.また,これまでは投稿時と掲載時の形式が -異なっていたが,今回のフォーマット変更に合わせて,投稿時も掲載時と同様の -A4縦型2段組で受け付けることにした. +他にもVNCを使えば、スライドを生徒の手元の画面に表示することができる。 +VNCは共有したい画面の解像度のままのデータを配信することができる。 +しかし、多人数の生徒が先生のパソコンに同時に接続してしまうとサーバ側が送信するデータの量が増えるので +処理性能が落ちて授業の進行に画面がついていかなくなってしまう。 +この問題は一つのコンピュータに多人数が同時に繋がるときに起こる問題である。 + +そこでクライアントをTree構造に接続させていくことによって処理を分散させることにした。 +クライアントをTree構造に接続させることによって、switchに対する負荷が増えサーバ側に +対する負荷が軽減する。 + +今回TreeVNCはMulticastで実装しているが、Broadcastで実装されたものとどちらが性能がいいのか +どれくらい性能差が出るのかという疑問がでてきた。 + +今回、Broadcastを設計する際にいろいろな課題が見えてきたので本論文では、Multicastを用いたTreeVNCの実装と +Broadcast版の設計について以下に詳しく説明していく。 -これに伴い,\LaTeX のスタイルファイルも新しいものに変更した.本稿では, -まずそのスタイルファイルを用いた論文のフォーマットに関して述べる.新たな -スタイルファイルでは,極力特別なコマンドは使わずに,標準的な \LaTeX のス -タイルを踏襲している.論文フォーマットに関しては,\ref{sec:format}~章で -後述する指針に従って頂くが,そこに規定されていること以外は標準的な\LaTeX -のコマンドをそのまま使うことができる.本稿は,そのスタイルファイルを実際 -に使っているので,論文執筆の際に参考にされたい. - - -\footnotetext{本文は実際には論文誌ジャーナル編集委員会で作成したものである.} - -また,論文誌ジャーナル編集委員会では,論文の執筆する際に,著者がするべき -こと,するべきでないことを「べからず集」としてまとめた.本稿の後半に,論 -文の内容に関する指針になるように,「べからず集」の内容をチェックリストと -してつけているので,投稿する前の内容のチェックに利用されたい. %2 -\section{投稿の流れ} - +\section{VNCについて} +VNC(Virtual Network Computing)は、RFB プロトコルを用いて遠隔操作を行うリモートデスクトップソフトである。 +VNCはサーバ側とクライアント(ビューア)側に分かれていて、サーバを起動し、 +クライアントがサーバに接続を行い遠隔操作を可能にする。 %2.1 -\subsection{準備} - -情報処理学会論文誌ジャーナルの \LaTeX スタイルファイルを含む論文執筆キッ -トは -\begin{quote} -\small -\|http://www.ipsj.or.jp/jip/submit/style.html| -\end{quote} -からダウンロードすることができる.論文執筆キットは以下のファイルを含んで -いる. -\begin{enumerate} -\item \|ipsj.cls |: 最終原稿用スタイルファイル -\item \|ipsjdraft.sty |: 投稿用スタイル(査読用) -\item \|ipsjpref.sty |: 序文用スタイル -\item \|jsample.tex |: 本稿のソースファイル -\item \|esample.tex |: 英文サンプルのソースファイル -\end{enumerate} -キットはUnix用,Windows (DOS)用,Macintosh用などが用意されており,著者の -作業環境に応じたものを選択できるようになっている.また,実行環境としては -\LaTeXe を前提としているので,準備されたい. - -Microsoft Wordに関しては,投稿されたフォーマットを基に,業者が \LaTeX に -変換して組版を行うので,あくまでも参考としてしか使わないことを承知して頂 -きたい. - -%2.2 -\subsection{最終原稿の作成と投稿} +\subsection{RFB Protocol} +RFB (remote frame buffer) プロトコルは、GUI操作をリモートアクセスで行うためのプロトコルである。 +画面の描画の更新は画面の差分が発生した部分を矩形毎で送り描画される。 +また、画面の描画データに使われるエンコードが多数用意されており、 +また独自のエンコードを実装することもできるシンプルなプロトコルである。 -本稿に従って用意した投稿用原稿の \LaTeX ソースからpdfファイルを作成し, -Adobeのpdf readerで読めることを確認した後, -\begin{quote} -\small -\|https://www.ipsj.or.jp/prms/author_pre_submit.do| -\end{quote} -のPRMS (Paper Review Management System)にメールアドレスを登録し,送られ -たきたメールに従って,指定されたURLから投稿する.投稿の流れについては, -\begin{quote} -\small -\|http://www.ipsj.or.jp/journal/submit/manual/| -\|manual_j_for_Author.pdf| -\end{quote} -を参照されたい. - -なお,情報処理学会論文誌ジャーナルでは,論文の著者が査読者の名前を知るこ -とがないだけなく,査読者も著者の名前を知らないダブルブラインドの査読を取 -り入れている.このため,投稿版では,原稿に著者名とその所属は表示しないよ -うにする必要がある. - -%2.3 -\subsection{最終原稿の作成とファイルの送付} - -投稿した論文の採録が決定したら,査読者からのコメントなどにしたがって原稿 -を修正し,著者紹介など投稿時になかった項目があれば追加する.また図表など -のレイアウトも最終的なものとする.なお後の校正の手間を最小にするために, -この段階で記述の誤りなどを完全に除去するように綿密にチェックして頂きたい. - -最終版では,著者名およびその所属を表示すると同時に,学会より指示された巻 -数,号数,先頭ページ番号,受付/採録年月日(年は西暦)を記述する.なお学 -会からの指示がない項目に関しては,記述しなくてよい. - -学会へは{\bf \LaTeX ファイル(をまとめたもの)とハードコピーの双方を}送 -付する.送付するファイル群の標準的な構成は \|.tex| と \|.bbl| であり,こ -の他にPostScriptファイルや特別なスタイルファイルがあれば付加する.なお -\|.tex| は印刷業者が修正することがあるので,{必ず一つのファイルにする}. -また必要なファイルが全てそろっていること,特に特別なスタイルファイルに洩 -れがないことを,注意深く確認して頂きたい. - -ファイルの送付方法などについては,採録通知とともに学会事務局から送られる -指示に従う. - -%2.4 -\subsection{著者校正・組版・出版} - -学会では用語や用字を一定の基準に従って修正することがある.また \LaTeX の -実行環境の差異などによって著者が作成したハードコピーと実際の組版結果が微 -妙に異なることがある.これらの修正や差異が問題ないかを最終的に確認するた -めに,著者にゲラ刷りが送られるので,もし問題があれば朱書によって指摘して -返送する.なお{\bf この段階での記述誤りの修正は原則として認められない}の -で,原稿送付時に細心の注意を払っていただきたい. - -その後,著者の校正に基づき最終的な組版を行ない,オンライン出版する. %3 -\section{論文フォーマットの指針} -\label{sec:format} +\section{TreeVNCの方針} +まず、多人数が参加している授業でVNCを使う場合に起こる問題は、 +最初で述べたように、一つのコンピュータに多人数が繋がり、 +処理性能が大幅に落ちてしまうところが問題である。 +%この問題を解決する為に、一つのコンピュータに多人数がつながるのではなく +目的のコンピュータに繋がっているコンピュータに繋げれば目的の画面を共有することができる。 -以下,情報処理学会論文誌ジャーナル用スタイルファイルを用いた論文フォーマッ -トの指針について述べるので,これに従って原稿を用意頂きたい.\LaTeX を用 -いた一般的な文章作成技術については,\cite{okumura, companion} 等を参考に -されたい. +この問題を解決する為に、クライアント同士を接続させ、 +画面描画のデータを受け取ったクライアントが次のクライアントにデータを流すという方法を考えた。 + +%一つのコンピュータに多人数がつながるのではなく目的のコンピュータに繋がっている +コンピュータに繋げれば目的の画面を共有することができる。 -%4 -\section{論文の構成} -\label{config} +画面共有を行いたいクライアントが一種のVNCサーバ自体にもなる。 +%誰が誰に繋げばよいかを管理することが出来れば多人数が同時に画面共有をスムーズに行うことが出来ると考えた。 -ファイルは次のようになる.下線部は投稿時に省略可能なもの.またトランザク -ション特有コマンドについては \ref{sig}~節を参照されたい. +また、クライアント同士の接続はツリー構造で行うことで管理がしやすくなると考えた。 +クライアント同士の接続の管理はツリーの一番上にいるPC(Top)で行い、このTopだけがVNCサーバへ接続を行うようにする。 -\noindent -\|\documentclass[submit]{ipsj}|または\\ -\|\documentclass[submit,draft]{ipsj}|\footnote{{\tt [draft]}は投稿用, -スタイルオプションは\ref{option}節参照.} -\\ -\quad 必要ならばオプションのスタイルを追加\\ -\Underline{\|\setcounter{|{\bf 巻数}\|}{<巻数>}|}\\ -\Underline{\|\setcounter{|{\bf 号数}\|}{<号数>}|}\\ -\Underline{\|\setcounter{|{\bf page}\|}{<先頭ページ>}|}\\ -\Underline{\|\|{\bf 受付}\|{<年>}{<月>}{<日>}|}\\ -\Underline{\|\|{\bf 採録}\|{<年>}{<月>}{<日>}|}\\ -\quad 必要ならばユーザのマクロをここに記述\\ -\|\begin{document}|\\ -\|\title{表題(和文)}|\\ -\|\etitle{表題(英文)}|\\ -\Underline{\|\affiliate{所属ラベル}{<和文所属>\\<英文所属>}|}\\ -\quad 必要ならば \|\paffiliate| により現在の所属を宣言する\\ -\Underline{\|\paffiliate{現所属ラベル}{<和現所属>\\<英現所属>}|}\\\\ -\Underline{\|\author{情報 太郎}{Taro Joho}|}\\ -\Underline{\| {<所属ラベル>}[E-mail]|}\\ -\Underline{\|\author{処理 花子}{Hanako Shori}|}\\ -\Underline{\| {<所属ラベル2,現所属ラベル3>}|}\\\\ -\|\begin{abstract}|\\ -\|<概要(和文)>|\\ -\|\end{abstract}|\\ -\|\begin{jkeyword}|\\ -\|<キーワード>|\\ -\|\end{jkeyword}|\\ -\|\begin{eabstract}|\\ -\|<概要(英文)>|\\ -\|\end{eabstract}| -\|\begin{ekeyword}|\\ -\|<KeyWords>|\\ -\|\end{ekeyword}|\\ -\|\maketitle|\\ -\|\section{|第1節の表題\|}|\\ -\dots\dots\dots\dots\dots\\ -\quad \|<本文>|\\ -\dots\dots\dots\dots\dots\\ -謝辞がある場合は\\ -\|\begin{acknowledgment}|\\ -\|\end{acknowledgment}|\\\\ -\|\begin{thebibliography}{99}%9 or 99|\\ -\|\bibitem{1}|\\ -\|\bibitem{2}|\\ -\|\end{thebibliography}|\\\\ -付録がある場合は\\ -\|\appendix|\\ -\|\section{|付録1節の表題\|}|\\\\ -\Underline{\|\begin{biography}|}\\ -\Underline{\|\profile{<X>}{<苗字 名前>}{<プロフィール文章>}|}\\ -\Underline{\|\end{biography}|}\\ -\|\end{document}| +今回作成したTreeVNCは、上記の実装でツリー状にクライアントを接続していくように実装を行った。 +画面の共有だけを行うように実装した。 + + + +\subsection{Treeの構成} +Topはクライアントが接続してくるたびにjava.util.LinkedListにクライアントの情報を追加していく。 + +クライアントからアクセスが来るたびにスレッドを作成しているので、 +複数のクライアントが同時に接続してきても対応することができる。 +しかし、多数のスレッドが同じjava.util.LinkedListなどの共有資源に対して同時に接続を行うと +共有資源の情報が正しく更新されない可能性が出てくる。 +このような共有資源を更新する際はjavaのsynchronizedメソッドを使用して複数のスレッドが共有資源 +に同時にアクセスすることができないようにした。 + +TopはtreeBranch(木の分木数)を定数で持っていて +クライアントが接続してくるごとにcounterをインクリメントしていき +LinkedListの(counter - 1)/treeBranche番目に入っている親の情報を +接続してきたクライアントに教えることで木を構成することができる -%4.1 -\subsection{オプション・スタイル} - -\label{option} \|\documentclass{ipsj}|のオプション\footnote{研究会用のオ -プションは \ref{sig}~節で説明する.}として,以下のものを用意してある. -{\bf 何も定義しなければ和文論文用の標準スタイル}となるが,今回,組版の際 -に和文論文のタイトル,和文論文種別に「{\bf 太ミン}」「{\bf 太ゴ}」のフォ -ントを使用しているため,\TeX 標準フォントに置き換える \|submit| というオ -プションを用意した. - +\subsection{Treeの再構成} +木を構成することはできたが途中のクライアントが落ちてしまった場合に木を再構成しなければならない。 +木を再構成する手順は以下の用に行う。 \begin{enumerate} -\item\|submit | フォント置換用 -\item\|draft | 投稿用 -\item\|invited | 招待論文 -\item\|sigrecommended | 推薦論文 -\item\|technote | テクニカルノート用 -\item\|preface | 序文用 -\item\|JIP | 英文用 +\item 子供が親が落ちたことをTopに対して報告する。 +\item Topは報告を受けると番号の一番大きいノード(最後のノード)に対して落ちた親の代わりになるように報告する。 +\item Top命令を受けたクライアントはTopの指定された場所に接続をしなおす。 +\item Topはクライアントのリストを更新して、親が落ちた子供たちに新しい親の情報を教える。 +\item 親が落ちた子供たちは新しい親に対して接続を行う。 \end{enumerate} -これらのオプションは任意の組合せで使用が可能である. - -\|\documentclass[submit,draft]{ipsj}|とすれば, -投稿用のスタイルとなる. - -なお,\|\usepackage| で補助的なスタイルファイルを指定した場合には,最終 -原稿用のファイル群に必ずスタイルファイルを含める.ただし,\LaTeXe の標準 -配布に含まれているもの(たとえば \|graphicx|)については同封の必要はない. - -スタイルファイルによっては論文誌スタイルと矛盾するようなものもあるので, -注意して使用して頂きたい. +このようにして木を再構成することができる。 +以下のソースは、親が落ちた子供が接続してきた時に、子供全員の接続を待つ部分のコードの一部である。 -%4.2 -\subsection{表題・著者名等} - -表題,著者名とその所属,および概要を前述のコマンドや環境により{\bf 和文と -英文の双方について}定義した後,\|\maketitle| によって出力する. - -%4.2.1 -\subsubsection{表題} - -表題は,\|\title| および \|\etitle| で定義した表題はセンタリングされる. -文字数の多いものについては,適宜 \|\\| を挿入して改行する. - -%4.2.2 -\subsubsection{著者名・所属} - -各著者の所属を第一著者から順に \|\affiliate| を用いてラベル(第1引数)を -付けながら定義すると,脚注に番号を付けて所属が出力される.なお,複数の著 -者が同じ所属である場合には,一度定義するだけで良い. - -現在の所属は \|\paffiliate| を用い,同様にラベル,所属先を記述する.所属 -先には自動で「現在」,\|\\|の改行で「Presently with」が挿入される.著者 -名は \|\author| で定義する.各著者名の直後に,英文著者名,所属ラベルとメー -ルアドレスを記入する.著者が複数の場合は \|\author| を繰り返すことで,2 -人,3人,\dots と増えていく.現在の所属や,複数の所属先を追加する場合に -は,所属ラベルをカンマで区切り,追加すればよい. - -また,メールアドレス部分は省略が可能だが,必ず代表者のアドレスは必要とな -る.なお,和文著者名,英文著者名は,姓と名を半角(ASCII)の空白で区切る. - -%4.2.3 -\subsubsection{概要} +\begin{verbatim} + final int TIMEOUT = 3000; + if (passNumber == 0) { + passNumber++; + wait(TIMEOUT) + passNumber = 0; + } else { + if (++passNumber == TREEBRANCH) { + notifyAll(); + passNumber = 0; + } else { + wait(TIMEOUT); + } + } +\end{verbatim} -和文の概要は \|abstract| 環境の中に, -英文の概要は \|eabstract| 環境の中に,それぞれ記述する. - -%4.2.4 -\subsubsection{キーワード} - -和文の概要は \|jkeyword| 環境の中に, -英文の概要は \|ekeyword| 環境の中に,それぞれ1〜5語記述する. - -%4.3 -\subsection{本文} - -%4.3.1 -\subsubsection{見出し} - -節や小節の見出しには \|\section|, \|\subsection|, \|\subsubsection|, -\|\paragraph| といったコマンドを使用する. - -\<「定義」,「定理」などについては,\|\newtheorem|で適宜環境を宣言し,そ -の環境を用いて記述する. - -%4.3.2 -\subsubsection{行送り} - -2段組を採用しており,左右の段で行の基準線の位置が一致することを原則とし -ている.また,節見出しなど,行の間隔を他よりたくさんとった方が読みやすい -場所では,この原則を守るようにスタイルファイルが自動的にスペースを挿入す -る.したがって本文中では \|\vspace| や \|\vskip| を用いたスペースの調整 -を行なわないようにすること. - -%4.3.3 -\subsubsection{フォントサイズ} +上記のコードでは落ちた子供たちの報告を待ち合わせることができる。 +TREEBRANCHは木を構成する際の分木数であるフィールド変数としてfinalで定義されている。 +passNumberは報告する子供たちを数えるためのカウンタである。 +プロキシは子供分の報告全て揃うと子供たちに新しい親の情報を流し始める。 +TIMEOUTが設定されているのは、子供が報告の際に落ちて報告が届かない場合があるのでそれに対応したものである。 +\newpage -フォントサイズは,スタイルファイルによって自動的に設定されるため,基本的 -には著者が自分でフォントサイズを変更する必要はない. - -%4.3.4 -\subsubsection{句読点} +\begin{figure}[tb] +\begin{center} +\includegraphics[scale = 0.3]{fig/reconnectionCollaboration01.pdf} +\end{center} +\caption{ +再接続の様子 +} +\label{figure:reconnection} +\end{figure} -句点には全角の「.」,読点には全角の「,」を用いる.ただし英文中や数式中 -で「.」や「,」を使う場合には,半角文字を使う.「。」や「、」は使わない. - -%4.3.5 -\subsubsection{全角文字と半角文字} - -全角文字と半角文字の両方にある文字は次のように使い分ける. +図5.1破砕接続の様子を記したコラボレーションダイアグラムである。以下に関数の説明をする。 -\begin{enumerate} -\item 括弧は全角の「(」と「)」を用いる.但し,英文の概要,図表見出し, -書誌データでは半角の「(」と「)」を用いる. +1:lostHost()は親が落ちたことを報告する関数である。 -\item 英数字,空白,記号類は半角文字を用いる.ただし,句読点に関しては, -前項で述べたような例外がある. - -\item カタカナは全角文字を用いる. +2:reportLastNode()は番号の一番大きい(最後のノード)に対して親の代わりをするように命令する関数である。 -\item 引用符では開きと閉じを区別する. -開きには \|``| を用い,閉じには\|''| を用いる. -\end{enumerate} +3:listUpdate()はプロキシが持つクライアントのリスト情報をアップデートする +(落ちたノードを削除し最後のノードのアドレスをそこに追加する)。 -%4.3.6 -\subsubsection{箇条書} +4:lostHost()は上記で説明したとおりである。なぜ間に2と3が呼ばれているのかというと最初にlostHost()が呼ばれて、 +listUpdate()が終わるまで他のノードの報告はブロックされるからである。Client4が先に報告に行く場合もある。 -箇条書に関する形式を特に定めていない.場合に応じて標準的な \|enumerate|, -\|itemize|, \|description| の環境を用いてよい. +5:waitReply.start()はクライアントはwaitReplyというクラスをmainスレッドとは別にスレッドを作成して走らせている。 +もしプロキシからの命令が来るとクライアントはプロキシから指定された場所に接続を行う。 -%4.3.7 -\subsubsection{脚注} - -脚注は \|\footnote| コマンドを使って書くと,ページ単位に\footnote{脚注の -例.}や\footnote{二つめの脚注.}のような参照記号とともに脚注が生成される. -なお,ページ内に複数の脚注がある場合,参照記号は \LaTeX を2回実行しない -と正しくならないことに注意されたい. - -また場合によっては,脚注をつけた位置と脚注本体とを別の段に置く方がよいこ -ともある.この場合には,\|\footnotemark| コマンドや \|\footnotetext| コ -マンドを使って対処していただきたい. - -なお,脚注番号は論文内で通し番号で出力される. - -%4.3.8 -\subsubsection{OverfullとUnderfull} - -組版時にはoverfullを起こさないことを原則としている.従って,まず提出する -ソースが著者の環境でoverfullを起こさないように,文章を工夫するなどの最善 -の努力を払っていただきたい.但し,\|flushleft| 環境,\|\\|, -\|\linebreak| などによる両端揃えをしない形でのoverfullの回避は,できるだ -け避けていただきたい.また著者の執筆時点では発生しないoverfullが,組版時 -の環境では発生することもある.このような事態をできるだけ回避するために, -文中の長い数式や \|\verb| を避ける,パラグラフの先頭付近では長い英単語を -使用しない,などの注意を払うようにして頂きたい. - -%4.4 -\subsection{数式}\label{sec:Item} - -%4.4.1 -\subsubsection{本文中の数式} - -本文中の数式は \|$| と \|$|, \|\(| と \|\)|, あるいは \|math| 環境のいず -れで囲んでもよい. - -%4.4.2 -\subsubsection{別組の数式} - -別組数式(displayed math)については \|$$| と \|$$| は使用せずに,\|\[| と -\|\]| で囲むか,\|displaymath|, \|equation|, \|eqnarray| のいずれかの環 -境を用いる.これらは -% -\begin{equation} -\Delta_l = \sum_{i=l|1}^L\delta_{pi} -\end{equation} -% -のように,センタリングではなく固定字下げで数式を出力し,かつ背が高い数式 -による行送りの乱れを吸収する機能がある. - -%4.4.3 -\subsubsection{eqnarray環境} - -互いに関連する別組の数式が2行以上連続して現れる場合には,単に\|\[| と -\|\]|,あるいは \|\begin{equation}| と\|\end{equation}| で囲った数式を書 -き並べるのではなく,\|\begin|\allowbreak\|{eqnarray}| と -\|\end{eqnarray}| を使って,等号(あるいは不等号)の位置で縦揃えを行なっ -た方が読みやすい. - -%4.4.4 -\subsubsection{数式のフォント} - -\LaTeX が標準的にサポートしているもの以外の特殊な数式用フォントは,でき -るだけ使わないようにされたい.どうしても使用しなければならない場合には, -その旨申し出て頂くとともに,組版工程に深く関与して頂くこともあることに留 -意されたい. - \begin{figure}[tb] -\setbox0\vbox{ -\hbox{\|\begin{figure}[tb]|} -\hbox{\quad \|<|図本体の指定\|>|} -\hbox{\|\caption{<|和文見出し\|>}|} -\hbox{\|\ecaption{<|英文見出し\|>}|} -\hbox{\|\label{| $\ldots$ \|}|} -\hbox{\|\end{figure}|} +\begin{center} +\includegraphics[scale = 0.4]{fig/reconnectionCollaboration02.pdf} +\end{center} +\caption{ +再接続の様子 } -\centerline{\fbox{\box0}} -\caption{1段幅の図} -\ecaption{Single column figure with caption\\ -explicitly broken by $\backslash\backslash$.} -\label{fig:single} +\label{figure:reconnection2} \end{figure} -%4.5 -\subsection{図} +図5.2は前のページ続きを記したものである。以下に関数の説明を行う。 + +6:replyChildlen()はListing1で説明したとおり全クライアントが報告に来るまで待った後、 +親が落ちた子供たちに対して新しい親の情報を報告する関数である。 + +7:reConnection()はプロキシから来た情報をもとにVNC接続を行う関数である。 + +以上の関数を用いることでクライアントが落ちても木を再構成することができる。 + + -1段の幅におさまる図は,\figref{fig:single} の形式で指定する.位置の指定 -に \|h| は使わない.また,図の下に和文と英文の双方の見出しを, -\|\caption| と \|\ecaption| で指定する.文字数が多い見出しはは自動的に改 -行して最大幅の行を基準にセンタリングするが,見出しが2行になる場合には適 -宜 \|\\| を挿入して改行したほうが良い結果となることがしばしばある -(\figref{fig:single} の英文見出しを参照).図の参照は \|\figref{<|ラベ -ル\|>}| を用いて行なう. +\section{リファクタリング} +はじめにTreeVNCを作成する際に、Top用のプログラムとクライアント用のプログラムを別々に作成していた。 + +Topとクライアントのプログラムはだいたい同じことをしているのにソースが2つあるので片方を変更するすると、 +もう片方も同じ変更をしなければならない。片方の変更を忘れるとプログラムが正常に動作しなくなることもある。 + +2つのコードを変更するのは手間がかかるので、一つのプログラムにまとめることにした。 + +リファクタリングを行う際にabstract factoryを使用して2つのプログラムを一つにまとめることができる。 + +[[abstract factory]] + + +\section{圧縮の問題} -\begin{figure}[tb] -\begin{minipage}[t]{0.5\columnwidth} -\footnotesize -\setbox0\vbox{ -\hbox{\|\begin{minipage}[t]%|} -\hbox{\| {0.5\columnwidth}|} -\hbox{\|\CaptionType{table}|} -\hbox{\|\caption{| \ldots \|}|} -\hbox{\|\ecaption{| \ldots \|}|} -\hbox{\|\label{| \ldots \|}|} -\hbox{\|\makebox[\textwidth][c]{%|} -\hbox{\|\begin{tabular}[t]{lcr}|} -\hbox{\|\hline\hline|} -\hbox{\|left¢er&right\\\hline|} -\hbox{\|L1&C1&R1\\|} -\hbox{\|L2&C2&R2\\\hline|} -\hbox{\|\end{tabular}}|} -\hbox{\|\end{minipage}|}} -\hbox{} -\centerline{\fbox{\box0}} -\caption{\protect\tabref*{tab:right} の中身} -\ecaption{Contents of Table \protect\ref{tab:right}.} -\label{fig:left} -\end{minipage}% -\begin{minipage}[t]{0.5\columnwidth} -\CaptionType{table} -\caption{\protect\figref*{fig:left} で作成した表} -\ecaption{A table built by\\ Fig.\,\protect\ref{fig:left}.} -\label{tab:right} -\vskip1mm -\makebox[\textwidth][c]{\begin{tabular}[t]{lcr}\hline\hline -left¢er&right\\\hline -L1&C1&R1\\ -L2&C2&R2\\\hline -\end{tabular}} -\end{minipage} -\end{figure} +VNCで扱うRFB プロトコルには、使えるエンコーディングのタイプの1つとしてZRLE(Zlib Run-Length Encoding)がある。 +ZRLEはZlibで圧縮されたデータとそのデータのバイト数がヘッダーとして付けられ送られてくる。 +Zlibはフリーのデータ圧縮及び解凍を行うライブラリである。 +可逆圧縮アルゴリズムの圧縮と解凍が行えるjava.util.zip.deflaterとjava.util.zip.inflaterを実装している。 + + +\subsection{java.util.zip.deflaterの実装の問題} +Zlib圧縮は辞書を持っていて、その辞書に登録されているデータを元に解凍が行われる。 +しかし、java.util.zip.deflaterは現在持っている辞書を書き出すこと(flush)ができないことが分かった。 +辞書を書きだすことができない為、Zlib圧縮されたデータを途中から受け取ってもデータが正しく解凍を行うことができない。 +%元々のZlibの規約にはこの辞書をflushする機能があったがJavaには実装されていなかった。 -\begin{figure*}[tb] -\setbox0\vbox{\large -\hbox{\|\begin{figure*}[t]|} -\hbox{\quad \|<|図本体の指定\|>|} -\hbox{\|\caption{<|和文見出し\|>}|} -\hbox{\|\ecaption{<|英文見出し\|>}|} -\hbox{\|\label{| $\ldots$ \|}|} -\hbox{\|\end{figure*}|}} -\centerline{\fbox{\hbox to.9\textwidth{\hss\box0\hss}}} -\caption{2段幅の図} -\ecaption{Double column figure.} -\label{fig:double} -\end{figure*} +\subsection{ZRLEE(ZRLE Economy)} +そこで、TopがZRLEで受け取ったデータをunzipし、データをzipし直して最後にfinish() +をいれることで初めからデータを読んでいなくても解凍を行えるようにした(毎回新しい辞書を使うようにした)。 +このエンコードはZRLEEエンコードと定義した。 +一度ZRLEEエンコードに変換してしまえば、そのデータをそのまま流すだけで良い。 +よって変換はTopが行う一回だけですむ。 +ただし、deflater,inflaterでは前回までの通信で得た辞書をクリアしないといけないため、 +Topとクライアント側では毎回新しく作る必要がある(クライアント側はinflaterだけ)。 +また、ZRLEEはクライアント側が対応していなければならないという問題がある。 + +\subsection{ZRLEとZRLEEのデータ圧縮率の比較} +RAW,ZRLE,ZRLEEのデータ量の比較を行った。 +図6は1920 * 1080の画面の全描画にかかるデータ量を測った結果を示した図である。ZRLEEの方がデータ量が少なくですんでいる\ +。 +これは、ZRLE(Zlib)が初めに送られた辞書を用いての解凍が余り有効的に働いていない場合があるからだと思われる。 +つまりVNCの場合はZRLEEの様に毎回辞書のデータを付加させて送ってもデータ量に差がでない可能性があることが分かった。 -また紙面スペースの節約のために,1つの \|figure|(または \|table|)環境の -中に複数の図表を並べて表示したい場合には,\figref{fig:left} と -\tabref{tab:right} のように個々の図表と各々の \|\caption|/\|\ecaption| -を \|minipage| 環境に入れることで実現できる.なお図と表が混在する場合, -\|minipage| 環境の中で\|\CaptionType{figure}| あるいは \|\CaptionType| -\|{table}| を指定すれば,外側の環境が \|figure| であっても \|table| であっ -ても指定された見出しが得られる. - -2段の幅にまたがる図は,\figref{fig:double} の形式で指定する. -位置の指定は \|t| しか使えない. - -図の中身では本文と違い,どのような大きさのフォントを使用しても構わない -(\figref{fig:double} 参照).また図の中身として,encapsulate された -PostScriptファイル(いわゆるEPSファイル)を読み込むこともできる.読み込 -みのためには,プリアンブルで -% -\begin{quote} -\|\usepackage{graphicx}| -\end{quote} -% -を行った上で,\|\includegraphics| コマンドを図を埋め込む箇所に置き,その -引数にファイル名(など)を指定する. - -%4.6 -\subsection{表} - -表の罫線はなるべく少なくするのが,仕上がりをすっきりさせるコツである.罫 -線をつける場合には,一番上の罫線には二重線を使い,左右の端には縦の罫線を -つけない (\tabref{tab:example}).表中のフォントサイズのデフォルトは -\|\footnotesize|である. - -また,表の上に和文と英文の双方の見出しを, \|\caption|と \|\ecaption| で -指定する.表の参照は \|\tabref{<|ラベル\|>}| を用いて行なう. - -\begin{table}[tb] -\caption{表の例} -\ecaption{An Example of Table.} -\label{tab:example} -\hbox to\hsize{\hfil -\begin{tabular}{l|lll}\hline\hline -& column1 & column2 & column3 \\\hline -row1 & item 1,1 & item 2,1 & ---\\ -row2 & --- & item 2,2 & item 3,2 \\ -row3 & item 1,3 & item 2,3 & item 3,3 \\ -row4 & item 1,4 & item 2,4 & item 3,4 \\\hline -\end{tabular}\hfil} -\end{table} - -%4.7 -\subsection{参考文献・謝辞} - -%4.7.1 -\subsubsection{参考文献の参照} +\begin{figure}[!htbp] +\begin{center} +\includegraphics[scale = 0.5]{fig/compare_encoding.eps} +\end{center} +\caption{ +RAW,ZRLE,ZRLEEによる1画面(1920*1080)描画にかかるデータ量。 +x軸はピクセル数、y軸はバイト数を表している。 +} +\label{figure:splaying} +\end{figure} -本文中で参考文献を参照する場合には%,%参考文献番号が文中の単語として使われ -%る場合と,そうでない参照とでは,使用する文字の大きさが異なる.前者は -%\|\Cite|により参照し,後者は -%\|\cite|により参照する.たとえば; -\|\cite|を使用する.参照されたラベルは自動的にソートされ, -\|[]|でそれぞれ区切られる. -% -\begin{quote} -文献 \|\cite{companion,okumura}| は \LaTeX の総合的な解説書である. -\end{quote} -% -と書くと; -% -\begin{quote} -文献\cite{companion,okumura}は \LaTeX の総合的な解説書である. -\end{quote} -% -が得られる. +\section{授業などでの使用} +実際の授業で実装したTreeVNCを使用してみた。 +実際に使ってみての感想などを聞いてみると良かったなどの意見がでてきた。 +しかし、実際に使ってみて新しい問題などもみつかった。 +TreeVNCでは各クライアントが自分自身のタイミングで画像データを取得できるように +MulticastQueueを作成して、データをQueueにもたせている。 +クライアントが接続を持ったままsuspend(停止)してしまうとQueueにデータがたまり続けてしまい +Memory Overflowを起こしてしまう。そこで、TimeOutスレッド作成して、 +一定時間取得されないデータはQueueから削除して、クライアントが読み込みを +開始した際に、消された次に入っているデータを送るというように設計されている。 +一つ目の問題は画像の更新が少ない画面の共有を行う際に、たまにデータが送られてこないとう問題がある。 +この問題はおそらく上記で説明したTimeOutスレッドが更新データを落としてしまっているのではないかと考えられる。 +二つ目の問題は発表者が複数いる際は発表者が変わるごとにTopを起動しなおさなければならないということである。 +この問題については次の章でもう少し詳しく説明する。 -%4.7.2 -\subsubsection{参考文献リスト} - -参考文献リストには,原則として本文中で引用した文献のみを列挙する.順序は -参照順あるいは第一著者の苗字のアルファベット順とする. -%4.7.3 -\subsubsection{謝辞} - -謝辞がある場合には,参考文献リストの直前に置き,\|acknowledgment|環境の -中に入れる.この環境の中身は投稿時には出力されない. - -%4.8 -\subsection{著者紹介} - -本文の最後(\|\end{document}| の直前)に,以下のように著者紹介を記述する. +\section{UserInterfaceの設計と実装} +普通VNCで接続を行う際にクライアントを起動する際に相手のアドレスを指定しなければならない。 +そこで、TreeVNCはクライアントが起動する際にBroadCastパケットを送信して同じセグメント内に、 +Topが起動しているかどうかを調べ、起動していたら起動しているTopの一覧を表示するように設計・ +実装を行った。これによりクライアントは起動する際に何も打ち込まなくても起動することができる。 -\begin{quote} -\|\begin{biography}|\\ -\|\profile{m}{<|第一著者名\|>}{|第一著者の紹介\|}|\\ -\|\profile{m}{<|第二著者名\|>}{|第二著者の紹介\|}|\\ -\|\profile{m}{<|$\dots$\|>}{|$ldots$\|}|\\ -\|\end{biography}| -\end{quote} +前章で説明したように、ゼミなど発表者が多数いる際に、TreeVNCを使用すると発表者ごとにTopを立て直す必要がある。 +このような際にボタンひとつで、画面共有を行う対象を変更できると便利である。 +しかし、VNCでは違う画面サイズのデータが流れてくると落ちてしまう仕様になっている。 +そのため、画面を切り替える際はクライアントに画面が切り替わることを教えるプロトコルを作成する必要がある。 +上のような設計で画面の切り替えは今後実装する予定である。 -なお最初の引数を変えることで,会員種別が変わる.学生会員の場合は\|s|,フェ -ローの場合は\|f|,非会員の場合は\|n|を入れる. -\begin{quote} -\|\profile{n}{<|第一著者名\|>}{|第一著者の紹介\|}| -\end{quote} -なお著者紹介は投稿時には出力されない. -%5 -\section{論文内容に関する指針} +\section{Broadcast版の設計} +Broadcast版を設計する際に見えてきた問題点などを解説する。 -論文の内容について,論文誌ジャーナル編集委員会で作成した「べからず集」を -以下に示す.投稿前のチェックリストとして利用頂きたい.これ以外にも,査読 -者用,メタ査読者用の「べからず集」\cite{webpage2}も公開しているので,参 -照されたい.また,作文技術に関する \cite{book1, book2, book3, book4}のよ -うな書籍も参考になる. - -%5.1 -\subsection{書き方の基本} -\begin{itemize} - \item[$\Box$] 研究の新規性,有用性,信頼性が読者に伝わるように記述する. - \item[$\Box$] 読み手に,読みやすい文章を心がける(内容が前後する,背景・ - 課題の設定が不明瞭などは読者にとって負担). - \item[$\Box$] 解決すべき問題が汎用化(一般的に記述)されていないのは再 - 考を要する(XX大学の問題という記述に終始).あるいは, - (単に「作りました」だけで)解決すべき問題そのものの記述 - がないのは再考を要する. - \item[$\Box$] 結論が明確に記されていない,または,範囲,限界,問題点な - どの指摘が適切ではない,または,結論が内容にそったもので - はないものは再考を要する. - \item[$\Box$] 科学技術論文として不適当な表現や,分かりにくい表現がある - のは再考を要する. - \item[$\Box$] 極端な口語体や,長文の連続などは再考を要する. - \item[$\Box$] 章,節のたて方,全体の構成等が適切でない文章は再考を要す - る. - \item[$\Box$] 文中の文脈から推測しないと内容の把握が困難な論文にしない. - \item[$\Box$] 説明に飛躍した点があり,仮説等の説明が十分ではないのは再 - 考を要する. - \item[$\Box$] 説明に冗長な点,逆に簡単すぎる点があるのは再考を要する. - \item[$\Box$] 未定義語を減らす. -\end{itemize} +\subsection{Broadcastパケットの性質} +Broadcastパケットの性質とし大きすぎるデータの送信などができないという性質がある。 +実際にBroadcastパケットでどの程度の大きさのデータが送れるのかを測ってみたところ +有線のBroadcastだと約64000byteまでのデータ量だと送信することができた。 +無線のBroadcastの場合も約64000byteのデータを送信することができたが、無線だと不安定で +データが沢山落ちたりすることもあった。 -%5.2 -\subsection{新規性と有効性を明確に示す} - -\begin{itemize} - \item[$\Box$] 在来研究との関連,研究の動機,ねらい等が明確に説明されて - いないのは再考を要する. - \item[$\Box$] 既知/公知の技術が何であって,何を新しいアイデアとして提 - 案しているのかが書かれていないのは再考を要する. - \item[$\Box$] 十分な参考文献は新規性の主張に欠かせない. - \item[$\Box$] 提案内容の説明が,概念的または抽象的な水準に終始していて, - 読者が提案内容を理解できない(それだけで新規性が感じられ - ないもの)のは再考を要する. - \item[$\Box$] 論文で提案した方法の有効性の主張がない,またはきわめて貧 - 弱なのは再考を要する. -\end{itemize} - -%5.3 -\subsection{書き方に関する具体的な注意} +もう一つBroadcastパケットの性質としてデータが落ちてもわからないという性質がある。 +この問題に対しての考えは後述する。 -\begin{itemize} - \item[$\Box$] 和文標題が内容を適切に表現していないのは再考を要する. - \item[$\Box$] 英文標題が内容を適切に表現していない,または英語として適 - 切でないのは再考を要する. - \item[$\Box$] アブストラクトが主旨を適切に表現していない,または英文が - 適切ではないのは再考を要する. - \item[$\Box$] 記号・略号等が周知のものでなく,または,用語が適切でなく, - または,図・表の説明が適当ではないのは再考を要する. - \item[$\Box$] 個人的あるいは非常に小さなグループ/企業だけで通用するよ - うな用語が特別な説明もなしに多用されているのは再考を要す - る. - \item[$\Box$] 図表自体は十分に明確ではない,または誤りがあるのは再考を - 要する. - \item[$\Box$] 図表が鮮明ではないのは再考を要する. - \item[$\Box$] 図表が大きさ,縮尺の指定が適切でないのは再考を要する. -\end{itemize} +\subsection{パケットの分割} +VNCでは画像を更新する際に矩形単位で更新データを送信する。 +画面全体の更新などはどうしても更新データのサイズが大きくなってしまう。 +Broadcastでは約64000byteまでのデータしか送ることができないので、 +データを送信する際は64000byte以下になるようにデータを分割して送らなければならない。 +第5章で説明したとおりTreeVNCでは、VNC ServerからZRLE圧縮されたデータをうけとり、 +Topが一旦解凍をして、圧縮し直してZRLEE圧縮されたデータを送信している。 +この一旦解凍されたデータを分割64000byte以下にしてクライアントに送信してやれば良い。 +ZRLEを解凍すると、64*64ピクセルのタイル群のデータになる。 +よってデータの分割はこのタイル群数個分で分割することでうまくいくと考えた。 +最後に分割したデータを圧縮しなおして、headerデータを付加してクライアントに流してやれば良い。 -%5.4 -\subsection{参考文献} -\begin{itemize} - \item[$\Box$] 参考文献は10件以上必要(分野によっては20件以上,30件以上 - という意見もある). - \item[$\Box$] 十分な参考文献は新規性の主張に欠かせない. - \item[$\Box$] 適切な文献が引用されておらず,その数も適切ではないのは再 - 考を要する. - \item[$\Box$] 日本人によるしかるべき論文を引用することで日本人研究コミュ - ニティの発展につながる. - \item[$\Box$] 参考文献は自分のものばかりではだめ. -\end{itemize} + -%5.5 -\subsection{二重投稿} +\subsection{dropしたパケットの検出} +Broadcastの性質で説明したとおり、Broadcastではデータが落ちていることをクライアントが知ることができない。 +そこでプロトコルを拡張してデータごとにシリアル番号を振ってやり連続でない値が来た時はデータが正しく +届いていないと判断することができる。このようにすることでdropしたデータの検出ができると考えた。 -\begin{itemize} - \item[$\Box$] 二重投稿はしてはならない ─ ただし国際会議に採択された論 - 文を著作権が問題にならないように投稿することは構わない. - \item[$\Box$] 他の論文とまったく同じ図表を引用の明示なしに利用すること - は禁止. - \item[$\Box$] 既発表の論文等との間に重複があるのは再考を要する. -\end{itemize} -%5.6 -\subsection{他の人に読んでもらう} +\subsection{Acknowledgeの設計} +データがdropした際に、どのようにして落ちた部分のデータをTopに再送してもらうかが問題となってくる。 -\begin{itemize} - \item[$\Box$] 投稿経験が少ない人は,採録された経験の豊富な人に校正して - もらう. - \item[$\Box$] 読者の立場から見て論理的な飛躍がないかに注意して記述する. -\end{itemize} + + +\section{まとめと今後の展開} -%5.7 -\subsection{その他} + -\begin{itemize} - \item[$\Box$] 条件付採録後の修正で,採録条件以外を理由もなく修正するこ - とは禁止. - \item[$\Box$] ダブルブラインドなので査読者は選べない. - \item[$\Box$] 投稿前にチェックリストの各項目を満たしているか,必ず確認 - する. -\end{itemize} + + %6 \section{おわりに}