Mercurial > hg > Papers > 2014 > toma-master
changeset 46:6fbc1771d2be
fix
author | Daichi TOMA <toma@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 04 Feb 2014 13:50:33 +0900 |
parents | fcf49a1241af |
children | e32c9a53310c |
files | paper/images/jungle.graffle slides/master.html |
diffstat | 2 files changed, 760 insertions(+), 784 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/images/jungle.graffle Tue Feb 04 10:01:03 2014 +0900 +++ b/paper/images/jungle.graffle Tue Feb 04 13:50:33 2014 +0900 @@ -121,8 +121,8 @@ <integer>3198</integer> <key>Points</key> <array> - <string>{393.16676129438565, 190.48826232931489}</string> - <string>{395.41148871176597, 195.19331499751848}</string> + <string>{392.868465885842, 190.6653737405594}</string> + <string>{394.85370451835564, 195.44906871798034}</string> </array> <key>Style</key> <dict> @@ -156,8 +156,8 @@ <integer>3199</integer> <key>Points</key> <array> - <string>{385.38123890897356, 173.13732030339335}</string> - <string>{388.09226779795256, 178.16116159337969}</string> + <string>{385.09847544577173, 173.32841223286351}</string> + <string>{387.53693930401136, 178.45931453356621}</string> </array> <key>Style</key> <dict> @@ -191,8 +191,8 @@ <integer>3200</integer> <key>Points</key> <array> - <string>{377.58403030661538, 190.36449828893686}</string> - <string>{380.13493876403339, 195.27993527094597}</string> + <string>{377.29521598444688, 190.55181596636166}</string> + <string>{379.57699899004655, 195.56482770149145}</string> </array> <key>Style</key> <dict> @@ -226,8 +226,8 @@ <integer>3201</integer> <key>Points</key> <array> - <string>{371.5885442817243, 190.42644245787722}</string> - <string>{369.19305568507207, 195.23554326832524}</string> + <string>{371.8825826948123, 190.60910684379755}</string> + <string>{369.75186862634303, 195.50627897420193}</string> </array> <key>Style</key> <dict> @@ -261,8 +261,8 @@ <integer>3202</integer> <key>Points</key> <array> - <string>{379.20656869884817, 173.19928066945013}</string> - <string>{376.65566024007637, 178.11471861739057}</string> + <string>{379.49538258517617, 173.38659811417014}</string> + <string>{377.21359918353176, 178.39961084541042}</string> </array> <key>Style</key> <dict> @@ -500,8 +500,8 @@ <integer>3184</integer> <key>Points</key> <array> - <string>{302.93370582396807, 142.4774454038498}</string> - <string>{305.19481672826561, 147.18038435764862}</string> + <string>{302.62020429860547, 142.66441234788482}</string> + <string>{304.60681848277289, 147.44742572104019}</string> </array> <key>Style</key> <dict> @@ -535,8 +535,8 @@ <integer>3185</integer> <key>Points</key> <array> - <string>{295.14521674670488, 125.12723152828863}</string> - <string>{297.87128802900122, 130.14775314111927}</string> + <string>{294.84968292979653, 125.32764713692139}</string> + <string>{297.28919880446153, 130.45793303590912}</string> </array> <key>Style</key> <dict> @@ -570,8 +570,8 @@ <integer>3186</integer> <key>Points</key> <array> - <string>{287.34900735009649, 142.35410078785719}</string> - <string>{289.91548031109056, 147.26658668842964}</string> + <string>{287.04658804989316, 142.55098344379445}</string> + <string>{289.329528647019, 147.563351762575}</string> </array> <key>Style</key> <dict> @@ -605,8 +605,8 @@ <integer>3187</integer> <key>Points</key> <array> - <string>{281.32257155831468, 142.41579763564354}</string> - <string>{278.91106570196342, 147.22235159561038}</string> + <string>{281.63103302918319, 142.60820818145294}</string> + <string>{279.49905285167807, 147.50471474659156}</string> </array> <key>Style</key> <dict> @@ -640,8 +640,8 @@ <integer>3188</integer> <key>Points</key> <array> - <string>{288.94159131719738, 125.1888829342785}</string> - <string>{286.37511802636209, 130.10136968333916}</string> + <string>{289.2440104909719, 125.38576556958429}</string> + <string>{286.96106948716618, 130.3981348364093}</string> </array> <key>Style</key> <dict> @@ -815,31 +815,307 @@ <key>Graphics</key> <array> <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3175</integer> + </dict> + <key>ID</key> + <integer>3170</integer> + <key>Points</key> + <array> + <string>{212.23439211271383, 122.73711816473245}</string> + <string>{214.11745264987962, 127.58123680609825}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>HeadScale</key> + <real>0.5</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3178</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3178</integer> + </dict> + <key>ID</key> + <integer>3171</integer> + <key>Points</key> + <array> + <string>{204.47162482201404, 105.40645793925545}</string> + <string>{206.80398155198597, 110.60971472354436}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>HeadScale</key> + <real>0.5</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3180</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3176</integer> + </dict> + <key>ID</key> + <integer>3172</integer> + <key>Points</key> + <array> + <string>{196.66563925534189, 122.62807370661915}</string> + <string>{198.84236617332857, 127.70957268959035}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>HeadScale</key> + <real>0.5</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3179</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3177</integer> + </dict> + <key>ID</key> + <integer>3173</integer> + <key>Points</key> + <array> + <string>{191.51458653752655, 122.68326656368441}</string> + <string>{189.48762338842479, 127.64494318708981}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>HeadScale</key> + <real>0.5</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3179</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3179</integer> + </dict> + <key>ID</key> + <integer>3174</integer> + <key>Points</key> + <array> + <string>{199.12495920560838, 105.46285587394276}</string> + <string>{196.94823187247084, 110.54435578984261}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>HeadScale</key> + <real>0.5</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3180</integer> + </dict> + </dict> + <dict> <key>Bounds</key> - <string>{{166.25, 215}, {71, 14}}</string> + <string>{{211.38675213675191, 127.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> <key>Class</key> <string>ShapedGraphic</string> - <key>FitText</key> - <string>YES</string> - <key>Flow</key> - <string>Resize</string> <key>ID</key> - <integer>3168</integer> + <integer>3175</integer> <key>Shape</key> - <string>Rectangle</string> + <string>Circle</string> <key>Style</key> <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> <key>shadow</key> <dict> <key>Draws</key> <string>NO</string> </dict> - <key>stroke</key> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{196.3183760683757, 127.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3176</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{181.24999999999972, 127.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3177</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{204.37820512820485, 110.16521739130434}, {10.86324786324781, 12.669565217391387}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3178</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{188.608974358974, 110.16521739130434}, {10.86324786324781, 12.669565217391387}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3179</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{196.3183760683757, 93}, {10.86324786324781, 12.669565217391387}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3180</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> <dict> <key>Draws</key> <string>NO</string> @@ -847,346 +1123,13 @@ </dict> <key>Text</key> <dict> - <key>Pad</key> - <integer>0</integer> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 -\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc - -\f0\fs24 \cf0 tree_name_2}</string> <key>VerticalPad</key> <integer>0</integer> </dict> - <key>Wrap</key> - <string>NO</string> - </dict> - <dict> - <key>Class</key> - <string>Group</string> - <key>Graphics</key> - <array> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>Head</key> - <dict> - <key>ID</key> - <integer>3175</integer> - </dict> - <key>ID</key> - <integer>3170</integer> - <key>Points</key> - <array> - <string>{212.73393936395377, 190.44488176814721}</string> - <string>{215.04484978355103, 195.14309346074478}</string> - </array> - <key>Style</key> - <dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>HeadScale</key> - <real>0.5</real> - <key>Legacy</key> - <true/> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>3178</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>Head</key> - <dict> - <key>ID</key> - <integer>3178</integer> - </dict> - <key>ID</key> - <integer>3171</integer> - <key>Points</key> - <array> - <string>{204.90878671983529, 173.11737714131692}</string> - <string>{207.6496246107962, 178.13485872801172}</string> - </array> - <key>Style</key> - <dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>HeadScale</key> - <real>0.5</real> - <key>Legacy</key> - <true/> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>3180</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>Head</key> - <dict> - <key>ID</key> - <integer>3176</integer> - </dict> - <key>ID</key> - <integer>3172</integer> - <key>Points</key> - <array> - <string>{197.12314061467654, 190.33719966007203}</string> - <string>{199.71508157627881, 195.24538106014856}</string> - </array> - <key>Style</key> - <dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>HeadScale</key> - <real>0.5</real> - <key>Legacy</key> - <true/> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>3179</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>Head</key> - <dict> - <key>ID</key> - <integer>3177</integer> - </dict> - <key>ID</key> - <integer>3173</integer> - <key>Points</key> - <array> - <string>{192.0349009612307, 190.9320564350065}</string> - <string>{190.35890515460727, 196.30679541241619}</string> - </array> - <key>Style</key> - <dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>HeadScale</key> - <real>0.5</real> - <key>Legacy</key> - <true/> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>3179</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>Head</key> - <dict> - <key>ID</key> - <integer>3179</integer> - </dict> - <key>ID</key> - <integer>3174</integer> - <key>Points</key> - <array> - <string>{199.61878100549134, 173.71291188053729}</string> - <string>{197.78424119887492, 179.20316514455661}</string> - </array> - <key>Style</key> - <dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>HeadScale</key> - <real>0.5</real> - <key>Legacy</key> - <true/> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>3180</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{211.38675213675191, 195.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3175</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{196.3183760683757, 195.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3176</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{181.24999999999972, 195.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3177</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{204.37820512820485, 178.16521739130434}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3178</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{188.608974358974, 178.16521739130434}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3179</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{196.3183760683757, 161}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3180</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> - </array> - <key>ID</key> - <integer>3169</integer> </dict> </array> <key>ID</key> - <integer>3167</integer> + <integer>3169</integer> </dict> <dict> <key>Class</key> @@ -1194,382 +1137,325 @@ <key>Graphics</key> <array> <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3161</integer> + </dict> + <key>ID</key> + <integer>3156</integer> + <key>Points</key> + <array> + <string>{120.9960036843806, 107.73109022469576}</string> + <string>{122.887626095363, 112.56935994276094}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>HeadScale</key> + <real>0.5</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3164</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3164</integer> + </dict> + <key>ID</key> + <integer>3157</integer> + <key>Points</key> + <array> + <string>{113.23896506767106, 90.396058444237866}</string> + <string>{115.5853366182148, 95.58853254636476}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>HeadScale</key> + <real>0.5</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3166</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3162</integer> + </dict> + <key>ID</key> + <integer>3158</integer> + <key>Points</key> + <array> + <string>{105.43135313053675, 107.61907248914966}</string> + <string>{107.62039419092794, 112.69144828400718}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>HeadScale</key> + <real>0.5</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3165</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3163</integer> + </dict> + <key>ID</key> + <integer>3159</integer> + <key>Points</key> + <array> + <string>{100.21433824604047, 107.65558966808754}</string> + <string>{98.148799158926337, 112.5908876751856}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>HeadScale</key> + <real>0.5</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3165</integer> + </dict> + </dict> + <dict> + <key>Class</key> + <string>LineGraphic</string> + <key>Head</key> + <dict> + <key>ID</key> + <integer>3165</integer> + </dict> + <key>ID</key> + <integer>3160</integer> + <key>Points</key> + <array> + <string>{107.82663198363507, 90.434957440718676}</string> + <string>{105.61167204009291, 95.489122381282726}</string> + </array> + <key>Style</key> + <dict> + <key>stroke</key> + <dict> + <key>HeadArrow</key> + <string>0</string> + <key>HeadScale</key> + <real>0.5</real> + <key>Legacy</key> + <true/> + <key>TailArrow</key> + <string>0</string> + </dict> + </dict> + <key>Tail</key> + <dict> + <key>ID</key> + <integer>3166</integer> + </dict> + </dict> + <dict> <key>Bounds</key> - <string>{{76, 167}, {71, 14}}</string> + <string>{{120.13675213675191, 112.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> <key>Class</key> <string>ShapedGraphic</string> - <key>FitText</key> - <string>YES</string> - <key>Flow</key> - <string>Resize</string> <key>ID</key> - <integer>3154</integer> + <integer>3161</integer> <key>Shape</key> - <string>Rectangle</string> + <string>Circle</string> <key>Style</key> <dict> - <key>fill</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> <key>shadow</key> <dict> <key>Draws</key> <string>NO</string> </dict> - <key>stroke</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> </dict> <key>Text</key> <dict> - <key>Pad</key> + <key>VerticalPad</key> <integer>0</integer> - <key>Text</key> - <string>{\rtf1\ansi\ansicpg1252\cocoartf1265 -\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} -{\colortbl;\red255\green255\blue255;} -\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc - -\f0\fs24 \cf0 tree_name_1}</string> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{105.0683760683757, 112.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3162</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{89.999999999999716, 112.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3163</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> <key>VerticalPad</key> <integer>0</integer> </dict> - <key>Wrap</key> - <string>NO</string> + </dict> + <dict> + <key>Bounds</key> + <string>{{113.12820512820485, 95.165217391304338}, {10.86324786324781, 12.669565217391387}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3164</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> + <dict> + <key>Draws</key> + <string>NO</string> + </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> </dict> <dict> + <key>Bounds</key> + <string>{{97.358974358973995, 95.165217391304338}, {10.86324786324781, 12.669565217391387}}</string> <key>Class</key> - <string>Group</string> - <key>Graphics</key> - <array> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>Head</key> - <dict> - <key>ID</key> - <integer>3161</integer> - </dict> - <key>ID</key> - <integer>3156</integer> - <key>Points</key> - <array> - <string>{122.26077883859962, 142.58396497817034}</string> - <string>{124.36353291478935, 147.32047739235713}</string> - </array> - <key>Style</key> - <dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>HeadScale</key> - <real>0.5</real> - <key>Legacy</key> - <true/> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>3164</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>Head</key> - <dict> - <key>ID</key> - <integer>3164</integer> - </dict> - <key>ID</key> - <integer>3157</integer> - <key>Points</key> - <array> - <string>{114.47266492565952, 125.24747546196562}</string> - <string>{117.02398150594422, 130.32209762353656}</string> - </array> - <key>Style</key> - <dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>HeadScale</key> - <real>0.5</real> - <key>Legacy</key> - <true/> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>3166</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>Head</key> - <dict> - <key>ID</key> - <integer>3162</integer> - </dict> - <key>ID</key> - <integer>3158</integer> - <key>Points</key> - <array> - <string>{106.67529249692554, 142.47049585741689}</string> - <string>{109.07156792496966, 147.43010387582825}</string> - </array> - <key>Style</key> - <dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>HeadScale</key> - <real>0.5</real> - <key>Legacy</key> - <true/> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>3165</integer> - </dict> - </dict> - <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>Head</key> - <dict> - <key>ID</key> - <integer>3163</integer> - </dict> - <key>ID</key> - <integer>3159</integer> - <key>Points</key> - <array> - <string>{101.37792574374052, 142.74325440008917}</string> - <string>{99.43429487644292, 147.77277321324544}</string> - </array> - <key>Style</key> - <dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>HeadScale</key> - <real>0.5</real> - <key>Legacy</key> - <true/> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>3165</integer> - </dict> - </dict> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3165</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> <dict> - <key>Class</key> - <string>LineGraphic</string> - <key>Head</key> - <dict> - <key>ID</key> - <integer>3165</integer> - </dict> - <key>ID</key> - <integer>3160</integer> - <key>Points</key> - <array> - <string>{108.97801186231995, 125.52023637262263}</string> - <string>{106.87943125594957, 130.66723651772267}</string> - </array> - <key>Style</key> - <dict> - <key>stroke</key> - <dict> - <key>HeadArrow</key> - <string>0</string> - <key>HeadScale</key> - <real>0.5</real> - <key>Legacy</key> - <true/> - <key>TailArrow</key> - <string>0</string> - </dict> - </dict> - <key>Tail</key> - <dict> - <key>ID</key> - <integer>3166</integer> - </dict> + <key>Draws</key> + <string>NO</string> </dict> - <dict> - <key>Bounds</key> - <string>{{121.13675213675191, 147.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3161</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{106.0683760683757, 147.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3162</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> + </dict> + <dict> + <key>Bounds</key> + <string>{{105.0683760683757, 78}, {10.86324786324781, 12.669565217391387}}</string> + <key>Class</key> + <string>ShapedGraphic</string> + <key>ID</key> + <integer>3166</integer> + <key>Shape</key> + <string>Circle</string> + <key>Style</key> + <dict> + <key>shadow</key> <dict> - <key>Bounds</key> - <string>{{90.999999999999716, 147.33043478260851}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3163</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{114.12820512820485, 130.16521739130434}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3164</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> + <key>Draws</key> + <string>NO</string> </dict> - <dict> - <key>Bounds</key> - <string>{{98.358974358973995, 130.16521739130434}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3165</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> - <dict> - <key>Bounds</key> - <string>{{106.0683760683757, 113}, {10.86324786324781, 12.669565217391387}}</string> - <key>Class</key> - <string>ShapedGraphic</string> - <key>ID</key> - <integer>3166</integer> - <key>Shape</key> - <string>Circle</string> - <key>Style</key> - <dict> - <key>shadow</key> - <dict> - <key>Draws</key> - <string>NO</string> - </dict> - </dict> - <key>Text</key> - <dict> - <key>VerticalPad</key> - <integer>0</integer> - </dict> - </dict> - </array> - <key>ID</key> - <integer>3155</integer> + </dict> + <key>Text</key> + <dict> + <key>VerticalPad</key> + <integer>0</integer> + </dict> </dict> </array> <key>ID</key> - <integer>3153</integer> + <integer>3155</integer> </dict> <dict> <key>Bounds</key> - <string>{{60, 81.25}, {365, 167.75}}</string> + <string>{{58, 197}, {365, 167.75}}</string> <key>Class</key> <string>ShapedGraphic</string> <key>ID</key> @@ -1647,7 +1533,7 @@ <key>MasterSheets</key> <array/> <key>ModificationDate</key> - <string>2014-02-02 09:45:07 +0000</string> + <string>2014-02-04 03:58:40 +0000</string> <key>Modifier</key> <string>Daichi TOMA</string> <key>NotesVisible</key> @@ -1723,7 +1609,7 @@ <key>ExpandedCanvases</key> <array/> <key>Frame</key> - <string>{{953, 442}, {1031, 976}}</string> + <string>{{1073, 394}, {1031, 976}}</string> <key>ListView</key> <true/> <key>OutlineWidth</key>
--- a/slides/master.html Tue Feb 04 10:01:03 2014 +0900 +++ b/slides/master.html Tue Feb 04 13:50:33 2014 +0900 @@ -101,16 +101,17 @@ 実行時型エラーがない </h3> <p> - Haskellは、評価の際に型に起因するエラーが起きない + Haskellは、実行時に型に起因するエラーが起きない </p> <p> - [1,2,3]のリストに文字'a'を追加することはできない + [1,2,3]のリストに文字'a'を追加することや、['a','b','c']のリストに 1 を追加することはできない </p> <p> コンパイル時にエラーになる </p> <pre> abc = 'a' : [1,2,3] +cde = 1 : ['a','b','c'] </pre> <pre> @@ -130,11 +131,20 @@ getChildren node path = elems (children (getNode node path)) </pre> <p> + getChildren は、Node と Path を受け取って Node のリストを返すことがわかる </p> <pre> *Jungle> :type getChildren getChildren :: Node -> Path -> [Node] </pre> + <p> + 他の型の情報を利用して推論できる + </p> +<pre> +getNode :: Node -> Path -> Node +elems :: Map k a -> [a] +children :: Node -> Map Int Node +</pre> </article> <article> @@ -142,17 +152,52 @@ モナド </h3> <p> - 文脈を保ったまま関数を繋いでいくことができる + モナドを使うことで文脈を保ったまま関数を繋いでいくことができる + </p> + <p> + Maybe モナドを用いて説明する + </p> + <p> + Maybe 型は、失敗する可能性を扱うデータ型である </p> <pre> data Maybe a = Nothing | Just a </pre> + </article> + + <article> + <h3> + モナド - 型クラス + </h3> + <p> + Maybe 型は、モナド型クラスのインスタンスである。 + </p> + <p> + 型クラスは、オブジェクト指向のクラスとは異なる。 + </p> + <p> + 型の振る舞いを定義するもので、今回は Maybe 型はモナドとして振る舞えるという意味になる。 + </p> <pre> instance Monad Maybe where return x = Just x Nothing >>= f = Nothing Just x >>= f = f x </pre> + <p> + モナドとして振る舞うためには2つの関数を定義する。 + + return と、>>= (bind)である。 + </p> + </article> + + <article> + <h3> + モナド - 関数を繋ぐ + </h3> + <p> + 失敗するかもしれないという文脈を保ったまま関数を繋ぐ + </p> <pre> up 4 = Nothing up n = Just (n + 1) @@ -163,6 +208,12 @@ <pre> return 3 >>= down >>= down >>= up >>= up </pre> +<pre> +instance Monad Maybe where + return x = Just x + Nothing >>= f = Nothing + Just x >>= f = f x +</pre> </article> <article> @@ -184,46 +235,24 @@ </pre> </article> - <article> <h3> - マルチコアプロセッサ - </h3> - <p> - 現在、CPU はマルチコア化が進んでいる。 - </p> - <p> - マルチコアプロセッサで線形に性能向上をするためには、処理全体で高い並列度を保つ必要性(アムダール則) - </p> - <p> - 並列度が 80 % の場合、どんなにコア数を増やしても性能向上は5倍まで - </p> - </article> - - <article> - <h3> - 並列データベース + 非破壊的木構造 </h3> <p> データベースを線形に性能向上させたければ、各コアからデータに同時にアクセスできるようにし並列度を高める </p> <p> - 非破壊的木構造という手法を使う - </p> - </article> + 非破壊的木構造という手法を用いる。 - <article> - <h3> - 非破壊的木構造 - </h3> + 非破壊的木構造は、元となる木構造を書き換えずに編集できる。 + </p> <p> - 元となる木構造を書き換えずに編集できる - </p> - </p> 既にあるデータを変更しないので、データの競合状態が発生しない。並列に読み書きできる </p> + <br> <div align="center"> - <img src="images/nondestructive_tree.png" width="600px"> + <img src="images/concurrent_edit.png" width="400px"> </div> </article> @@ -235,7 +264,7 @@ どの木構造が最新なのかを表す情報 </p> <p> - 状態を持つのはここだけで、並列度を高めるにはここの設計が重要 + 状態を持つのはここだけで、並列度を高めるにはルートノードの設計が重要 </p> <div align="center"> <img src="images/rootnode.png" width="400px"> @@ -250,10 +279,7 @@ できるだけルートノードに触る範囲を狭くする </p> <p> - ルートノードが必要ない時はさわらない - </p> - <p> - ルートノードを更新する関数と、編集する関数を綺麗に切り分ける + ルートノードを更新する関数と、編集する関数を切り分ける </p> </article> @@ -310,22 +336,15 @@ Jungle の実装 </h3> <p> - Jungle は Tree と String の連想配列を持っている(状態変数) - </p> - <p> - Tree は、ルートノードの情報と、木の名前(ルートノードの情報は状態変数) + Jungle は複数の Tree を持っている。 + Tree には名前がついており、最新のルートノードを持っている。 </p> - <p> - Node は、子と子の場所の連想配列と、キーと値の連想配列を持ってる。 - </p> - - <br><br> <div align="center"> - <img src="images/get_root_node.png" width="500px"> + <img src="images/jungle_type.png" width="600px"> </div> </article> - <article> + <article class="smaller"> <h3> 状態を扱う関数 </h3> @@ -337,33 +356,68 @@ updateRootNodeWith :: (Node -> Node) -> Jungle -> String -> IO () </pre> <p> - すべて IO が返ってくる - IO が付いているものは全て何かしらの状態の変更を行う関数である。 + IO が付いているものは何かしらの状態の変更を行う関数である。 + </p> + <p> + この関数の型の -> で繋がっているものは複数の引数を取ることを表している。 + </p> + <p> + 実際にはHaskellの関数はカリー化されているため、全ての関数は一度に一つの引数だけを取る。 + 複数の引数を取るようにみえる関数は、実際には1つの引数を取り、その次の引数を受け取る関数を返す。 + </p> + <p> + createJungle は Jungle の作成<br> + createTree は、Jungle と 木の名前を受け取って、木を作成する<br> + getRootNode は、Jungle と 木の名前を受け取って、ルートノードを返す<br> + updateRootNode は、Jungle と 木の名前と Node を受け取ってルートノードを更新する。<br> + updateRootNodeWith は、Node を編集する関数(Node -> Node)と Jungle と 木の名前を取って、ルートノードに関数を適用して更新する。<br> </p> </article> - <article> + <article class="smaller"> <h3> - 木構造の編集、参照関数 + 木構造の編集 </h3> <pre> --- 編集 addNewChildAt :: Node -> Path -> Node deleteChildAt :: Node -> Path -> Position -> Node putAttribute :: Node -> Path -> String -> B.ByteString -> Node deleteAttribute :: Node -> Path -> String -> Node +</pre> + + <p> + 状態の変更は行わない。 + </p> + <p> + addNewChildAt は、指定された Path の Node に子を追加する<br> + deleteChildAt は、指定された Path の Node の Position の子を削除する<br> + putAttribute は、指定された Path の Node に キーと値を追加する<br> + deleteAttribute は、指定された Path の Node のキーにあてはまる値を削除する<br> + </p> --- 参照 + </article> + <article class="smaller"> + <h3> + 木構造の参照 + </h3> +<pre> getAttributes :: Node -> Path -> String -> Maybe B.ByteString -getChildren :: Node -> Path -> [Node] -getChildrenWithKey :: Node -> Path -> [(Int, Node)] +getChildren :: Node -> Path -> [Node] +assocsChildren :: Node -> Path -> [(Int, Node)] assocs :: Node -> Path -> [(String, B.ByteString)] numOfChild :: Node -> Path -> Int currentChild :: Node -> Path -> Maybe Node </pre> + <p> - IO が付いてないため、何も状態の変更を行わない + getAttributes は、指定された Path の Node に存在する属性を キー を用いて参照できる<br> + getChildren は、指定されたPath のNode が持つ全ての子を Node のリストとして返す<br> + assocsChildren は、指定された Path の Node が持つ全ての子を Position とのタプルにし、そのペアのリストを返す<br> + assocsAttribute は、指定された Path の Node が持つ全ての属性を、キーと値のペアとし、そのペアのリストを返す<br> + numOfChild では、指定された Path の Node が持つ子どもの数を取得できる<br> + currentChild では、指定された Path の Node が持つ最新の子を取得できる<br> </p> + </article> <article> @@ -460,7 +514,7 @@ 性能計測 - 読み込みの計測結果 </h3> <p> - 12 スレッドまでの性能向上率 + ハイパースレッディングは安定しないため、12 スレッドまでの性能向上率 </p> <div align="center"> <img src="images/read.png" width="700px"> @@ -526,9 +580,7 @@ <h3> 性能計測 - 書き込みの計測結果 </h3> - <p> - 12 スレッドまでの性能向上率 - </p> + <br> <div align="center"> <img src="images/write.png" width="700px"> </div> @@ -536,10 +588,10 @@ <article> <h3> - 性能計測 - 読み込みと書き込みの考察 + 考察 </h3> <p> - 読み込みと比べて書き込みの性能向上率が低い + 書き込みの性能向上率が低い </p> <p> 木を登録する際、他のスレッドから登録があった場合、ソフトウェア・トランザクショナル・メモリが処理をやり直すため遅いと考えられる。 @@ -574,9 +626,6 @@ <p> 12 スレッド時に 2.14 倍 </p> - <p> - 性能向上率が低い - </p> <table> <tr> <th>CPU数</th> @@ -615,9 +664,6 @@ <p> 12 スレッド時に 1.65 倍 </p> - <p> - 読み込みよりさらに悪い - </p> <table> <tr> <th>CPU数</th> @@ -648,7 +694,7 @@ <article class="smaller"> <h3> - Webサービスに組み込んでの性能評価 考察 + Warp の問題 </h3> <p> Warp がボトルネックとなってしまっている。 @@ -715,7 +761,51 @@ </p> <p> 書き込みが読み込みより性能差が出ている理由として遅延評価が考えられる。 - Haskell では書き込みを行う際、完全に評価せず途中式を積み上げていく。 + Haskell の遅延評価は必要でなければ計算しないため、例えば木構造への書き込みが多い時に必要のない木は計算しないなどを行うことができる。 + </p> + </article> + + <article> + <h3> + 性能計測 - 書き込みと読み込みを同時に行った場合 + </h3> + + <p> + 書き込みごとに毎回読み込みを挟むことで、遅延評価ではなく即時評価させる。 + </p> + + <table> + <tr> + <th>CPU数</th> + <th>実行時間</th> + </tr> + <tr> + <td>1</td> + <td>141.40 s</td> + </tr> + <tr> + <td>2</td> + <td>70.87 s</td> + </tr> + <tr> + <td>4</td> + <td>54.32 s</td> + </tr> + <tr> + <td>8</td> + <td>55.13 s</td> + </tr> + <tr> + <td>12</td> + <td>58.60 s</td> + </tr> + </table> + <p> + 結果が明らかに遅くなっている。 + 12 スレッドで実行した際、 まだ Java より速いが性能差は、1.30 倍である。 + </p> + <p> + シングルスレッドで実行した場合と比較した時、12 スレッドで 2.40 倍の性能向上が見られる。 </p> </article> @@ -739,7 +829,7 @@ 今後の課題 </h3> <p> - 書き込み処理の性能向上率の上昇 + 書き込み処理の性能向上 </p> <p> 分散データベースとしての実装