<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1059680730891386709</id><updated>2011-11-18T00:26:25.883+09:00</updated><category term='C++'/><category term='PHP'/><category term='お勧め本'/><category term='sunspot'/><category term='愚痴'/><category term='blogger'/><category term='Subversion'/><category term='Eclipse'/><category term='boost'/><category term='BREW'/><category term='メモ'/><category term='ヒトリゴト'/><category term='Android'/><category term='NetBeans'/><category term='Java'/><title type='text'>黒点観測記</title><subtitle type='html'>研究室での雑記メモ．SunSPOT や無線等の雑記を載せています．</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>96</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-2713741962066965634</id><published>2011-09-06T19:18:00.000+09:00</published><updated>2011-09-06T19:18:50.827+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>Google Developer Day 2011 Japan</title><content type='html'>今年も&lt;a href="http://www.google.com/intl/ja/events/developerday/2011/tokyo/index.html"&gt;この&lt;/a&gt;季節が来ました。&lt;br /&gt;&lt;br /&gt;興味のある方は是非！！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-2713741962066965634?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/2713741962066965634/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=2713741962066965634' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2713741962066965634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2713741962066965634'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2011/09/google-developer-day-2011-japan.html' title='Google Developer Day 2011 Japan'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8726256525599453413</id><published>2011-07-22T23:14:00.001+09:00</published><updated>2011-07-22T23:15:53.758+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>SunSPOT再び</title><content type='html'>久々にSunSPOTをいじろうと思ったら，いつの間にかv6(yellow)になってた．v3(purple)ぐらいから触ってなかったので，結構変わってた．&lt;br /&gt;&lt;br /&gt;昔，RSSIを取得するアプリ書いたときに送信電力が最大で-3にしかできないのでなぜかと思っていたらProgrammer's Manualの99ページに&lt;br /&gt;”802.11.4では+32から-31で設定できるけど，CC2420チップでは22段階しかなく，最大値は0．そんでFCCのレギュレーションではチャネル26では最大-3まで（ちなみにディフォルトチャンネルは26）．ほかのチャネルでは0にできる”&lt;br /&gt;と書いてあった（v3のマニュアルに書いてなかったけど，v4から書いてあった）&lt;br /&gt;&lt;br /&gt;センサーのインスタンス化が結構変わってた．&lt;br /&gt;ITriColorLEDArray leds = (ITriColorLEDArray) Resources.lookup(ITriColorLEDArray.class);&lt;br /&gt;みたいにする．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8726256525599453413?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8726256525599453413/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8726256525599453413' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8726256525599453413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8726256525599453413'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2011/07/sunspot.html' title='SunSPOT再び'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-3751546115789377332</id><published>2011-07-09T12:27:00.001+09:00</published><updated>2011-07-09T12:28:28.634+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>またしても</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-fql2I1aEB5o/ThfKzHl859I/AAAAAAAAAZw/ESKllsGvbgU/s1600/IMG_2577.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-fql2I1aEB5o/ThfKzHl859I/AAAAAAAAAZw/ESKllsGvbgU/s320/IMG_2577.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;ついに3.x．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-3751546115789377332?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/3751546115789377332/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=3751546115789377332' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3751546115789377332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3751546115789377332'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2011/07/blog-post.html' title='またしても'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-fql2I1aEB5o/ThfKzHl859I/AAAAAAAAAZw/ESKllsGvbgU/s72-c/IMG_2577.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-1267607115116882786</id><published>2011-02-14T14:34:00.001+09:00</published><updated>2011-02-14T14:34:32.723+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Nexus S</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ulumzO159RI/TVi-mPOi4JI/AAAAAAAAAY0/mXaxoHfOSP0/s1600/IMG_2492.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-ulumzO159RI/TVi-mPOi4JI/AAAAAAAAAY0/mXaxoHfOSP0/s320/IMG_2492.JPG" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;やっと来ました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-1267607115116882786?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/1267607115116882786/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=1267607115116882786' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1267607115116882786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1267607115116882786'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2011/02/nexus-s.html' title='Nexus S'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-ulumzO159RI/TVi-mPOi4JI/AAAAAAAAAY0/mXaxoHfOSP0/s72-c/IMG_2492.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-6951523697975880586</id><published>2010-11-29T23:56:00.003+09:00</published><updated>2010-11-29T23:59:55.604+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>ABC2011 Winter</title><content type='html'>興味があればどうぞ。&lt;br /&gt;&lt;br /&gt;http://www.android-group.jp/abc2011w/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-6951523697975880586?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/6951523697975880586/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=6951523697975880586' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6951523697975880586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6951523697975880586'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/11/abc2010-winter.html' title='ABC2011 Winter'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-1376113084267815358</id><published>2010-11-20T23:41:00.000+09:00</published><updated>2010-11-20T23:41:15.204+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android™技術者認定試験制度</title><content type='html'>大学院の講義でもやっているので、Androidの技術者認定試験の受験を推奨してます。&lt;br /&gt;http://www.oesf.jp/modules/training/index.php?content_id=2&lt;br /&gt;でも就職とか、社会に出てから役に立つのかな？&lt;br /&gt;まだ、認知度低いし。&lt;br /&gt;学割もあるみたいだけど、まだ未定。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-1376113084267815358?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/1376113084267815358/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=1376113084267815358' title='6 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1376113084267815358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1376113084267815358'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/11/android.html' title='Android™技術者認定試験制度'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8089427841376467780</id><published>2010-10-06T15:23:00.000+09:00</published><updated>2010-10-06T15:23:55.246+09:00</updated><title type='text'>QualcommがAndroid用AR SDK公開</title><content type='html'>QualcommがAndroid用のAR　SDKを公開しています。&lt;br /&gt;https://ar.qualcomm.com/qdevnet/sdk&lt;br /&gt;時間があればいじってみよう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8089427841376467780?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8089427841376467780/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8089427841376467780' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8089427841376467780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8089427841376467780'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/10/qualcommandroidar-sdk.html' title='QualcommがAndroid用AR SDK公開'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-61350867786489887</id><published>2010-09-09T14:55:00.000+09:00</published><updated>2010-09-09T14:55:27.454+09:00</updated><title type='text'>ちょっと便利なメディアコンバータ</title><content type='html'>&amp;nbsp;http://media-convert.com/ja/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-61350867786489887?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/61350867786489887/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=61350867786489887' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/61350867786489887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/61350867786489887'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/09/blog-post.html' title='ちょっと便利なメディアコンバータ'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-2304244374960166711</id><published>2010-08-17T23:36:00.000+09:00</published><updated>2010-08-17T23:36:32.178+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>Google Developer Day 2010</title><content type='html'>申し込みまだ間に合います！（但し、参加するためには試験をパスしないといけませんが。。。）&lt;br /&gt;腕に覚えがあれば是非挑戦してみてください。&lt;br /&gt;&lt;br /&gt;と書きつつ、自分は問題解く時間が作れず困ってますが（笑）&lt;br /&gt;興味のある人は挑戦してみてください。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.co.jp/events/developerday/2010/tokyo/"&gt;Google Developer Day2010&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-2304244374960166711?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/2304244374960166711/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=2304244374960166711' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2304244374960166711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2304244374960166711'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/08/google-developer-day-2010.html' title='Google Developer Day 2010'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5361753780807645380</id><published>2010-07-20T22:03:00.001+09:00</published><updated>2010-07-20T22:04:32.707+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='お勧め本'/><title type='text'>本の紹介</title><content type='html'>お久しぶりです。&lt;br /&gt;&lt;br /&gt;今日は本の紹介をします。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.co.jp/Web%E9%96%8B%E7%99%BA%E8%80%85%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE-%E5%A4%A7%E8%A6%8F%E6%A8%A1%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E6%8A%80%E8%A1%93%E5%85%A5%E9%96%80-%E2%80%95%E3%83%87%E3%83%BC%E3%82%BF%E6%A7%8B%E9%80%A0%E3%80%81%E3%83%A1%E3%83%A2%E3%83%AA%E3%80%81OS%E3%80%81DB%E3%80%81%E3%82%B5%E3%83%BC%E3%83%90-PRESS-plus%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/4774143073"&gt;大規模サービス技術入門&lt;/a&gt;という本を最近読みました。&lt;br /&gt;この本は、はてなのインターンシップで学生向けに行っている講義＋演習を本にしたものです。学生向けというだけあって、システムの設計・運用上の概要（の例）がわかりやすく説明されています。&lt;br /&gt;決して深い所まで議論している本ではありませんが、サーバ設計の考え方からAPの実装まで説明されていて、「システム」について学ぶ上で良い本だと思います。&lt;br /&gt;&lt;font size="-1"&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;システムの中で、APサーバやDBサーバを多重化・冗長化することではどういった効果が見込めるのか？&lt;br /&gt;システムの負荷を分析して、サーバのスケールアップ/スケールアウトを考える上でのポイントは？どんな時にメモリ増設が有効で、どんな時にサーバ多重化が有効か？&lt;br /&gt;何億ものドキュメントから全文検索をする際の実装上のポイントは？(どういったポリシーで実装すればユーザ満足度につながるか？)そのためのアルゴリズムは？&lt;br /&gt;などなど。&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;講義で学んだ知識が、システム開発・運用の現場でどう役に立つのか（自分の知識が実際のシステムの中のどの部分と結びつくのか）を知るための良い読み物だと思います。&lt;br /&gt;&lt;br /&gt;以下もくじ。&lt;br /&gt;&lt;hr&gt;&lt;ul&gt;&lt;li&gt;第1回　大規模Webサービスの開発オリエンテーション―全体像を把握する&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 0　本書の源 ―本書で説明すること，しないこと&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 1　大規模なサービスと小規模なサービス&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 2　成長し続けるサービスと，大規模化の壁&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 3　サービス開発の現場&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第2回　大規模データ処理入門 ―メモリとディスク，Webアプリケーションと負荷&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 4　はてなブックマークのデータ規模 ―データが大きいと処理に時間がかかる&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 5 大規模データ処理の難所 ―メモリとディスク&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 6　スケーリングの要所&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 7　大規模データを扱うための基礎知識&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第3回　OSのキャッシュと分散 ―大きなデータを効率良く扱うしくみ&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 8　OSのキャッシュ機構&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 9　I/O負荷の軽減策&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 10　局所性を活かす分散&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第4回　DBのスケールアウト戦略 ―分散を考慮したMySQLの運用&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 11　インデックスを正しく運用する ―分散を考慮したMySQL運用の大前提&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 12　MySQLの分散 ―スケーリング前提のシステム設計&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 13　MySQLのスケールアウトとパーティショニング&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第5回　大規模データ処理［実践］入門 ―アプリケーション開発の勘所&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 14　用途特化型インデクシング ―大規模データを捌く&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 15　理論と実践の両側から取り組む&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第6回　［課題］圧縮プログラミング ―データサイズ，I/O高速化との関係を意識する&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 16　［課題］整数データをコンパクトに持つ&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 17　VB Codeと速度感覚&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 18　課題の詳細と回答例&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第7回　アルゴリズムの実用化 ―身近な例で見る理論・研究の実践投入&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 19　アルゴリズムと評価&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 20　はてなダイアリーのキーワードリンク&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 21　はてなブックマークの記事カテゴライズ&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第8回　［課題］はてなキーワードリンクの実装 ―応用への道筋を知る&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 22　［課題］はてなキーワードリンクを作る&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 23　回答例と考え方&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第9回　全文検索技術に挑戦 ―大規模データ処理のノウハウ満載&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 24　全文検索技術の応用範囲&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 25　検索システムのアーキテクチャ&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 26　検索エンジンの内部構造&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第10回　［課題］全文検索エンジンの作成 ―基本部分，作り込み，速度と精度の追求&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 27　［課題］はてなブックマーク全文検索を作る&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 28　回答例と考え方&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第11回　大規模データ処理を支えるサーバ/インフラ入門 ―Webサービスのバックエンド&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 29　エンタープライズ vs. Webサービス&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 30　クラウドvs.自前インフラ&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第12回　スケーラビリティの確保に必要な考え方 ―規模の増大とシステムの拡張&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 31　レイヤとスケーラビリティ&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 32　負荷の把握，チューニング&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第13回　冗長性の確保，システムの安定化 ―ほぼ100％の稼動率を実現するしくみ&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 33　冗長性の確保&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 34　システムの安定化&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 35　システムの安定化対策&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第14回　効率向上作戦 ―ハードウェアのリソースの使用率を上げる&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 36　仮想化技術&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 37　ハードウェアと効率向上 ―低コストを実現する要素技術&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;第15回　Webサービスとネットワーク ―ネットワークで見えてくるサービスの成長&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Lesson 38　ネットワークの分岐点&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lesson 39　さらなる上限へ&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;特別編　いまどきのWebサービス構築に求められる実践技術 ―大規模サービスに対応するために&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Special Lesson 1　ジョブキューシステム ―TheSchwartz､ Gearman&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Special Lesson 2　ストレージの選択 ―RDBMSかkey-valueストアか&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Special Lesson 3　キャッシュシステム ―Squid，Varnish&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Special Lesson 4　計算クラスタ ―Hadoop&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;hr&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5361753780807645380?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5361753780807645380/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5361753780807645380' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5361753780807645380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5361753780807645380'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/07/blog-post.html' title='本の紹介'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-6789333756923431717</id><published>2010-07-20T19:28:00.001+09:00</published><updated>2011-02-14T14:35:12.493+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Nexus One販売終了</title><content type='html'>Nexus Oneが手に入らなくなるっぽい。 &lt;br /&gt;&lt;a href="http://japan.cnet.com/news/service/story/0,3800104747,20417034,00.htm"&gt;http://japan.cnet.com/news/service/story/0,3800104747,20417034,00.htm&lt;/a&gt;&lt;br /&gt;もう2台ほど買っておこうかな。&lt;br /&gt;&lt;br /&gt;SunSPOTとか面白いものはどんどん手に入らなくなってきてしまう。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-6789333756923431717?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/6789333756923431717/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=6789333756923431717' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6789333756923431717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6789333756923431717'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/07/nexous-one.html' title='Nexus One販売終了'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5784334041834333545</id><published>2010-07-14T08:24:00.000+09:00</published><updated>2010-07-14T08:24:54.522+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>App Inventor for Android</title><content type='html'>&lt;a href="http://appinventor.googlelabs.com/about/"&gt;App Inventor for Android&lt;/a&gt;なんてものが、どんどん出てきたら、もうコーディングなんてする必要ないかな。&lt;br /&gt;確かに簡単なものだったらできそう。&lt;br /&gt;XMLで書けるauのケータイカスタムキットなんてものあったけど、まったく流行ってなさそうだし、やっぱコーディングできないとね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5784334041834333545?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5784334041834333545/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5784334041834333545' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5784334041834333545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5784334041834333545'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/07/app-inventor-for-android.html' title='App Inventor for Android'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-1719374456574660982</id><published>2010-06-18T14:54:00.001+09:00</published><updated>2011-10-19T18:16:04.710+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>忘れがちなC++での関数ポインタ</title><content type='html'>クラス内部で状態によって呼ぶ出す関数を変えるときには関数ポインタを使うと便利ですが、C++では書き方が若干面倒なので、その記録。&lt;br /&gt;&lt;pre class="prettyprint lang_c++"&gt;#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;&lt;br /&gt;class FPSample {&lt;br /&gt;public:&lt;br /&gt;&lt;br /&gt;    void function_switch(int sw) {&lt;br /&gt;        switch (sw) {&lt;br /&gt;            case 1: m_pFunctionSample = &amp;amp;FPSample::function1;&lt;br /&gt;                break;&lt;br /&gt;            case 2: m_pFunctionSample = &amp;amp;FPSample::function2;&lt;br /&gt;                break;&lt;br /&gt;            default:&lt;br /&gt;                std::cout &amp;lt;&amp;lt; "default" &amp;lt;&amp;lt; std::endl;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    bool function(int x) {&lt;br /&gt;        return (this-&amp;gt;*m_pFunctionSample)(x);&lt;br /&gt;        // return (*mFunctionSample)(x); // Error&lt;br /&gt;    }&lt;br /&gt;private:&lt;br /&gt;    typedef bool (FPSample::*FUNCTION_SAMPLE)(int);&lt;br /&gt;    FUNCTION_SAMPLE m_pFunctionSample;&lt;br /&gt;&lt;br /&gt;    bool function1(int x) {&lt;br /&gt;        std::cout &amp;lt;&amp;lt; "function1 : " &amp;lt;&amp;lt; x &amp;lt;&amp;lt; std::endl;&lt;br /&gt;        return true;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    bool function2(int x) {&lt;br /&gt;        std::cout &amp;lt;&amp;lt; "function2 : " &amp;lt;&amp;lt; x &amp;lt;&amp;lt; std::endl;&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;int main(int argc, char** argv) {&lt;br /&gt;    FPSample mFPSample;&lt;br /&gt;    int sw;&lt;br /&gt;    int x;&lt;br /&gt;&lt;br /&gt;    x = 10;&lt;br /&gt;    &lt;br /&gt;    sw = 1;&lt;br /&gt;    mFPSample.function_switch(sw);&lt;br /&gt;    mFPSample.function(x);&lt;br /&gt;&lt;br /&gt;    sw = 2;&lt;br /&gt;    mFPSample.function_switch(sw);&lt;br /&gt;    mFPSample.function(x);&lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-1719374456574660982?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/1719374456574660982/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=1719374456574660982' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1719374456574660982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1719374456574660982'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/06/c.html' title='忘れがちなC++での関数ポインタ'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-249575506723545807</id><published>2010-06-14T08:39:00.010+09:00</published><updated>2010-12-03T16:56:48.250+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>たまには使えるアプリ</title><content type='html'>Wifiの受信レベルを測定し、それをグラフにするアプリです。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_f7edJsUPosA/TBVs2mvAj6I/AAAAAAAAAWY/NdtWptFLxeY/s1600/device.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5482407806759899042" src="http://2.bp.blogspot.com/_f7edJsUPosA/TBVs2mvAj6I/AAAAAAAAAWY/NdtWptFLxeY/s320/device.png" style="float: left; height: 320px; margin: 0pt 10px 10px 0pt; width: 192px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;package jp.ac.uu.is.degas.android.wifi;&lt;br /&gt;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.List;&lt;br /&gt;import java.util.Map;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.content.BroadcastReceiver;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.content.Intent;&lt;br /&gt;import android.content.IntentFilter;&lt;br /&gt;import android.graphics.Canvas;&lt;br /&gt;import android.graphics.Color;&lt;br /&gt;import android.graphics.Paint;&lt;br /&gt;import android.graphics.Paint.FontMetrics;&lt;br /&gt;import android.net.wifi.ScanResult;&lt;br /&gt;import android.net.wifi.WifiManager;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.Menu;&lt;br /&gt;import android.view.MenuItem;&lt;br /&gt;import android.view.SurfaceHolder;&lt;br /&gt;import android.view.SurfaceView;&lt;br /&gt;&lt;br /&gt;public class WifiViewActicvity extends Activity {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final int MENU_START = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final int MENU_PAUSE = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final int MENU_QUIT = 2;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private MySurfaceView mySurfaceView;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private WifiManager mWifiManager;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private boolean run;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final float MIN_LEVEL = -120;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final float MAX_LEVEL = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final int TIME_BUFFDER_SIZE = 50;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private HashMap&lt;string, accesspoint=""&gt; apMap;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private long cnt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private int[] lineColor = { Color.BLUE, Color.CYAN, Color.GREEN,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Color.MAGENTA, Color.RED, Color.YELLOW, Color.WHITE };&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private int indexOfColor;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/** Called when the activity is first created. */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;super.onCreate(savedInstanceState);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mySurfaceView = new MySurfaceView(getApplication(), 0,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;TIME_BUFFDER_SIZE, MIN_LEVEL, MAX_LEVEL, TIME_BUFFDER_SIZE,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(int) ((MAX_LEVEL - MIN_LEVEL) / 10));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;setContentView(mySurfaceView);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;apMap = new HashMap&lt;string, accesspoint=""&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;run = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cnt = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;indexOfColor = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private void startScan() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;run = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;registerReceiver(mBroadcastReceiver, new IntentFilter(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mWifiManager.startScan();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private void pauseScan() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;run = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void onReceive(Context context, Intent intent) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;List&lt;scanresult&gt; scanResults = mWifiManager.getScanResults();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (ScanResult result : scanResults) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String bssid = result.BSSID;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int level = result.level;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AccessPoint ap = apMap.get(bssid);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (ap == null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ap = new AccessPoint(TIME_BUFFDER_SIZE + 1);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ap.setColor(lineColor[indexOfColor]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;indexOfColor++;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;indexOfColor %= lineColor.length;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ap.setLevel(cnt, Float.valueOf(level));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ap.setUpdate(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;apMap.put(bssid, ap);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (Map.Entry&lt;string, accesspoint=""&gt; e : apMap.entrySet()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AccessPoint ap = e.getValue();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (!ap.isUpdate()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ap.setLevel(cnt, null);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;ap.setUpdate(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;apMap.put(e.getKey(), ap);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (run) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mySurfaceView.setData(cnt, apMap);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;cnt++;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;startScan();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;};&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;menu.add(0, MENU_START, 0, "START").setIcon(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;android.R.drawable.ic_media_play);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;menu.add(0, MENU_PAUSE, 0, "PAUSE").setIcon(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;android.R.drawable.ic_media_pause);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;menu.add(0, MENU_QUIT, 0, "QUIT").setIcon(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;android.R.drawable.ic_menu_close_clear_cancel);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return super.onCreateOptionsMenu(menu);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch (item.getItemId()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case MENU_START:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;startScan();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case MENU_PAUSE:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pauseScan();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case MENU_QUIT:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;finish();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return super.onContextItemSelected(item);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class AccessPoint {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Float[] data;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private boolean update;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private int color;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;AccessPoint(int size) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data = new Float[size];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void setLevel(long cnt, Float level) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data[(int) (cnt % data.length)] = level;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void setUpdate(boolean update) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.update = update;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;boolean isUpdate() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return update;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void setColor(int color) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.color = color;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;int getColor() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return color;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Float[] getData() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return data;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Runnable {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private SurfaceHolder mSurfaceHolder;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Thread thread;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Canvas canvas;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private MyGraph myGraph;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private float minX, maxX, minY, maxY;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private int numDivX, numDivY;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private long cnt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private HashMap&lt;string, accesspoint=""&gt; apMap = new HashMap&lt;string, accesspoint=""&gt;();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;MySurfaceView(Context context, float minX, float maxX, float minY,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float maxY, int numDivX, int numDivY) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;super(context);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mSurfaceHolder = getHolder();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mSurfaceHolder.addCallback(this);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;myGraph = new MyGraph();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.minX = minX;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.maxX = maxX;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.minY = minY;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.maxY = maxY;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.numDivX = numDivX;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.numDivY = numDivY;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void surfaceChanged(SurfaceHolder holder, int format, int width,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int height) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void surfaceCreated(SurfaceHolder holder) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;thread = new Thread(this);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;thread.start();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void surfaceDestroyed(SurfaceHolder holder) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;thread = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public void run() {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;while (thread != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;canvas = mSurfaceHolder.lockCanvas();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;myGraph.drawRule(canvas);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String[] bssidName = new String[apMap.size()];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int[] bssidColor = new int[apMap.size()];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int num = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (Map.Entry&lt;string, accesspoint=""&gt; e : apMap.entrySet()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;AccessPoint ap = e.getValue();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Float[] originalData = ap.getData();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int size = originalData.length;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Float[] data = new Float[2 * size];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; size; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data[2 * i] = Float.valueOf(i);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data[2 * i + 1] = (cnt &amp;lt; size) ? originalData[i]&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;: originalData[(int) ((i + cnt + 1) % size)];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;myGraph.drawLines(canvas, data, ap.getColor());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bssidName[num] = e.getKey();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bssidColor[num] = ap.getColor();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;num++;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (apMap.size() &amp;gt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;myGraph.drawLegend(canvas, bssidName, bssidColor);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mSurfaceHolder.unlockCanvasAndPost(canvas);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Thread.sleep(500);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;} catch (InterruptedException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@Override&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;protected void onSizeChanged(int width, int heigh, int old_w, int old_h) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;int size = (width &amp;lt; heigh) ? width : heigh;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;myGraph.setDarwArea(size, size, minX, maxX, minY, maxY, numDivX,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;numDivY, false, true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void setData(long cnt, HashMap&lt;string, accesspoint=""&gt; apMap) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.cnt = cnt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.apMap = apMap;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class MyGraph {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final float TOP_MARGIN_RATIO = 0.05f; // 描画エリアサイズに対する上マージンの比&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final float BOTTOM_MARGIN_RATIO = 0.05f; // 描画エリアサイズに対する下マージンの比&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final float LEFT_MARGIN_RATIO = 0.05f; // 描画エリアサイズに対する左マージンの比&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private static final float RIGHT_MARGIN_RATIO = 0.05f; // 描画エリアサイズに対する右マージンの比&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private boolean labelFlagX; // X軸ラベル表示フラグ&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private boolean labelFlagY; // Y軸ラベル表示フラグ&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Paint paintLabel = new Paint();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private float bodyW; // ラベルを含むグラフエリア&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private float bodyH; // ラベルを含むグラフエリア&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private float graphW; // ラベルを含まないグラフエリア&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private float graphH; // ラベルを含まないグラフエリア&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private float graphOriginX; // ラベルを含まないグラフエリアの原点&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private float graphOriginY; // ラベルを含まないグラフエリアの原点&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private float minX, maxX, minY, maxY;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private int numDivX, numDivY;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private float legendOriginX; // 凡例原点&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private float legendOriginY; // 凡例原点&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;private Paint legendLabel = new Paint();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void setDarwArea(float drawW, float drawH, float xMin, float xMax,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float yMin, float yMax, int xDivNum, int yDivNum,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;boolean labelXFlag, boolean labelYFlag) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.minX = xMin;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.maxX = xMax;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.minY = yMin;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.maxY = yMax;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.numDivX = xDivNum;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.numDivY = yDivNum;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.labelFlagX = labelXFlag;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;this.labelFlagY = labelYFlag;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// ラベルを含むグラフエリア&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bodyW = (1 - LEFT_MARGIN_RATIO - RIGHT_MARGIN_RATIO) * drawW;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;bodyH = (1 - TOP_MARGIN_RATIO - BOTTOM_MARGIN_RATIO) * drawH;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// ラベルを含まないグラフエリア&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;FontMetrics fontMetrics = paintLabel.getFontMetrics();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;graphH = bodyH;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (labelXFlag) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;graphH += (fontMetrics.top + fontMetrics.bottom);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;graphW = bodyW;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (labelYFlag) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float maxTextWidth = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; yDivNum + 1; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String text = String&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;.valueOf(yMin + i * (yMax - yMin) / yDivNum);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float baseX = paintLabel.measureText(text); // テキスト幅&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;maxTextWidth = (baseX &amp;gt; maxTextWidth) ? baseX : maxTextWidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;graphW -= maxTextWidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// ラベルを含まないグラフエリアの原点&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;graphOriginX = LEFT_MARGIN_RATIO * drawW + (bodyW - graphW);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;graphOriginY = TOP_MARGIN_RATIO * drawH;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 凡例原点&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;legendOriginX = graphOriginX + 0.05f * graphW;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;legendOriginY = graphOriginY + 0.05f * graphH;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;/* グラフの罫線、軸描画 */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void drawRule(Canvas canvas) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 背景色&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;canvas.drawColor(Color.WHITE);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 罫線&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Paint paintRule = new Paint();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paintRule.setStyle(Paint.Style.FILL);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paintRule.setColor(Color.BLACK);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numDivX + 1; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;canvas.drawLine(graphOriginX + i * (graphW / numDivX),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;graphOriginY, graphOriginX + i * (graphW / numDivX),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;graphOriginY + graphH, paintRule);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numDivY + 1; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;canvas.drawLine(graphOriginX,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;graphOriginY + i * (graphH / numDivY), graphOriginX&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;+ graphW, graphOriginY + i * (graphH / numDivY),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paintRule);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 軸ラベル&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paintLabel.setColor(Color.GRAY);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;FontMetrics fontMetrics = paintLabel.getFontMetrics();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (labelFlagX) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numDivX + 1; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String text = String&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;.valueOf(minX + i * (maxX - minX) / numDivX);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float baseX = paintRule.measureText(text) / 2; // テキスト幅の半分&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float baseY = -fontMetrics.top; // baselineからtopまでの高さ&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;canvas.drawText(text, graphOriginX + i * (graphW / numDivX)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;- baseX, graphOriginY + graphH + baseY, paintLabel);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (labelFlagY) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; numDivY + 1; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;String text = String&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;.valueOf(minY + i * (maxY - minY) / numDivY);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float baseX = paintLabel.measureText(text); // テキスト幅&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float baseY = -fontMetrics.top / 2; // baselineからtopまでの高さの半分&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;canvas.drawText(text, graphOriginX - baseX, graphOriginY&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;+ graphH - i * (graphH / numDivY) + baseY, paintLabel);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void drawLines(Canvas canvas, Float[] data, int color) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 境界チェック&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; data.length / 2; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (data[2 * i] != null &amp;amp;&amp;amp; data[2 * i + 1] != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data[2 * i] = (data[2 * i] &amp;lt; minX) ? minX : data[2 * i];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data[2 * i] = (data[2 * i] &amp;gt; maxX) ? maxX : data[2 * i];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data[2 * i + 1] = (data[2 * i + 1] &amp;lt; minY) ? minY&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;: data[2 * i + 1];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;data[2 * i + 1] = (data[2 * i + 1] &amp;gt; maxY) ? maxY&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;: data[2 * i + 1];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float[] pts = new float[4 * (data.length / 2 - 1)];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 描画座標へ変換&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float pxlParUnitX = graphW / (maxX - minX); // X軸の単位辺りの画素値数&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float pxlParUnitY = graphH / (maxY - minY); // Y軸の単位辺りの画素値数&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; data.length / 2 - 1; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if (data[2 * i] != null &amp;amp;&amp;amp; data[2 * i + 1] != null&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;amp;&amp;amp; data[2 * i + 2] != null &amp;amp;&amp;amp; data[2 * i + 3] != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float x1 = data[2 * i];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float y1 = data[2 * i + 1];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float x2 = data[2 * i + 2];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float y2 = data[2 * i + 3];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pts[4 * i] = (x1 - minX) * pxlParUnitX + graphOriginX;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pts[4 * i + 1] = graphH - (y1 - minY) * pxlParUnitY&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;+ graphOriginY;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pts[4 * i + 2] = (x2 - minX) * pxlParUnitX + graphOriginX;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;pts[4 * i + 3] = graphH - (y2 - minY) * pxlParUnitY&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;+ graphOriginY;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Paint paint = new Paint();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paint.setColor(color); // 線の色&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paint.setStrokeWidth(2); // 線の太さ&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;canvas.drawLines(pts, paint);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;void drawLegend(Canvas canvas, String[] name, int[] color) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Paint paint = new Paint();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float lineLength = 0.05f * graphW;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;FontMetrics fontMetrics = legendLabel.getFontMetrics();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float width;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float textW = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; name.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;width = legendLabel.measureText(name[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;textW = (width &amp;gt; textW) ? width : textW;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float textH = -fontMetrics.top + fontMetrics.bottom;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float legendH = name.length * textH + fontMetrics.bottom;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float legendW = textW + lineLength;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paint.setColor(Color.WHITE);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paint.setStyle(Paint.Style.FILL);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;canvas.drawRect(legendOriginX, legendOriginY, legendOriginX + legendW,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;legendOriginY + legendH, paint);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paint.setColor(Color.BLACK);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paint.setStyle(Paint.Style.STROKE);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;canvas.drawRect(legendOriginX, legendOriginY, legendOriginX + legendW,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;legendOriginY + legendH, paint);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;float x, y;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;x = legendOriginX;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;y = legendOriginY + textH;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; name.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paint.setColor(color[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paint.setStrokeWidth(2);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;canvas.drawLine(x, y + fontMetrics.top / 2, x + lineLength, y&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;+ fontMetrics.top / 2, paint);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;paint.setColor(Color.BLACK);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;canvas.drawText(name[i], x + lineLength, y, legendLabel);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;y += textH;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;/scanresult&gt;&lt;/string,&gt;&lt;/string,&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-249575506723545807?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/249575506723545807/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=249575506723545807' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/249575506723545807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/249575506723545807'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/06/blog-post.html' title='たまには使えるアプリ'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f7edJsUPosA/TBVs2mvAj6I/AAAAAAAAAWY/NdtWptFLxeY/s72-c/device.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-3790466151682243507</id><published>2010-06-13T22:10:00.005+09:00</published><updated>2010-06-13T22:36:58.529+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Androidで画面の縦横が切り替わった時にActivityが再起動されない方法</title><content type='html'>AndroidのActivityのlifecycleは&lt;br /&gt;&lt;a href="http://developer.android.com/guide/topics/fundamentals.html"&gt;http://developer.android.com/guide/topics/fundamentals.html&lt;/a&gt;&lt;br /&gt;の説明にあるようにonCreateから始まってonDestroyで終わります。&lt;br /&gt;Activityが起動すると、&lt;br /&gt;onCreate -&gt; onStart -&gt; onResume&lt;br /&gt;の順序で、Activityが動作します。&lt;br /&gt;終了時には、&lt;br /&gt;onPause -&gt; onStop -&gt; onDestroy&lt;br /&gt;の順序でActivityが終わります。&lt;br /&gt;途中、割り込みなどで、推移します。&lt;br /&gt;&lt;br /&gt;画面の縦横が切り替わった時には&lt;br /&gt;onCreate -&gt; onStart -&gt; onResume -&gt; onPause -&gt; onStop -&gt; onDestroy -&gt; onCreate -&gt; onStart -&gt; onResume&lt;br /&gt;の順序で呼ばれます。&lt;br /&gt;これは、画面の縦横変化によって、画面を再構成する必要があるからです。&lt;br /&gt;&lt;br /&gt;だけど、Activityによっては、これでは困る場合があります。&lt;br /&gt;そんなときは、AndroidManifest.xmlの対応するActivityに&lt;br /&gt;android:configChanges="orientation"&lt;br /&gt;を加えましょう。&lt;br /&gt;すると、画面の縦横が切り替わってもonPause以降は呼ばれません。&lt;br /&gt;その代わりにonConfigurationChangedが呼ばれます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-3790466151682243507?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/3790466151682243507/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=3790466151682243507' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3790466151682243507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3790466151682243507'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/06/androidactivity.html' title='Androidで画面の縦横が切り替わった時にActivityが再起動されない方法'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5792165896251761590</id><published>2010-06-09T11:25:00.006+09:00</published><updated>2010-06-13T22:34:55.734+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>AndroidでBluetooth～Discoveryまで～</title><content type='html'>&lt;pre class="prettyprint lang_java"&gt;&lt;br /&gt;package jp.ac.hoge.android.bluetooth;&lt;br /&gt;&lt;br /&gt;import java.util.Set;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.bluetooth.BluetoothAdapter;&lt;br /&gt;import android.bluetooth.BluetoothDevice;&lt;br /&gt;import android.content.BroadcastReceiver;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.content.Intent;&lt;br /&gt;import android.content.IntentFilter;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;&lt;br /&gt;public class BluetoothTestActivity extends Activity {&lt;br /&gt;private static final int REQUEST_ENABLE_BT = 1;&lt;br /&gt;private static final int REQUEST_STATE_CHANGE_BT = 2;&lt;br /&gt;private TextView tv_result = null;&lt;br /&gt;private BluetoothAdapter mBluetoothAdapter = null;&lt;br /&gt;private BluetoothReceiver mBluetoothReceiver = null;&lt;br /&gt;&lt;br /&gt;/** Called when the activity is first created. */&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;super.onCreate(savedInstanceState);&lt;br /&gt;setContentView(R.layout.main);&lt;br /&gt;&lt;br /&gt;tv_result = (TextView) findViewById(R.id.tv_result);&lt;br /&gt;tv_result.setText("");&lt;br /&gt;&lt;br /&gt;checkBluetooth();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void checkBluetooth() {&lt;br /&gt;tv_result.append("Step 1:Bluetoothの利用可能状態\n");&lt;br /&gt;mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();&lt;br /&gt;if (mBluetoothAdapter == null) {&lt;br /&gt;tv_result.append("Bluetoothはサポートされてません\n");&lt;br /&gt;} else {&lt;br /&gt;tv_result.append("Bluetoothはサポートされています\n");&lt;br /&gt;if (mBluetoothAdapter.isEnabled()) {&lt;br /&gt; tv_result.append("Bluetoothは利用可能です\n");&lt;br /&gt; getLocalInformation();&lt;br /&gt;} else {&lt;br /&gt; Intent enableBTIntent = new Intent(&lt;br /&gt;   BluetoothAdapter.ACTION_REQUEST_ENABLE);&lt;br /&gt; startActivityForResult(enableBTIntent, REQUEST_ENABLE_BT);&lt;br /&gt; Intent stateChangedBTIntent = new Intent(&lt;br /&gt;   BluetoothAdapter.ACTION_STATE_CHANGED);&lt;br /&gt; startActivityForResult(stateChangedBTIntent,&lt;br /&gt;   REQUEST_STATE_CHANGE_BT);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;protected void onActivityResult(int requestCode, int resultCode, Intent data) {&lt;br /&gt;if (requestCode == REQUEST_ENABLE_BT) {&lt;br /&gt;if (resultCode == RESULT_OK) {&lt;br /&gt; tv_result.append("Bluetoothが利用可能になりました\n");&lt;br /&gt; getLocalInformation();&lt;br /&gt;} else if (resultCode == RESULT_CANCELED) {&lt;br /&gt; tv_result.append("Bluetoothは利用不可です\n");&lt;br /&gt;}&lt;br /&gt;} else if (requestCode == REQUEST_STATE_CHANGE_BT) {&lt;br /&gt;switch (resultCode) {&lt;br /&gt;case BluetoothAdapter.STATE_TURNING_ON:&lt;br /&gt; tv_result.append("STATE_TURNING_ON\n");&lt;br /&gt; break;&lt;br /&gt;case BluetoothAdapter.STATE_ON:&lt;br /&gt; tv_result.append("STATE_ON\n");&lt;br /&gt; break;&lt;br /&gt;case BluetoothAdapter.STATE_TURNING_OFF:&lt;br /&gt; tv_result.append("STATE_TURNING_OFF\n");&lt;br /&gt; break;&lt;br /&gt;case BluetoothAdapter.STATE_OFF:&lt;br /&gt; tv_result.append("STATE_OFF\n");&lt;br /&gt; break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void getLocalInformation() {&lt;br /&gt;tv_result.append("\nStep 2:自機Bluetoothの調査\n");&lt;br /&gt;&lt;br /&gt;tv_result.append(mBluetoothAdapter.getName() + ":"&lt;br /&gt; + mBluetoothAdapter.getAddress() + "\n");&lt;br /&gt;switch (mBluetoothAdapter.getScanMode()) {&lt;br /&gt;case BluetoothAdapter.SCAN_MODE_CONNECTABLE:&lt;br /&gt;tv_result.append("SCAN_MODE_CONNECTABLE:");&lt;br /&gt;break;&lt;br /&gt;case BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE:&lt;br /&gt;tv_result.append("SCAN_MODE_CONNECTABLE_DISCOVERABLE:");&lt;br /&gt;break;&lt;br /&gt;case BluetoothAdapter.SCAN_MODE_NONE:&lt;br /&gt;tv_result.append("SCAN_MODE_NONE:");&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;switch (mBluetoothAdapter.getState()) {&lt;br /&gt;case BluetoothAdapter.STATE_OFF:&lt;br /&gt;tv_result.append("STATE_OFF\n");&lt;br /&gt;break;&lt;br /&gt;case BluetoothAdapter.STATE_ON:&lt;br /&gt;tv_result.append("STATE_ON\n");&lt;br /&gt;break;&lt;br /&gt;case BluetoothAdapter.STATE_TURNING_OFF:&lt;br /&gt;tv_result.append("STATE_TURNING_OFF\n");&lt;br /&gt;break;&lt;br /&gt;case BluetoothAdapter.STATE_TURNING_ON:&lt;br /&gt;tv_result.append("STATE_TURNING_ON\n");&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;findPairedDevices();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void findPairedDevices() {&lt;br /&gt;tv_result.append("\nStep 3:登録済みのBluetoothの調査\n");&lt;br /&gt;&lt;br /&gt;Set&amp;lt;BluetoothDevice&amp;gt; pairedDevices = mBluetoothAdapter&lt;br /&gt; .getBondedDevices();&lt;br /&gt;if (pairedDevices.size() &gt; 0) {&lt;br /&gt;for (BluetoothDevice device : pairedDevices) {&lt;br /&gt; tv_result.append(device.getName() + ":" + device.getAddress()&lt;br /&gt;   + ":" + device.getBluetoothClass() + "\n");&lt;br /&gt;}&lt;br /&gt;} else {&lt;br /&gt;tv_result.append("登録されているBluetoothデバイスはありません\n");&lt;br /&gt;}&lt;br /&gt;discoverDevices();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void discoverDevices() {&lt;br /&gt;tv_result.append("\nStep 4:Bluetoothデバイスの探索\n");&lt;br /&gt;&lt;br /&gt;mBluetoothReceiver = new BluetoothReceiver();&lt;br /&gt;registerReceiver(mBluetoothReceiver, new IntentFilter(&lt;br /&gt; BluetoothDevice.ACTION_FOUND));&lt;br /&gt;mBluetoothAdapter.startDiscovery();&lt;br /&gt;tv_result.append("探索開始\n");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class BluetoothReceiver extends BroadcastReceiver {&lt;br /&gt;@Override&lt;br /&gt;public void onReceive(Context context, Intent intent) {&lt;br /&gt;tv_result.append("Bluetoothデバイスを発見\n");&lt;br /&gt;String action = intent.getAction();&lt;br /&gt;if (BluetoothDevice.ACTION_FOUND.equals(action)) {&lt;br /&gt; BluetoothDevice device = intent&lt;br /&gt;   .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);&lt;br /&gt; tv_result.append(device.getName() + ":" + device.getAddress()&lt;br /&gt;   + ":" + device.getBluetoothClass() + "\n");&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;AndroidManifest.xml&lt;br /&gt;&lt;pre class="prettyprint lang_xml"&gt;&amp;lt;uses-permission android:name="android.permission.BLUETOOTH"&amp;gt;&amp;lt;/uses-permission&amp;gt;&lt;br /&gt;&amp;lt;uses-permission android:name="android.permission.BLUETOOTH_ADMIN"&amp;gt;&amp;lt;/uses-permission&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;BLUETOOTH_ADMINはstartDiscovery()に必要です。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f7edJsUPosA/TA8JN3NcFdI/AAAAAAAAAWQ/4lZ5zQIgoiE/s1600/bluetooth.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 192px; height: 320px;" src="http://1.bp.blogspot.com/_f7edJsUPosA/TA8JN3NcFdI/AAAAAAAAAWQ/4lZ5zQIgoiE/s320/bluetooth.png" alt="" id="BLOGGER_PHOTO_ID_5480609405296448978" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5792165896251761590?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5792165896251761590/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5792165896251761590' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5792165896251761590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5792165896251761590'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/06/androidbluetoothdiscovery.html' title='AndroidでBluetooth～Discoveryまで～'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_f7edJsUPosA/TA8JN3NcFdI/AAAAAAAAAWQ/4lZ5zQIgoiE/s72-c/bluetooth.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-6600109590784356555</id><published>2010-06-07T16:50:00.005+09:00</published><updated>2011-02-14T14:35:34.619+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Nexus One搭載センサー　</title><content type='html'>&lt;ul&gt;&lt;li&gt;TYPE_ACCELEROMETER (加速度センサー)○&lt;br /&gt;&lt;/li&gt;&lt;li&gt;TYPE_GYROSCOPE (ジャイロセンサー)×&lt;br /&gt;&lt;/li&gt;&lt;li&gt;TYPE_LIGHT（光センサー）○&lt;/li&gt;&lt;li&gt;TYPE_MAGNETIC_FIELD（磁気センサー）○&lt;/li&gt;&lt;li&gt;TYPE_ORIENTATION（方位センサー）○&lt;/li&gt;&lt;li&gt;TYPE_PRESSURE（圧力センサー）×&lt;/li&gt;&lt;li&gt;TYPE_PROXIMITY（近接センサー）○&lt;/li&gt;&lt;li&gt;TYPE_TEMPERATURE（温度センサー）×&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-6600109590784356555?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/6600109590784356555/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=6600109590784356555' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6600109590784356555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6600109590784356555'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/06/nexous-one.html' title='Nexus One搭載センサー　'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8278289116518089477</id><published>2010-06-07T14:50:00.010+09:00</published><updated>2010-06-07T14:59:28.175+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>AndroidのHttpのPostでもはまる</title><content type='html'>AndroidからHttpでPostするときのアプリです。&lt;br /&gt;&lt;pre class="prettyprint lang_java"&gt;&lt;br /&gt;package jp.ac.hoge.android.httppost;&lt;br /&gt;&lt;br /&gt;import java.io.ByteArrayOutputStream;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import java.io.UnsupportedEncodingException;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import org.apache.http.HttpResponse;&lt;br /&gt;import org.apache.http.NameValuePair;&lt;br /&gt;import org.apache.http.client.HttpClient;&lt;br /&gt;import org.apache.http.client.entity.UrlEncodedFormEntity;&lt;br /&gt;import org.apache.http.client.methods.HttpPost;&lt;br /&gt;import org.apache.http.impl.client.DefaultHttpClient;&lt;br /&gt;import org.apache.http.message.BasicNameValuePair;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.view.View.OnClickListener;&lt;br /&gt;import android.widget.Button;&lt;br /&gt;import android.widget.EditText;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;&lt;br /&gt;public class HttpPostActivity extends Activity {&lt;br /&gt; private static final String URI = "http://hoge/http_post_test.php";&lt;br /&gt;&lt;br /&gt; /** Called when the activity is first created. */&lt;br /&gt; @Override&lt;br /&gt; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;  super.onCreate(savedInstanceState);&lt;br /&gt;  setContentView(R.layout.main);&lt;br /&gt;&lt;br /&gt;  Button btn_sbmit = (Button) findViewById(R.id.btn_sbmit);&lt;br /&gt;  btn_sbmit.setOnClickListener(new OnClickListener() {&lt;br /&gt;   public void onClick(View v) {&lt;br /&gt;    // TODO 自動生成されたメソッド・スタブ&lt;br /&gt;    EditText et_string = (EditText) findViewById(R.id.et_string);&lt;br /&gt;    String value = et_string.getText().toString();&lt;br /&gt;    HttpClient httpclient = new DefaultHttpClient();&lt;br /&gt;    HttpPost httppost = new HttpPost(URI);&lt;br /&gt;    List&amp;lt;NameValuePair&amp;gt; nameValuePair = new ArrayList&amp;lt;NameValuePair&amp;gt;(&lt;br /&gt;      1);&lt;br /&gt;    nameValuePair.add(new BasicNameValuePair("str", value));&lt;br /&gt;&lt;br /&gt;    try {&lt;br /&gt;     httppost.setEntity(new UrlEncodedFormEntity(nameValuePair));&lt;br /&gt;     HttpResponse response = httpclient.execute(httppost);&lt;br /&gt;     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();&lt;br /&gt;     response.getEntity().writeTo(byteArrayOutputStream);&lt;br /&gt;     TextView tv_result = (TextView) findViewById(R.id.tv_result);&lt;br /&gt;     tv_result.setText(byteArrayOutputStream.toString());&lt;br /&gt;&lt;br /&gt;    } catch (UnsupportedEncodingException e) {&lt;br /&gt;     // TODO 自動生成された catch ブロック&lt;br /&gt;     e.printStackTrace();&lt;br /&gt;    } catch (IOException e) {&lt;br /&gt;     // TODO 自動生成された catch ブロック&lt;br /&gt;     e.printStackTrace();&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  });&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;httpclient.execute(httppost)でこけますが、LogにINTERNETのpermissionがないよと言われるので、AndroidManifest.xmlに&lt;br /&gt;&lt;pre class="prettyprint lang_java"&gt;&lt;br /&gt;&amp;lt;uses-permission android:name="android.permission.INTERNET"&amp;gt;&amp;lt;/uses-permission&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;を付け加えます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f7edJsUPosA/TAyKRX8bYSI/AAAAAAAAAWI/WNwUx5ef7BY/s1600/httppost.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 192px; height: 320px;" src="http://3.bp.blogspot.com/_f7edJsUPosA/TAyKRX8bYSI/AAAAAAAAAWI/WNwUx5ef7BY/s320/httppost.png" alt="" id="BLOGGER_PHOTO_ID_5479906877692928290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;サーバアプリはPOSTで投げた文字列をただ２回出力するだけです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8278289116518089477?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8278289116518089477/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8278289116518089477' title='3 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8278289116518089477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8278289116518089477'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/06/androidhttppost.html' title='AndroidのHttpのPostでもはまる'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_f7edJsUPosA/TAyKRX8bYSI/AAAAAAAAAWI/WNwUx5ef7BY/s72-c/httppost.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-7103605512403785465</id><published>2010-06-06T15:57:00.037+09:00</published><updated>2010-06-06T16:35:07.467+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>AndroidのWifiのscanStartではまる</title><content type='html'>AndroidでWifiをScanするプログラムです。&lt;br /&gt;&lt;pre class="prettyprint lang_java"&gt;&lt;br /&gt;package jp.ac.hoge.android.wifi;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import android.app.Activity;&lt;br /&gt;import android.content.BroadcastReceiver;&lt;br /&gt;import android.content.Context;&lt;br /&gt;import android.content.Intent;&lt;br /&gt;import android.content.IntentFilter;&lt;br /&gt;import android.net.wifi.ScanResult;&lt;br /&gt;import android.net.wifi.WifiManager;&lt;br /&gt;import android.os.Bundle;&lt;br /&gt;import android.view.View;&lt;br /&gt;import android.view.View.OnClickListener;&lt;br /&gt;import android.widget.Button;&lt;br /&gt;import android.widget.TextView;&lt;br /&gt;&lt;br /&gt;public class WifiActivity extends Activity implements OnClickListener {&lt;br /&gt; private TextView tv_search_result;&lt;br /&gt; private WifiManager wifi_mng;&lt;br /&gt; private WifiReceiver wifi_rec;&lt;br /&gt;&lt;br /&gt; /** Called when the activity is first created. */&lt;br /&gt; @Override&lt;br /&gt; public void onCreate(Bundle savedInstanceState) {&lt;br /&gt;  super.onCreate(savedInstanceState);&lt;br /&gt;  setContentView(R.layout.main);&lt;br /&gt;  Button btn_start_search = (Button) findViewById(R.id.btn_start_search);&lt;br /&gt;  btn_start_search.setOnClickListener(this);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void onClick(View v) {&lt;br /&gt;  // TODO 自動生成されたメソッド・スタブ&lt;br /&gt;  if (v.getId() == R.id.btn_start_search) {&lt;br /&gt;   tv_search_result = (TextView) findViewById(R.id.tv_search_result);&lt;br /&gt;   wifi_mng = (WifiManager) getSystemService(Context.WIFI_SERVICE);&lt;br /&gt;   wifi_rec = new WifiReceiver();&lt;br /&gt;   registerReceiver(wifi_rec, new IntentFilter(&lt;br /&gt;     WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));&lt;br /&gt;   wifi_mng.startScan();&lt;br /&gt;   tv_search_result.setText("スキャン開始\n");&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; class WifiReceiver extends BroadcastReceiver {&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public void onReceive(Context context, Intent intent) {&lt;br /&gt;   // TODO 自動生成されたメソッド・スタブ&lt;br /&gt;   StringBuffer sb = new StringBuffer();&lt;br /&gt;   List&amp;lt;ScanResult&amp;gt; result_list = wifi_mng.getScanResults();&lt;br /&gt;   for (int i = 0; i &lt; result_list.size(); i++) {&lt;br /&gt;    sb.append(new Integer(i + 1).toString() + ".");&lt;br /&gt;    sb.append((result_list.get(i)).toString());&lt;br /&gt;    sb.append("\n");&lt;br /&gt;   }&lt;br /&gt;   tv_search_result.setText(sb);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;このままだとstartScanで落ちてしまいます（もちろんエミュレータでは動かないのので実機Nexous Oneで）。&lt;br /&gt;なので、AndroidManifext.xmlに&lt;br /&gt;&lt;pre class="prettyprint lang_xml"&gt;&lt;br /&gt;&amp;lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE"&amp;gt;&amp;lt;/uses-permission&amp;gt;&lt;br /&gt;&amp;lt;uses-permission android:name="android.permission.CHANGE_WIFI_STATE"&amp;gt;&amp;lt;/uses-permission&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;の権限を追加します(BREWみたい)。Bluetoothも同じような権限があるみたいだけどまだ未調査。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f7edJsUPosA/TAtLd54ECkI/AAAAAAAAAWA/cPvVgsTcP5I/s1600/wifi_result.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 192px; height: 320px;" src="http://1.bp.blogspot.com/_f7edJsUPosA/TAtLd54ECkI/AAAAAAAAAWA/cPvVgsTcP5I/s320/wifi_result.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5479556348750596674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;研究室のデスク周りで6つAPが見つかりました。&lt;br /&gt;SSIDにはアクセスポイント名、BSSIDにはMACアドレス、capabilitiesには暗号化などの方式が表示されます。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.metageek.net/products/inssider"&gt;inSSIDer&lt;/a&gt;みたいなのもすぐできそう。すでにあるかも。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-7103605512403785465?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/7103605512403785465/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=7103605512403785465' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7103605512403785465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7103605512403785465'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/06/androidwifi.html' title='AndroidのWifiのscanStartではまる'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_f7edJsUPosA/TAtLd54ECkI/AAAAAAAAAWA/cPvVgsTcP5I/s72-c/wifi_result.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-1616822797399973083</id><published>2010-05-21T16:40:00.002+09:00</published><updated>2010-06-13T22:36:00.095+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 2.2</title><content type='html'>Android 2.2が出ております。&lt;br /&gt;http://developer.android.com/index.html&lt;br /&gt;噂によると相当速くなっているらしい。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-1616822797399973083?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/1616822797399973083/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=1616822797399973083' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1616822797399973083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1616822797399973083'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/05/android-22.html' title='Android 2.2'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-4903899629537967578</id><published>2010-05-20T21:27:00.002+09:00</published><updated>2010-05-20T21:34:05.139+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>android端末の画面キャプチャー</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_f7edJsUPosA/S_UsJ-gzWRI/AAAAAAAAAVo/XOVQNDHO5Fk/s1600/device.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 192px; height: 320px;" src="http://2.bp.blogspot.com/_f7edJsUPosA/S_UsJ-gzWRI/AAAAAAAAAVo/XOVQNDHO5Fk/s320/device.png" alt="" id="BLOGGER_PHOTO_ID_5473329472049731858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Android機でアプリ作ってて画面の絵が欲しいとき&lt;br /&gt;SDK\tools\ddms.bat&lt;br /&gt;でDalvik Debug Monitorを立ち上げ「Device」-&gt;「Screen capture」で実機のキャプチャーがとれてちょっとハッピー。&lt;br /&gt;ヒープサイズとかも見れます。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-4903899629537967578?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/4903899629537967578/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=4903899629537967578' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/4903899629537967578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/4903899629537967578'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/05/android.html' title='android端末の画面キャプチャー'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f7edJsUPosA/S_UsJ-gzWRI/AAAAAAAAAVo/XOVQNDHO5Fk/s72-c/device.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-1934221181992445454</id><published>2010-03-28T22:40:00.000+09:00</published><updated>2010-03-28T22:40:38.952+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>お勧め記事</title><content type='html'>軽く立ち読みしただけなのですが、日経ソフトウェアの「特集1　要件定義からテストまでJavaでアプリケーションを作り上げよう！ 」は中々良さそうなのでお勧めです。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-1934221181992445454?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/1934221181992445454/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=1934221181992445454' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1934221181992445454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1934221181992445454'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/03/blog-post.html' title='お勧め記事'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-3567287769648116514</id><published>2010-03-24T12:47:00.002+09:00</published><updated>2010-03-24T12:58:17.525+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>たまにはSunSPOT備忘録</title><content type='html'>&lt;ul&gt;&lt;li&gt;RadiostreamプロトコルとRadiogramプロトコルの違い&lt;/li&gt;&lt;/ul&gt;Radiostream:到達保障あり、ユニキャスト可能、ブロードキャスト不可能&lt;br /&gt;Radiogram:到達保障なし、ユニキャスト可能、ブロードキャスト可能&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;RadiogramクラスとDatagramインターフェースの違い&lt;/li&gt;&lt;/ul&gt;RadiogramはDatagramの実装&lt;br /&gt;read/write/receive/sendだけならDatagramでOK（RadiogramでもOK）&lt;br /&gt;getRssi()なんか使いたければRadiogram&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-3567287769648116514?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/3567287769648116514/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=3567287769648116514' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3567287769648116514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3567287769648116514'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/03/sunspot.html' title='たまにはSunSPOT備忘録'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-1769263741143841860</id><published>2010-03-03T12:50:00.010+09:00</published><updated>2010-06-13T22:35:43.683+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Nexus One</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f7edJsUPosA/S43dobPo6vI/AAAAAAAAAUA/RtRaoset8_8/s1600-h/IMG_1955.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_f7edJsUPosA/S43dobPo6vI/AAAAAAAAAUA/RtRaoset8_8/s320/IMG_1955.JPG" alt="" id="BLOGGER_PHOTO_ID_5444251211138657010" border="0" /&gt;&lt;/a&gt;またしても、こんなもの買ってしまいました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-1769263741143841860?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/1769263741143841860/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=1769263741143841860' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1769263741143841860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1769263741143841860'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/03/nexus-one.html' title='Nexus One'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_f7edJsUPosA/S43dobPo6vI/AAAAAAAAAUA/RtRaoset8_8/s72-c/IMG_1955.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8848977194111502801</id><published>2010-01-26T23:50:00.007+09:00</published><updated>2010-01-27T00:00:39.683+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>NetBeansでPHP</title><content type='html'>そろそろ修士論文発表会の頃でしょうか？？&lt;br /&gt;発表者は頑張ってくださいね。&lt;br /&gt;&lt;br /&gt;今更PHPに興味もないんですが、いつの間にやらNetBeansにPHPがサポートされていたのでメモ。&lt;br /&gt;PHPを使ったWebアプリをIDEで開発できると大分幸せかもしれません。&lt;br /&gt;ちょっとしか試していませんが、一応補間入力・Webサーバへのアップはできるようでした。&lt;br /&gt;(外部サーバの場合FTPサーバが上がっていることが必要です。)&lt;br /&gt;&lt;br /&gt;注意としては、httpサーバの上げ下げは手動です。&lt;br /&gt;&lt;br /&gt;一応スナップショット。こんな感じで(笑)&lt;br /&gt;&lt;b&gt;設定&lt;/b&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0LSim19fCnk/S18B1ZdFSeI/AAAAAAAAAUA/qT-QLnvDlZw/s1600-h/php0.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 274px;" src="http://4.bp.blogspot.com/_0LSim19fCnk/S18B1ZdFSeI/AAAAAAAAAUA/qT-QLnvDlZw/s320/php0.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5431061692509669858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;プロジェクト作成&lt;/b&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0LSim19fCnk/S18B9EKELlI/AAAAAAAAAUI/cuPtKcjUEtM/s1600-h/php1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 219px;" src="http://2.bp.blogspot.com/_0LSim19fCnk/S18B9EKELlI/AAAAAAAAAUI/cuPtKcjUEtM/s320/php1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5431061824231714386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0LSim19fCnk/S18CEesRFcI/AAAAAAAAAUQ/LX0YPMyEQIQ/s1600-h/php2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 209px;" src="http://4.bp.blogspot.com/_0LSim19fCnk/S18CEesRFcI/AAAAAAAAAUQ/LX0YPMyEQIQ/s320/php2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5431061951613572546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0LSim19fCnk/S18CNedpmAI/AAAAAAAAAUY/C1St2M_FqAs/s1600-h/php3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 199px;" src="http://4.bp.blogspot.com/_0LSim19fCnk/S18CNedpmAI/AAAAAAAAAUY/C1St2M_FqAs/s320/php3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5431062106171086850" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8848977194111502801?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8848977194111502801/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8848977194111502801' title='3 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8848977194111502801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8848977194111502801'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/01/netbeansphp.html' title='NetBeansでPHP'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0LSim19fCnk/S18B1ZdFSeI/AAAAAAAAAUA/qT-QLnvDlZw/s72-c/php0.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-1393031963079612916</id><published>2010-01-17T23:29:00.009+09:00</published><updated>2010-01-18T00:22:31.999+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>JUnitで単体テスト</title><content type='html'>プログラムを書いた時にテストを行うことは非常に重要です。&lt;br /&gt;プログラムのテストと言っても、&lt;br /&gt;&lt;i&gt;&lt;a href="http://e-words.jp/w/E58D98E4BD93E38386E382B9E38388.html"&gt;単体テスト&lt;/a&gt; =&gt; &lt;a href="http://e-words.jp/w/E7B590E59088E38386E382B9E38388.html"&gt;結合テスト&lt;/a&gt; =&gt; &lt;a href="http://e-words.jp/w/E382B7E382B9E38386E383A0E38386E382B9E38388.html"&gt;システムテスト&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;と、段階的に行うのが一般的なようです。&lt;br /&gt;&lt;br /&gt;各テストをどのような観点で行うかはさておき、Javaで書いたプログラムの単体テストを支援するフレームワークとして&lt;a href="http://www.junit.org/"&gt;JUnit&lt;/a&gt;があります。&lt;br /&gt;&lt;br /&gt;NetBeansには標準でJUnitが入っていますので、ちょっと使ってみたいと思います。&lt;br /&gt;（利用環境はNetBeans6.8ですが、他のVersionでも多分一緒）&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.テスト対象のクラスの作成&lt;/b&gt;&lt;br /&gt;適当な名前でプロジェクトを作成して、以下のコードを作成します。(パッケージ等は適当に。)&lt;br /&gt;&lt;br /&gt;今回のテスト対象クラスFactorialClass。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;package jp.taka.factorial;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * 階乗計算をするクラスです。。。&lt;br /&gt; * @author taka&lt;br /&gt; */&lt;br /&gt;public class FactorialClass {&lt;br /&gt;    /**&lt;br /&gt;     * ループを使って階乗を計算します。&lt;br /&gt;     * @param x&lt;br /&gt;     * @return x!&lt;br /&gt;     */&lt;br /&gt;    public static int factorial(int x){&lt;br /&gt;        int fact = 1;&lt;br /&gt;        for(int i=x; i&amp;gt;=1;i--){&lt;br /&gt;            fact *= i;&lt;br /&gt;        }&lt;br /&gt;        return fact;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * 再帰を使って階乗を計算します。&lt;br /&gt;     * @param x&lt;br /&gt;     * @return x!&lt;br /&gt;     */&lt;br /&gt;    public static int factorial2(int x){&lt;br /&gt;        if(x &amp;gt; 1)&lt;br /&gt;            return x*factorial2(x-1);&lt;br /&gt;        else &lt;br /&gt;            return 1;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;一応Mainも。。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;package jp.taka.factorial;&lt;br /&gt;&lt;br /&gt;public class Main {&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        int f1 = FactorialClass.factorial(4);&lt;br /&gt;        int f2 = FactorialClass.factorial2(4);&lt;br /&gt;&lt;br /&gt;        System.out.println(f1);&lt;br /&gt;        System.out.println(f2);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;ここまでで、NetBeansのプロジェクトエクスプロラー（？）はこんな感じになると思います。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0LSim19fCnk/S1Mj9XQpVoI/AAAAAAAAAS4/QKeubVSrzSE/s1600-h/junit0.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 227px; height: 140px;" src="http://4.bp.blogspot.com/_0LSim19fCnk/S1Mj9XQpVoI/AAAAAAAAAS4/QKeubVSrzSE/s320/junit0.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5427721513034405506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.テストコード作成&lt;/b&gt;&lt;br /&gt;ここからがJUnitの出番です。（今回はJUnit4を使います）&lt;br /&gt;&lt;br /&gt;プロジェクトを右クリックして新規-&gt;その他を選択すると、ウィンドウが一つ開くので、下図のように選択し、次へをクリックします。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0LSim19fCnk/S1MkToQFrgI/AAAAAAAAATA/5lET6NrGK-Q/s1600-h/junit1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 219px;" src="http://1.bp.blogspot.com/_0LSim19fCnk/S1MkToQFrgI/AAAAAAAAATA/5lET6NrGK-Q/s320/junit1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5427721895552593410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;次の画面はこんな感じで、完了をクリック。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0LSim19fCnk/S1Mk3QOOVYI/AAAAAAAAATI/WI2hfQUmOYk/s1600-h/junit2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 191px;" src="http://1.bp.blogspot.com/_0LSim19fCnk/S1Mk3QOOVYI/AAAAAAAAATI/WI2hfQUmOYk/s320/junit2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5427722507577611650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ここまでくると、NetBeansがテストクラスのひな形を作成してくれます。&lt;br /&gt;それを下のようにいじります。&lt;br /&gt;ここでのポイントは、&lt;br /&gt;・assertEquals():第一引数と第二引数が一致しているか判定&lt;br /&gt;・@Testアノテーション：メソッドがテストメソッドであることを明示する&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;package jp.taka.factorial;&lt;br /&gt;&lt;br /&gt;import org.junit.AfterClass;&lt;br /&gt;import org.junit.BeforeClass;&lt;br /&gt;import org.junit.Test;&lt;br /&gt;import static org.junit.Assert.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author taka&lt;br /&gt; */&lt;br /&gt;public class FactorialClassTest {&lt;br /&gt;&lt;br /&gt;    public FactorialClassTest() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @BeforeClass&lt;br /&gt;    public static void setUpClass() throws Exception {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @AfterClass&lt;br /&gt;    public static void tearDownClass() throws Exception {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * FactorialClass#factorial(int x)のテスト&lt;br /&gt;     */&lt;br /&gt;    @Test&lt;br /&gt;    public void testFactorial() {&lt;br /&gt;        System.out.println("chk factorial");&lt;br /&gt;        int x = 4;&lt;br /&gt;        int expResult = 4*3*2*1;&lt;br /&gt;        int result = FactorialClass.factorial(x);&lt;br /&gt;        assertEquals(expResult,result );&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * FactorialClass#factorial2(int x)のテスト&lt;br /&gt;     */&lt;br /&gt;    @Test&lt;br /&gt;    public void testFactorial2() {&lt;br /&gt;        System.out.println("chk factorial 2");&lt;br /&gt;        int x = 4;&lt;br /&gt;        int expResult = 4*3*2*1;&lt;br /&gt;        int result = FactorialClass.factorial2(x);&lt;br /&gt;        assertEquals(expResult,result );&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3.テストをしてみよう&lt;/b&gt;&lt;br /&gt;プロジェクト名を右クリックして、テストをクリックします（下図）&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0LSim19fCnk/S1MlyqxG5HI/AAAAAAAAATQ/BNN8bbWVQf4/s1600-h/junit3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 142px; height: 320px;" src="http://2.bp.blogspot.com/_0LSim19fCnk/S1MlyqxG5HI/AAAAAAAAATQ/BNN8bbWVQf4/s320/junit3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5427723528315528306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;@Testアノテーションがついたテストメソッドが実行されます。&lt;br /&gt;以下のような結果が出れば成功です。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0LSim19fCnk/S1MmP7QG5SI/AAAAAAAAATY/nw02VGgwfFc/s1600-h/junit4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 99px;" src="http://3.bp.blogspot.com/_0LSim19fCnk/S1MmP7QG5SI/AAAAAAAAATY/nw02VGgwfFc/s320/junit4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5427724030956725538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ちなみに、テスト結果NGのモノがあった場合は、下図。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0LSim19fCnk/S1Mm5x8Z8cI/AAAAAAAAATg/RoyB2oEXhGU/s1600-h/junit5.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 94px;" src="http://2.bp.blogspot.com/_0LSim19fCnk/S1Mm5x8Z8cI/AAAAAAAAATg/RoyB2oEXhGU/s320/junit5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5427724750012674498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4.まとめ&lt;/b&gt;&lt;br /&gt;今回は、NetBeansでJUnitを使って簡単なテストを行いました。&lt;br /&gt;今回使ったのはassertEqualsだけですが、他にも色々ありますので、興味のある方は是非。&lt;br /&gt;&lt;br /&gt;また、JUnit以外にも、CUnit(C言語用),CppUnit(C++言語用）などなどxUnitシリーズは沢山ありますので、研究でも役立つ・・・かも？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-1393031963079612916?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/1393031963079612916/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=1393031963079612916' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1393031963079612916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1393031963079612916'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/01/junit.html' title='JUnitで単体テスト'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0LSim19fCnk/S1Mj9XQpVoI/AAAAAAAAAS4/QKeubVSrzSE/s72-c/junit0.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8704749715235685990</id><published>2010-01-10T01:36:00.002+09:00</published><updated>2010-01-10T01:46:26.385+09:00</updated><title type='text'>Bluetooth 4.0</title><content type='html'>低消費電力向けのBluetooth 4.0の&lt;a href="http://www.bluetooth.com/Bluetooth/Press/SIG/SIG_INTRODUCES_BLUETOOTH_LOW_ENERGY_WIRELESS_TECHNOLOGY_THE_NEXT_GENERATION_OF_BLUETOOTH_WIRELESS_TE.htm"&gt;プレスリリース&lt;/a&gt;が出てました。&lt;br /&gt;最大28octetsしか送れず1Mbpsしかでないけど、低消費電力は魅力。&lt;br /&gt;たまにしかデータ送らないセンサーとかには良いかも。&lt;br /&gt;&lt;span id="presentationModeContainer_Xmlplaceholdercontrol7"&gt;advanced sniff-subratingというのが使われるみただけど&lt;/span&gt;、RSSIとるためにガリガリコネクトしたらやっぱり電力食っちゃうよね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8704749715235685990?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8704749715235685990/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8704749715235685990' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8704749715235685990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8704749715235685990'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2010/01/bluetooth-40.html' title='Bluetooth 4.0'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-7956269585547368798</id><published>2009-11-13T19:59:00.014+09:00</published><updated>2009-11-13T20:53:53.421+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Androidはじめました</title><content type='html'>わけあってAndroidはじめました。&lt;br /&gt;とりあえず導入手順&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Android SDKを&lt;a href="http://developer.android.com/intl/ja/index.html"&gt;http://developer.android.com/intl/ja/index.html&lt;/a&gt;からダウンロード（最新は2.0ですが、1.1,1.5,1.6も落とせます。全部落とすと時間がかかります）&lt;/li&gt;&lt;li&gt;落としたファイル群を置くディレクトリ名にスペースや日本語が入らないように。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;SDK本体なんかをインストールしようとした時にhttpsで怒られちゃう人は、C:\Documents and Setting\hoge\.androidディレクトリ(windowsの場合)以下に、androidtool.cfgというファイルを作って、sdkman.force.http=true　という一行を書いてください。&lt;/li&gt;&lt;li&gt;eclipseでの開発の例が多いですが、netbeans派の人はプラグインが&lt;a href="http://kenai.com/downloads/nbandroid/updates.xml" target="_blank"&gt;http://kenai.com/downloads/nb&lt;span class="highlight"&gt;android&lt;/span&gt;/updates.xml&lt;/a&gt;で使えます(eclipse版でも試しましたがあまり大差ないと思います)。&lt;/li&gt;&lt;li&gt;プロジェクトを置くディレクトリ名にスペース（多分日本語も）があるとコンパイルできないので注意（Documents and Settings以下なんかは駄目）。&lt;/li&gt;&lt;li&gt;それなりに早いマシン(windows XP)でもエミュレータは重いです。&lt;/li&gt;&lt;li&gt;Javaで書けるので相当楽&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_f7edJsUPosA/Sv0-7gIb1rI/AAAAAAAAAEI/StJl06oFyCY/s1600-h/android.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 225px;" src="http://1.bp.blogspot.com/_f7edJsUPosA/Sv0-7gIb1rI/AAAAAAAAAEI/StJl06oFyCY/s320/android.JPG" alt="" id="BLOGGER_PHOTO_ID_5403544319872980658" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-7956269585547368798?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/7956269585547368798/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=7956269585547368798' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7956269585547368798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7956269585547368798'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/11/android.html' title='Androidはじめました'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_f7edJsUPosA/Sv0-7gIb1rI/AAAAAAAAAEI/StJl06oFyCY/s72-c/android.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-9038871722104557884</id><published>2009-11-01T21:21:00.014+09:00</published><updated>2009-11-01T21:46:50.885+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>色使いに定評のあるNetBeans</title><content type='html'>業務にてRubyを書くことになりました。&lt;br /&gt;いいエディタ、というかIDEはないかな？？と探していたところ行き着いた先はなんとNetBeans！&lt;br /&gt;半年ぶりに触っていますがなかなかいい感じです。&lt;br /&gt;6.7.1の色鮮やかさにほれます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ag0ABGT9eBA/Su1_kxFMKHI/AAAAAAAAADA/K-IlGhpcato/s1600-h/671.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 202px;" src="http://3.bp.blogspot.com/_ag0ABGT9eBA/Su1_kxFMKHI/AAAAAAAAADA/K-IlGhpcato/s320/671.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5399111797914216562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;田舎の夕焼けみたいなかんじです。&lt;br /&gt;ついでに手持ちのバージョンのものもアップしてみます。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ag0ABGT9eBA/Su1_tRjq2WI/AAAAAAAAADI/UaRJ3mdUirs/s1600-h/nb600826_05.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 204px;" src="http://3.bp.blogspot.com/_ag0ABGT9eBA/Su1_tRjq2WI/AAAAAAAAADI/UaRJ3mdUirs/s320/nb600826_05.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5399111944070945122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ag0ABGT9eBA/Su1_2xkg63I/AAAAAAAAADQ/3p4B_92OhQo/s1600-h/6.5.1.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 203px;" src="http://3.bp.blogspot.com/_ag0ABGT9eBA/Su1_2xkg63I/AAAAAAAAADQ/3p4B_92OhQo/s320/6.5.1.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5399112107283245938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6.xでここまで違うとは。&lt;br /&gt;さすがですね。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-9038871722104557884?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/9038871722104557884/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=9038871722104557884' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/9038871722104557884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/9038871722104557884'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/11/netbeans.html' title='色使いに定評のあるNetBeans'/><author><name>hiyama</name><uri>http://www.blogger.com/profile/11780488878049663450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ag0ABGT9eBA/Su1_kxFMKHI/AAAAAAAAADA/K-IlGhpcato/s72-c/671.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-4357963821793240195</id><published>2009-10-27T22:59:00.002+09:00</published><updated>2009-10-27T23:05:27.464+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>Scala</title><content type='html'>今更ながら楽しいOB会をありがとうございました。&lt;br /&gt;沢山話をできた人も居れば、あまり絡めなかった人も居ますが、またそのうち遊びに行きます。&lt;br /&gt;&lt;br /&gt;OB会の中で何人かには話しましたが、最近&lt;a href="http://www.scala-lang.org/"&gt;Scala&lt;/a&gt;という言語の勉強を（遊び程度ですが）やっています。&lt;br /&gt;オブジェクト指向と関数型言語がうまく融合した、楽しげな言語です。&lt;br /&gt;（とかいいつつ、僕は関数型言語の経験がないんですけどね）&lt;br /&gt;&lt;br /&gt;まだまだマイナーな言語ですが、一部では注目されているようです。&lt;br /&gt;メジャーなところだと、twitterはScalaで記述されているとか。&lt;br /&gt;&lt;br /&gt;興味のある方は挑戦してみてください。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0LSim19fCnk/Sub8-mpBmzI/AAAAAAAAAQQ/m98z2nhx7jY/s1600-h/scala_book_.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 248px; height: 320px;" src="http://4.bp.blogspot.com/_0LSim19fCnk/Sub8-mpBmzI/AAAAAAAAAQQ/m98z2nhx7jY/s320/scala_book_.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5397279355904826162" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-4357963821793240195?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/4357963821793240195/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=4357963821793240195' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/4357963821793240195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/4357963821793240195'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/10/scala.html' title='Scala'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0LSim19fCnk/Sub8-mpBmzI/AAAAAAAAAQQ/m98z2nhx7jY/s72-c/scala_book_.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-3181192565441688012</id><published>2009-10-03T16:45:00.003+09:00</published><updated>2009-10-05T08:39:13.184+09:00</updated><title type='text'>BREW SDKとVS2008について</title><content type='html'>久々にBREW SDKをインストールしています。&lt;br /&gt;去年はVS2003Proで作ったBREWのテンプレートサンプルをVC++2005Expressを入れたPCでコンバートできたので、それでやってました。&lt;br /&gt;今はVC++2008Expressしかとれないようなので、VS2008Proでもできるだろうと思ったら失敗（VS2005Proってできたっけ？）。&lt;br /&gt;VC++2008ExpressだったらOKでした。&lt;br /&gt;無料版でできて、製品版でできないとは...。&lt;br /&gt;間違ってたらごめん。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-3181192565441688012?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/3181192565441688012/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=3181192565441688012' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3181192565441688012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3181192565441688012'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/10/brew-sdkvs2008.html' title='BREW SDKとVS2008について'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5426117819412902887</id><published>2009-09-25T22:11:00.000+09:00</published><updated>2009-09-25T22:14:04.770+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>SunSpot販売中止</title><content type='html'>残念ながらsunspotはもう手に入らないようです。&lt;br /&gt;&lt;a href="http://jp.sun.com/products/software/sunspot/"&gt;http://jp.sun.com/products/software/sunspot/&lt;/a&gt;&lt;br /&gt;次期バージョンはいつ出るのでしょうか。&lt;br /&gt;どんな機能追加がされるのでしょうか。&lt;br /&gt;&lt;br /&gt;このサイトの存在意義は？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5426117819412902887?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5426117819412902887/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5426117819412902887' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5426117819412902887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5426117819412902887'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/09/sunspot.html' title='SunSpot販売中止'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-783481229303877562</id><published>2009-09-05T18:39:00.004+09:00</published><updated>2009-09-05T18:55:32.454+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>NetBeans IDE 6.7でC/C++ リモート開発</title><content type='html'>netbeans6.7でc/c++のリモート開発ができるそうです（要samba）。&lt;br /&gt;&lt;a href="http://www.netbeans.org/kb/docs/cnd/remotedev-tutorial_ja.html"&gt;http://www.netbeans.org/kb/docs/cnd/remotedev-tutorial_ja.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6.5とかでも同じようなことができたけど、その時は、windows上にcの処理系（ヘッダファイルなど）がないと、エディタ上で文句言われるので、仕方なく使いもしないcygwinやmingwを入れておかなきゃだったけど、6.7からはwindows側にcの処理系まったく入れなくても、リモート上（うちではsolaris）のcの処理系を見に行ってくれて、windows上のnetbeansでc/c++がストレスなく書けます。&lt;br /&gt;&lt;br /&gt;なぜかnetbeans上でのデバッグや実行は遅い（というかできない）ので、これはsshターミナル上でやるしかないのかな？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-783481229303877562?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/783481229303877562/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=783481229303877562' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/783481229303877562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/783481229303877562'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/09/netbeans-ide-67cc.html' title='NetBeans IDE 6.7でC/C++ リモート開発'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-6381817233748079380</id><published>2009-09-04T21:33:00.002+09:00</published><updated>2009-09-04T21:37:20.188+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>SunSPOT SDK</title><content type='html'>思い出したのですが、このBlogってもともと&lt;b&gt;SunSPOTネタが中心だった&lt;/b&gt;気が。。。&lt;br /&gt;&lt;br /&gt;久しぶりにSunSPOT Worldを覗いたら、Ver 5 Redがリリースされてますね。&lt;br /&gt;研究室ではもう使われているんでしょうか。&lt;br /&gt;&lt;br /&gt;詳細は&lt;a href="https://www.sunspotworld.com/forums/viewtopic.php?p=11544#p11544"&gt;こちら&lt;/a&gt;。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-6381817233748079380?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/6381817233748079380/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=6381817233748079380' title='4 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6381817233748079380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6381817233748079380'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/09/sunspot-sdk.html' title='SunSPOT SDK'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-1727831162958089196</id><published>2009-08-18T13:08:00.003+09:00</published><updated>2009-08-18T13:09:38.745+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BREW'/><title type='text'>めずらしいもの発見</title><content type='html'>&lt;a href="http://monoist.atmarkit.co.jp/fembedded/articles/brew/01/brew_01a.html"&gt;http://monoist.atmarkit.co.jp/fembedded/articles/brew/01/brew_01a.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-1727831162958089196?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/1727831162958089196/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=1727831162958089196' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1727831162958089196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1727831162958089196'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/08/blog-post_18.html' title='めずらしいもの発見'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5940904670599672818</id><published>2009-08-08T15:22:00.000+09:00</published><updated>2009-08-08T15:23:19.655+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>ご冥福を</title><content type='html'>お祈りします。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mainichi.jp/select/person/news/20090806k0000m060100000c.html"&gt;http://mainichi.jp/select/person/news/20090806k0000m060100000c.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5940904670599672818?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5940904670599672818/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5940904670599672818' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5940904670599672818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5940904670599672818'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/08/blog-post_08.html' title='ご冥福を'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-1515678049004773888</id><published>2009-08-01T19:10:00.003+09:00</published><updated>2009-08-02T00:19:53.547+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>デビューしました</title><content type='html'>ブリューじゃねぇ、javaだよ！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-1515678049004773888?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/1515678049004773888/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=1515678049004773888' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1515678049004773888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1515678049004773888'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/08/blog-post.html' title='デビューしました'/><author><name>keita_a</name><uri>http://www.blogger.com/profile/09935864563665229461</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5065455578278961764</id><published>2009-08-01T00:06:00.005+09:00</published><updated>2009-08-01T00:14:43.690+09:00</updated><title type='text'>BREW</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ag0ABGT9eBA/SnMKEwLPd3I/AAAAAAAAACc/aAMRCF7u4Gs/s1600-h/090731_2241~01.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 192px; height: 320px;" src="http://4.bp.blogspot.com/_ag0ABGT9eBA/SnMKEwLPd3I/AAAAAAAAACc/aAMRCF7u4Gs/s320/090731_2241~01.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5364642657896200050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;セブンイレブンで発見して思わず買ってしまいました。&lt;br /&gt;誰かに話したい！けどわかってくれる人が周りいない！ということでここに書きます。&lt;br /&gt;セブン＆アイのプライベートブランド商品でお値段はなんと123円！！（ちなみにプレミアムモルツは255円）&lt;br /&gt;すっきりしていて飲みやすくフルーティです、よく言えば。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5065455578278961764?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5065455578278961764/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5065455578278961764' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5065455578278961764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5065455578278961764'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/08/brew.html' title='BREW'/><author><name>hiyama</name><uri>http://www.blogger.com/profile/11780488878049663450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ag0ABGT9eBA/SnMKEwLPd3I/AAAAAAAAACc/aAMRCF7u4Gs/s72-c/090731_2241~01.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-279275747718501803</id><published>2009-07-09T11:17:00.003+09:00</published><updated>2009-07-09T11:24:28.439+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='愚痴'/><title type='text'>webページ作り</title><content type='html'>最近、なぜかwebページ作りをやっています。&lt;br /&gt;世の中にはいろんなCMSがありますが、何かお勧めのオープンソースのCMSってありますか？&lt;br /&gt;今は、modx(http://modxcms.com/)でがんばっています。&lt;br /&gt;あまり知らなかったけど、この世界はなかなか進んでいますね。&lt;br /&gt;ほとんどのCMSはPHPとMySQLとjavascriptでできていますが、サーブレットやJSPとかを使っているものはないのですかね（初期導入が面倒なのかな）。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-279275747718501803?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/279275747718501803/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=279275747718501803' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/279275747718501803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/279275747718501803'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/07/web.html' title='webページ作り'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8660135436264855093</id><published>2009-07-01T01:59:00.002+09:00</published><updated>2009-07-01T02:04:24.675+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Netbeans 6.7 + Eclipse 3.5</title><content type='html'>が、それぞれリリースされました。&lt;br /&gt;&lt;br /&gt;詳細は下記&lt;br /&gt;&lt;a href="http://ja.netbeans.org/"&gt;Netbeans&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.eclipse.org/"&gt;eclipse&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;今回、気になったのはeclipse3.5で搭載された&lt;b&gt;wordファイル比較機能&lt;/b&gt;です。&lt;br /&gt;試してないのでどの位使えるのかわかりませんが、一応word2003まで対応(.doc)だそうです。また、eclipse3.3,3.4にもプラグインを追加できるとか。。。。これ、レポートチェックで・・・。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8660135436264855093?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8660135436264855093/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8660135436264855093' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8660135436264855093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8660135436264855093'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/07/netbeans-67-eclipse-35.html' title='Netbeans 6.7 + Eclipse 3.5'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8015599057892940919</id><published>2009-06-17T22:00:00.001+09:00</published><updated>2009-06-17T22:01:33.684+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>気になったニュース</title><content type='html'>&lt;a href="http://www.itmedia.co.jp/news/articles/0906/16/news049.html"&gt;これ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;感想をどうそ。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8015599057892940919?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8015599057892940919/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8015599057892940919' title='4 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8015599057892940919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8015599057892940919'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/06/blog-post_17.html' title='気になったニュース'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-591721822668420088</id><published>2009-05-27T23:46:00.003+09:00</published><updated>2009-05-28T00:01:08.211+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Eclipse</title><content type='html'>暇なんで、たまには更新。&lt;br /&gt;&lt;br /&gt;研修の外部講師の方とかSE仲間から最近聞いたネタを少し公開します。&lt;br /&gt;&lt;br /&gt;・開発現場ではNetBeansよりもEclipseが良く使われているらしいです(その会社独自の拡張がしやすいためかな？）。ちょっと信憑性は疑問ですが、そーいわれて今Eclipseを使っています(個人的にはNetbeansが好きなんだけど)。&lt;br /&gt;・Eclipseが重い(時々動きが鈍くなる)のはGCがかかるため。インストールディレクトリにあるXms,Xmxオプションの数値をいじってやると(幾らか)軽くなります。&lt;br /&gt;・Xmsは初期ヒープサイズ、Xmxはヒープの最大サイズです(実はこれJavaVMのオプションです)。JavaVMがeclipseを起動する際に、初期ヒープサイズを確保。んでもって、足りないと判断したらXmxの範囲内でヒープサイズを拡大するようです。&lt;br /&gt;&lt;br /&gt;以上、あんまり面白くないネタですが、参考までに。。。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-591721822668420088?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/591721822668420088/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=591721822668420088' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/591721822668420088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/591721822668420088'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/05/eclipse.html' title='Eclipse'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5164163943691234416</id><published>2009-04-27T22:40:00.014+09:00</published><updated>2009-04-27T23:19:45.001+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>負けじと</title><content type='html'>シリコンバレーからラブレターがとどきました。&lt;br /&gt;詳しくは&lt;a href="http://yoko-gb.blogspot.com/2009/02/netbeansusb.html"&gt;ここ&lt;/a&gt;参照。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ag0ABGT9eBA/SfW2ZxuJnuI/AAAAAAAAACM/-9lSVIWslk0/s1600-h/090427_2149~02.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 192px; height: 320px;" src="http://4.bp.blogspot.com/_ag0ABGT9eBA/SfW2ZxuJnuI/AAAAAAAAACM/-9lSVIWslk0/s320/090427_2149~02.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5329366288022740706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ちなみにディスプレイに映ってるのはUQWiMAXのユーティリティソフトです。&lt;br /&gt;自宅の環境では実測1Mbpsというところが涙を誘います。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_ag0ABGT9eBA/SfW2R2Y-VWI/AAAAAAAAACE/Bi30V6CkapI/s1600-h/netb.JPG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 265px; height: 320px;" src="http://1.bp.blogspot.com/_ag0ABGT9eBA/SfW2R2Y-VWI/AAAAAAAAACE/Bi30V6CkapI/s320/netb.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5329366151837144418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;どういたしまして。&lt;br /&gt;NetBeansとOpenOfficeが入ってますね。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;バリバリ使い倒そうと思っていたのですが、なんと会社では私物PC、USBメモリの使用が全面的に禁止されていました。&lt;br /&gt;katoくんにでもあげようかな。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5164163943691234416?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5164163943691234416/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5164163943691234416' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5164163943691234416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5164163943691234416'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/04/blog-post_27.html' title='負けじと'/><author><name>hiyama</name><uri>http://www.blogger.com/profile/11780488878049663450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ag0ABGT9eBA/SfW2ZxuJnuI/AAAAAAAAACM/-9lSVIWslk0/s72-c/090427_2149~02.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-3124632167359589994</id><published>2009-04-21T13:55:00.004+09:00</published><updated>2009-04-21T13:59:37.404+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>SunRay</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_f7edJsUPosA/Se1R4TxqsBI/AAAAAAAAACw/sk5jypUJ32Q/s1600-h/IMG_1464.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_f7edJsUPosA/Se1R4TxqsBI/AAAAAAAAACw/sk5jypUJ32Q/s320/IMG_1464.JPG" alt="" id="BLOGGER_PHOTO_ID_5327003962072281106" border="0" /&gt;&lt;/a&gt;だけどSunRay入れました（写真はkatoの席）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-3124632167359589994?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/3124632167359589994/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=3124632167359589994' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3124632167359589994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3124632167359589994'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/04/sunraykato.html' title='SunRay'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_f7edJsUPosA/Se1R4TxqsBI/AAAAAAAAACw/sk5jypUJ32Q/s72-c/IMG_1464.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8492058043698357440</id><published>2009-04-20T22:51:00.000+09:00</published><updated>2009-04-20T22:52:14.262+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>お久しぶりです</title><content type='html'>色々あるけど、一応元気です。&lt;br /&gt;&lt;br /&gt;たまには更新。&lt;br /&gt;&lt;br /&gt;http://itpro.nikkeibp.co.jp/article/NEWS/20090420/328819/&lt;br /&gt;&lt;br /&gt;これは一体何事？？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8492058043698357440?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8492058043698357440/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8492058043698357440' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8492058043698357440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8492058043698357440'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/04/blog-post.html' title='お久しぶりです'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-3906323814875471221</id><published>2009-02-19T02:16:00.000+09:00</published><updated>2009-02-19T02:17:45.776+09:00</updated><title type='text'>NetBeansでUSBメモリをもらおう</title><content type='html'>&lt;a href="http://www.netbeans.org/competition/refer-a-friend/index_ja.html"&gt;これ&lt;/a&gt;．&lt;br /&gt;研究室のみんなで如何でしょう？？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-3906323814875471221?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/3906323814875471221/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=3906323814875471221' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3906323814875471221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3906323814875471221'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/02/netbeansusb.html' title='NetBeansでUSBメモリをもらおう'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-7278004013355205964</id><published>2009-02-17T21:49:00.001+09:00</published><updated>2009-02-17T21:50:31.892+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boost'/><title type='text'>boost 1.38</title><content type='html'>いつの間にか出てますね．&lt;br /&gt;&lt;br /&gt;詳細は&lt;a href="http://www.boost.org/users/download/version_1_38_0"&gt;ここ&lt;/a&gt;から．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-7278004013355205964?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/7278004013355205964/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=7278004013355205964' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7278004013355205964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7278004013355205964'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/02/boost-138.html' title='boost 1.38'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5634160358683315336</id><published>2009-02-17T11:30:00.000+09:00</published><updated>2009-02-17T11:31:27.149+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>あれ？？</title><content type='html'>&lt;a href="http://plusd.itmedia.co.jp/mobile/articles/0902/12/news027.html"&gt;これ&lt;/a&gt;は・・・(笑)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5634160358683315336?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5634160358683315336/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5634160358683315336' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5634160358683315336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5634160358683315336'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/02/blog-post_17.html' title='あれ？？'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8017047263187200012</id><published>2009-02-16T20:13:00.003+09:00</published><updated>2009-02-16T20:18:55.116+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>SunSPOTを使ってブロック崩しを作ってみた</title><content type='html'>SunSPOTを使ってブロック崩しを作ってみました！&lt;br /&gt;加速度センサーを用いてSunSPOTの傾きを検出し，それにあわせてバーの位置を操作するといった具合になっています．(本当なら，SunSPOTを横にスライドさせてバーを動かしたかったのですが…)&lt;br /&gt;ソースは後々解説しようと思います(スパゲッティーなので^^;)．&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_RWQp0ubXL00/SZlLfbaLwJI/AAAAAAAAABg/Ll7X0H-9xCA/s1600-h/sunspot_block1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 265px;" src="http://4.bp.blogspot.com/_RWQp0ubXL00/SZlLfbaLwJI/AAAAAAAAABg/Ll7X0H-9xCA/s320/sunspot_block1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5303353039511077010" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8017047263187200012?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8017047263187200012/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8017047263187200012' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8017047263187200012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8017047263187200012'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/02/sunspot_16.html' title='SunSPOTを使ってブロック崩しを作ってみた'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_RWQp0ubXL00/SZlLfbaLwJI/AAAAAAAAABg/Ll7X0H-9xCA/s72-c/sunspot_block1.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-438924145990696472</id><published>2009-02-06T02:52:00.006+09:00</published><updated>2009-02-06T03:01:41.397+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>SunSPOTメモ</title><content type='html'>Solariumが重いので，なるべくコマンドラインで処理したい今日この頃．&lt;br /&gt;忘れないうちにSunSPOT用antコマンドをメモしときます．&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;jar-app&lt;/td&gt;&lt;td&gt;アプリケーション構築&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;jar-deploy&lt;/td&gt;&lt;td&gt;アプリケーションの配置&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;deploy&lt;/td&gt;&lt;td&gt;jar-app &amp;amp; jar-deploy&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;run&lt;/td&gt;&lt;td&gt;実行&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;deploy run&lt;/td&gt;&lt;td&gt;deploy &amp;amp; run&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;echo&lt;/td&gt;&lt;td&gt;標準出力を覗き見(リモート対応)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;host-compile&lt;/td&gt;&lt;td&gt;ホストアプリの構築&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;host-run&lt;/td&gt;&lt;td&gt;ホストアプリの実行&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;追記：なぜか，tableを使ったらレイアウトが崩れた．．．なんで?? ＞　管理人様&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-438924145990696472?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/438924145990696472/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=438924145990696472' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/438924145990696472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/438924145990696472'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/02/sunspot.html' title='SunSPOTメモ'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-2091584184708691926</id><published>2009-02-06T02:43:00.004+09:00</published><updated>2009-02-06T02:47:31.359+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>最近やってること(1)</title><content type='html'>最近やってる仕事を惜しげもなく公開!!&lt;br /&gt;例によってSunSPOTで楽しいことをやってみようという企画です．&lt;br /&gt;SunSPOTで位置推定に挑戦します．&lt;br /&gt;全部で3つのプログラムでやる予定のプロジェクトの1個目のプログラム．&lt;br /&gt;&lt;br /&gt;&lt;b&gt;TargetNode&lt;/b&gt;&lt;br /&gt;&lt;pre class="prettyprint lang_java"&gt;&lt;br /&gt;import com.sun.spot.io.j2me.radiogram.*;&lt;br /&gt;import com.sun.spot.peripheral.*;&lt;br /&gt;import com.sun.spot.peripheral.radio.*;&lt;br /&gt;import com.sun.spot.sensorboard.*;&lt;br /&gt;import com.sun.spot.sensorboard.peripheral.*;&lt;br /&gt;import com.sun.spot.util.BootloaderListener;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import javax.microedition.io.Connector;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * 位置推定プロジェクトのTN(TargetNode)アプリ&lt;br /&gt; * &amp;lt;p&amp;gt;&lt;br /&gt; * スイッチ1を押されると一定間隔でブロードキャストする．&lt;br /&gt; * ポート番号は121．&lt;br /&gt; * スイッチ2でアプリケーションを終了．&lt;br /&gt; * &amp;lt;/p&amp;gt;&lt;br /&gt; * @author taka@degas&lt;br /&gt; * date: 2009/02/02&lt;br /&gt; */&lt;br /&gt;public class TargetNode extends MIDlet {&lt;br /&gt; private static final int INITIAL_CHANNEL_NUMBER = IProprietaryRadio.DEFAULT_CHANNEL;&lt;br /&gt; private static final short PAN_ID = IRadioPolicyManager.DEFAULT_PAN_ID;&lt;br /&gt; private static final String URL = "radiogram://broadcast:";&lt;br /&gt; private static final String BROADCAST_PORT = "121";&lt;br /&gt; private static final int PACKET_PER_SECOND = 4;&lt;br /&gt; private static final int PACKET_INTERVAL = 1000 / PACKET_PER_SECOND;&lt;br /&gt; private static final int RSSI_AVERAGE_NUM = 30;&lt;br /&gt;&lt;br /&gt; private ISwitch sw1 = EDemoBoard.getInstance().getSwitches()[EDemoBoard.SW1];&lt;br /&gt; private ISwitch sw2 = EDemoBoard.getInstance().getSwitches()[EDemoBoard.SW2];&lt;br /&gt; private ITriColorLED leds[] = EDemoBoard.getInstance().getLEDs();&lt;br /&gt; private ITriColorLED statusLED = leds[0];&lt;br /&gt;&lt;br /&gt; private LEDColor red   = LEDColor.RED;&lt;br /&gt;&lt;br /&gt; private int channel = INITIAL_CHANNEL_NUMBER;&lt;br /&gt; private int power = 32;&lt;br /&gt; private boolean sw_flag;&lt;br /&gt;&lt;br /&gt; private RadiogramConnection con = null;&lt;br /&gt; private Radiogram r_gram = null;&lt;br /&gt; private IRadioPolicyManager r_policy = null;&lt;br /&gt; /**&lt;br /&gt;  * time時間プログラムを止める&lt;br /&gt;  * @param time プログラムを止める時間(ms)．&lt;br /&gt;  */&lt;br /&gt; private void pause(long time){&lt;br /&gt;  try{&lt;br /&gt;   Thread.currentThread().sleep(time);&lt;br /&gt;  }catch(InterruptedException ex){}&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * ブロードキャストを行うループ．&lt;br /&gt;  */&lt;br /&gt; private void BCLoop(){&lt;br /&gt;  statusLED.setColor(red);&lt;br /&gt;  statusLED.setOn();&lt;br /&gt;  sw_flag = true;&lt;br /&gt;  try {&lt;br /&gt;   // 通信関係初期化&lt;br /&gt;   con = (RadiogramConnection) Connector.open(URL + BROADCAST_PORT);&lt;br /&gt;   con.setMaxBroadcastHops(1);&lt;br /&gt;   r_gram = (Radiogram) con.newDatagram(con.getMaximumLength());&lt;br /&gt;   long count = 0;&lt;br /&gt;   int cnt = 0;&lt;br /&gt;   // 無限ループ&lt;br /&gt;   while (sw_flag){&lt;br /&gt;    cnt++;&lt;br /&gt;    if(cnt == RSSI_AVERAGE_NUM){&lt;br /&gt;     cnt = 0;&lt;br /&gt;     count++;&lt;br /&gt;     if (count &amp;gt;= Long.MAX_VALUE) count = 0;&lt;br /&gt;    }&lt;br /&gt;    long nextTime = System.currentTimeMillis() + PACKET_INTERVAL;&lt;br /&gt;    r_gram.reset();&lt;br /&gt;    /*&lt;br /&gt;    r_gram.writeByte(42);&lt;br /&gt;    r_gram.writeInt(power);&lt;br /&gt;    r_gram.writeLong(count);&lt;br /&gt;     */&lt;br /&gt;    r_gram.writeUTF(Long.toString(count));&lt;br /&gt;    con.send(r_gram);&lt;br /&gt;    System.out.println(count + "\n");&lt;br /&gt;    long delay = (nextTime - System.currentTimeMillis()) - 2;&lt;br /&gt;    if(delay &amp;gt; 0){&lt;br /&gt;     pause(delay);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;  } catch (IOException ex) {&lt;br /&gt;   // ignore&lt;br /&gt;  }finally {&lt;br /&gt;   if(con != null){&lt;br /&gt;    try {&lt;br /&gt;     con.close();&lt;br /&gt;    }catch(IOException ex) {}&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  System.out.println("Loop Out!!");&lt;br /&gt;  statusLED.setOff();&lt;br /&gt;  try {&lt;br /&gt;   con.close();&lt;br /&gt;  } catch (IOException ex) {&lt;br /&gt;   ex.printStackTrace();&lt;br /&gt;  }&lt;br /&gt;  System.out.println("BCLoop is closed!!\n");&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * スイッチのイベント登録を行う関数．&lt;br /&gt;  */&lt;br /&gt; private void setSW(){&lt;br /&gt;  new BootloaderListener().start();&lt;br /&gt;  // sw1にイベント登録&lt;br /&gt;  sw1.addISwitchListener(new ISwitchListener() {&lt;br /&gt;   // sw1が押された時の処理&lt;br /&gt;   public void switchPressed(ISwitch sw) {&lt;br /&gt;    new Thread(){&lt;br /&gt;     public void run(){&lt;br /&gt;      BCLoop();&lt;br /&gt;     }&lt;br /&gt;    }.start();&lt;br /&gt;   }&lt;br /&gt;   public void switchReleased(ISwitch sw) {&lt;br /&gt;   }&lt;br /&gt;  });&lt;br /&gt;  // sw2にイベント登録&lt;br /&gt;  sw2.addISwitchListener(new ISwitchListener() {&lt;br /&gt;   // sw2が押された時の処理&lt;br /&gt;   public void switchPressed(ISwitch sw) {&lt;br /&gt;    sw_flag = false;&lt;br /&gt;   }&lt;br /&gt;   public void switchReleased(ISwitch sw) {&lt;br /&gt;   }&lt;br /&gt;  });&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * アプリ開始時に呼ばれる．色々初期化．&lt;br /&gt;  */&lt;br /&gt; protected void startApp() throws MIDletStateChangeException {&lt;br /&gt;  r_policy = Spot.getInstance().getRadioPolicyManager();&lt;br /&gt;  r_policy.setChannelNumber(channel);&lt;br /&gt;  r_policy.setPanId(PAN_ID);&lt;br /&gt;  r_policy.setOutputPower(power - 32);&lt;br /&gt;  setSW();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; protected void pauseApp() {&lt;br /&gt;  // This is not currently called by the Squawk VM&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {&lt;br /&gt;  statusLED.setOff();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-2091584184708691926?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/2091584184708691926/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=2091584184708691926' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2091584184708691926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2091584184708691926'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/02/1.html' title='最近やってること(1)'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-7802646694742897719</id><published>2009-02-05T20:38:00.001+09:00</published><updated>2009-02-05T20:42:13.579+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>モバイルWiMAX!</title><content type='html'>お久しぶりです．&lt;br /&gt;ついに動き出しそうですね・・・&lt;br /&gt;&lt;a href="http://www.atmarkit.co.jp/news/200902/03/uq.html"&gt;&lt;br /&gt;モバイルWiMAX、2月末に試験サービス開始&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-7802646694742897719?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/7802646694742897719/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=7802646694742897719' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7802646694742897719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7802646694742897719'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/02/wimax.html' title='モバイルWiMAX!'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8934004503571527845</id><published>2009-01-21T16:17:00.002+09:00</published><updated>2009-01-21T16:20:44.843+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>こうきたか</title><content type='html'>&lt;a href="http://www.kddi.com/corporate/news_release/2009/0121b/index.html"&gt;これは新しい!!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8934004503571527845?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8934004503571527845/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8934004503571527845' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8934004503571527845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8934004503571527845'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2009/01/blog-post.html' title='こうきたか'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-552594019636441967</id><published>2008-12-24T01:20:00.008+09:00</published><updated>2009-02-06T18:12:22.731+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>SunSPOTでユニキャスト</title><content type='html'>なんか，SunSPOT-Basestation間でユニキャストができないという報告があったので，試してみた．&lt;br /&gt;(SunSPOTいじるの久しぶりなので，不備があったら突っ込みお願いします)&lt;br /&gt;&lt;br /&gt;まずは，ソース(ソースが長くならないようにシンプルなものを載せています)．&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;サンスポット側&lt;/h2&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;package net.java.dev.netbeansspot;&lt;br /&gt;&lt;br /&gt;import com.sun.spot.io.j2me.radiogram.*;&lt;br /&gt;import com.sun.spot.util.Utils;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;&lt;br /&gt;public class Application extends MIDlet {&lt;br /&gt; private final String PROTOCOL = "radiogram://0014.4F01.XXXX.XXXX:67";// べた書きだっせ～&lt;br /&gt; protected void startApp() throws MIDletStateChangeException {&lt;br /&gt;  RadiogramConnection rCon = null;// 通信用クラス&lt;br /&gt;  Datagram dg;// データグラム&lt;br /&gt;  try {&lt;br /&gt;   rCon = (RadiogramConnection) Connector.open(PROTOCOL); // 回線開いて&lt;br /&gt;   dg = rCon.newDatagram(rCon.getMaximumLength());// データグラム作って&lt;br /&gt;   while (true) {// 無限ループ!!&lt;br /&gt;    dg.reset();&lt;br /&gt;    dg.writeUTF("Hello SunSPOT!!");&lt;br /&gt;    rCon.send(dg);&lt;br /&gt;    System.out.println("hoge");&lt;br /&gt;    Utils.sleep(2000);&lt;br /&gt;   }&lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;   System.err.println("Caught " + e + " in connection initialization.");&lt;br /&gt;   System.exit(1);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; protected void pauseApp() {&lt;br /&gt;  // This is not currently called by the Squawk VM&lt;br /&gt; }&lt;br /&gt; protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {&lt;br /&gt;  // TODO&lt;br /&gt; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;ホスト側&lt;/h2&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;package net.java.dev.netbeansspot;&lt;br /&gt;&lt;br /&gt;import com.sun.spot.io.j2me.radiogram.*;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;&lt;br /&gt;public class SunSpotHostApplication {&lt;br /&gt; private static final int HOST_PORT = 67; // port指定&lt;br /&gt; // 通信部&lt;br /&gt; private void run() throws Exception {&lt;br /&gt;  // 前準備&lt;br /&gt;  RadiogramConnection rCon; // コネクション&lt;br /&gt;  Datagram dg;// データグラム&lt;br /&gt;  try {&lt;br /&gt;   rCon = (RadiogramConnection) Connector.open("radiogram://:" + HOST_PORT);&lt;br /&gt;   dg = rCon.newDatagram(rCon.getMaximumLength());&lt;br /&gt;  } catch (Exception e) {&lt;br /&gt;   System.err.println("setUp caught " + e.getMessage());&lt;br /&gt;   throw e;&lt;br /&gt;  }&lt;br /&gt;  // データ受信&amp;&amp;表示を行うループ&lt;br /&gt;  while (true) {&lt;br /&gt;   try {&lt;br /&gt;    rCon.receive(dg);// 受信&lt;br /&gt;    String addr = dg.getAddress();  // 送信元を取り出して&lt;br /&gt;    String msg = dg.readUTF(); // メッセージを取り出して&lt;br /&gt;    System.out.println(addr + ":" + msg);// 表示&lt;br /&gt;   } catch (Exception e) {&lt;br /&gt;    System.err.println("Caught " + e);&lt;br /&gt;    throw e;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;// main&lt;br /&gt; public static void main(String[] args) throws Exception {&lt;br /&gt;  SunSpotHostApplication obj = new SunSpotHostApplication();&lt;br /&gt;  obj.run();&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;実行結果&lt;/h2&gt;&lt;br /&gt;きれいに載せるの面倒なので，デスクトップのキャプチャで．&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0LSim19fCnk/SVEXxucPKiI/AAAAAAAAAPI/8CC33wcSwD8/s1600-h/run1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 197px;" src="http://1.bp.blogspot.com/_0LSim19fCnk/SVEXxucPKiI/AAAAAAAAAPI/8CC33wcSwD8/s320/run1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5283029980929796642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_0LSim19fCnk/SVEX4sP76OI/AAAAAAAAAPQ/RvFbkbUQ08o/s1600-h/run2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 198px;" src="http://1.bp.blogspot.com/_0LSim19fCnk/SVEX4sP76OI/AAAAAAAAAPQ/RvFbkbUQ08o/s320/run2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5283030100600416482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;普通に動いた．．．&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;少し考察&lt;/h2&gt;&lt;br /&gt;今回は，BaseStationもSunSPOTも&lt;b&gt;両方ケーブルにつないだ状態&lt;/b&gt;で行った．&lt;br /&gt;これは，BaseStationを使ってリモートでSunSPOTにアプリケーションを配置・実行してしまうと，最初のオープンで失敗するからです．というのは，(適当に書いたソースなモンで)SunSPOT側のアプリは起動後すぐにBaseStationに対して接続を試みますが，&lt;b&gt;BaseStationはリッスンになっていない&lt;/b&gt;ので余裕でこけるのです．&lt;br /&gt;即ち，アプリを実行する順番は(エラー処理をちゃんと書かないのであれば)&lt;br /&gt;BaseStation→SunSPOTであるべきです．&lt;br /&gt;&lt;br /&gt;要するに，回線を開くタイミングや，回線が落ちた時の処理，エラー処理などもうちょっと複雑な処理を入れてあげないとねってコトです．&lt;br /&gt;&lt;br /&gt;(ちなみに，今回のソースで，通信が成功している状態で突然ホストアプリを止めるとSunSPOTはどんな挙動を示すでしょう??)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-552594019636441967?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/552594019636441967/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=552594019636441967' title='3 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/552594019636441967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/552594019636441967'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/12/sunspot.html' title='SunSPOTでユニキャスト'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_0LSim19fCnk/SVEXxucPKiI/AAAAAAAAAPI/8CC33wcSwD8/s72-c/run1.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-582497113936561529</id><published>2008-12-21T01:44:00.007+09:00</published><updated>2008-12-21T05:33:55.184+09:00</updated><title type='text'>お得なお知らせを使ってみた！！</title><content type='html'>先日インストールしたVS2008はsp1にバージョンアップすると、C++0x(C++の次の企画)が一部使えます．また，g++もver 4.3(だっけ？)からは-std=gnu++0xオプションを付けることで，C++0xの一部を使うことができます．&lt;br /&gt;&lt;br /&gt;でも，どっかのblogによると，VS2008のC++0xにはバグがあるとか無いとか．．．&lt;br /&gt;そんなわけでC++0xで実装予定の，&amp;lt;random&amp;gt;ヘッダを試してみました．&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;random&amp;gt;&lt;br /&gt;#include &amp;lt;ctime&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;using namespace std::tr1; // gnu++0xでは不要．&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt;    mt19937 e(static_cast&amp;lt;unsigned long&amp;gt;(std::time(0)));&lt;br /&gt;    uniform_int&amp;lt;&amp;gt; d(0, 10);&lt;br /&gt;    variate_generator&amp;lt;mt19937, uniform_int&amp;lt;&amp;gt; &amp;gt; g(e, d);&lt;br /&gt;&lt;br /&gt;    for(int i=0;i&amp;lt;10;i++) cout &amp;lt;&amp;lt; g() &amp;lt;&amp;lt; "\t";&lt;br /&gt;      &lt;br /&gt;    return 0;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;プログラムの中身としては，&lt;b&gt;&lt;font color=red&gt;0から10まで&lt;/font&gt;&lt;/b&gt;の乱数を発生させます．&lt;br /&gt;&lt;br /&gt;実行結果．&lt;br /&gt;&lt;br /&gt;まずは，g++&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;c:\usr\home\cpp&amp;gt;g++ -std=gnu++0x test.cpp&lt;br /&gt;&lt;br /&gt;c:\usr\home\cpp&amp;gt;a.exe&lt;br /&gt;0       6       10      0       5       9       9       1       1       8&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;次いで，VS2008 SP1&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;C:\usr\home\Projects\HelloVS2008\Debug&amp;gt;HelloVS2008.exe&lt;br /&gt;-4      2       1       3       -3      -4      -3      -1      -2      4&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="+3"&gt;あれ，おかしくね？？&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-582497113936561529?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/582497113936561529/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=582497113936561529' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/582497113936561529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/582497113936561529'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/12/blog-post_21.html' title='お得なお知らせを使ってみた！！'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-7853339386980080504</id><published>2008-12-11T02:19:00.004+09:00</published><updated>2008-12-11T02:27:32.778+09:00</updated><title type='text'>お得なお知らせを試してみた！！</title><content type='html'>先日KEITA Aさんから研究室内に回ったお得なお知らせを試してみた．&lt;br /&gt;&lt;br /&gt;まずは，&lt;a href="http://co1piltwb.partners.extranet.microsoft.com/mcoeredir/mcoeredirect.aspx?linkId=10948496&amp;s1=f58d6aae-aee4-d261-fab8-bc19bca48ae4"&gt;ここ&lt;/a&gt;にアクセスして，M$にメールを送ります．&lt;br /&gt;メールに記載する内容も全然多くなくて１分で終わります．書くのは，学校名・氏名・学年・大学で使っているメールアドレス位です．&lt;br /&gt;&lt;br /&gt;１日後位にM$社からメールが来るので，そのメールに書いてあるURLをクリックして，ダウンロードサイトへ．&lt;br /&gt;&lt;br /&gt;とりあえずVS2005とVS2008をダウンロードしてみました．&lt;br /&gt;VS2005のisoが２ファイルで900M位．VS2008は１ファイル3.8G位(笑&lt;br /&gt;M$のサーバにしてはかな～り早くダウンロードできました．すばらしい～&lt;br /&gt;&lt;br /&gt;&lt;font size="-2"&gt;問題は，VS入れて何に使うかだけど．．．&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_0LSim19fCnk/ST_7duMeWTI/AAAAAAAAAO4/HYaDvinRamU/s1600-h/MS.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_0LSim19fCnk/ST_7duMeWTI/AAAAAAAAAO4/HYaDvinRamU/s320/MS.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5278213776336640306" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-7853339386980080504?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/7853339386980080504/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=7853339386980080504' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7853339386980080504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7853339386980080504'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/12/blog-post.html' title='お得なお知らせを試してみた！！'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_0LSim19fCnk/ST_7duMeWTI/AAAAAAAAAO4/HYaDvinRamU/s72-c/MS.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-7969517621164664445</id><published>2008-12-09T01:41:00.001+09:00</published><updated>2008-12-09T01:43:18.556+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>KDE on Windows</title><content type='html'>&lt;a href="http://windows.kde.org/"&gt;こんな&lt;/a&gt;時代なんですね．．．&lt;br /&gt;ちょっと感動した．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-7969517621164664445?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/7969517621164664445/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=7969517621164664445' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7969517621164664445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7969517621164664445'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/12/kde-on-windows.html' title='KDE on Windows'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-7803766804623301245</id><published>2008-12-05T17:14:00.001+09:00</published><updated>2008-12-05T17:16:14.167+09:00</updated><title type='text'>Emprise JavaScript Charts</title><content type='html'>100%pure javascriptでグラフ書けます．&lt;br /&gt;http://www.ejschart.com/&lt;br /&gt;スクリプトも簡単ですが，やっぱり動作はブラウザ依存します．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-7803766804623301245?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/7803766804623301245/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=7803766804623301245' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7803766804623301245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7803766804623301245'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/12/emprise-javascript-charts.html' title='Emprise JavaScript Charts'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-1808345419050771942</id><published>2008-11-30T04:03:00.006+09:00</published><updated>2008-11-30T04:14:04.511+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='愚痴'/><title type='text'>コーディング規約</title><content type='html'>って大事だなって思った瞬間．&lt;br /&gt;&lt;br /&gt;後輩のデバッグに付き合っている時のこと．&lt;br /&gt;&lt;br /&gt;後輩の作ったlinkという自前クラス(多分伝送路クラスだと思う)が型として認識されない(link p でエラーが出る)．&lt;br /&gt;しかも，Windows上でMinGWだとOKなのにSolarisやLinux上だと怒られる．．．&lt;br /&gt;なんでかと思ったら，linkって関数があるらしい．知らんかった．．．ってか，Windows上にはないのね．&lt;br /&gt;&lt;br /&gt;コーディング規約って大事だなって思った瞬間でした．．&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;font size="+2" color=red&gt;クラス名は大文字で始めましょう！！&lt;/font&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="-2"&gt;&lt;br /&gt;追伸．link2って名前でエラーを逃れた後輩をちょっと尊敬しました．&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-1808345419050771942?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/1808345419050771942/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=1808345419050771942' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1808345419050771942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1808345419050771942'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/11/blog-post.html' title='コーディング規約'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-2392442348989277147</id><published>2008-11-21T00:40:00.001+09:00</published><updated>2008-11-28T17:57:59.946+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>NetBeans 6.5</title><content type='html'>正式にリリースされました．&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ja.netbeans.org/"&gt;http://ja.netbeans.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-2392442348989277147?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/2392442348989277147/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=2392442348989277147' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2392442348989277147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2392442348989277147'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/11/netbeans-65.html' title='NetBeans 6.5'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-138021388400393898</id><published>2008-11-14T23:19:00.004+09:00</published><updated>2008-11-15T02:05:51.162+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='メモ'/><title type='text'>行列のできるプログラミング言語(3)</title><content type='html'>&lt;h2&gt;C++編(2)&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;■(鬼の)&lt;a href="http://www.gnu.org/software/octave/"&gt;liboctave&lt;/a&gt;&lt;/h3&gt;&lt;br /&gt;&lt;pre class="prettyprint lang_cpp"&gt;&lt;br /&gt;#include &amp;lt;octave/config.h&amp;gt;&lt;br /&gt;#include &amp;lt;octave/Matrix.h&amp;gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;using namespace std;&lt;br /&gt;&lt;br /&gt;int main(int argc, char**argv)&lt;br /&gt;{&lt;br /&gt;  double m[][3] = { { 3, -4, 2 }, { 2, 5, 3 }, { -2, 3, -2 } };&lt;br /&gt;  Matrix A(3,3);&lt;br /&gt;  for(int i=0;i&amp;lt;3;i++)&lt;br /&gt;    for(int j=0;j&amp;lt;3;j++)&lt;br /&gt;      A(i,j) = m[i][j];&lt;br /&gt;  // 行列の表示&lt;br /&gt;  cout &amp;lt;&amp;lt; "matrix A:" &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; A &amp;lt;&amp;lt; endl;&lt;br /&gt;  // 逆行列の表示&lt;br /&gt;  cout &amp;lt;&amp;lt; "inv(A):" &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; A.inverse() &amp;lt;&amp;lt; endl;&lt;br /&gt;  // 元の行列との積の計算&lt;br /&gt;  cout &amp;lt;&amp;lt; "A*inv(A)" &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; A*A.inverse() &amp;lt;&amp;lt; endl;&lt;br /&gt;  // ついでに固有値分解(笑)&lt;br /&gt;  EIG eig(A);&lt;br /&gt;  cout &amp;lt;&amp;lt; "Eigen Vector" &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; eig.eigenvectors() &amp;lt;&amp;lt; endl;&lt;br /&gt;  cout &amp;lt;&amp;lt; "Eigen Values" &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; eig.eigenvalues() &amp;lt;&amp;lt; endl;&lt;br /&gt;  &lt;br /&gt;  return 0;&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-138021388400393898?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/138021388400393898/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=138021388400393898' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/138021388400393898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/138021388400393898'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/11/3.html' title='行列のできるプログラミング言語(3)'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8380150895955881175</id><published>2008-11-07T17:20:00.002+09:00</published><updated>2008-11-07T17:25:40.164+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boost'/><title type='text'>boost 1.37</title><content type='html'>リリースされたようです．&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.boost.org/users/news/version_1_37_0"&gt;この辺&lt;/a&gt;参照．&lt;br /&gt;新しいライブラリはProtoのみみたいですけど．&lt;br /&gt;&lt;br /&gt;にしても，肥大化の一途を辿るboostの到着点は何処？？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8380150895955881175?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8380150895955881175/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8380150895955881175' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8380150895955881175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8380150895955881175'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/11/boost-137.html' title='boost 1.37'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5252395572972355080</id><published>2008-11-05T16:52:00.002+09:00</published><updated>2008-11-08T12:16:42.602+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>Solaris 10 10/08</title><content type='html'>Solaris 10 10/08が10月31日に出ました．&lt;br /&gt;http://www.sun.com/aboutsun/pr/2008-10/sunflash.20081031.1.xml&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5252395572972355080?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5252395572972355080/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5252395572972355080' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5252395572972355080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5252395572972355080'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/11/solaris-10-1008.html' title='Solaris 10 10/08'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-260381334409000594</id><published>2008-11-01T22:40:00.004+09:00</published><updated>2008-11-07T17:19:45.284+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='メモ'/><title type='text'>行列のできるプログラミング言語(2)</title><content type='html'>&lt;h2&gt;C++編&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;■&lt;a href="http://www.boost.org/"&gt;boost&lt;/a&gt;::numeric::ublas編&lt;/h3&gt;&lt;br /&gt;&lt;center&gt;&lt;b&gt;uBLAS_Util.hpp&lt;/b&gt;&lt;/center&gt;&lt;br /&gt;&lt;pre class="prettyprint lang_cpp"&gt;&lt;br /&gt;#ifndef __UBLAS_UTIL_HPP__&lt;br /&gt;#define __UBLAS_UTIL_HPP__&lt;br /&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;cmath&amp;gt;&lt;br /&gt;#include &amp;lt;boost/numeric/ublas/matrix.hpp&amp;gt;&lt;br /&gt;#include &amp;lt;boost/numeric/ublas/vector.hpp&amp;gt;&lt;br /&gt;#include &amp;lt;boost/numeric/ublas/io.hpp&amp;gt;&lt;br /&gt;#include &amp;lt;boost/numeric/ublas/lu.hpp&amp;gt;&lt;br /&gt;#include &amp;lt;boost/numeric/ublas/triangular.hpp&amp;gt;&lt;br /&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;using namespace boost;&lt;br /&gt;using namespace boost::numeric;&lt;br /&gt;using namespace boost::numeric::ublas;&lt;br /&gt;&lt;br /&gt;typedef ublas::matrix&amp;lt;double&amp;gt; dmatrix;&lt;br /&gt;typedef ublas::matrix&amp;lt;complex&amp;lt;double&amp;gt; &amp;gt; cdmatrix;&lt;br /&gt;typedef ublas::vector&amp;lt;double&amp;gt; dvector;&lt;br /&gt;typedef ublas::vector&amp;lt;complex&amp;lt;double&amp;gt; &amp;gt; cdvector;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt; matrixの表示&lt;br /&gt; */&lt;br /&gt;template&amp;lt;class Matrix&amp;gt;&lt;br /&gt;void m_print(Matrix x) {&lt;br /&gt; int n1 = x.size1();&lt;br /&gt; int n2 = x.size2();&lt;br /&gt; for (int i = 0; i &amp;lt; n1; i++) {&lt;br /&gt;  for (int j = 0; j &amp;lt; n2; j++) {&lt;br /&gt;   cout &amp;lt;&amp;lt; x(i, j) &amp;lt;&amp;lt; "\t";&lt;br /&gt;  }&lt;br /&gt;  cout &amp;lt;&amp;lt; endl;&lt;br /&gt; }&lt;br /&gt; return;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt; vectorの表示&lt;br /&gt; */&lt;br /&gt;template&amp;lt;class Vector&amp;gt;&lt;br /&gt;void v_print(Vector x) {&lt;br /&gt; int n = x.size();&lt;br /&gt; for (int i = 0; i &amp;lt; n; i++) {&lt;br /&gt;  cout &amp;lt;&amp;lt; x(i) &amp;lt;&amp;lt; endl;&lt;br /&gt; }&lt;br /&gt; return;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#endif&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;center&gt;&lt;b&gt;main.cpp&lt;/b&gt;&lt;/center&gt;&lt;br /&gt;&lt;pre class="prettyprint lang_cpp"&gt;&lt;br /&gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;#include &amp;lt;boost/numeric/ublas/matrix.hpp&amp;gt;&lt;br /&gt;#include &amp;lt;boost/numeric/ublas/vector.hpp&amp;gt;&lt;br /&gt;#include &amp;lt;boost/numeric/ublas/io.hpp&amp;gt;&lt;br /&gt;#include &amp;lt;boost/numeric/ublas/lu.hpp&amp;gt;&lt;br /&gt;#include &amp;lt;boost/numeric/ublas/triangular.hpp&amp;gt;&lt;br /&gt;#include "uBlas_Util.hpp"&lt;br /&gt;using namespace std;&lt;br /&gt;using namespace boost::numeric::ublas;&lt;br /&gt;&lt;br /&gt;int main() {&lt;br /&gt; // make matrix A&lt;br /&gt; dmatrix A(3, 3);&lt;br /&gt; double m[][3] = { { 3, -4, 2 }, { 2, 5, 3 }, { -2, 3, -2 } };&lt;br /&gt; for (int i = 0; i &amp;lt; 3; i++) {&lt;br /&gt;  for (int j = 0; j &amp;lt; 3; j++) {&lt;br /&gt;   A(i, j) = m[i][j];&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; cout &amp;lt;&amp;lt; "matrix A:" &amp;lt;&amp;lt; endl;&lt;br /&gt; m_print(A);&lt;br /&gt; // make A^-1&lt;br /&gt; dmatrix I = identity_matrix&amp;lt;double&amp;gt;(3);// 単位行列&lt;br /&gt; dmatrix copyA(A);// Aのコピー&lt;br /&gt; // LU分解時の行交換情報が入る行列&lt;br /&gt; permutation_matrix&amp;lt;&amp;gt; pm(A.size1());&lt;br /&gt; // LU分解&lt;br /&gt; lu_factorize(A,pm);&lt;br /&gt; // 行交換を考慮した前進消去と後退代入&lt;br /&gt; lu_substitute(A,pm,I);&lt;br /&gt;&lt;br /&gt; // 解の表示&lt;br /&gt; cout &amp;lt;&amp;lt; "A^-1" &amp;lt;&amp;lt; endl;&lt;br /&gt; m_print(I);&lt;br /&gt; // A*A^-1&lt;br /&gt; cout &amp;lt;&amp;lt; "A*A^-1" &amp;lt;&amp;lt; endl;&lt;br /&gt; m_print(prod(copyA,I));&lt;br /&gt;&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-260381334409000594?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/260381334409000594/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=260381334409000594' title='2 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/260381334409000594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/260381334409000594'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/11/2.html' title='行列のできるプログラミング言語(2)'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-615356053257294988</id><published>2008-11-01T00:19:00.002+09:00</published><updated>2008-11-01T18:12:14.080+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='メモ'/><title type='text'>行列のできるプログラミング言語(1)</title><content type='html'>いつか何かの役に立つかも知れないのでメモ．&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Java編&lt;/h2&gt;&lt;br /&gt;&lt;h3&gt;&lt;br /&gt;■&lt;a href="http://commons.apache.org/math/"&gt;Jakarta commons math&lt;/a&gt;&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;&lt;pre class="prettyprint lang_java"&gt;&lt;br /&gt;import java.math.BigDecimal;&lt;br /&gt;import org.apache.commons.math.linear.*;&lt;br /&gt;&lt;br /&gt;public class Main {&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;   // 行列Aを作成&lt;br /&gt;   double[][] m = {{3,-4,2}, {2,5,3}, {-2,3,-2}};&lt;br /&gt;   BigMatrix A = MatrixUtils.createBigMatrix(m);&lt;br /&gt;   System.out.println("行列A");&lt;br /&gt;   printBigMatrix(A);&lt;br /&gt;   // Aの逆行列A^-1を求める &lt;br /&gt;   BigMatrix inA = A.inverse();&lt;br /&gt;   System.out.println("行列A^-1");&lt;br /&gt;   printBigMatrix(inA);&lt;br /&gt;   // AとA^-1の積&lt;br /&gt;   BigMatrix tmp = A.multiply(inA);&lt;br /&gt;      System.out.println("A*A^-1");&lt;br /&gt;   printBigMatrix(tmp);&lt;br /&gt;   // 連立方程式&lt;br /&gt;   // Ax = b&lt;br /&gt;   BigDecimal [] b =new BigDecimal [3];&lt;br /&gt;   double [] t = {0,6,1};&lt;br /&gt;   for(int i=0;i&amp;lt;3;i++){&lt;br /&gt;    b[i]= new BigDecimal(t[i]);&lt;br /&gt;   }&lt;br /&gt;   BigDecimal[] x = A.solve(b);&lt;br /&gt;   System.out.println("連立方程式");&lt;br /&gt;   for(int i=0;i&amp;lt;3;i++){&lt;br /&gt;    System.out.println(x[i]);&lt;br /&gt;   }&lt;br /&gt;   return;&lt;br /&gt;    }&lt;br /&gt;  public static void printBigMatrix(BigMatrix tmp){&lt;br /&gt;   for (int i = 0; i &amp;lt; tmp.getRowDimension(); i++) {&lt;br /&gt;    for(int j=0;j&amp;lt;tmp.getColumnDimension();j++){&lt;br /&gt;     System.out.print(tmp.getEntry(i, j) + "\t");&lt;br /&gt;    }&lt;br /&gt;    System.out.print("\n");&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;■&lt;a href="http://math.nist.gov/javanumerics/jama/"&gt;JAMA編&lt;/a&gt;&lt;br /&gt;&lt;/h3&gt;&lt;br /&gt;&lt;pre class="prettyprint lang_java"&gt;&lt;br /&gt;import Jama.*;&lt;br /&gt;&lt;br /&gt;public class Main {&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        double[][] m = {{3,-4,2}, {2,5,3}, {-2,3,-2}};&lt;br /&gt;    Matrix A = new Matrix(m);&lt;br /&gt;    double [] t = {0,6,1};&lt;br /&gt;    Matrix b = new Matrix(3,1);&lt;br /&gt;    for(int i=0;i&amp;lt;3;i++)&lt;br /&gt;     b.set(i, 0, t[i]);&lt;br /&gt;    Matrix x = A.solve(b);&lt;br /&gt;    for(int i = 0;i&amp;lt;x.getRowDimension();i++)&lt;br /&gt;     System.out.println(x.get(i, 0));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-615356053257294988?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/615356053257294988/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=615356053257294988' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/615356053257294988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/615356053257294988'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/11/1.html' title='行列のできるプログラミング言語(1)'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-4040472496981017503</id><published>2008-10-24T00:40:00.003+09:00</published><updated>2008-10-24T00:44:26.133+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java3Dを使おう(2)</title><content type='html'>Java3DでSunSPOTを3Dで作成しようと現在勉強中(ってほど時間かける余裕ないけど)&lt;br /&gt;&lt;br /&gt;現在までの成果はこんな感じ．．&lt;br /&gt;日本語のまとまったドキュメントが欲しいです．．．なんか本でも買おうかな(笑)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0LSim19fCnk/SQCbaWT8iDI/AAAAAAAAAMk/EFi1axerGbk/s1600-h/3dspot.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://4.bp.blogspot.com/_0LSim19fCnk/SQCbaWT8iDI/AAAAAAAAAMk/EFi1axerGbk/s320/3dspot.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5260375241736882226" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ついでにソースリスト．&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;package java3dsuspot;&lt;br /&gt;&lt;br /&gt;import com.sun.j3d.utils.behaviors.keyboard.KeyNavigatorBehavior;&lt;br /&gt;import com.sun.j3d.utils.behaviors.vp.OrbitBehavior;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;import java.awt.*;&lt;br /&gt;&lt;br /&gt;import javax.media.j3d.*;&lt;br /&gt;import com.sun.j3d.utils.geometry.Box;&lt;br /&gt;import com.sun.j3d.utils.universe.*;&lt;br /&gt;import javax.vecmath.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * Java3DでSunSPOTを作成&lt;br /&gt; * @author taka&lt;br /&gt; */&lt;br /&gt;public class Spot3D extends JFrame{&lt;br /&gt; private TransformGroup objTrans1;&lt;br /&gt; private TransformGroup objTrans2;&lt;br /&gt; private SimpleUniverse uni;&lt;br /&gt; private Canvas3D canvas;&lt;br /&gt; private RotationInterpolator rotatX;&lt;br /&gt; private RotationInterpolator rotatY;&lt;br /&gt; private RotationInterpolator rotatZ;&lt;br /&gt; private Alpha alpha;&lt;br /&gt; /**&lt;br /&gt;  * コンストラクタ&lt;br /&gt;  */&lt;br /&gt; public Spot3D(){&lt;br /&gt;  setLayout(new BorderLayout());&lt;br /&gt;  GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();&lt;br /&gt;  canvas = new Canvas3D(config);&lt;br /&gt;  getContentPane().add(canvas, BorderLayout.CENTER);&lt;br /&gt;&lt;br /&gt;  BranchGroup scene = createSceneGraph();&lt;br /&gt;  uni = new SimpleUniverse(canvas);&lt;br /&gt;  uni.getViewingPlatform().setNominalViewingTransform();  // 視点の設定&lt;br /&gt;  uni.addBranchGraph(scene);&lt;br /&gt;  &lt;br /&gt;  setOrbitBehavior();&lt;br /&gt;  &lt;br /&gt;  setSize(600, 600);&lt;br /&gt;  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;  setVisible(true);&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * 3Dオブジェクトの作成&lt;br /&gt;  */&lt;br /&gt; public BranchGroup createSceneGraph() {&lt;br /&gt;  // ObjectTreeの根の用意&lt;br /&gt;  BranchGroup objRoot = new BranchGroup();&lt;br /&gt;  // 座標軸を追加&lt;br /&gt;  Point3d[] vertex = new Point3d[6];&lt;br /&gt;&lt;br /&gt;  vertex[0] = new Point3d(-10.0, 0.0, 0.0); vertex[1] = new Point3d(10.0, 0.0, 0.0);&lt;br /&gt;  vertex[2] = new Point3d(0.0, -10.0, 0.0); vertex[3] = new Point3d(0.0, 10.0, 0.0);&lt;br /&gt;  vertex[4] = new Point3d(0.0, 0.0, -10.0); vertex[5] = new Point3d(0.0, 0, 10.0);&lt;br /&gt;&lt;br /&gt;  LineArray geometry = new LineArray(vertex.length,&lt;br /&gt;      GeometryArray.COORDINATES | GeometryArray.COLOR_3);&lt;br /&gt;  geometry.setCoordinates(0, vertex);&lt;br /&gt;&lt;br /&gt;  geometry.setColor(0, new Color3f(Color.red));&lt;br /&gt;  geometry.setColor(1, new Color3f(Color.red));&lt;br /&gt;  geometry.setColor(2, new Color3f(Color.cyan));&lt;br /&gt;  geometry.setColor(3, new Color3f(Color.cyan));&lt;br /&gt;  geometry.setColor(4, new Color3f(Color.blue));&lt;br /&gt;  geometry.setColor(5, new Color3f(Color.blue));&lt;br /&gt;  &lt;br /&gt;  Shape3D shape = new Shape3D(geometry);&lt;br /&gt;  objRoot.addChild(shape);&lt;br /&gt;&lt;br /&gt;  // 光源を追加&lt;br /&gt;  objRoot.addChild(createLight1());&lt;br /&gt;  objRoot.addChild(createLight2());&lt;br /&gt;  // 新しい座標系&lt;br /&gt;  Transform3D t3d1 = new Transform3D();&lt;br /&gt;  Matrix4f mat = new Matrix4f(&lt;br /&gt;      1.0f,0.0f,0.0f,0.5f,&lt;br /&gt;      0.0f,1.0f,0.0f,0.0f,&lt;br /&gt;      0.0f,0.0f,1.0f,0.0f,&lt;br /&gt;      0.0f,0.0f,0.0f,1.0f&lt;br /&gt;      );&lt;br /&gt;  t3d1.set(mat);&lt;br /&gt;  Transform3D t3d2 = new Transform3D();&lt;br /&gt;  Matrix4f mat2 = new Matrix4f(&lt;br /&gt;      1.0f,0.0f,0.0f,0.0f,&lt;br /&gt;      0.0f,1.0f,0.0f,0.0f,&lt;br /&gt;      0.0f,0.0f,1.0f,0.0f,&lt;br /&gt;      0.0f,0.0f,0.0f,1.0f&lt;br /&gt;      );&lt;br /&gt;  t3d2.set(mat2);&lt;br /&gt;  // transグループの作成&lt;br /&gt;  objTrans1 = new TransformGroup(t3d1);// x方向+0.5&lt;br /&gt;  objTrans2 = new TransformGroup(t3d2);// 変更なし&lt;br /&gt;  // 許可&lt;br /&gt;  objTrans1.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);&lt;br /&gt;  objTrans1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);&lt;br /&gt;  objTrans2.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);&lt;br /&gt;  objTrans2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);&lt;br /&gt;  /*  &lt;br /&gt;  alpha = new Alpha(&lt;br /&gt;      1, Alpha.INCREASING_ENABLE, 0, 0, 3000, 400, 0, 3000, 400, 0);&lt;br /&gt;  Transform3D axis = new Transform3D();&lt;br /&gt;  axis.setTranslation(new Vector3f(0.0f, 0.0f, 0.0f));&lt;br /&gt;  //axis.rotX(Math.PI / 2);&lt;br /&gt;  RotationInterpolator rotat =&lt;br /&gt;      new RotationInterpolator(&lt;br /&gt;      alpha, objTrans2, axis,0.0f, (float) Math.PI / 2);&lt;br /&gt;  BoundingSphere bounds = new BoundingSphere(new Point3d(), 100.0);&lt;br /&gt;  rotat.setSchedulingBounds(bounds);&lt;br /&gt;  objTrans2.addChild(rotat);&lt;br /&gt;   */&lt;br /&gt;  // key操作&lt;br /&gt;  KeyNavigatorBehavior knb = new KeyNavigatorBehavior(objTrans2);&lt;br /&gt;  BoundingSphere bounds = new BoundingSphere();&lt;br /&gt;  bounds.setRadius(100);&lt;br /&gt;  knb.setSchedulingBounds(bounds);&lt;br /&gt;  objTrans2.addChild(knb);&lt;br /&gt;&lt;br /&gt;  // objTreeに追加&lt;br /&gt;  objTrans2.addChild(objTrans1);&lt;br /&gt;  objRoot.addChild(objTrans2);&lt;br /&gt;  &lt;br /&gt;  // Boxを作成&lt;br /&gt;  Appearance ap = new Appearance(); // 物体の質感&lt;br /&gt;  Material ma = new Material();&lt;br /&gt;  ma.setDiffuseColor(1.0f,1.0f,1.0f); // 色の設定(RGB)&lt;br /&gt;  ap.setMaterial(ma);// materialをappearanceにセット&lt;br /&gt;  Box box = new Box(0.5f,0.1f,0.3f,ap); // Boxの作成&lt;br /&gt;  Box box2 = new Box(0.08f,0.02f,0.3f,ap);&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;  // 木に追加&lt;br /&gt;  objTrans2.addChild(box);&lt;br /&gt;  objTrans1.addChild(box2);&lt;br /&gt;  // コンパイル&lt;br /&gt;  objRoot.compile();&lt;br /&gt;  &lt;br /&gt;  return objRoot;&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * 回転系 &lt;br /&gt;  */&lt;br /&gt; public void rotation(){&lt;br /&gt;  // x軸&lt;br /&gt;  Transform3D axis = new Transform3D();&lt;br /&gt;  axis.setTranslation(new Vector3f(0.0f, 0.0f, 0.0f));&lt;br /&gt;  axis.rotZ(Math.PI / 2);&lt;br /&gt;  rotatX = new RotationInterpolator(&lt;br /&gt;      alpha, objTrans2, axis, 0.0f, (float) Math.PI * 2);&lt;br /&gt;  BoundingSphere bounds = new BoundingSphere(new Point3d(), 100.0);&lt;br /&gt;  rotatX.setSchedulingBounds(bounds);&lt;br /&gt;  objTrans2.addChild(rotatX);&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * 光源を作成&lt;br /&gt;  * @return&lt;br /&gt;  */&lt;br /&gt; private Light createLight1() {&lt;br /&gt;  // 平行光源&lt;br /&gt;  DirectionalLight light = new DirectionalLight(true,&lt;br /&gt;      new Color3f(1.0f, 1.0f, 1.0f), // 光源の色&lt;br /&gt;      new Vector3f(0.0f, 0.0f, -1.0f));// 光の向き&lt;br /&gt;//  AmbientLight light = new AmbientLight(true,new Color3f(1.0f,1.0f,1.0f));&lt;br /&gt;  light.setInfluencingBounds(new BoundingSphere(new Point3d(), 100.0));// 中心点,影響する範囲&lt;br /&gt;&lt;br /&gt;  return light;&lt;br /&gt; }&lt;br /&gt; private Light createLight2() {&lt;br /&gt;  AmbientLight light = new AmbientLight(true, new Color3f(1.0f, 1.0f, 1.0f));&lt;br /&gt;  light.setInfluencingBounds(new BoundingSphere(new Point3d(), 100.0));// 中心点,影響する範囲&lt;br /&gt;  return light;&lt;br /&gt; }&lt;br /&gt; /**&lt;br /&gt;  * マウス操作&lt;br /&gt;  */&lt;br /&gt; public void setOrbitBehavior(){&lt;br /&gt;  OrbitBehavior orbit = new OrbitBehavior(canvas,OrbitBehavior.REVERSE_ALL);&lt;br /&gt;  orbit.setSchedulingBounds(&lt;br /&gt;      new BoundingSphere(new Point3d(0,0,0),100)&lt;br /&gt;      );&lt;br /&gt;  uni.getViewingPlatform().setViewPlatformBehavior(orbit);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-4040472496981017503?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/4040472496981017503/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=4040472496981017503' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/4040472496981017503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/4040472496981017503'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/10/java3d2.html' title='Java3Dを使おう(2)'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0LSim19fCnk/SQCbaWT8iDI/AAAAAAAAAMk/EFi1axerGbk/s72-c/3dspot.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-985455672725809490</id><published>2008-10-21T16:04:00.001+09:00</published><updated>2009-04-23T20:17:00.004+09:00</updated><title type='text'></title><content type='html'>この前，学会で見たやつがついに&lt;br /&gt;http://www.fcl.fujitsu.com/release/2008/20080924.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-985455672725809490?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/985455672725809490/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=985455672725809490' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/985455672725809490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/985455672725809490'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/10/httpwww.html' title=''/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-7408574504839621834</id><published>2008-10-18T22:59:00.004+09:00</published><updated>2008-10-18T23:17:11.828+09:00</updated><title type='text'>ボゴソート</title><content type='html'>いよいよ情報処理技術者試験が明日に迫りました．&lt;br /&gt;僕含め研究室の同期，先輩が必死に勉強していることと思います．&lt;br /&gt;&lt;br /&gt;そんな中，面白いソートアルゴリズムを発見しました．&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://ja.wikipedia.org/wiki/ボゴソート"&gt;ボゴソート&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;これもソートアルゴリズムのひとつだ，と言い張る勇気が僕もほしいです．．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-7408574504839621834?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/7408574504839621834/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=7408574504839621834' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7408574504839621834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7408574504839621834'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/10/blog-post.html' title='ボゴソート'/><author><name>hiyama</name><uri>http://www.blogger.com/profile/11780488878049663450</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8499815077767833057</id><published>2008-10-15T03:41:00.002+09:00</published><updated>2008-10-15T03:46:44.659+09:00</updated><title type='text'>Java3Dを使おう(1)</title><content type='html'>最近，誰も記事を書かないので頑張って更新．&lt;br /&gt;今日から少しJava3Dを使うことにしました．何に使うかはおいおい．．．．&lt;br /&gt;&lt;br /&gt;そろそろ"Operaerの憂鬱"とか連載記事が始まるのではないかとちょっと期待してます(笑)&lt;br /&gt;&lt;br /&gt;Java3DはJava向けの3D描画API拡張です．何故かJ2SDKとかには入ってません．どーいうことかって言うと別途自分でインストールしてねってことです．&lt;br /&gt;&lt;br /&gt;現在はjava.net内の&lt;a href="https://java3d.dev.java.net/"&gt;projectページ&lt;/a&gt;が配布サイトです．&lt;br /&gt;&lt;a href="https://java3d.dev.java.net/binary-builds.html"&gt;この辺&lt;/a&gt;から自分に合ったのを落としてきて適当にインストールします．&lt;br /&gt;&lt;br /&gt;続く(?)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8499815077767833057?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8499815077767833057/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8499815077767833057' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8499815077767833057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8499815077767833057'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/10/java3d1.html' title='Java3Dを使おう(1)'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-1155557611243471707</id><published>2008-10-12T02:45:00.003+09:00</published><updated>2008-10-15T03:41:30.295+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>SunSPOT SDK ver4.0</title><content type='html'>久々の更新．&lt;br /&gt;&lt;br /&gt;SunSPOT SDK ver4.0がいつの間にか正式にリリースされていました．&lt;br /&gt;&lt;a href="https://www.sunspotworld.com/forums/viewtopic.php?p=8140"&gt;この辺&lt;/a&gt;参照．&lt;br /&gt;&lt;br /&gt;以下，公式のBBSからの引用です．&lt;br /&gt;&lt;BLOCKQUOTE&gt;&lt;br /&gt;Version 4.0 of the Sun SPOT SDK (the Blue release) is now available for downloading via SPOT Manager. To install it go to http://www.sunspotworld.com/SPOTManager/ and click on the SPOT icon. In the SPOT Manager open the Preferences tab and select "General Release Updates". Then go to the SDK tab and choose "v4.0 Blue (Latest Update)".&lt;br /&gt;&lt;br /&gt;Major changes include:&lt;br /&gt;&lt;br /&gt;* Upgrading a SPOT to Blue will delete any user set properties because the section of SPOT flash memory used to store properties has changed.&lt;br /&gt;* Can now deploy multiple application suites to be loaded &amp; run on a SPOT&lt;br /&gt;* The SPOTWorld application is now called Solarium&lt;br /&gt;* Demos are now included as part of the SDK: &lt;sdk&gt;/Demos&lt;br /&gt;* Three new demos have been added: DatabaseDemo, HTTPDemo and SendDataDemo&lt;br /&gt;* New SPOT-Utilities directory containing utility applications to calibrate the accelerometer, sniff packets and test the eDemo sensors&lt;br /&gt;* New persistent system properties to specify default radio channel, pan id and transmit power.&lt;br /&gt;* Several new ant commands&lt;br /&gt;* SPOT host applications should no longer use the SPOT class; use RadioFactory instead.&lt;br /&gt;* Bugs in the eDemo board UART code have been fixed and the UART API changed.&lt;br /&gt;* The RoutingManager has been fixed so that its normal operation no longer prevents the SPOT from going into deep sleep.&lt;br /&gt;* Many SPOT library jar files were renamed or moved&lt;br /&gt;* Almost 200 bugs fixed&lt;br /&gt;&lt;br /&gt;Please see the Release Notes for more details.&lt;br /&gt;&lt;br /&gt;When reporting problems or bugs please be sure to specify which version of the SDK you are using.&lt;br /&gt;&lt;/BLOCKQUOTE&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-1155557611243471707?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/1155557611243471707/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=1155557611243471707' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1155557611243471707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/1155557611243471707'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/10/sunspot-sdk-ver40.html' title='SunSPOT SDK ver4.0'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-6255529369943085529</id><published>2008-09-08T12:52:00.001+09:00</published><updated>2008-10-15T03:41:14.950+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>Sun SPOT Manager v4.0</title><content type='html'>が公開されました．&lt;br /&gt;&lt;a href="http://blogs.sun.com/davidgs/entry/sun_spot_manager_v4_0"&gt;この辺&lt;/a&gt;参照．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-6255529369943085529?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/6255529369943085529/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=6255529369943085529' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6255529369943085529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6255529369943085529'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/09/sun-spot-manager-v40.html' title='Sun SPOT Manager v4.0'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5933063850353609962</id><published>2008-09-05T00:59:00.003+09:00</published><updated>2008-09-05T01:06:01.667+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>こんなんあります</title><content type='html'>&lt;font size=+1&gt;&lt;b&gt;Linux搭載低価格ノート&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;国内初だそうで．&lt;br /&gt;&lt;a href="http://itpro.nikkeibp.co.jp/article/NEWS/20080904/314129/"&gt;http://itpro.nikkeibp.co.jp/article/NEWS/20080904/314129/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size=+1&gt;&lt;b&gt;研究室内のブラウザ闘争に新たな局面(?)&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;googleがブラウザを出しました．名前はgoogle chromeです．軽く使ってみた感じだと，相当早いです．これから天下を取るかも知れません．&lt;br /&gt;タブをそれぞれ別プロセスにして，タブが一個クラッシュしても他を守るようにしていたり，javascriptエンジンがgoogleのオリジナルだったりってのが特徴のようです．&lt;br /&gt;暇な人はお試しあれ!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5933063850353609962?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5933063850353609962/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5933063850353609962' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5933063850353609962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5933063850353609962'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/09/blog-post.html' title='こんなんあります'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-7856633702878446671</id><published>2008-08-26T22:02:00.002+09:00</published><updated>2008-08-26T22:07:01.982+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>アイディア</title><content type='html'>http://gogo.gs/&lt;br /&gt;世の中、技術よりもアイディアが大事なことを痛感しました。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-7856633702878446671?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/7856633702878446671/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=7856633702878446671' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7856633702878446671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7856633702878446671'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/08/blog-post.html' title='アイディア'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-7469882635684697716</id><published>2008-08-25T03:11:00.005+09:00</published><updated>2008-08-25T03:35:49.730+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>MinGWにおけるgccのバージョン</title><content type='html'>ふと気になって確認したら，自分のPCのMinGWのgccのバージョンがなんと3.45だった．&lt;br /&gt;ちなみにLinux,Unixなんかでは現在4.3が最新らしい．&lt;br /&gt;&lt;br /&gt;そんなわけで，この辺の話についてちょっと調べてみたのでメモ．&lt;br /&gt;&lt;br /&gt;まず，MinGWの公式(&lt;a href="http://www.mingw.org"&gt;MinGW.org&lt;/a&gt;)の公式リリースはやはり3.45が最新なようです(それも結構前に出たやつ)．&lt;br /&gt;MinGWでも4.3を使うには，&lt;br /&gt;&lt;br /&gt;・MinGW公式で現在テスト段階(だと思う)のアルファ版を使う(&lt;a href="http://www.mingw.org/MinGWiki/index.php/GccStatus"&gt;参照&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;・非公式なMinGW用バイナリ(?)を使ってみる．みっけたのは，&lt;a href="http://www.tdragon.net/recentgcc/"&gt;これ&lt;/a&gt;と&lt;a href="http://www.equation.com/servlet/equation.cmd?call=compilerblog"&gt;これ&lt;/a&gt;．インストールの仕方はそれぞれのサイト参照．&lt;br /&gt;&lt;br /&gt;・cygwin上でmake(&lt;a href="http://d.hatena.ne.jp/gpuppur/20080420"&gt;この辺参照&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;さ～てどれにしようかな・・・．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-7469882635684697716?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/7469882635684697716/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=7469882635684697716' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7469882635684697716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7469882635684697716'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/08/mingwgcc.html' title='MinGWにおけるgccのバージョン'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-7288129694948657594</id><published>2008-08-16T18:23:00.003+09:00</published><updated>2008-08-30T20:51:21.667+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boost'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>boost1.36がリリース</title><content type='html'>夕方から研究室に出てきたら豪雨で帰れなくなりました．．．&lt;br /&gt;&lt;br /&gt;それはさておき，boost1.36がリリースされましたのでメモ．&lt;br /&gt;&lt;a href="http://www.boost.org/users/news/version_1_36_0"&gt;boost.orgのnews&lt;/a&gt;参照．&lt;br /&gt;&lt;br /&gt;今回のバージョンアップでは，新たに4つのライブラリーが加わっているようです．&lt;br /&gt;&lt;BLOCKQUOTE&gt;&lt;br /&gt;Accumulators: &lt;br /&gt;Framework for incremental calculation, and collection of statistical accumulators, from Eric Niebler.&lt;br /&gt;Exception:&lt;br /&gt;A library for transporting of arbitrary data in exception objects, and transporting of exceptions between threads, from Emil Dotchevski.&lt;br /&gt;Units:&lt;br /&gt;Zero-overhead dimensional analysis and unit/quantity manipulation and conversion, from Matthias Schabel and Steven Watanabe&lt;br /&gt;Unordered: &lt;br /&gt;Unordered associative containers, from Daniel James. &lt;br /&gt;&lt;/BLOCKQUOTE&gt;&lt;br /&gt;興味のある人は見てみましょう．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-7288129694948657594?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/7288129694948657594/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=7288129694948657594' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7288129694948657594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/7288129694948657594'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/08/boost136.html' title='boost1.36がリリース'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-4378375898460934373</id><published>2008-08-10T14:04:00.002+09:00</published><updated>2008-08-10T14:09:58.339+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>NetBeans6.5M1</title><content type='html'>がリリースされていました(いつの間に!!)．&lt;br /&gt;&lt;br /&gt;まだベータ版ってことで日本語版ではありませんが，SunSPOT用プラグインも新しいのが使えます．&lt;br /&gt;&lt;br /&gt;この辺のページを見て試してみよう!!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.netbeans.org/"&gt;NetBeans6.5M1&lt;/a&gt;&lt;br /&gt;&lt;a href="https://netbeans-spot.dev.java.net/"&gt;java.net内のSPOTs projectのnetbeans-spotのページ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ってか，最近更新されませんな～．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-4378375898460934373?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/4378375898460934373/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=4378375898460934373' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/4378375898460934373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/4378375898460934373'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/08/netbeans65m1.html' title='NetBeans6.5M1'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5787559702336074748</id><published>2008-07-01T19:14:00.002+09:00</published><updated>2008-07-01T19:53:29.834+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ヒトリゴト'/><title type='text'>プログラミング環境?</title><content type='html'>これはヒトリゴト(笑)&lt;br /&gt;&lt;br /&gt;最近，研究室の後輩がVSでerf(),erfc()が使えないと騒いでいたそうな．&lt;br /&gt;確かに，VSは何故かerf()などはない(自分がB4の時も同様の事件があった)．&lt;br /&gt;&lt;br /&gt;先輩としてはVSよりはgccなんかを使ってほしいのでMinGWの利用を勧めてるのだけれども，今度は，VSでソース書いて，コマンドプロンプトでgcc使ってコンパイルする新勢力が!!&lt;br /&gt;個人的にはMeadow+MinGW or NetBeans+MinGWを勧めてるんだけども(笑)&lt;br /&gt;&lt;br /&gt;しかし，まぁ，その後輩たちVS用のBoostも入れてるわけで．．．&lt;br /&gt;実は&lt;b&gt;&lt;font size=+2 color="red"&gt;Boostにerf，erfcがある&lt;/font&gt;&lt;/b&gt;のでVSでもerf,erfcは使えるのだ!!&lt;br /&gt;&lt;br /&gt;・・・・これを言うとVSが流行りそうだし，どうしたもんかと思う今日この頃．．．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5787559702336074748?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5787559702336074748/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5787559702336074748' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5787559702336074748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5787559702336074748'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/07/blog-post.html' title='プログラミング環境?'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-2251809572876554848</id><published>2008-06-28T19:04:00.004+09:00</published><updated>2008-06-28T20:10:16.663+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>グラフ作成</title><content type='html'>センサーの情報をグラフ化したいと思い，色々調べたところ&lt;a href="http://www.jfree.org/jfreechart/"&gt;JFreeChart&lt;/a&gt;というものを見つけました．&lt;br /&gt;これを使って，SunSPOT の加速度をリアルタイムでグラフ化してみました．&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_RWQp0ubXL00/SGYbxSA0P3I/AAAAAAAAAAM/RxgizUGmgcg/s1600-h/accel_graph.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_RWQp0ubXL00/SGYbxSA0P3I/AAAAAAAAAAM/RxgizUGmgcg/s320/accel_graph.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5216887751818100594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;こんな感じのグラフを簡単に表示することが出来ました．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-2251809572876554848?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/2251809572876554848/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=2251809572876554848' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2251809572876554848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2251809572876554848'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/06/blog-post_28.html' title='グラフ作成'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_RWQp0ubXL00/SGYbxSA0P3I/AAAAAAAAAAM/RxgizUGmgcg/s72-c/accel_graph.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-2126604896518764616</id><published>2008-06-14T19:15:00.006+09:00</published><updated>2008-06-14T19:30:43.104+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>リモートSunSPOTのアドレスのエリアス</title><content type='html'>SunSPOTにリモートでdeployするときとかはアプリケーションホームディレクトリのコマンドプロンプトで&lt;br /&gt;&lt;pre class="prettyprint"&gt;&gt; ant -DremoteId=0014.4F01.xxxx.xxxx deploy&lt;br /&gt;&lt;/pre&gt;なんてするわけですが，アドレスをいちいち書くのは面倒くさい．&lt;br /&gt;そこで，ユーザホームディレクトリ（だいたいC:\Documents and Setting\hoge\，.sunspot.propertiesなんかのファイルがあるとこ）にspot.namesというファイルを作り&lt;br /&gt;&lt;pre class="prettyprint"&gt;boo=0014.4F01.xxxx.xxxx&lt;br /&gt;nakamoto=0014.4F01.yyyy.yyyy&lt;br /&gt;&lt;/pre&gt;などと書いておき，&lt;br /&gt;&lt;pre class="prettyprint"&gt;&gt; ant -DremoteId=boo deploy&lt;br /&gt;&lt;/pre&gt;なんてやり方でできてちょっと幸せ．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-2126604896518764616?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/2126604896518764616/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=2126604896518764616' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2126604896518764616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2126604896518764616'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/06/sunspot.html' title='リモートSunSPOTのアドレスのエリアス'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8103817581210285977</id><published>2008-06-08T17:41:00.006+09:00</published><updated>2008-06-08T18:09:18.314+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>最新Demoを入手しよう!!</title><content type='html'>&lt;a href="http://www.java.net/"&gt;java.net&lt;/a&gt;にSunSPOTのプロジェクトがあり，最新のDemoをSubversionで落とせます．&lt;br /&gt;こっちの方にはSPOTManagerでダウンロードしたDemoには含まれないものもありますので，落としておいて損はないでしょう．&lt;br /&gt;&lt;br /&gt;というわけでいつも通りメモ．SunSPOTに限らず，SubversionやCVSでファイルを配布しているプロジェクトは世界中に数多くあります(boostとかもそーみたい)．&lt;br /&gt;&lt;br /&gt;&lt;a href="https://spots.dev.java.net/"&gt;ここ&lt;/a&gt;がSunSPOTプロジェクトのページです．&lt;br /&gt;&lt;br /&gt;&lt;b&gt;準備1&lt;/b&gt;&lt;br /&gt;取りあえず，無料登録なのでアカウント作っておいて下さい．&lt;br /&gt;&lt;br /&gt;&lt;b&gt;準備2&lt;/b&gt;&lt;br /&gt;Subversionクライアントのインストール．今回は，Windows用のクライアントソフトの中でもGUI操作可能で使いやすいTortoiseSVNを使ってみましょう．&lt;a href="http://www.gside.org/Gentoo/subversion/subversion_client.html"&gt;この辺&lt;/a&gt;見ながら適当にインストールしてください．必要なら日本語化もしときましょう．&lt;br /&gt;&lt;br /&gt;以上の準備ができたら，早速ダウンロードしてみましょう．&lt;br /&gt;&lt;br /&gt;&lt;b&gt;手順1．保存先ディレクトリの作成&lt;/b&gt;&lt;br /&gt;Demoのダウンロード先ディレクトリを作成します．今回は，C:\tmp\spotdemoとします．&lt;br /&gt;&lt;br /&gt;&lt;b&gt;手順2．チェックアウト&lt;/b&gt;&lt;br /&gt;チェックアウトしましょう．下図の様にspotdemosフォルダ上で右クリックして，メニューからSVNチェックアウトを選択します．&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_0LSim19fCnk/SEuevMmPa-I/AAAAAAAAAKk/R2CQtGX5iaQ/s1600-h/sub1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_0LSim19fCnk/SEuevMmPa-I/AAAAAAAAAKk/R2CQtGX5iaQ/s320/sub1.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5209431927656770530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;すると，下図のようなウィンドウが開きますので，図を参考にURLに&lt;br /&gt;https://spots-sdk-demos.dev.java.net/svn/spots-sdk-demos/trunk&lt;br /&gt;と入力してOKをクリックします．&lt;br /&gt;しばらく待つと，認証を求められますので，作成したアカウントとパスワードを入力してください．ダウンロードが始まります．&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_0LSim19fCnk/SEue79r80hI/AAAAAAAAAKs/3CnBG_2bvh0/s1600-h/sub2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_0LSim19fCnk/SEue79r80hI/AAAAAAAAAKs/3CnBG_2bvh0/s320/sub2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5209432146992484882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以上でダウンロードが完了しました．&lt;br /&gt;また，これらのファイルは日々更新されていますので定期的に更新しましょう．やり方としては，spotdemos上で右クリックして，メニューからSVN更新です(下図)．&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_0LSim19fCnk/SEugm3njIfI/AAAAAAAAAK0/Yn79j7ydHdk/s1600-h/sub3.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_0LSim19fCnk/SEugm3njIfI/AAAAAAAAAK0/Yn79j7ydHdk/s320/sub3.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5209433983609414130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;以上!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8103817581210285977?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8103817581210285977/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8103817581210285977' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8103817581210285977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8103817581210285977'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/06/demo.html' title='最新Demoを入手しよう!!'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_0LSim19fCnk/SEuevMmPa-I/AAAAAAAAAKk/R2CQtGX5iaQ/s72-c/sub1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-3254324732656336927</id><published>2008-06-07T15:53:00.002+09:00</published><updated>2008-06-07T15:58:19.348+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>コマンドラインでホストアプリケーション</title><content type='html'>コマンドラインでホストアプリケーションの実行方法について&lt;br /&gt;まず，netbeansでホストアプリケーションを作成します．&lt;br /&gt;次に，コマンドラインで作成したホストアプリケーションのディレクトリに移動し，&lt;br /&gt;ant host-compile&lt;br /&gt;と打ち込みます．すると，ホスト用のアプリがコンパイルされます．&lt;br /&gt;そして，&lt;br /&gt;ant host-run&lt;br /&gt;と打ち込むと，作成したホストアプリケーションが実行されます．&lt;br /&gt;＊SunSPOTが接続されていないと実行されません！&lt;br /&gt;以上！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-3254324732656336927?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/3254324732656336927/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=3254324732656336927' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3254324732656336927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3254324732656336927'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/06/blog-post.html' title='コマンドラインでホストアプリケーション'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-6188004662590374514</id><published>2008-05-27T21:47:00.009+09:00</published><updated>2008-05-29T16:29:23.104+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>SunSPOTプロジェクトにもjavadocを．．．</title><content type='html'>お気づきの方もいるかと思いますが，現在のNetBeans用SunSPOTプラグインはバグがあります(＋使い勝手が悪い・・)．一番大きな問題として，プラグインが生成するMANIFEST.MFが間違っているということが挙げられます．&lt;br /&gt;&lt;br /&gt;もう一つ自分が気になることとしては，何故かNetBeans上でSunSPOTプロジェクトにjavadoc生成が見当たらないことです．&lt;br /&gt;どーいうことかって言うと，NetBeansで作成したプロジェクトには下図のように"javadocを生成"コマンドが用意されているのに，な・ぜ・か，SunSPOTプロジェクトだとjavadocの生成ができないのです。&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_0LSim19fCnk/SDwEWJg0JjI/AAAAAAAAAKU/oqHIm4leY40/s1600-h/080627.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_0LSim19fCnk/SDwEWJg0JjI/AAAAAAAAAKU/oqHIm4leY40/s320/080627.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5205040047890638386" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;そんなわけで，原因を調べてみたところ，プラグインの吐き出すbuild.xml(プロジェクトフォルダ内にあるヤツ)は{$sunspot.home}/build.xmlをimportしていて，そのbuild.xmlにtargetとしてjavadocが書かれていないことが判明!!．&lt;br /&gt;&lt;br /&gt;そんなわけで，適当に書き足しましょう．&lt;br /&gt;SunSPOT sdkをインストールしたフォルダにあるbuild.xmlの最後に以下の要素を書き足します．この時，&amp;lt;/project&amp;gt;よりも後ろに書かないように!!&lt;br /&gt;&lt;pre class="prettyprint"&gt;&amp;lt;target name="javadoc"&amp;gt;&lt;br /&gt;  &amp;lt;delete dir="./javadoc" /&amp;gt;&lt;br /&gt;  &amp;lt;mkdir dir="./javadoc" /&amp;gt;&lt;br /&gt;  &amp;lt;javadoc sourcepath="src" destdir="./javadoc" /&amp;gt;&lt;br /&gt;&amp;lt;/target&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;最低限の設定な上に，ソースフォルダ名とかべた書きでカッコ悪いですが，これで一応動きます．&lt;br /&gt;最後に，NetBeansにjavadocタスクの存在を教えてあげましょう．&lt;br /&gt;プロジェクトのプロパティ画面を開いて，構築と実行の"javadocを生成"のトコロにjavadocと書き足しましょう(下図)．なんかエラーが出るけど気にしない(笑)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_0LSim19fCnk/SDwEbZg0JkI/AAAAAAAAAKc/rCrknHRU1lQ/s1600-h/080627_2.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_0LSim19fCnk/SDwEbZg0JkI/AAAAAAAAAKc/rCrknHRU1lQ/s320/080627_2.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5205040138084951618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;以上でSunSPOTプロジェクトでもjavadocを吐けるようになりました．&lt;br /&gt;&lt;br /&gt;&lt;b&gt;****追記****&lt;/b&gt;&lt;br /&gt;今回設定したjavadoc生成なんて，コマンドラインでやっても大した事ないので，メンドクサイだけかもしれません．&lt;br /&gt;もうちょっと工夫したほうがいいかもしれない(クラスパスとかね)と思ったけど，今回はココまで．&lt;br /&gt;ちなみに私はDoxygen派です!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-6188004662590374514?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/6188004662590374514/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=6188004662590374514' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6188004662590374514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6188004662590374514'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/netbeanssunspotjavadoc.html' title='SunSPOTプロジェクトにもjavadocを．．．'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_0LSim19fCnk/SDwEWJg0JjI/AAAAAAAAAKU/oqHIm4leY40/s72-c/080627.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5031872415283528740</id><published>2008-05-26T17:40:00.003+09:00</published><updated>2008-05-26T18:03:28.146+09:00</updated><title type='text'>SunSPOTでRSSIをとる</title><content type='html'>&lt;span style="font-weight:bold;"&gt;指針&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;サーバ&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;サーバはデフォルト送信電力で送る（多分フルパワー）&lt;/li&gt;&lt;br /&gt;&lt;li&gt;クライアントの送信電力を指定&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;クライアント&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;サーバに指定された送信電力で返信&lt;/li&gt;&lt;br /&gt;&lt;li&gt;受信時RSSI取得しその値をサーバに返す&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;サーバ&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;返信のRSSIを取得&lt;/li&gt;&lt;br /&gt;&lt;li&gt;繰り返し&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;サーバ側&lt;/span&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;package org.sunspotworld;&lt;br /&gt;&lt;br /&gt;import com.sun.spot.peripheral.Spot;&lt;br /&gt;import com.sun.spot.io.j2me.radiostream.*;&lt;br /&gt;import com.sun.spot.io.j2me.radiogram.*;&lt;br /&gt;import com.sun.spot.peripheral.NoRouteException;&lt;br /&gt;import com.sun.spot.peripheral.radio.IRadioPolicyManager;&lt;br /&gt;import com.sun.spot.util.*;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;import javax.microedition.midlet.MIDlet;&lt;br /&gt;import javax.microedition.midlet.MIDletStateChangeException;&lt;br /&gt;&lt;br /&gt;public class RSSIServer extends MIDlet {&lt;br /&gt;&lt;br /&gt;    private final String toAddress = "0014.4F01.xxxx.xxxx";&lt;br /&gt;    private final String port = "100";&lt;br /&gt;    private RadiogramConnection conn = null;&lt;br /&gt;    private Radiogram dgs = null;&lt;br /&gt;    private Radiogram dgr = null;&lt;br /&gt;    private IRadioPolicyManager rpm = null;&lt;br /&gt;    &lt;br /&gt;    protected void startApp() throws MIDletStateChangeException {&lt;br /&gt;        System.out.println("Starting Server");&lt;br /&gt;        new BootloaderListener().start();   // monitor the USB (if connected) and recognize commands from host&lt;br /&gt;&lt;br /&gt;        int rssi = 0;&lt;br /&gt;        int rssiReply = 0;&lt;br /&gt;        int outputPower = 0;&lt;br /&gt;        int outputPowerReply = -25; // クライアント出力電力の初期値 (理論上-32からいける）&lt;br /&gt;        int cntNoRoute = 0;&lt;br /&gt;        &lt;br /&gt;        while(true){&lt;br /&gt;            try {&lt;br /&gt;                rpm = Spot.getInstance().getRadioPolicyManager();&lt;br /&gt;                conn = (RadiogramConnection) Connector.open("radiogram://" + toAddress + ":" + port);&lt;br /&gt;                dgs = (Radiogram)conn.newDatagram(conn.getMaximumLength());&lt;br /&gt;                dgr = (Radiogram)conn.newDatagram(conn.getMaximumLength());&lt;br /&gt;                &lt;br /&gt;                outputPower = rpm.getOutputPower(); // 設定済みの出力電力取得&lt;br /&gt;&lt;br /&gt;                try {&lt;br /&gt;                    dgs.reset();&lt;br /&gt;                    dgs.writeInt(outputPowerReply); // 返信用の出力電力を送る&lt;br /&gt;                    conn.send(dgs); // 送る to クライアント&lt;br /&gt;                    conn.receive(dgr); // 受信&lt;br /&gt;                    rssiReply = dgr.readInt(); // RSSI@クライアントの取得&lt;br /&gt;                    rssi = dgr.getRssi(); // RSSI@サーバの取得&lt;br /&gt;                    System.out.println("outpower@s="+outputPower+" rssi@c="+rssiReply+" outpower@c="+outputPowerReply+" rssi@s="+rssi);&lt;br /&gt;                } catch (NoRouteException e) {&lt;br /&gt;                    System.out.println("No Route to "+toAddress);&lt;br /&gt;                    cntNoRoute++;&lt;br /&gt;                    if(cntNoRoute == 3){&lt;br /&gt;                        notifyDestroyed();                      &lt;br /&gt;                    }&lt;br /&gt;                } catch (Exception e) {&lt;br /&gt;                    e.printStackTrace();&lt;br /&gt;                } finally {&lt;br /&gt;                    conn.close();&lt;br /&gt;                }&lt;br /&gt;            } catch (Exception e) {&lt;br /&gt;                e.printStackTrace();&lt;br /&gt;            }&lt;br /&gt;            outputPowerReply++; // クライアントの送信電力を１ずつ上げてもらう &lt;br /&gt;            if(outputPowerReply &gt;= 31){&lt;br /&gt;                outputPowerReply = -25;&lt;br /&gt;            }&lt;br /&gt;            Utils.sleep(1000);&lt;br /&gt;        }&lt;br /&gt;//        notifyDestroyed();                      // cause the MIDlet to exit&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void pauseApp() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;クライアント側&lt;/span&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;package org.sunspotworld;&lt;br /&gt;&lt;br /&gt;import com.sun.spot.peripheral.Spot;&lt;br /&gt;import com.sun.spot.peripheral.radio.IRadioPolicyManager;&lt;br /&gt;import com.sun.spot.io.j2me.radiostream.*;&lt;br /&gt;import com.sun.spot.io.j2me.radiogram.*;&lt;br /&gt;import com.sun.spot.peripheral.NoRouteException;&lt;br /&gt;import com.sun.spot.util.*;&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;import javax.microedition.midlet.MIDlet;&lt;br /&gt;import javax.microedition.midlet.MIDletStateChangeException;&lt;br /&gt;&lt;br /&gt;public class RSSIClient extends MIDlet {&lt;br /&gt;&lt;br /&gt;    private final String port  = "100";&lt;br /&gt;    private IRadioPolicyManager rpm = null;&lt;br /&gt;    private RadiogramConnection conn = null;&lt;br /&gt;    private Radiogram rg = null;&lt;br /&gt;    private Radiogram rgReply = null;&lt;br /&gt;&lt;br /&gt;    protected void startApp() throws MIDletStateChangeException {&lt;br /&gt;        System.out.println("Starting Client");&lt;br /&gt;        new BootloaderListener().start();   // monitor the USB (if connected) and recognize commands from host&lt;br /&gt;&lt;br /&gt;        rpm = Spot.getInstance().getRadioPolicyManager();&lt;br /&gt;        &lt;br /&gt;        int rssi = 0;&lt;br /&gt;        int outputPower = 0;&lt;br /&gt;        while (true) {&lt;br /&gt;            try {&lt;br /&gt;                conn = (RadiogramConnection)Connector.open("radiogram://:" + port);&lt;br /&gt;                rg = (Radiogram)conn.newDatagram(conn.getMaximumLength());&lt;br /&gt;                rgReply = (Radiogram)conn.newDatagram(conn.getMaximumLength());&lt;br /&gt;&lt;br /&gt;                try {&lt;br /&gt;                    conn.receive(rg); // 受信&lt;br /&gt;                    rssi = rg.getRssi(); // RSSI@クライアント取得&lt;br /&gt;                    outputPower = rg.readInt(); // 返信用出力電力取得 from サーバ&lt;br /&gt;                    rpm.setOutputPower(outputPower); // 返信用出力電力設定@クライアント&lt;br /&gt;                    System.out.println("true output power = "+rpm.getOutputPower());&lt;br /&gt;                    rgReply.reset();&lt;br /&gt;                    rgReply.setAddress(rg); // 返信用アドレス設定&lt;br /&gt;                    rgReply.writeInt(rssi); // 取得RSSI@クライアントを返信 to サーバ&lt;br /&gt;                    conn.send(rgReply); // サーバへ返信&lt;br /&gt;                } catch (NoRouteException e) {&lt;br /&gt;                    e.printStackTrace();&lt;br /&gt;                    notifyDestroyed();&lt;br /&gt;                } finally {&lt;br /&gt;                    conn.close();&lt;br /&gt;                }&lt;br /&gt;            } catch (Exception e) {&lt;br /&gt;                e.printStackTrace();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        //notifyDestroyed();                      // cause the MIDlet to exit&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void pauseApp() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;サーバ動作例&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_f7edJsUPosA/SDp8ZWPlusI/AAAAAAAAAAM/4ZBD-lYoc9E/s1600-h/s_fig.bmp"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_f7edJsUPosA/SDp8ZWPlusI/AAAAAAAAAAM/4ZBD-lYoc9E/s320/s_fig.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5204609094289570498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;クライアント動作例&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_f7edJsUPosA/SDp8lWPlutI/AAAAAAAAAAU/CRXI72lvmRg/s1600-h/c_fig.bmp"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_f7edJsUPosA/SDp8lWPlutI/AAAAAAAAAAU/CRXI72lvmRg/s320/c_fig.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5204609300448000722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;ナゾ&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;送信電力の指定が-32から-3までしかできない（-3以上大きくしても無視される，+31以上になると怒られる，-32だと小さすぎて2つのSPOTをくっつけても通信不可能）&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5031872415283528740?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5031872415283528740/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5031872415283528740' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5031872415283528740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5031872415283528740'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/sunspotrssi.html' title='SunSPOTでRSSIをとる'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_f7edJsUPosA/SDp8ZWPlusI/AAAAAAAAAAM/4ZBD-lYoc9E/s72-c/s_fig.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-6933620959524479001</id><published>2008-05-24T15:44:00.005+09:00</published><updated>2008-05-24T15:54:19.327+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boost'/><title type='text'>boost 1.35.0がリリース</title><content type='html'>boost 1.35.0がリリース(2008/3/29)されてました．&lt;br /&gt;http://www.boost.org/users/news/version_1_35_0&lt;br /&gt;特殊関数(Besselとかerfcとか)が加えられたので利用価値あり．&lt;br /&gt;サンプル&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;#include &amp;le;boost/math/special_functions/bessel.hpp&amp;gt;&lt;br /&gt;int&lt;br /&gt;main(int argc,char** argv)&lt;br /&gt;{&lt;br /&gt;  for(double i=-20;i&lt;=20;i+=0.01)&lt;br /&gt;    printf("%f\t%f\n",i,boost::math::cyl_bessel_j(0,i));&lt;br /&gt;  &lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-6933620959524479001?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/6933620959524479001/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=6933620959524479001' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6933620959524479001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6933620959524479001'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/boost-1350.html' title='boost 1.35.0がリリース'/><author><name>長介</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-3779029206110337824</id><published>2008-05-21T17:49:00.017+09:00</published><updated>2008-05-21T21:58:13.143+09:00</updated><title type='text'>コマンドラインで実機を操作してみました！！</title><content type='html'>今日はコマンドラインで実機にアプリを乗せ，実行する方法を紹介します．&lt;br /&gt;使用するコマンドは[ant deploy][ant run]のみです．それでは順を追って説明します．&lt;br /&gt;まず，アプリを乗せたい端末をPCに接続します．また，コマンドライン上で乗せたいアプリのプロジェクトフォルダに移動して下さい．&lt;br /&gt;ex.　　cd C:\Sun\SunSPOT\Demos\AirText&lt;br /&gt;ここで，コマンド[ant deploy]を実行．その後コマンド[ant run]を実行．以上です！&lt;br /&gt;&lt;br /&gt;これだけでは記事として寂しいので，Basestationを用いてリモートでターゲット端末にアプリを乗せる方法も紹介したいと思います．&lt;br /&gt;まず，BasestationをPCに接続します(厳密にはbasestationで無くても可能)．また，コマンドライン上で乗せたいアプリのプロジェクトフォルダに移動して下さい．&lt;br /&gt;ここで，[ant info]を実行して下さい．現在PCに接続されている端末の情報が表示されます．&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_EDjKR4QR7Lk/SDQX1BXMYOI/AAAAAAAAAAc/LSM4JEhh5iQ/s1600-h/startbasestation.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_EDjKR4QR7Lk/SDQX1BXMYOI/AAAAAAAAAAc/LSM4JEhh5iQ/s400/startbasestation.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5202809669185986786" /&gt;&lt;/a&gt;&lt;br /&gt;上図の赤線のようにBasestationモードに設定されていることを確認して下さい．もし，&lt;br /&gt;Configured to run the built-in dummy application&lt;br /&gt;をという設定になっている場合は，コマンド[ant startbasestation]を実行して下さい．Basestationモードに切り替わるはずです(一度Basestationモードにした端末は[ant upgrade]をしないとモードを元に戻せないかもしれないのでお気を付け下さい)．&lt;br /&gt;それでは，ターゲット端末にアプリを流し込みたいと思います．&lt;br /&gt;コマンド[ant -DremoteID=0014.4F01.????.???? deploy](????.????はターゲット端末の裏側に記載されているアドレス)を実行します．その後コマンド[ant -DremoteID=0014.4F01.????.???? run]を実行して下さい．上手く動作しましたか？&lt;br /&gt;&lt;br /&gt;もし，動作が上手くいかない場合は「端末をリブートしてコマンドを実行」という作業を何度か行ってみて下さい．これで動く場合もあります．それでも失敗するようなら，OTAやOwner Keyの設定を変更する必要があるかもしれません．よく分からない場合はとりあえず端末をupgradeすることをお勧めします．大抵のエラーはこれでどうにかなるので・・・．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-3779029206110337824?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/3779029206110337824/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=3779029206110337824' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3779029206110337824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3779029206110337824'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/blog-post_21.html' title='コマンドラインで実機を操作してみました！！'/><author><name>BOO</name><uri>http://www.blogger.com/profile/00666184292591227567</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_EDjKR4QR7Lk/SDQX1BXMYOI/AAAAAAAAAAc/LSM4JEhh5iQ/s72-c/startbasestation.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-2660649072066034260</id><published>2008-05-20T00:25:00.002+09:00</published><updated>2008-05-20T00:39:01.304+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>Sensorを使ってみた</title><content type='html'>5月10日の記事【通信サンプル】と5月16日の記事【Sensorを使おう】を参考にして，&lt;br /&gt;加速度センサーのデータを他のSunSPOTにブロードキャストで送信するプログラムを作成．&lt;br /&gt;5月10日の送信本体classを以下のように書き換える．&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;package org.sunspotworld;&lt;br /&gt;&lt;br /&gt;import com.sun.spot.peripheral.Spot;&lt;br /&gt;import com.sun.spot.sensorboard.EDemoBoard;&lt;br /&gt;import com.sun.spot.sensorboard.peripheral.ITriColorLED;&lt;br /&gt;import com.sun.spot.io.j2me.radiostream.*;&lt;br /&gt;import com.sun.spot.io.j2me.radiogram.*;&lt;br /&gt;import com.sun.spot.util.*;&lt;br /&gt;import com.sun.spot.sensorboard.peripheral.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.lang.Thread;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;import javax.microedition.midlet.MIDlet;&lt;br /&gt;import javax.microedition.midlet.MIDletStateChangeException;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * SunSPOT通信テスト用アプリケーション(送信側)&lt;br /&gt; * ひたすら"Hello World"の文字列をブロードキャストし続ける&lt;br /&gt; */&lt;br /&gt;public class StartApplication extends MIDlet {&lt;br /&gt;    private DatagramSender sender; //!&lt; 通信を行う&lt;br /&gt;    private final String PROTOCOL ="radiogram://broadcast:230"; //!&lt; 通信プロトコル&lt;br /&gt;    private IAccelerometer3D Accele = EDemoBoard.getInstance().getAccelerometer();//加速度センサーのインスタンス作成&lt;br /&gt;    private double acc;//加速度用の変数&lt;br /&gt;    /**&lt;br /&gt;     * アプリ開始時に呼ばれる．&lt;br /&gt;     * @throws javax.microedition.midlet.MIDletStateChangeException&lt;br /&gt;     */&lt;br /&gt;    protected void startApp() throws MIDletStateChangeException{&lt;br /&gt;        try {&lt;br /&gt;            sender = new DatagramSender(PROTOCOL, 31, 3);&lt;br /&gt;            int i = 0;               &lt;br /&gt;&lt;br /&gt;            while(true){&lt;br /&gt;　　　　　　　　//2秒待つ(これをやらないと大量に出力されるため)&lt;br /&gt;                try{&lt;br /&gt;                    Thread.sleep(2000);&lt;br /&gt;                } catch (InterruptedException e){&lt;br /&gt;                    e.printStackTrace();&lt;br /&gt;                }&lt;br /&gt;　　　　　　　　//x軸の加速度をaccに代入する&lt;br /&gt;                acc = Accele.getAccelX();&lt;br /&gt;　　　　　　　　//加速度(acc;double)を文字列に変換して，sender.sendに渡す&lt;br /&gt;                sender.send("Hello:" + Integer.toString(i)+"  " + Double.toString(acc));&lt;br /&gt;                i++;&lt;br /&gt;            }&lt;br /&gt;        } catch (IOException ex) {&lt;br /&gt;            ex.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    protected void pauseApp() {&lt;br /&gt;        // This is not currently called by the Squawk VM&lt;br /&gt;    }&lt;br /&gt;    protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;こんな感じです．&lt;br /&gt;demoのソースを見ればセンサーの使い方は大体わかると思います．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-2660649072066034260?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/2660649072066034260/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=2660649072066034260' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2660649072066034260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2660649072066034260'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/sensor_20.html' title='Sensorを使ってみた'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-4024576675143921574</id><published>2008-05-16T21:23:00.007+09:00</published><updated>2008-05-16T21:51:42.993+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>Sensorを使おう!!</title><content type='html'>相変わらず，ノラリクラリとSunSPOTで遊んでいます．&lt;br /&gt;&lt;br /&gt;今回はセンサーの使い方メモ．&lt;br /&gt;SunSPOTのeDemoボードには，&lt;br /&gt;- 照度センサー&lt;br /&gt;- 3軸加速度センサー&lt;br /&gt;- 温度センサー&lt;br /&gt;が付いています．&lt;br /&gt;当然ながら開発者はこれらのセンサーから，値を取得したり，値の変化イベントを拾ったり出来ます．&lt;br /&gt;&lt;br /&gt;そんなわけで，やり方メモ．今回は照度センサーを例にしますが，別のセンサーでも大差ありません．また，スイッチなんかも全て同じような使い方です(これがオブジェクト指向の良いトコロ)．&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1．照度センサーのインスタンス作成．&lt;br /&gt;これは，EDemoBoard.getInstance().get～でいけます．～の部分はセンサーによって異なります．例えばこんな感じ．&lt;br /&gt;&lt;pre class="prettyprint"&gt;ILightSensor Light = EDemoBoard.getInstance().getLightSensor();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2．センサーから現在の値を取得．&lt;br /&gt;センサーが現在観察している値を取得するメソッドです．&lt;br /&gt;但し，こいつはセンサーごとにメソッド名・引数共に異なりますので注意!!&lt;br /&gt;&lt;pre class="prettyprint"&gt;Light.getAverageValue()&lt;br /&gt;// 又は&lt;br /&gt;Light.getAverageValue(int n)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3．イベントを拾う&lt;br /&gt;Javaプログラマはおなじみのイベントハンドラの登録です．&lt;br /&gt;手順としては，&lt;br /&gt; -1- イベントハンドラの作成と登録&lt;br /&gt; -2- 閾値(Threshold)の設定&lt;br /&gt; -3- 閾値イベントの有効化&lt;br /&gt;です．&lt;br /&gt;注意事項としては，-3-で&lt;b&gt;有効化した閾値イベントの有効期限は1度だけです．&lt;/b&gt;どーいうことかというと，閾値イベントを有効にしておけば，値が閾値を越えたときに登録したイベントハンドラのメソッドが呼ばれます．しかし，そこで閾値イベントは無効になり，次回からは閾値を超えてもイベントハンドラは呼ばれません．これを避けるためには，イベントハンドラ内で再び閾値イベントを有効にする必要があります．&lt;br /&gt;&lt;br /&gt;ま，これは実際にソースを見たほうが早いでしょう．&lt;br /&gt;&lt;pre class="prettyprint"&gt;// イベントハンドラ登録&lt;br /&gt;Light.addILightSensorThresholdListener(new ILightSensorThresholdListener() {&lt;br /&gt;  // 閾値を越える変化があった時に呼び出される．&lt;br /&gt;  public void thresholdExceeded(ILightSensor light, int val) {&lt;br /&gt;     System.out.println("thresholdExceeded!!");&lt;br /&gt;     System.out.println("val:" + val);&lt;br /&gt;     light.enableThresholdEvents(true); // イベント登録は毎回有効にする．&lt;br /&gt;  }&lt;br /&gt;  // 閾値が変更されたとき呼び出される&lt;br /&gt;  public void thresholdChanged(ILightSensor light, int low, int high) {&lt;br /&gt;     System.out.println("thresholdChanged!!");&lt;br /&gt;     System.out.println("Low:" + low + "\tHigh:" + high);&lt;br /&gt;  }&lt;br /&gt;});&lt;br /&gt;Light.setThresholds(20, 60);       // 閾値の設定(直後にthresholdChangedが呼ばれる&lt;br /&gt;Light.enableThresholdEvents(true);// イベント登録を有効化&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;ソースから分かるように，ThresholdListenerは2つのメソッドを持ちます．1つは，閾値を越えたときに呼ばれるメソッド．もう1つは，閾値が変更されたときに呼ばれるメソッドです．これは，他のセンサーにも共通なようです．&lt;br /&gt;&lt;br /&gt;&lt;b&gt;追記&lt;/b&gt;&lt;br /&gt;さっき気づいたのだけれども，SPOT ManagerのConsoleに&lt;br /&gt;&lt;pre class="prettyprint"&gt;SDK Color: "purple". Demos color: "orange". Release mismatch. Demos not installable.&lt;/pre&gt;&lt;br /&gt;のエラーが．&lt;br /&gt;確かにNetBeans上でDemo眺めてるとクラスが見つからなかったり不思議なエラーが出てたなぁと，しみじみ納得．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-4024576675143921574?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/4024576675143921574/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=4024576675143921574' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/4024576675143921574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/4024576675143921574'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/sensor.html' title='Sensorを使おう!!'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-6010765164354573277</id><published>2008-05-13T21:11:00.004+09:00</published><updated>2008-05-13T21:28:33.748+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>SunSPOT用語のまとめ</title><content type='html'>SunSPOT関連で少し，用語のメモ．暇なときに書き足します・・・・多分．&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;・SunSPOT&lt;/h3&gt;&lt;br /&gt;"Sun Small Programmable Object Technology"の略．&lt;br /&gt;コイツについては今更でしょう．&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;・J2ME&lt;/h3&gt;&lt;br /&gt;"Java2 Platform Micro Edition"の略．要するに組込み用のJava規格(cf:J2SE,J2EE)．&lt;br /&gt;J2MEの環境では，アプリケーションは特定のプロファイル向けに作成されおり，プロファイルは特定のコンフィギュレーションを基本としているらしい．&lt;br /&gt;代表的なコンフィギュレーションとして，&lt;br /&gt;-CLDC&lt;br /&gt;-CDC&lt;br /&gt;があるそうな．&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;・Squawk VM&lt;/h3&gt;&lt;br /&gt;小型デバイス向けに設計されたJavaVM．J2ME CLDC 1.1に準拠．SunSPOTの上ではコイツが動いているそうな．&lt;br /&gt;このVMの特徴としては，&lt;br /&gt;-小型デバイス向け&lt;br /&gt;-OSを必要としない&lt;br /&gt;-Javaで書かれている&lt;br /&gt;-一つのVM上で複数のJavaアプリが動く&lt;br /&gt;って感じ(?)．&lt;br /&gt;最近オープンソースになったそうな．Windows上でビルドに成功した人も居るってどっかで聞きました．&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;・MIDlet&lt;/h3&gt;&lt;br /&gt;携帯電話など小型の情報端末で実行できるJavaアプリケーションの形式の一つ(っつうかクラス)．SunSPOT上で動かすアプリはMIDletクラスを継承する．&lt;br /&gt;最低限&lt;br /&gt;- startApp()&lt;br /&gt;- pauseApp()&lt;br /&gt;- destroyApp()&lt;br /&gt;は実装しましょう．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-6010765164354573277?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/6010765164354573277/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=6010765164354573277' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6010765164354573277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6010765164354573277'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/sunspot_13.html' title='SunSPOT用語のまとめ'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-6162050914509681008</id><published>2008-05-10T14:42:00.004+09:00</published><updated>2008-05-10T20:56:16.245+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>SunSpot通信サンプル</title><content type='html'>&lt;a href="http://sdc.sun.co.jp/java/series/sunspot/200804.html"&gt;この辺&lt;/a&gt;見ながら適当に作ったサンプル．&lt;br /&gt;送信側はひたすら"Hello:送信回数"をブロードキャストし続ける．受信側は受信したメッセージをコンソロールに出力し続けるだけという超シンプルなプログラムです．参考までに．．．．&lt;br /&gt;&lt;br /&gt;まずは，送信側本体&lt;br /&gt;&lt;pre class="prettyprint"&gt;package org.sunspotworld;&lt;br /&gt;&lt;br /&gt;import com.sun.spot.peripheral.Spot;&lt;br /&gt;import com.sun.spot.sensorboard.EDemoBoard;&lt;br /&gt;import com.sun.spot.sensorboard.peripheral.ITriColorLED;&lt;br /&gt;import com.sun.spot.io.j2me.radiostream.*;&lt;br /&gt;import com.sun.spot.io.j2me.radiogram.*;&lt;br /&gt;import com.sun.spot.util.*;&lt;br /&gt;import com.sun.spot.sensorboard.peripheral.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;import javax.microedition.midlet.MIDlet;&lt;br /&gt;import javax.microedition.midlet.MIDletStateChangeException;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * SunSPOT通信テスト用アプリケーション(送信側)&lt;br /&gt; * ひたすら"Hello World"の文字列をブロードキャストし続ける&lt;br /&gt; */&lt;br /&gt;public class StartApplication extends MIDlet {&lt;br /&gt;    private DatagramSender sender; //!&lt; 通信を行う&lt;br /&gt;    private final String PROTOCOL ="radiogram://broadcast:230"; //!&lt; 通信プロトコル&lt;br /&gt;    /**&lt;br /&gt;     * アプリ開始時に呼ばれる．&lt;br /&gt;     * @throws javax.microedition.midlet.MIDletStateChangeException&lt;br /&gt;     */&lt;br /&gt;    protected void startApp() throws MIDletStateChangeException{&lt;br /&gt;        try {&lt;br /&gt;            sender = new DatagramSender(PROTOCOL, 31, 3);&lt;br /&gt;            int i = 0;&lt;br /&gt;            while(true){&lt;br /&gt;                sender.send("Hello:" + Integer.toString(i));&lt;br /&gt;                i++;&lt;br /&gt;            }&lt;br /&gt;        } catch (IOException ex) {&lt;br /&gt;            ex.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    protected void pauseApp() {&lt;br /&gt;        // This is not currently called by the Squawk VM&lt;br /&gt;    }&lt;br /&gt;    protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;次はデータ送信を行うクラスの例&lt;br /&gt;&lt;pre class="prettyprint"&gt;package org.sunspotworld;&lt;br /&gt;&lt;br /&gt;import com.sun.spot.io.j2me.radiogram.RadiogramConnection;&lt;br /&gt;import com.sun.spot.peripheral.Spot;&lt;br /&gt;import java.io.IOException;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * データグラム送信用クラス&lt;br /&gt; */&lt;br /&gt;public class DatagramSender {&lt;br /&gt;    private DatagramConnection conn;//!&lt; コネクション&lt;br /&gt;    private Datagram datagram;//!&lt; データグラム&lt;br /&gt;    /**&lt;br /&gt;    * コンストラクタ&lt;br /&gt;    */&lt;br /&gt;    public DatagramSender(String protocol,int power,int maxHops)throws IOException{&lt;br /&gt;        Spot.getInstance().getRadioPolicyManager().setOutputPower(power);&lt;br /&gt;        conn = (DatagramConnection)Connector.open(protocol);&lt;br /&gt;        ((RadiogramConnection)conn).setMaxBroadcastHops(maxHops);&lt;br /&gt;        datagram = conn.newDatagram(conn.getMaximumLength());&lt;br /&gt;    }&lt;br /&gt;    /**&lt;br /&gt;    * メッセージ送信メソッド&lt;br /&gt;    */&lt;br /&gt;    public synchronized void send(String message) throws IOException{&lt;br /&gt;        datagram.reset();&lt;br /&gt;        datagram.writeUTF(message);&lt;br /&gt;        conn.send(datagram);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;最後に受け手側本体&lt;br /&gt;&lt;pre class="prettyprint"&gt;package org.sunspotworld;&lt;br /&gt;&lt;br /&gt;import com.sun.spot.sensorboard.*;&lt;br /&gt;import com.sun.spot.io.j2me.radiostream.*;&lt;br /&gt;import com.sun.spot.io.j2me.radiogram.*;&lt;br /&gt;import com.sun.spot.util.*;&lt;br /&gt;import com.sun.spot.peripheral.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;import javax.microedition.midlet.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * SunSPOT通信テスト用アプリケーション(受信側)&lt;br /&gt; * ひたすら受け取ったパケットをコンソロールに表示し続ける&lt;br /&gt; */&lt;br /&gt;public class StartApplication extends MIDlet {&lt;br /&gt;    private final String PROTOCOL = "radiogram://:230"; ///&lt; 通信プロトコル文字列&lt;br /&gt;    private DatagramConnection conn; //!&lt; コネクション&lt;br /&gt;    private Datagram datagram;//&lt; データグラム&lt;br /&gt;    /**&lt;br /&gt;     * アプリ開始時に呼ばれる&lt;br /&gt;     * @throws javax.microedition.midlet.MIDletStateChangeException&lt;br /&gt;     */&lt;br /&gt;    protected void startApp() throws MIDletStateChangeException {&lt;br /&gt;        try {&lt;br /&gt;            Spot.getInstance().getRadioPolicyManager().setOutputPower(31);&lt;br /&gt;            conn = (DatagramConnection) Connector.open(PROTOCOL);&lt;br /&gt;            datagram = conn.newDatagram(conn.getMaximumLength());&lt;br /&gt;            while (true) {&lt;br /&gt;                datagram.reset();&lt;br /&gt;                conn.receive(datagram);&lt;br /&gt;                String message = datagram.readUTF();&lt;br /&gt;                System.out.println(message);&lt;br /&gt;            }&lt;br /&gt;        } catch (IOException ex) {&lt;br /&gt;            ex.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    protected void pauseApp() {&lt;br /&gt;    }&lt;br /&gt;    protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-6162050914509681008?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/6162050914509681008/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=6162050914509681008' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6162050914509681008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6162050914509681008'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/sunspot_10.html' title='SunSpot通信サンプル'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-5563478605987259926</id><published>2008-05-09T23:12:00.007+09:00</published><updated>2008-05-09T23:21:59.556+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><title type='text'>「google-code-prettify」を導入しました</title><content type='html'>Blogger でソースコードに色付けをする - google-code-prettifyを導入しました．&lt;br /&gt;使い方は、&amp;lt;pre class="prettyprint"&amp;gt; ＃表示したいソースコード＃　&amp;lt;/pre&amp;gt;&lt;br /&gt;で色がつきます．&lt;br /&gt;注意！　&amp;lt; と&amp;gt; はそのまま打ち込むと表示エラーになるので、&lt;br /&gt;"＆lt;" "＆gt;"としてください．(但，＆は半角で)&lt;br /&gt;&lt;br /&gt;使用例&lt;br /&gt;&lt;pre class="prettyprint"&gt;#include&amp;lt; iostream &amp;gt;&lt;br /&gt;int main(){&lt;br /&gt;  cout&lt;&lt; "hello!"&lt;&lt; endl;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;こんな感じです．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-5563478605987259926?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/5563478605987259926/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=5563478605987259926' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5563478605987259926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/5563478605987259926'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/google-code-prettify.html' title='「google-code-prettify」を導入しました'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-6508663823915356381</id><published>2008-05-09T18:14:00.008+09:00</published><updated>2008-05-10T20:59:00.882+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>NetBeans6でSunSPOT開発</title><content type='html'>NetBeans6にSunSpot開発用プラグインをインストールする方法のメモ．&lt;br /&gt;&lt;p&gt;&lt;br /&gt;1．&lt;a href="http://blogs.sun.com/davidgs/entry/netbeans_6_0_and_sun"&gt;ここ&lt;/a&gt;からプラグインをダウンロード(ファイル名は変更されてなければ"com-sun-sunspot-updatecenter.nbm")．また，ダウンロードの際にIEを使うと拡張子がzipに書き換えられるので，そんな時は慌てずnbmに変更する．&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;2．NetBeans6を起動して，[ツール]メニューのプラグインをクリック．&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_0LSim19fCnk/SCQWZYEscwI/AAAAAAAAAGI/qKA0BJVjWFs/s1600-h/SS2NB601.jpg"&gt;&lt;img style="display:block; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_0LSim19fCnk/SCQWZYEscwI/AAAAAAAAAGI/qKA0BJVjWFs/s320/SS2NB601.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5198304495107076866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;3．プラグインウィンドウが起動するので，ダウンロード済みタブを選択して，プラグインの追加から，さっき落としたファイルを選択．&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_0LSim19fCnk/SCQWkYEscxI/AAAAAAAAAGQ/0_Z7W-XaJJk/s1600-h/SS2NB602.jpg"&gt;&lt;img style="display:block; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_0LSim19fCnk/SCQWkYEscxI/AAAAAAAAAGQ/0_Z7W-XaJJk/s320/SS2NB602.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5198304684085637906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;4．次に同ウィンドウの使用可能なプラグインタブを開いてカタログを再読み込みボタンを押してしばらく待てば，SunSPOT関係のプラグインが3つか4つくらい新たに増えるので，そいつにチェックを入れる．最後にインストールボタンを押せば勝手にインストールが始まる．&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_0LSim19fCnk/SCQWrIEscyI/AAAAAAAAAGY/mOwCisCK-nY/s1600-h/SS2NB603.jpg"&gt;&lt;img style="display:block; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_0LSim19fCnk/SCQWrIEscyI/AAAAAAAAAGY/mOwCisCK-nY/s320/SS2NB603.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5198304800049754914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;以上！！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-6508663823915356381?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/6508663823915356381/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=6508663823915356381' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6508663823915356381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/6508663823915356381'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/netbeans6sunspot.html' title='NetBeans6でSunSPOT開発'/><author><name>taka</name><uri>http://www.blogger.com/profile/14834808287888728076</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp1.blogger.com/_0LSim19fCnk/SCVSEoEsc0I/AAAAAAAAAHc/swnMQmqeeic/S220/neko.bmp'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_0LSim19fCnk/SCQWZYEscwI/AAAAAAAAAGI/qKA0BJVjWFs/s72-c/SS2NB601.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-261978067424026281</id><published>2008-05-08T21:19:00.003+09:00</published><updated>2008-05-09T15:50:12.692+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>今日起こったエラー②</title><content type='html'>追記&lt;br /&gt;Solarium が立ち上がらない&lt;br /&gt;-&gt;.spotworld.propertiesと.sunsopt.propertiesを消し，さらにant,SunSPOTSDKを入れなおした&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-261978067424026281?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/261978067424026281/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=261978067424026281' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/261978067424026281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/261978067424026281'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/blog-post_08.html' title='今日起こったエラー②'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-3598658405785346661</id><published>2008-05-08T21:00:00.003+09:00</published><updated>2008-05-09T15:50:44.485+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>今日起こったエラー</title><content type='html'>SPOTManagerをクリックした後，大きい実機の写真が出たのにもかかわらず開かない．&lt;br /&gt;-&gt;C:\Documents and Settings\%自分のアカウント％にある.sunspot.properties内のバックスラッシュ(/)を￥に書き換えたため起動しなくなったと考えられる&lt;br /&gt;&lt;br /&gt;Solariumで，New virtual SPOTを起動するとConsole Output中にエラーが出る&lt;br /&gt;(C:\Sun\SunSPOT\sdk/lib/squawk.suiteがない！)&lt;br /&gt;-&gt;ないので， (C:\Sun\SunSPOT\sdk\bin\squawk.suite)からコピーする。&lt;br /&gt;&lt;br /&gt;エミュレータでDemoが動かない&lt;br /&gt;-&gt;.sunsupot.propertiesを確認する&lt;br /&gt;デフォルトは(sunspot.home=C:/Program Files/Sun/SunSPOT/sdk)&lt;br /&gt;なので，/Program Filesを消す&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-3598658405785346661?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/3598658405785346661/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=3598658405785346661' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3598658405785346661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/3598658405785346661'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/blog-post.html' title='今日起こったエラー'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-905407927285301849</id><published>2008-05-07T16:20:00.001+09:00</published><updated>2008-05-09T15:51:08.574+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>SunSpot実機にプログラムを落とす</title><content type='html'>***SunSpot実機にプログラムを落とす&lt;br /&gt;&lt;br /&gt;それぞれを接続してドライバをインストールする．&lt;br /&gt;(ソフトウェアを自動的に選択でいけるはず)&lt;br /&gt;いけない場合はCD-ROMから入れる．&lt;br /&gt;&lt;br /&gt;SunSPOTManagerを開き，おのおのをUpgradeする．&lt;br /&gt;親機&lt;br /&gt;1.Upgradeを選択&lt;br /&gt;2.OTAcommand-&gt;EnableOTA comand serverを選択&lt;br /&gt;3.BaseStation-&gt;Start Basestationを選択&lt;br /&gt;&lt;br /&gt;子機&lt;br /&gt;Upgradeを選択&lt;br /&gt;&lt;br /&gt;再起動する．&lt;br /&gt;&lt;br /&gt;親機を接続し，SunSPOTManagerを開く&lt;br /&gt;Solarium-&gt;Slariumを選択する&lt;br /&gt;子機が表示されます&lt;br /&gt;*表示されないとき&lt;br /&gt;・子機の電源が入っているか確認&lt;br /&gt;・Discovery-&gt;Discovery Sun Spotsを選択&lt;br /&gt;・再起動してみる&lt;br /&gt;・親機を接続し，&lt;br /&gt;　OTAcommand-&gt;EnableOTA comand serverを選択&lt;br /&gt;　BaseStation-&gt;Start Basestationを選択&lt;br /&gt;・一からやり直す&lt;br /&gt;&lt;br /&gt;子機にプログラムを入れる&lt;br /&gt;子機上で右クリック-&gt;Deploy a MIDlet bundleを選択&lt;br /&gt;&lt;br /&gt;Choose...を押し【再生ボタン】ぽい印がついている&lt;br /&gt;ディレクトリを選択する&lt;br /&gt;Startを選択-&gt;1:～を選択する&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-905407927285301849?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/905407927285301849/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=905407927285301849' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/905407927285301849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/905407927285301849'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/sunspot_07.html' title='SunSpot実機にプログラムを落とす'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-8158406104627834115</id><published>2008-05-06T17:50:00.002+09:00</published><updated>2008-05-09T15:51:29.406+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sunspot'/><title type='text'>SunSpot インストール</title><content type='html'>詳しくは&lt;br /&gt;&lt;a href="http://blogs.sun.com/machida/"&gt;Shuichi Machida's Weblog : Weblog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;SunSPOTManagerのインストール&lt;br /&gt;http://www.sunspotworld.com/SpotManager/&lt;br /&gt;よりLAunch the Sun SPOT Manager applicationをダウンロードする&lt;br /&gt;SPOTManager.jnlpを実行し，上部タブのSDK'sを選択&lt;br /&gt;v3.0 Purpleを選択して下部インストールボタンを押す&lt;br /&gt;&lt;br /&gt;※ ベースディレクトリに空白を含んでいると、ツールの一部動作に&lt;br /&gt;不具合がでることがあるようです。なので、Windowsの場合は一旦イン&lt;br /&gt;ストールした後 C:\Documents and Settings\&lt;ユーザ名&gt; ディレクトリ&lt;br /&gt;以下にある .sunspot.properties ファイルを編集して、sunspot.home&lt;br /&gt;の値を変更（c:\Sun\SunSPOT\sdk など）後にもう一度SDKをインストール&lt;br /&gt;しなおすと良いかもしれません。&lt;br /&gt;&lt;br /&gt;SunSPOTManagerを実行するためにはApache Antが必要&lt;br /&gt;http://ant.apache.org/　のdownload -&gt; apache-ant-*.*.*-bin.zipをダウンロード&lt;br /&gt;-&gt; 解凍&lt;br /&gt;解凍したフォルダを適当な場所に移動ex:c\user\local\apache-ant...&lt;br /&gt;&lt;br /&gt;パスを通す&lt;br /&gt;システムのプロパティ(マイコンピュータ-&gt;右クリック-&gt;プロパティ)&lt;br /&gt;詳細設定-&gt;環境変数&lt;br /&gt;ANT_HOME さっき解凍したフォルダの場所を指定&lt;br /&gt;PATH さっきのフォルダのbinの場所を指定&lt;br /&gt;&lt;br /&gt;デモプログラムを入れる&lt;br /&gt;SPOTManagerのPreferencesのUpdate Center のところでBeta Update Centerを選択する&lt;br /&gt;SPOTManagerのSDKsでDemosをクリック&lt;br /&gt;-&gt;デモプログラムがダウンロードされる&lt;br /&gt;&lt;br /&gt;サンプルプログラムを動かしてみる&lt;br /&gt;SPOTManagerのSPOTWorldの下部にあるSPOTWorldをクリック&lt;br /&gt;-&gt;SPOTWorldが起動する&lt;br /&gt;Emulatorを選択し、New virturl SPOTを選択する&lt;br /&gt;-&gt;virtualSPOTが出てくる&lt;br /&gt;virtualSPOTで右クリックしspecify Application jar...を選択し、&lt;br /&gt;Sun/SunSPOT/Demos/EmulatorDemoにあるjarファイルを選択する&lt;br /&gt;virtualSPOTで右クリックしRunMIDletから好きなものを選択する&lt;br /&gt;-&gt;プログラムが開始される&lt;br /&gt;&lt;br /&gt;NetBeans用プラグインを入れる&lt;br /&gt;**NetBeans IDE 6.0 には対応していないので注意！(Modulesボタンがアクティブにならない)&lt;br /&gt;NetBeans IDE 5.5をインストールする．&lt;br /&gt;SunSPOT Manager のSDKsの下部にあるModulesをクリックする．&lt;br /&gt;-&gt;インストール開始&lt;br /&gt;終了するとNetBeansにプラグインが入る．&lt;br /&gt;&lt;br /&gt;Javaの環境がない時：jdk1.5.0が推奨されている&lt;br /&gt;jdk1.5.0をインストールする．&lt;br /&gt;環境変数に"JAVA_HOME"を追加、場所にjdk1.5.0*** の場所を指定&lt;br /&gt;環境変数Pathに jdk1.5.0*** のbinの場所を追加する&lt;br /&gt;&lt;br /&gt;NetBeansでプログラムを書く&lt;br /&gt;NetBeans 5.5.1を起動する&lt;br /&gt;ファイル-&gt;新規プロジェクトを選択&lt;br /&gt;プロジェクトを選択でカテゴリ"一般"、プロジェクト"Sun SPOT Application"を選択し次へ&lt;br /&gt;適当な名前を決め完了する&lt;br /&gt;&lt;br /&gt;※manifest.mfを書き換えないといけいない！&lt;br /&gt;左端のウィンドウの"ファイル"タブを選択する．&lt;br /&gt;resource-&gt;META-INF-&gt;MANIFEST.MFをダブルクリックする&lt;br /&gt;*MANIFEST.MFの中身&lt;br /&gt;MIDlet-Name: SunSpotApplication&lt;br /&gt;MIDlet-Version: 1.0.0&lt;br /&gt;MIDlet-Vendor: Sun Microsystems Inc&lt;br /&gt;MIDlet-1: src/org/sunspotworld/StartApplication, , org.sunspotworld.src/org/sunspotworld/StartApplication&lt;br /&gt;MicroEdition-Profile: IMP-1.0&lt;br /&gt;MicroEdition-Configuration: CLDC-1.1&lt;br /&gt;四行目を変更する&lt;br /&gt;*変更後&lt;br /&gt;MIDlet-1: src/org/sunspotworld/StartApplication, , org.sunspotworld.StartApplication&lt;br /&gt;&lt;br /&gt;右端にある"プロジェクト"で右クリック-&gt;"プロジェクトを構築"をクリック&lt;br /&gt;-&gt;jarファイルが作成される&lt;br /&gt;&lt;br /&gt;virtual SOPTで作成したjarファイル("作成したフォルダ/suite"にある)を選択すると実行できる&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-8158406104627834115?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/8158406104627834115/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=8158406104627834115' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8158406104627834115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/8158406104627834115'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/05/sunspot.html' title='SunSpot インストール'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1059680730891386709.post-2911535694613055629</id><published>2008-03-14T18:24:00.002+09:00</published><updated>2008-03-14T18:25:50.227+09:00</updated><title type='text'>blogはじめました</title><content type='html'>研究等の雑記を書いていきます．&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1059680730891386709-2911535694613055629?l=yoko-gb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yoko-gb.blogspot.com/feeds/2911535694613055629/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1059680730891386709&amp;postID=2911535694613055629' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2911535694613055629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1059680730891386709/posts/default/2911535694613055629'/><link rel='alternate' type='text/html' href='http://yoko-gb.blogspot.com/2008/03/blog.html' title='blogはじめました'/><author><name>yoko</name><uri>http://www.blogger.com/profile/12905558599659556359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
