<?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:blogger='http://schemas.google.com/blogger/2008' 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-324499914116872215</id><updated>2024-08-31T18:38:30.243+09:00</updated><category term="Android"/><category term="備忘録"/><category term="サーバー"/><category term="ネットワーク"/><category term="ノウハウ"/><category term="Jenkins"/><category term="Linux"/><category term="Java"/><category term="アプリ"/><category term="windowsphone"/><category term="scala"/><category term="シェルスクリプト"/><category term="テスト"/><category term="Ajax"/><category term="HTML5"/><category term="JavaScript"/><category term="クラウド"/><category term="使ってみた"/><category term="GoogleAppEngine"/><category term="IC"/><category term="JUnit"/><category term="PHP"/><category term="WebAPI"/><category term="Windows"/><category term="c#"/><category term="msbuild"/><category term="ruby"/><category term="rx"/><category term="作ってみた"/><category term="問題."/><category term="学祭"/><category term="継続的インテグレーション"/><category term=".net"/><category term="Android道"/><category term="Bluetooth"/><category term="ComiceOSネタ"/><category term="Json"/><category term="MacOS"/><category term="Monaca"/><category term="SQLite"/><category term="YahooPipes"/><category term="adk2012"/><category term="adt"/><category term="adtr18"/><category term="android.セキュリティ"/><category term="aquery"/><category term="arduino"/><category term="awk"/><category term="bdd"/><category term="ci"/><category term="cygwin"/><category term="dentoolt"/><category term="df"/><category term="eclipse"/><category term="facebook"/><category term="google.chrome.extension"/><category term="iphone"/><category term="iptables"/><category term="linq"/><category term="linu"/><category term="msbuild.visualstudio"/><category term="root"/><category term="rooted"/><category term="sbt"/><category term="scala.twitter"/><category term="scalatest"/><category term="sdk"/><category term="tomcat.ノウハウ"/><category term="wikipedia"/><category term="wordpress"/><category term="x-winodw-system"/><category term="すまべん"/><category term="アルゴリズム"/><category term="シソーラス"/><category term="スマートフォン"/><category term="スマ勉"/><category term="タスクスケジューラ"/><category term="ダックタイピング"/><category term="テスト祭り"/><category term="テスト部"/><category term="メモ"/><category term="ロマン"/><category term="夢"/><category term="希望"/><category term="日本Androidの会"/><category term="自動化"/><category term="ＪＵｎｉｔ"/><title type='text'>numa08 エンジニア風な日記</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>70</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-7081204752959601255</id><published>2013-04-18T21:53:00.000+09:00</published><updated>2013-04-18T21:53:21.124+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>Androoidの開発の面倒なところとか</title><content type='html'>何箇所か言えって言われたらすぐに出てきますが、解決できる部分に関しては何とかして行きたいって考えでイロイロやってます。&lt;br /&gt;
&lt;br /&gt;
以前作ったのは、コマンドラインから端末のスクリーンンショットを撮影するスクリプト。&lt;br /&gt;
&lt;br /&gt;
adbscreen&lt;br /&gt;
&lt;a href=&quot;https://github.com/numa08/adbscreen&quot;&gt;https://github.com/numa08/adbscreen&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
monkeyrunnerを利用して、シェルスクリプトと組み合わせてスクショの撮影を行います。&lt;br /&gt;
&lt;br /&gt;
最近はバイナリのインストールやデバッグ時にIntentを投げたり、Android端末からフォームに入力したりをすべてコマンドラインから済ませようとする癖がついて（マウスや端末に手を伸ばすのが面倒）きたので、開発PCに接続している端末全てに同じ操作を行うスクリプトをチョイッと書いた。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/numa08/5411484.js&quot;&gt;&lt;/script&gt;
&lt;br /&gt;
ちゃんとデバッグしてないけど、だいたい動く。&lt;br /&gt;
&lt;br /&gt;
こういうのをまとめてAndroidのデバッグサポートスクリプトとかにしたいなー？って考えるけど、たぶんadbのコードをいじって拡張するのが正解だと思う。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/7081204752959601255/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2013/04/androoid.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7081204752959601255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7081204752959601255'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2013/04/androoid.html' title='Androoidの開発の面倒なところとか'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-2358206682027483239</id><published>2013-04-17T00:17:00.001+09:00</published><updated>2013-04-17T00:17:31.089+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dentoolt"/><category scheme="http://www.blogger.com/atom/ns#" term="HTML5"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><title type='text'>Dentoo.LT3 で話してきた #dentoolt</title><content type='html'>3ヶ月に一回、電通大（UEC)に訪れる狂気、それがDentoo.LT&lt;br /&gt;
&lt;br /&gt;
参加は皆勤賞の3回目、登壇は飛び入り含めて5回目。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
やったこと&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
生放送ラジオをやってきた。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
ラジオをやるために&lt;/h2&gt;
&lt;div&gt;
ラジオを生放送をやるために、いくつか必要な要素はあると思うが、最も大事だと思ったのが&lt;/div&gt;
&lt;div&gt;
オーディエンスとのコミュニケーション、つまり「&lt;span style=&quot;font-size: large;&quot;&gt;お便り&lt;/span&gt;」だと考えた俺は、あるシステムを作った。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
こんなシステムだった&lt;/h2&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;script async=&quot;&quot; class=&quot;speakerdeck-embed&quot; data-id=&quot;25a6313088d60130b7f212313b101a36&quot; data-ratio=&quot;1.33333333333333&quot; src=&quot;//speakerdeck.com/assets/embed.js&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
実工数はたぶん1日ないくらい。&lt;/div&gt;
&lt;div&gt;
10分程度の寿命だったけど、十分実用に耐えうるものだった。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
実は、初めて一般に公開したWEBサービスだったんだ。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
DB使わないし、入力をユーザに返すわけでもないからセキュリティに関しても気を配る必要もなかった。&lt;/div&gt;
&lt;div&gt;
気になる点はF5アタックだけだったわけだけど、同時接続数を考えても大丈夫かな？な丼勘定。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
スライドにも書いたように、Play!のコントローラは利用せず、Ajaxなやりとりを行なっていたためその気になればCurlなんかでアタックできる可能性もあった。もちろん、そこの対策は行ったけど。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
というわけで、SublimeText2＋ねこび～んがWebアプリ開発で良い感じに強いねって印象だった。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
今後の展開？&lt;/h2&gt;
&lt;div&gt;
機会を見つけてまた使いたい。&lt;/div&gt;
&lt;div&gt;
リッチなUIや、もしかしたらTwitterに頼らないシステムにするのもいいかもしれない。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
ちなみに公開中&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
GitHubでソースコードを公開中。改変、利用はご自由に。&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;https://github.com/numa08/dentoolt3&quot;&gt;https://github.com/numa08/dentoolt3&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/2358206682027483239/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2013/04/dentoolt3-dentoolt.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/2358206682027483239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/2358206682027483239'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2013/04/dentoolt3-dentoolt.html' title='Dentoo.LT3 で話してきた #dentoolt'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-7040619253900337923</id><published>2013-03-26T21:49:00.000+09:00</published><updated>2013-03-26T22:10:16.081+09:00</updated><title type='text'>「プログラミング出来ない奴ちょっと来い」を読んだプログラミングができない奴と、4年前の俺、ちょっと寄ってって</title><content type='html'>&lt;h3&gt;
前置き&lt;/h3&gt;
&lt;br /&gt;
先日増田に投稿された記事&lt;br /&gt;
&lt;br /&gt;
「プログラミングできない奴ちょっと来い（&lt;a href=&quot;http://anond.hatelabo.jp/20130322031333&quot;&gt;http://anond.hatelabo.jp/20130322031333&lt;/a&gt;）」&lt;br /&gt;
&lt;br /&gt;
Gunosyで流れてきたり、トラックバックも沢山ついてるので気になっていたら、やっぱり&lt;br /&gt;
&lt;br /&gt;
「プログラミングは一朝一夕に達成できるものじゃない - カレーなる辛口Javaな転職日記(&lt;a href=&quot;http://d.hatena.ne.jp/JavaBlack/20130324/p1&quot;&gt;http://d.hatena.ne.jp/JavaBlack/20130324/p1&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;
今回のブログのタイトルにもした「4年前の俺」は、プログラミングができない人間でした。どれくらいできないのかと言うと、次のような感じ。&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;大学のプログラミングの実習の単位を落とす&lt;/li&gt;
&lt;li&gt;「1年勉強したらどうにかなるやろ！」と思って独学で勉強した&lt;/li&gt;
&lt;li&gt;結局、同じ授業を3回受けて単位を取得した&lt;/li&gt;
&lt;li&gt;可だった&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
大学の授業なので当然ながら周りの人達は1度の履修で合格、たまに再履がいても2回でどうにかなるレベルの授業。&lt;/div&gt;
&lt;div&gt;
それを3回も受けないとどうにもならなかったので、自信を持って「プログラミングができない！」を名乗っていいと思います。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ちなみに、今はプログラミングができるのか？と聞かれると今は次のような感じ。&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;業務や趣味で利用している言語やFWのリファレンスを見れば、要望の実現可能性、必要な工数の見積、実装、試験が行える&lt;/li&gt;
&lt;li&gt;数カ月後に自分が見て理解のできるコードが記述できる&lt;/li&gt;
&lt;li&gt;数万行レベルのシステムに絡んだことはない&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
したがって、下の上くらいは名乗っていいと思います。中級はまだ早い気がしますが。&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ですが「プログラミングができない」とは思っていません。&lt;/div&gt;
&lt;div&gt;
よって「プログラミングができない人が、初級レベルになる方法」レベルでの提案をさせてもらいたいです。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ただ、時期的に新卒や学生向けです。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
対象読者&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
理由（授業、仕事など）があってアプリやシステム、ライブラリの実装を行いたいと思っていても、本を読んでも理解ができず、授業を聞いても頭に入ってこず、コードを書いても呪文にしか思えない人。このような人で「自分はプログラミングができない」思っている大学生や新卒。&lt;/div&gt;
&lt;div&gt;
あと、もしも時空が歪んでこの記事が4年前から閲覧できるなら、当時の俺。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
プログラミングができるようになる2つの方法&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
結論から言うと方法は2つで、両方の実践が早道でした。&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;まず、良い師を見つけて自分が良い弟子になること&lt;/li&gt;
&lt;li&gt;良い友を見つけて、自分も良い友であり続けること&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
こうやって書くと、プログラミング以外でも通用できそうなただの体育会系一般論な気がして来ました・・・。&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
良い師を見つけて、良い弟子になること&lt;/h4&gt;
&lt;div&gt;
良い師とは、「プログラミングができて、それを人に教えることができる」人です。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
情報系の大学生ならこれは簡単ですね、あなたの履修している授業の先生です。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
新卒も同じですね、あなたの教育担当の上司です。彼らに積極的を活用しましょう。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
あなたはプログラミングができないのです。もっと言うと「何がわからないのか分からない」のです。だから聞きに言ってください。訪ねてください。師はあなたに教えるために居ます。あなたに教えて、その成果で飯を食ってます。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
自分一人で考える時間が勿体無いです。俺はこれで2年間を無駄にしました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h4&gt;
良い友を見つけて、自分も良い友であり続けること&lt;/h4&gt;
&lt;div&gt;
あなたの同期や同僚はあなたと同じレベル・・・と言う訳にはいかないと思います。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
俺の大学の同期はみんなできる人で、ちゃんと4年で大学を卒業し、中には大学院にも行って就職をしました。俺が何年もかけて取った単位を簡単に取り、良い成績を納めてました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
でも、すごく良い人達でした。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
詰んでる俺を助けてくれようと色々教えてくれたことを覚えてます。ただ、俺の態度は悪かったです。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
まあ、嫉妬と言うかそういうのがありました。同じ学年で同じ授業を受けてるのに、なんで彼らは良い点取ってるのに、俺はできないんだ？そういう思いがあったので、彼らのアドバイスを素直に受け入れられなかったと思います。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
お陰で2年間を余計に過ごしました。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;
まとめ&lt;/h3&gt;
&lt;div&gt;
良書も読みましょう、コードだって書くべきです。&lt;/div&gt;
&lt;div&gt;
そして、それらと並行しつつ自分ができないのを認めて、誰かに頼りましょう。&lt;/div&gt;
&lt;div&gt;
以上が、自分が余分に大学生を2年間過ごして学んだ事柄でした。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
元となった2つの記事とは、あんまり関係のない話に落ち着いた気がする・・・。&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/7040619253900337923/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2013/03/4.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7040619253900337923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7040619253900337923'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2013/03/4.html' title='「プログラミング出来ない奴ちょっと来い」を読んだプログラミングができない奴と、4年前の俺、ちょっと寄ってって'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-5636672405062180414</id><published>2013-03-06T00:19:00.001+09:00</published><updated>2013-03-06T00:19:47.436+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="scala.twitter"/><title type='text'>Hosebirdを使ってユーザーストリームを取得する</title><content type='html'>TwitterAPIも1.1になったりと色々盛り上がっている中、新しいライブラリのHosebirdをTwitterが公開しました。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://sourceforge.jp/magazine/13/03/04/0541212&quot; target=&quot;_blank&quot;&gt;米Twitter、Streaming API向けJavaクライアント「Hosebird Client」をオープンソースに&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
TwitterがAPIのクライアントライブラリをOSSにするのは初めてとのこと。&lt;br /&gt;
&lt;br /&gt;
面白いのが、Twitter4jを利用していること。どの程度のことができるのかはわかりませんが、&lt;br /&gt;
今までTwitter4jを利用して作成したアプリケーションの拡張なんかがお手軽にできるかもしれませんね。&lt;br /&gt;
&lt;br /&gt;
というわけで、TwitterなのでScalaでコードを書いてみました。sbt 0.12.2, scala2.9.3で動きます。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/numa08/5090915.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ClientBuilder#hostとClientBuilder#endpoint　を変えてあげれば他のストリームもお手軽に取得できます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
あ、FirehoseだからHosebirdなのか。今気がついた・・・・。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://github.com/twitter/hbc&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/5636672405062180414/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2013/03/hosebird.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/5636672405062180414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/5636672405062180414'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2013/03/hosebird.html' title='Hosebirdを使ってユーザーストリームを取得する'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-3591251788759346238</id><published>2013-02-10T22:24:00.000+09:00</published><updated>2013-02-10T22:24:47.128+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="sbt"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><title type='text'>Scala + Sbtでデーモンを作る方法</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVW_BiNTdycyhIlfjVwdykhyphenhyphenuvCfq_y45_uYkD4JCfXE04DUsnQ3TT2WgabjCmNYHvaOuQEl1UtrYqvZ7qhykrC6h6OrWEaoXJKyOYEEAuoAFW3hUT_3JOs4G8_rmS6cOKKVj1vItcp1y0/s1600/scala_daemon.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;134&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVW_BiNTdycyhIlfjVwdykhyphenhyphenuvCfq_y45_uYkD4JCfXE04DUsnQ3TT2WgabjCmNYHvaOuQEl1UtrYqvZ7qhykrC6h6OrWEaoXJKyOYEEAuoAFW3hUT_3JOs4G8_rmS6cOKKVj1vItcp1y0/s320/scala_daemon.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
サーバーで動作を行うデーモンを、Scalaで書きます。&lt;br /&gt;
&lt;br /&gt;
なお、環境はRHEL系のLinuxで動作を確認しました。それ以外のOSの方は&lt;br /&gt;
適宜読み替えてください。&lt;br /&gt;
&lt;br /&gt;
また、ビルドなどはsbtを利用するので、「&lt;a href=&quot;http://scalajp.github.com/sbt-getting-started-guide-ja/&quot; target=&quot;_blank&quot;&gt;始めるsbt&lt;/a&gt;」などを読んでおくと&lt;br /&gt;
いいと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
1.Scalaのコードを書く&lt;/h2&gt;
&lt;br /&gt;
&lt;h3&gt;
1.1 参照の追加&lt;/h3&gt;
&lt;br /&gt;
sbtを使ってアプリを構成します。今回、ApacheCommonDaemonを利用するので、&lt;br /&gt;
build.sbtに次のように参照を追加します。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/numa08/4749444.js?file=build.sbt&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
1.2 Scalaのコードを書く&lt;/h3&gt;
&lt;br /&gt;
Daemonインターフェースを継承したクラスを書きます。&lt;br /&gt;
今回は次のようにしました。&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/numa08/4749444.js?file=mydaemon.scala&quot;&gt;&lt;/script&gt;&lt;br /&gt;
一応、例外を明示的に投げるように書いておいています。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
1.3 実行可能ファイルを作る&lt;/h3&gt;
&lt;br /&gt;
sbt-assembkyを使って実行可能なjarファイルを用意しました。&lt;br /&gt;
sbt-assemblyについては、&lt;a href=&quot;http://qiita.com/items/260e237df56f70bcb975&quot; target=&quot;_blank&quot;&gt;こちらの記事&lt;/a&gt;を参照してもらえると嬉しいです。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
2. jsvcのセットアップ&lt;/h2&gt;
&lt;br /&gt;
&lt;h3&gt;
2.1 ソースコードをダウンロードする&lt;/h3&gt;
&lt;a href=&quot;http://commons.apache.org/daemon/download_daemon.cgi&quot;&gt;http://commons.apache.org/daemon/download_daemon.cgi&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
上記のURLから&#39;&#39;native-src&#39;&#39;をダウンロードします。&lt;br /&gt;
&lt;br /&gt;
ビルド対象のコードは&lt;script src=&quot;https://gist.github.com/numa08/4749444.js?file=jsvc_source.sh&quot;&gt;&lt;/script&gt;にあります。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
2.2 ビルドに必要なライブラリ、ツール群をインストールする。&lt;/h3&gt;
&lt;br /&gt;
ApacheCommonDaemonのページによると次のツールが必要とのことです。&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;GNU AutoConf (at least version 2.53)&lt;/li&gt;
&lt;li&gt;An ANSI-C compliant compiler (GCC is good)&lt;/li&gt;
&lt;li&gt;GNU Make&lt;/li&gt;
&lt;li&gt;A Java Platform 2 compliant SDK&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
yumなどを利用してインストールしましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
2.3 ビルド、インストールする&lt;/h3&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/numa08/4749444.js?file=build.sh&quot;&gt;&lt;/script&gt;&lt;br /&gt;
jsvc -help ができることを確認。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
3. 起動する&lt;/h2&gt;
&lt;br /&gt;
起動スクリプトと終了のスクリプトを記述しました。&lt;br /&gt;
デーモンらしく,/etc/rc..d/init.d/以下に保存をすると&lt;br /&gt;
いいと思います。&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/numa08/4749444.js?file=my_daemon.sh&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;h2&gt;
4. 参考にしたWEBページなど&lt;/h2&gt;
以下のページを参考にしました。&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #666666; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 19px;&quot;&gt;&lt;a href=&quot;https://gist.github.com/j5ik2o/2156447&quot; target=&quot;_blank&quot;&gt;Play framework 2.0でデーモン化する方法&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;http://scalajp.github.com/sbt-getting-started-guide-ja/&quot; target=&quot;_blank&quot;&gt;始めるSBT&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://qiita.com/items/260e237df56f70bcb975&quot; target=&quot;_blank&quot;&gt;SBTで実行可能なjarファイルを作る&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://commons.apache.org/daemon/index.html&quot; target=&quot;_blank&quot;&gt;Apche Commons Daemon&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/3591251788759346238/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2013/02/scala-sbt.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/3591251788759346238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/3591251788759346238'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2013/02/scala-sbt.html' title='Scala + Sbtでデーモンを作る方法'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVW_BiNTdycyhIlfjVwdykhyphenhyphenuvCfq_y45_uYkD4JCfXE04DUsnQ3TT2WgabjCmNYHvaOuQEl1UtrYqvZ7qhykrC6h6OrWEaoXJKyOYEEAuoAFW3hUT_3JOs4G8_rmS6cOKKVj1vItcp1y0/s72-c/scala_daemon.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-2238792473397538648</id><published>2013-01-01T00:18:00.001+09:00</published><updated>2013-01-01T00:32:59.969+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="scala"/><category scheme="http://www.blogger.com/atom/ns#" term="ダックタイピング"/><title type='text'>Scalaでダックタイピング？implicitを使ってみたよ</title><content type='html'>あけましておめでとうございます。&lt;br /&gt;
&lt;br /&gt;
年明け最初の記事は、Scalaの勉強ということで&lt;i&gt;implicit&lt;/i&gt;を使ってみた話。&lt;br /&gt;
&lt;br /&gt;
Javaの実装で&lt;i&gt;toHoge()&lt;/i&gt;な書式が好きなので、&lt;i&gt;interface&lt;/i&gt;を使って実現をするのですが、&lt;br /&gt;
既存のクラスに関してはそれができません。&lt;br /&gt;
&lt;br /&gt;
その具体例と、対応方法は次のコード。&lt;br /&gt;
Outputableを実装したクラスを受け取って出力を行うクラスです。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420013.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
自前のクラスに関しては、implementsすれば好き勝手に実装ができますね。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420207.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
そして出力用のコード。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420015.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
しかし、既存のクラスに関してはそうはいかないので、ラッパークラスを&lt;br /&gt;
用意することになります。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420222.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420285.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
呼び出し元も、新しいクラスを呼び出したりで面倒くさい。&lt;br /&gt;
&lt;br /&gt;
Javaという言語は面倒臭いですん。&lt;br /&gt;
&lt;br /&gt;
さて、Rubyではもっと柔軟な感じにいけて、クラスの定義を&lt;br /&gt;
コードの途中で再開させることができるのです。&lt;br /&gt;
&lt;br /&gt;
まずは、自前のクラスに対しての実装。&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420356.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420359.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
そして、既存のクラスの拡張。&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420435.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420433.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Rubyって便利。&lt;br /&gt;
&lt;br /&gt;
そして、最後にScala。暗黙的変換のimplicitキーワードを使ったメソッドを&lt;br /&gt;
用意することで、コンパイラが自動的に適した型に変換するメソッドを呼び出して&lt;br /&gt;
くれるのです。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420460.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420451.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420465.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
implicitを使って変換を行う例。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420478.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4420483.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
実に気持ちがいい。呼び出し元は、クラスの変換とか意識しなくていいんですよ。&lt;br /&gt;
&lt;br /&gt;
ただ、Javaでも型変換にtoHoge()な実装をしない&lt;br /&gt;
コードをたくさん見てきたので、ちょっとアレ。&lt;br /&gt;
&lt;br /&gt;
今年も、綺麗なコードを求めてがんばりますね。&lt;br /&gt;
&lt;br /&gt;
さて、今回参考にした書籍は次。&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder=&quot;0&quot; marginheight=&quot;0&quot; marginwidth=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://rcm-jp.amazon.co.jp/e/cm?t=numa08blog01-22&amp;amp;o=9&amp;amp;p=8&amp;amp;l=as1&amp;amp;asins=4774144363&amp;amp;ref=qf_sp_asin_til&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr&quot; style=&quot;height: 240px; width: 120px;&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
あと、最近はPlay frameworkを使ってScalaを&lt;br /&gt;
勉強してます。</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/2238792473397538648/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2013/01/scalaimplicit.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/2238792473397538648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/2238792473397538648'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2013/01/scalaimplicit.html' title='Scalaでダックタイピング？implicitを使ってみたよ'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-3582576484067106528</id><published>2012-12-30T22:23:00.002+09:00</published><updated>2012-12-30T22:23:16.337+09:00</updated><title type='text'>2012年のまとめと来年に向けて</title><content type='html'>2012年も残すところ1日となったので、まとめ記事なんぞを書いてみます。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Jenkinsの年でした&lt;/h2&gt;
&lt;br /&gt;
もともと、自分用の備忘録としてスタートしたブログでしたが、思いの外&lt;br /&gt;
多くの方に閲覧をしていただいて驚いています。&lt;br /&gt;
&lt;br /&gt;
そんな中、最も閲覧数が多かった記事がこちら。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://numa08.blogspot.jp/2012/09/jenkinsandroid.html&quot; target=&quot;_blank&quot;&gt;JenkinsでAndroidのユニットテスト＋リリースビルドまで自動化&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
思えば、今年は色々なところでキーワードとしてJenkinsのことを話して、聞いて&lt;br /&gt;
いたように思えます。&lt;br /&gt;
&lt;br /&gt;
最初に使ったのは多分Androidテスト祭りに参加をした後あたりから。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://numa08.blogspot.jp/2012/04/2android-atecfes2.html&quot; target=&quot;_blank&quot;&gt;第2回Androidテスト祭り #atecfes2&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Linuxでとりあえず導入→マシンのスペック不足でビルド時に落ちる&lt;br /&gt;
→Windowsで導入→バグ（？）でうまくビルドできない&lt;br /&gt;
&lt;br /&gt;
などとまあ、苦難の連続でしたが最終的に記事にまとめることができました。&lt;br /&gt;
&lt;br /&gt;
ちなみに、閲覧数上位2位3位が&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://numa08.blogspot.jp/2012/06/windowsjenkinsci-jenkns.html&quot; target=&quot;_blank&quot;&gt;WindowsにJenkinsを入れてCI #Jenkns&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://numa08.blogspot.jp/2012/06/jenkins_16.html&quot; target=&quot;_blank&quot;&gt;Jenkinsを一般ユーザーで動かす&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
となっていて、やたらとJenkinsの使い方説明ブログみたいに&lt;br /&gt;
なっています。&lt;br /&gt;
&lt;br /&gt;
今年はJenkinsの年だったのかなと言えなくもない。&lt;br /&gt;
&lt;br /&gt;
自分自身で今年面白いことが書けた、できたなぁと思うのが次の2つ。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://numa08.blogspot.jp/2012/12/facebook-for-androidhack.html&quot; target=&quot;_blank&quot;&gt;Root化したAndroid端末とFacebookアプリ&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://numa08.blogspot.jp/2012/10/windowsphonejenkins-sumaben.html&quot; target=&quot;_blank&quot;&gt;WindowsPhoneとJenkinsの話 #sumaben&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
一つ目は、Root化ってコワイねーな話。&lt;br /&gt;
使う側が気をつけるのはもちろん、作る側もサポート外&lt;br /&gt;
だなんて、言ってられないことをもっといろんな人に&lt;br /&gt;
知ってほしいところ。&lt;br /&gt;
&lt;br /&gt;
2個めはまたもJenkinsですが、日本語のブログで類似なことを&lt;br /&gt;
やってる人が（当時は）見つからなかったのがちょっと嬉しい。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
来年からのこのブログ&lt;/h2&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;
固定の読者になっていただくと言うよりも、検索でたどり着いた有象無象の1ページの&lt;br /&gt;
1つとカウントしてもらえるのが嬉しいかな。&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;h2&gt;
来年からの俺&lt;/h2&gt;
&lt;div&gt;
お金稼げるようになりたいです（白目&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
言語としてはScalaを引き続き。Rubyも引き続き。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
フレームワークはiOSとかPlay Frameworkとか。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
ツールはant,maven,sbt...と今は思っていますが、&lt;/div&gt;
&lt;div&gt;
何が起こるかわかりませんからね。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
というか最近はテストの効率化とかデバッグの効率化の&lt;/div&gt;
&lt;div&gt;
勉強ばっかりなので、そっち方面で強くなりたいですね。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
以上、それでは皆様よい年末、年明けをお過ごしください。&lt;/div&gt;
&lt;div&gt;
また来年もよろしくお願いしますね。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/3582576484067106528/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/12/2012.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/3582576484067106528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/3582576484067106528'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/12/2012.html' title='2012年のまとめと来年に向けて'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-8688940819143150053</id><published>2012-12-04T23:35:00.001+09:00</published><updated>2012-12-05T00:05:09.346+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="android.セキュリティ"/><category scheme="http://www.blogger.com/atom/ns#" term="facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="root"/><category scheme="http://www.blogger.com/atom/ns#" term="rooted"/><title type='text'>Root化したAndroid端末とFacebookアプリ</title><content type='html'>&lt;br /&gt;
Rootとってる人、取ろうと思ってる人はちょっと気にしてほしいこと。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
はじめに&lt;/h2&gt;
&lt;br /&gt;
結論から言うと、Root化端末を知識のない人間が使うとものすごい危険&lt;br /&gt;
です。&lt;br /&gt;
&lt;br /&gt;
なぜなら、たとえばFacebookのアプリはユーザー情報やフレンドの情報を&lt;br /&gt;
暗号化を行わないで保存しているから。&lt;br /&gt;
&lt;br /&gt;
これの何が危険かというとROOTを取った端末の場合だと、とくに&lt;br /&gt;
制限もなくFacebookアプリのデータベースにアクセスされる可能性が&lt;br /&gt;
あるのです。&lt;br /&gt;
&lt;br /&gt;
普通に使っている分には別にいいけど、そうじゃないことしてる人は&lt;br /&gt;
気を付けた方が良いよねっ！って話。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
実践&lt;/h2&gt;
&lt;br /&gt;
では、具体例として友人一覧の情報を取得する方法をコードを交えて。&lt;br /&gt;
&lt;br /&gt;
今回のターゲットは&lt;br /&gt;
/data/data/com.facebook.katana/databases/users_db2&lt;br /&gt;
&lt;br /&gt;
この中に友人の名前やメールアドレス、電話番号などが入っていました。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Step.1：ファイルのパーミションを変更する&lt;/h4&gt;
Androidのアプリは基本的に、自分のアプリのDBに対しては自分からしかアクセス&lt;br /&gt;
できないようにできます。&lt;br /&gt;
&lt;br /&gt;
FBアプリも例には漏れず。しかし、結局はLinuxのファイルパーミションを利用して&lt;br /&gt;
管理をしているので、su権限でchmodを実行すればなんの問題もないです。&lt;br /&gt;
&lt;br /&gt;
これがRoot化端末の怖いところ。普通はアクセスできないファイルにアクセス&lt;br /&gt;
できる可能性がある。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
Step.2 &amp;nbsp;SQLiteDatabaseあたりを利用してDBにアクセスする。&lt;/h4&gt;
&lt;br /&gt;
ファイルのフルパスを指定してあげれば、簡単にアクセスできます。&lt;br /&gt;
あとは煮るなり焼くなりご自由に状態。&lt;br /&gt;
&lt;br /&gt;
ちなみに、コードはこんな感じ。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/4204465.js?file=Hack.java&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;h4&gt;
実行結果&lt;/h4&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYL2Qsf_YT4bEks-9J7zequQaRMPDYBSYnaaBFM_asqyjlhh1fnKSYBzDT07UaTM1PHH4eqeq_NdD9uLyqkJIMZof6-Na1y-49-Ypvfkd2l0qAP06_yU4fsa6goO0FOvM3uIVCODAENWo9/s1600/device-2012-12-04-224625.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYL2Qsf_YT4bEks-9J7zequQaRMPDYBSYnaaBFM_asqyjlhh1fnKSYBzDT07UaTM1PHH4eqeq_NdD9uLyqkJIMZof6-Na1y-49-Ypvfkd2l0qAP06_yU4fsa6goO0FOvM3uIVCODAENWo9/s320/device-2012-12-04-224625.jpg&quot; width=&quot;213&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;こんなに丸見え！&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;h2&gt;
まとめ&lt;/h2&gt;
&lt;br /&gt;
ROOT化端末の場合、ユーザが意図しないタイミングで見られたくないデータを&lt;br /&gt;
見られる可能性があるから、気を付けよう。&lt;br /&gt;
&lt;br /&gt;
ROOT化するよー！って人&lt;br /&gt;
危険性を本当に理解してください。困るのはあなただけでなく、あなたの&lt;br /&gt;
友達かもしれません。&lt;br /&gt;
&lt;br /&gt;
開発者の方&lt;br /&gt;
ROOT化端末によって、予期せぬデータ流出が起こることを知っておいてください。&lt;br /&gt;
確かにROOT化端末はサポート対象外ですが、そのおかげで不幸になるのは、あなた&lt;br /&gt;
個人や会社です。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
最後に&lt;/h2&gt;
&lt;br /&gt;
ちなみに、このネタは先日開催された「&lt;a href=&quot;http://www.zusaar.com/event/442003&quot;&gt;Androidセキュリティハッカソン&lt;/a&gt;」でやってきた&lt;br /&gt;
ネタです。&lt;br /&gt;
&lt;br /&gt;
もっと早くに思いつけば、アドベントカレンダーのネタになったのに・・・&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/8688940819143150053/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/12/facebook-for-androidhack.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/8688940819143150053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/8688940819143150053'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/12/facebook-for-androidhack.html' title='Root化したAndroid端末とFacebookアプリ'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYL2Qsf_YT4bEks-9J7zequQaRMPDYBSYnaaBFM_asqyjlhh1fnKSYBzDT07UaTM1PHH4eqeq_NdD9uLyqkJIMZof6-Na1y-49-Ypvfkd2l0qAP06_yU4fsa6goO0FOvM3uIVCODAENWo9/s72-c/device-2012-12-04-224625.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-2307203279250882658</id><published>2012-10-27T00:19:00.000+09:00</published><updated>2012-10-27T00:19:27.071+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="アルゴリズム"/><title type='text'>Rubyで乱択アルゴリズム</title><content type='html'>&lt;div style=&quot;background-color: white; border: 0px; color: #4a4a4a; font-family: &#39;Helvetica Neue&#39;, Helvetica, &#39;Hiragino Kaku Gothic Pro&#39;, &#39;Lucida Grande&#39;, Verdana, Arial, Meiryo, メイリオ, sans-serif; font-size: 14px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
Rubyの勉強してます。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #4a4a4a; font-family: &#39;Helvetica Neue&#39;, Helvetica, &#39;Hiragino Kaku Gothic Pro&#39;, &#39;Lucida Grande&#39;, Verdana, Arial, Meiryo, メイリオ, sans-serif; font-size: 14px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
会社で昼休みに昼飯を選ぶアプリを作っているのですが、&lt;br /&gt;
DBから取得した昼飯リストの中から、なんかいい方法で&lt;br /&gt;
選択できないかなー？　と情報を漁っていると&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #4a4a4a; font-family: &#39;Helvetica Neue&#39;, Helvetica, &#39;Hiragino Kaku Gothic Pro&#39;, &#39;Lucida Grande&#39;, Verdana, Arial, Meiryo, メイリオ, sans-serif; font-size: 14px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;a href=&quot;http://blog.livedoor.jp/dankogai/archives/51761113.html&quot;&gt;algorithm - 重みをつけて乱択する&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #4a4a4a; font-family: &#39;Helvetica Neue&#39;, Helvetica, &#39;Hiragino Kaku Gothic Pro&#39;, &#39;Lucida Grande&#39;, Verdana, Arial, Meiryo, メイリオ, sans-serif; font-size: 14px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
弾さんのブログで良い情報があったので、Rubyで書いてみました。&lt;/div&gt;
&lt;div style=&quot;background-color: white; border: 0px; color: #4a4a4a; font-family: &#39;Helvetica Neue&#39;, Helvetica, &#39;Hiragino Kaku Gothic Pro&#39;, &#39;Lucida Grande&#39;, Verdana, Arial, Meiryo, メイリオ, sans-serif; font-size: 14px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;script src=&quot;https://gist.github.com/3959321.js?file=make_random_picker.rb&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 0px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
実行結果は&lt;br /&gt;&lt;code style=&quot;background-color: #fcfcfc; border-color: rgb(204, 204, 204) rgb(221, 221, 221) rgb(221, 221, 221) rgb(204, 204, 204); border-style: solid; border-width: 1px; font-family: &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font-size: 0.9em; margin: 0px; outline: 0px; padding: 0px 2px; vertical-align: baseline;&quot;&gt;$ ruby weight_random.rb | sort | uniq -c | sort -r&lt;/code&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
とかで計測します。とりあえず、1000回回すと&lt;/div&gt;
&lt;div style=&quot;border: 0px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;script src=&quot;https://gist.github.com/3959321.js?file=result.sh&quot;&gt;&lt;/script&gt;&lt;/div&gt;
&lt;div style=&quot;border: 0px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;border: 0px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
となったので、まあ悪くない結果だと思います。&lt;/div&gt;
&lt;div style=&quot;border: 0px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
しかし、一番結果の上位に出てくるのがうさだとは、どういうことにょ！？&lt;/div&gt;
&lt;div style=&quot;border: 0px; margin-bottom: 1em; margin-top: 1em; outline: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;
目からビィーーーーム！！&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/2307203279250882658/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/10/ruby.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/2307203279250882658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/2307203279250882658'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/10/ruby.html' title='Rubyで乱択アルゴリズム'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-6279492228350872609</id><published>2012-10-17T07:40:00.003+09:00</published><updated>2012-10-17T07:40:34.571+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>【アップデート】タイムキーパードラ娘</title><content type='html'>&lt;img src=&quot;https://lh3.ggpht.com/xJ4n9-1sjNdPtmuFNDsGZ_ij_CFiq7dzsw2y6Ynol0fNjDfBPRKWERpk0PSimm5aSg=w124&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
タイムキーパードラ娘をアップデートしました。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://play.google.com/store/apps/details?id=jp.teres.numa.DoraGirl&quot;&gt;
  &lt;img alt=&quot;Android app on Google Play&quot; src=&quot;http://developer.android.com/images/brand/en_generic_rgb_wo_60.png&quot; /&gt;
&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
技術的な面では、今回はFragmentを活用し携帯電話とタブレットでそれぞれのレイアウトを適用しています。&lt;br /&gt;
&lt;br /&gt;
ロジックも改修を加えました。以前のバージョンは、見かけ上問題なく動いていましたが、実は車輪の再発明を行なってしまっていました。&lt;br /&gt;
&lt;br /&gt;
今後のメンテナンス性を考慮して、極力AndroidのAPIを利用しています。&lt;br /&gt;
&lt;br /&gt;
デザイン面も、俺にしては頑張りました。&lt;br /&gt;
&lt;br /&gt;
リリースするアプリでDraw9Patchを利用したのは今回が始めてですね。&lt;br /&gt;
&lt;br /&gt;
来るべきAndroid4.0時代（というか、はよ来い）に向けてのアプリとなっています。&lt;br /&gt;
&lt;br /&gt;
ただ、恥ずかしいのはJavaの知識がなかった際に、作成、公開をしたアプリなので&lt;br /&gt;
&lt;br /&gt;
パッケージ名に大文字が含まれているんですよね。ちょっと、そこダサい。&lt;br /&gt;
&lt;br /&gt;
今から変えられないしなぁ。</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/6279492228350872609/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/10/blog-post_17.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/6279492228350872609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/6279492228350872609'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/10/blog-post_17.html' title='【アップデート】タイムキーパードラ娘'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.ggpht.com/xJ4n9-1sjNdPtmuFNDsGZ_ij_CFiq7dzsw2y6Ynol0fNjDfBPRKWERpk0PSimm5aSg=s72-w124-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-3244933307362790649</id><published>2012-10-15T21:05:00.000+09:00</published><updated>2012-10-15T21:05:09.884+09:00</updated><title type='text'>Dentoo.LTとは #dentoolt</title><content type='html'>すまべんの翌日は、&lt;a href=&quot;http://dentoolt.net/&quot;&gt;Dentoo.LT&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;
DOMの解析やって、リンク増やすだけだから大したことは無いのだけれど&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;iframe src=&quot;https://skydrive.live.com/embed?cid=DB936D0EE3E893FF&amp;resid=DB936D0EE3E893FF%212794&amp;authkey=AChmaHI34372gg8&amp;em=2&quot; width=&quot;402&quot; height=&quot;327&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;iframe src=&quot;https://skydrive.live.com/embed?cid=DB936D0EE3E893FF&amp;resid=DB936D0EE3E893FF%212798&amp;authkey=ABfYSplRcF1G0Y0&amp;em=2&quot; width=&quot;402&quot; height=&quot;327&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/3244933307362790649/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/10/dentoolt-dentoolt.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/3244933307362790649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/3244933307362790649'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/10/dentoolt-dentoolt.html' title='Dentoo.LTとは #dentoolt'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-6184749858152259820</id><published>2012-10-15T20:57:00.001+09:00</published><updated>2012-10-15T20:57:24.085+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Jenkins"/><category scheme="http://www.blogger.com/atom/ns#" term="msbuild"/><category scheme="http://www.blogger.com/atom/ns#" term="windowsphone"/><category scheme="http://www.blogger.com/atom/ns#" term="すまべん"/><title type='text'>WindowsPhoneとJenkinsの話 #sumaben</title><content type='html'>Jenkinsさんは良いんだよ！！&lt;br /&gt;
&lt;br /&gt;
みんなも会社で使ってよ！！&lt;br /&gt;
&lt;br /&gt;
WindowsPhoneも端末が増えてくるから、きっと今から準備しておくと役立つよ！！&lt;br /&gt;
&lt;br /&gt;
という話をすまべんでやってきた。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;iframe src=&quot;https://skydrive.live.com/embed?cid=DB936D0EE3E893FF&amp;resid=DB936D0EE3E893FF%212796&amp;authkey=AKhq4dmSh4GnJdA&amp;em=2&quot; width=&quot;402&quot; height=&quot;327&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;
&lt;br /&gt;
やたらと強力なMsBuildの使い方は、@ITを参考にした。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.atmarkit.co.jp/fdotnet/special/msbuild01/msbuild01_01.html&quot; target=&quot;_blank&quot;&gt;MSBuild完全攻略（前編）  .NETビルド・エンジン「MSBuild」使いこなし術&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.atmarkit.co.jp/fdotnet/special/msbuild02/msbuild02_02.html&quot; target=&quot;_blank&quot;&gt;MSBuild完全攻略（後編）  ビルド・エンジン「MSBuild」を思いのままに操る技&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
という訳で、お家Jenkinsをもっと進めていきます&lt;br /&gt;
&lt;br /&gt;
じゃなくて、会社で導入してみたいです。</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/6184749858152259820/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/10/windowsphonejenkins-sumaben.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/6184749858152259820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/6184749858152259820'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/10/windowsphonejenkins-sumaben.html' title='WindowsPhoneとJenkinsの話 #sumaben'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-2589546385154282010</id><published>2012-10-08T21:59:00.000+09:00</published><updated>2012-10-08T21:59:09.228+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Jenkins"/><category scheme="http://www.blogger.com/atom/ns#" term="windowsphone"/><title type='text'>Jenkinsで、WindowsPhoneのリリースビルド＋ユニットテストを自動化</title><content type='html'>&lt;br /&gt;
&lt;h2&gt;
1.目的&lt;/h2&gt;
Jenkinsを利用してプロジェクトのビルド、テストを自動化し素早い問題対応と、&lt;br /&gt;
常にビルド可能、実行可能なソリューションが存在する状態を作る。&lt;br /&gt;
&lt;br /&gt;
そうすることで、チーム開発の進捗の管理や、モチベーション維持へと繋がる。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
2.導入&lt;/h2&gt;
今回はWindowsPhoneアプリのプロジェクトを、Jenkinsを使ってビルド、ユニットテストを&lt;br /&gt;
行う。Androidやその他のJava、あるいはスクリプト言語系のプロジェクトで導入の実績を&lt;br /&gt;
よく聞くJenkinsだが、.Netなフレームワークでもできるんだよ。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
3.準備&lt;/h2&gt;
&lt;h3&gt;
3-1実行対象のプロジェクトを作る&lt;/h3&gt;
作りましょう&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
3-2テストプロジェクトを作る&lt;/h3&gt;
作り方は、僕の以前のPost&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
か &lt;a href=&quot;https://twitter.com/okazuki&quot; target=&quot;_blank&quot;&gt;@okazuki&lt;/a&gt; さんの&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/okazuki/20110911/1315724390&quot;&gt;http://d.hatena.ne.jp/okazuki/20110911/1315724390&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
を参考にしましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
3-3自動ビルド、ユニットテストの環境を作る&lt;/h3&gt;
&lt;br /&gt;
MsBuildの設定をします。基本的に、一個前のPost&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://numa08.blogspot.jp/2012/10/msbuildwindows-phone.html&quot;&gt;http://numa08.blogspot.jp/2012/10/msbuildwindows-phone.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
を使えば良いです。&lt;br /&gt;
&lt;br /&gt;
でも、今回はMsBuildのタスクを一部変更しました。Clean,Releaseはやりたかったので、そこを追加。&lt;br /&gt;
&lt;br /&gt;
コードは以下。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/3852378.js?file=msbuild.proj&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
3-4ビルドサーバー、リポジトリの準備&lt;/h3&gt;
&lt;br /&gt;
ビルドサーバーを準備します。&lt;br /&gt;
&lt;br /&gt;
当然、Windowsじゃないとだめです。&lt;br /&gt;
&lt;br /&gt;
VisualStudioを設定し、Jenkinsをインストール。GitやSuvbersionなどのバージョン管理システムも導入。&lt;br /&gt;
&lt;br /&gt;
バージョン管理システムとして、Team Foundation Serverも利用できるっぽいですが未確認です。&lt;br /&gt;
（ちなみに、僕自身はSuvbersionも使ったこと無い）&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
3-5 csproj参照のパスに注意する&lt;/h3&gt;
Global Assembly Cacheに登録していないアセンブリをプロジェクトの参照に追加する場合、&lt;br /&gt;
&lt;br /&gt;
csproj（vbproj)の参照のパスの設定で、&lt;br /&gt;
&lt;br /&gt;
対象のアセンブリが、ローカルな保存領域にある場合は相対パスで、&lt;br /&gt;
&lt;br /&gt;
ネットワーク上にある場合は絶対パスで記述されるらしいです。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://msdn.microsoft.com/ja-jp/library/ms998208.aspx&quot;&gt;http://msdn.microsoft.com/ja-jp/library/ms998208.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
これを知らなくて詰んでた。&lt;br /&gt;
&lt;br /&gt;
今回、テストプロジェクトの生成のために&lt;br /&gt;
&quot;Microsoft.Silverlight.Testing.dll&quot;&lt;br /&gt;
&amp;nbsp;と&lt;br /&gt;
&amp;nbsp;&quot;Microsoft.VisualStudio.QualityTools.UnitTesting.Silverlight.dll&quot;&lt;br /&gt;
&lt;br /&gt;
の少なくとも2つを追加しているわけですが、ビルドサーバーからこのファイルが見える状態になるように&lt;br /&gt;
&lt;br /&gt;
設定する必要があるわけです。&lt;br /&gt;
&lt;br /&gt;
僕の場合、いつもネットワークドライブ上にプロジェクトのフォルダを作って作業をしていたので、見事にこれがハマった。&lt;br /&gt;
&lt;br /&gt;
csprojを任意に設定するか、ビルドサーバーからもアクセスできる場所にファイルを置くか、まあその辺設定しましょう。&lt;br /&gt;
&lt;br /&gt;
3-7Jenkinsの設定をする&lt;br /&gt;
わりと、酢酸先生( &lt;a href=&quot;https://twitter.com/ch3cooh&quot; target=&quot;_blank&quot;&gt;@ch3cooh&lt;/a&gt; )のこの投稿が便利です。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/ch3cooh393/20120126/1327510696&quot;&gt;http://d.hatena.ne.jp/ch3cooh393/20120126/1327510696&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Jenkinsの管理-&amp;gt;プラグインの管理&lt;/i&gt;　と進みJenkins MsBuild Plugin を探し、インストールします。&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Jenkinsの管理-&amp;gt;システムの管理-&amp;gt;MsBuild&lt;/i&gt; の中で、MsBuildのパスの設定を行います。&lt;br /&gt;
&lt;br /&gt;
ジョブの生成から、フリースタイルのプロジェクトを選んでリポジトリの設定を行います。&lt;br /&gt;
&lt;br /&gt;
ビルドトリガの設定をしたら、ビルド手順を次のように設定します&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Build a Visual Stduio Project or solution using MSBuild&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;MSBuild Build File $(WORDKSPACE)\(your project)\msbuild.proj&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;Command Line Arguments /t:Clean,Teset,Release&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i&gt;成果物の保存&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;**\Bin\Release\*.xap,**\EmulatorTestResult*.txt&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
以上で設定終わり。&lt;br /&gt;
&lt;br /&gt;
最後に、ビルドサーバーでWindowsPhoneのエミュレーターを立ちあげておきましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
4.所感&lt;/h3&gt;
エミュレーター重いわ！！&lt;br /&gt;
&lt;br /&gt;
こんなに重いと思ってなかった。いつも、メインマシンでやってたからわからなかった・・・&lt;br /&gt;
&lt;br /&gt;
WindowsPhoneの開発でだってJenkinsが使えるんだよっ！！　ってことが伝えられればそれで良いんです。&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/2589546385154282010/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/10/jenkinswindowsphone.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/2589546385154282010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/2589546385154282010'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/10/jenkinswindowsphone.html' title='Jenkinsで、WindowsPhoneのリリースビルド＋ユニットテストを自動化'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-698297591067275604</id><published>2012-10-04T20:59:00.001+09:00</published><updated>2012-10-04T20:59:20.655+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="msbuild"/><category scheme="http://www.blogger.com/atom/ns#" term="windowsphone"/><category scheme="http://www.blogger.com/atom/ns#" term="ロマン"/><category scheme="http://www.blogger.com/atom/ns#" term="夢"/><category scheme="http://www.blogger.com/atom/ns#" term="希望"/><category scheme="http://www.blogger.com/atom/ns#" term="自動化"/><title type='text'>MsBuildでWindows Phone のビルドとテストを自動化</title><content type='html'>&lt;br /&gt;
MsBuildって便利ですね　しみじみ&lt;br /&gt;
&lt;br /&gt;
自動化は男のロマン。&lt;br /&gt;
&lt;br /&gt;
と言うことで、WindowsPhoneプロジェクトの&lt;br /&gt;
&lt;br /&gt;
-ビルド&lt;br /&gt;
-テスト&lt;br /&gt;
-結果の回収&lt;br /&gt;
&lt;br /&gt;
を自動で行おうと思います。ゆくゆくは、Jenkinsを利用したCIへと繋がります。&lt;br /&gt;
&lt;br /&gt;
今回は、&lt;a href=&quot;http://blogs.msdn.com/b/francischeung/archive/2012/01/03/running-windows-phone-unit-tests-via-msbuild.aspx&quot;&gt;http://blogs.msdn.com/b/francischeung/archive/2012/01/03/running-windows-phone-unit-tests-via-msbuild.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
の内容ホボそのまま。&lt;br /&gt;
&lt;br /&gt;
一連の自動化の流としては&lt;br /&gt;
1.ビルド実行&lt;br /&gt;
2.エミュレーターへのインストール&lt;br /&gt;
3.テスト実行&lt;br /&gt;
4.テスト結果を エミュレーターの分散ストレージに保存&lt;br /&gt;
5.テスト結果をローカルにコピー&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
1.プロジェクトを作る&lt;/h3&gt;
作りましょう&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
2.テストプロジェクトを作る&lt;/h3&gt;
以前の投稿　&lt;a href=&quot;http://numa08.blogspot.jp/2012/09/windowsphonerx_19.html&quot;&gt;http://numa08.blogspot.jp/2012/09/windowsphonerx_19.html&lt;/a&gt;　や、&lt;a href=&quot;https://twitter.com/okazuki&quot; target=&quot;_blank&quot;&gt;@okazuki&lt;/a&gt; さんの&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://d.hatena.ne.jp/okazuki/20110911/1315724390&quot;&gt;http://d.hatena.ne.jp/okazuki/20110911/1315724390&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
あたりを参考にテストプロジェクトを作りましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
3.ログをファイルに出力する&lt;/h3&gt;
ファイルと言っても、エミュレーター上の分散ストレージです。&lt;br /&gt;
&lt;br /&gt;
テストプロジェクトに次のコードを追加します。&lt;br /&gt;
&lt;br /&gt;
その上で、テストプロジェクトのMainPage.xaml.csを次のように変更します。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
4.MsBuildタスクのプロジェクトを作る&lt;/h3&gt;
ソリューションに新しい VisualC# クラスライブラリ を作成します。&lt;br /&gt;
&lt;br /&gt;
参照に、&lt;br /&gt;
Microsoft.Build&lt;br /&gt;
Microsoft.Build.Engine&lt;br /&gt;
Microsoft.Build.Framework&lt;br /&gt;
Microsoft.Build.Task.v4.0&lt;br /&gt;
Microsoft.Build.Utilities.v4.0&lt;br /&gt;
&lt;br /&gt;
を追加。次に、&lt;br /&gt;
&quot;C:\Program Files (x86)\Common Files\microsoft shared\Phone Tools\CoreCon\10.0\Bin\Microsoft.Smartdevice.Connectivity.dll&quot;&lt;br /&gt;
&lt;br /&gt;
を参照に追加します。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
5.タスクを書く。&lt;/h3&gt;
MsBuildって本当に強力だなぁとしみじみ。&lt;br /&gt;
&lt;br /&gt;
ぶっちゃけ、次のコードのコピペで動きますけど、もっともっとカスタマイズすると楽しいと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/3833132.js&quot;&gt; &lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
6.MsBuildファイルを書く&lt;/h3&gt;
こちらは、テストプロジェクトのUUIDやファイルパスなどを指定する必要があります。&lt;br /&gt;
&lt;br /&gt;
さっき作ったprojファイルから見た相対パスらしいので、それに合わせてxapファイルのパスを適切に設定します。&lt;br /&gt;
&lt;br /&gt;
ProductGuidはテストプロジェクトの WMAppManifest.xml のAppタグOriductIDの値を使います。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/3833135.js&quot;&gt; &lt;/script&gt;&lt;br /&gt;
&lt;h3&gt;
7.実行する&lt;/h3&gt;
エミュレーターを立ち上げた状態で MsBuild msbuild.proj としてやれば、自動的にプロジェクトのビルドと、&lt;br /&gt;
テストの実行が走ります。&lt;br /&gt;
&lt;br /&gt;
最後に、EmulatorTestResult-$(GUID)-.txtが吐き出されていれば成功。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
何が凄いって、テストに失敗するとテストに失敗すると、例外を検知してMsBuildが失敗を返すところ。&lt;br /&gt;
&lt;br /&gt;
これは便利です。Jenkinsの場合、ビルドの成功失敗は取れてましたけど、テストの成功失敗は別で管理してました。&lt;br /&gt;
&lt;br /&gt;
あー、でもこのテストの失敗は無視ー　とかそういう状態も発生するわけか。まあ、その辺はタスクのカスタムでなんとかなるんだと思います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
思いますよ。そのうちやります。</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/698297591067275604/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/10/msbuildwindows-phone.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/698297591067275604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/698297591067275604'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/10/msbuildwindows-phone.html' title='MsBuildでWindows Phone のビルドとテストを自動化'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-7076257412389938883</id><published>2012-10-03T23:23:00.001+09:00</published><updated>2012-10-03T23:24:43.806+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".net"/><category scheme="http://www.blogger.com/atom/ns#" term="msbuild.visualstudio"/><title type='text'>ダウンロード済みのアセンブリをビルドする</title><content type='html'>&lt;span style=&quot;background-color: white; color: #666666; font-family: &#39;Trebuchet MS&#39;, Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;MsBuildで自前のタスクをビルドしようとした際に出たエラー&lt;/span&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: white; color: #666666; font-family: &#39;Trebuchet MS&#39;, Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/i&gt;
&lt;i style=&quot;background-color: white; color: #666666; font-family: &#39;Trebuchet MS&#39;, Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;エラー&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; アセンブリ ファイルパス\プロジェクト名.dll を読み込めませんでした。このアセンブリは Web からダウンロード済みである可能性があります。アセンブリが Web からダウンロード済みである場合は、ローカル コンピューター上に存在する場合でも Web ファイルであることを示すフラグが設定されています。フラグにより、このようなアセンブリをプロジェクトで使用されることがないようにできます。フラグの設定は、ファイルのプロパティを変更することで変更できます。信頼できるアセンブリについてのみブロックを解除してください。詳細については、&lt;a href=&quot;http://msdn.microsoft.com/ja-jp/library/ee890038%28VS.100%29.aspx&quot; style=&quot;color: #888888; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;http://go.microsoft.com/fwlink/?LinkId=179545&amp;nbsp;&lt;/a&gt;を参照してください。&lt;/i&gt;&lt;br /&gt;
&lt;i style=&quot;background-color: white; color: #666666; font-family: &#39;Trebuchet MS&#39;, Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/i&gt;
&lt;span style=&quot;background-color: white; color: #666666; font-family: &#39;Trebuchet MS&#39;, Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;前もこれ出たな・・・&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #666666; font-family: &#39;Trebuchet MS&#39;, Trebuchet, Verdana, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; color: #666666; font-family: &#39;Trebuchet MS&#39;, Trebuchet, Verdana, sans-serif; line-height: 18px;&quot;&gt;回避方法のメモ&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #666666; font-family: &#39;Trebuchet MS&#39;, Trebuchet, Verdana, sans-serif; line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;i&gt;&quot;C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe.config&quot;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;のRuntimeセクションに&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&amp;lt;loadFromRemoteSources enabled=&quot;true&quot; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;を追加する。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;これだけ。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;基本的にネットワーク上のアセンブリやダウンロードしたそれをビルドの際に読み込まないのは、ライセンス的な絡みがあって仕方ないらしい。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;あと、なによりもTeam Foundation Serverを利用させようという意図もあるとのこと。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;まあ、そういう会社なんだけど、そうやって儲けてるしサポートも受けられるんだから仕方ない。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;仕方ないのです。&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; line-height: 18px;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;color: #666666; font-family: Trebuchet MS, Trebuchet, Verdana, sans-serif; font-size: x-small;&quot;&gt;&lt;span style=&quot;line-height: 18px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/7076257412389938883/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/10/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7076257412389938883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7076257412389938883'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/10/blog-post.html' title='ダウンロード済みのアセンブリをビルドする'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-4544036531840198968</id><published>2012-09-19T23:06:00.000+09:00</published><updated>2012-09-19T23:13:46.416+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c#"/><category scheme="http://www.blogger.com/atom/ns#" term="rx"/><category scheme="http://www.blogger.com/atom/ns#" term="windowsphone"/><category scheme="http://www.blogger.com/atom/ns#" term="テスト"/><title type='text'>WindowsPhoneの非同期なRxをユニットテスト</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
コールバックメソッドを利用することよりも、Rxによってメソッドチェーンを記述することで、&lt;br /&gt;
&lt;br /&gt;
コードが分散せず一貫したコードが書けるように思えます。&lt;br /&gt;
&lt;br /&gt;
もちろん、ユニットテストは必要なのですがいかんせんWindowsPhoneはテストフレームワークが公式に&lt;br /&gt;
&lt;br /&gt;
提供されているわけでは無いらしく、色々と面倒くさいです。&lt;br /&gt;
&lt;br /&gt;
どうにか、記述する方法を発見したので公開。と言っても、neueccさんのところで公開されていますが・・・。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
1.WindowsPhone7.1のプロジェクトを作る&lt;/h3&gt;
&lt;br /&gt;
作りましょう。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
2.テスト対象のコードを記述する。&lt;/h3&gt;
&lt;br /&gt;
今回は、引数のURLにアクセスを行いページの内容をstringで取得するメソッドを用意しました。&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/3749849.js?file=gistfile1.cs&quot;&gt;&lt;/script&gt;

&lt;br /&gt;
&lt;h3&gt;
3.テストプロジェクトを作成する。&lt;/h3&gt;
&lt;br /&gt;
&lt;h4&gt;
3.1.&amp;nbsp;&lt;/h4&gt;
&lt;br /&gt;
まずは、WindowsPhone7.1のプロジェクトを作ります。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
3.2.&amp;nbsp;&lt;/h4&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.jeff.wilcox.name/2011/06/updated-ut-mango-bits/&quot;&gt;http://www.jeff.wilcox.name/2011/06/updated-ut-mango-bits/&lt;/a&gt; で配布されているファイルをダウンロードし、参照に追加します。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
3.3.&amp;nbsp;&lt;/h4&gt;
&lt;br /&gt;
テスト対象のプロジェクトを参照に追加します。&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;
3.4.&lt;/h4&gt;
&lt;br /&gt;
&amp;nbsp;&lt;a href=&quot;http://blog.richardszalay.com/2011/08/08/writing-asynchronous-unit-tests-with-rx-and-the-silverlight-unit-testing-framework/&quot;&gt;http://blog.richardszalay.com/2011/08/08/writing-asynchronous-unit-tests-with-rx-and-the-silverlight-unit-testing-framework/&lt;/a&gt;&lt;br /&gt;
こちらに記述されている WorkItemTestScheduler &amp;nbsp;と ObservableExtensions を追加します。&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
4. テストを記述する&lt;/h3&gt;
&lt;br /&gt;
今回は次のコードを用いてURLに適切にアクセスができているのかを確認します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;script src=&quot;https://gist.github.com/3749857.js?file=gistfile1.cs&quot;&gt;&lt;/script&gt;

Assert.IsNotNull() とちょっと手を抜いていますが・・・。&lt;br /&gt;
&lt;h3&gt;
&lt;br /&gt;5. 実行する&lt;/h3&gt;
&lt;div&gt;
ソリューションを右クリックし、「スタートアッププロジェクトの設定」を選び、&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
テストプロジェクトをスタートアッププロジェクトに設定します。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUiUA1HSgk-TOIXyEdCkJwz-8f72WQ5fBONX70hDdwHlWoX55p8pO4XbHbHZo-AN3XnFVLG_4zfYaT42zCBBFImqFMv5aUtx-uAYGA3T9XbIXWTfIGg7aj_cGT5lrwMtCVWkuyj96KYs2W/s1600/%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;270&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUiUA1HSgk-TOIXyEdCkJwz-8f72WQ5fBONX70hDdwHlWoX55p8pO4XbHbHZo-AN3XnFVLG_4zfYaT42zCBBFImqFMv5aUtx-uAYGA3T9XbIXWTfIGg7aj_cGT5lrwMtCVWkuyj96KYs2W/s320/%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Ctrl+F5でデバッグなし実行を行います。テスト結果は次のように出力されます。格好いいですね。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYSBJW3OH5LyZjXx80rjhs1MAHwSlAUhwK_wXiXE3uSUt5Z_eajCzZ6LnM5oiGCltcmjqqZtCQWf0Ale5iW6gAJe_e6r2F44CpHuRobskgY_m0JZsueDLTNexHs4fSu_5fDFDe9nmlnXqH/s1600/cap.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYSBJW3OH5LyZjXx80rjhs1MAHwSlAUhwK_wXiXE3uSUt5Z_eajCzZ6LnM5oiGCltcmjqqZtCQWf0Ale5iW6gAJe_e6r2F44CpHuRobskgY_m0JZsueDLTNexHs4fSu_5fDFDe9nmlnXqH/s320/cap.png&quot; width=&quot;192&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;成功したパターン&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIs295nzSayhIniilgnzLE9kMll5qgKsK8q-480Tj3IHGz8J6QPvImJBB6ieey37-PeMAPPgQ76_ez5JkE5vmS3hANporUKIIOn2p9HeA1id7EGfBLFEgiI-O8ZPPAA7gQgirHeX7uPdYO/s1600/cap.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIs295nzSayhIniilgnzLE9kMll5qgKsK8q-480Tj3IHGz8J6QPvImJBB6ieey37-PeMAPPgQ76_ez5JkE5vmS3hANporUKIIOn2p9HeA1id7EGfBLFEgiI-O8ZPPAA7gQgirHeX7uPdYO/s320/cap.png&quot; width=&quot;192&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;失敗したパターン&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;h3&gt;
6.所感&lt;/h3&gt;
このやり方を発見するまでに時間がかかってしまった。結局やりたいことは例によってテストやビルドの自動化。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://blogs.msdn.com/b/francischeung/archive/2012/01/03/running-windows-phone-unit-tests-via-msbuild.aspx&quot;&gt;http://blogs.msdn.com/b/francischeung/archive/2012/01/03/running-windows-phone-unit-tests-via-msbuild.aspx&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
このサイトを見る限りMSBuildを利用して、コマンドラインからテストの実行ができるらしい？　ので、いつもどおり&lt;br /&gt;
&lt;br /&gt;
Jenkinsさんと組み合わせてCI環境を作るところまでやりたいです。</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/4544036531840198968/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/09/windowsphonerx_19.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/4544036531840198968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/4544036531840198968'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/09/windowsphonerx_19.html' title='WindowsPhoneの非同期なRxをユニットテスト'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUiUA1HSgk-TOIXyEdCkJwz-8f72WQ5fBONX70hDdwHlWoX55p8pO4XbHbHZo-AN3XnFVLG_4zfYaT42zCBBFImqFMv5aUtx-uAYGA3T9XbIXWTfIGg7aj_cGT5lrwMtCVWkuyj96KYs2W/s72-c/%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-1653316360308494153</id><published>2012-09-10T00:10:00.001+09:00</published><updated>2012-09-19T23:15:54.947+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Jenkins"/><title type='text'>JenkinsでAndroidのユニットテスト＋リリースビルドまで自動化</title><content type='html'>&lt;br /&gt;
そういえば、LinuxでJenkinsを動かしてAndroidのビルドとかやってたけど、&lt;br /&gt;
&lt;br /&gt;
記事にまとめて無かったや。&lt;br /&gt;
&lt;br /&gt;
やったこと&lt;br /&gt;
・前準備色々&lt;br /&gt;
・Jenkinsの設定をする（OS:ScientificLinux)&lt;br /&gt;
・Androidのアプリのプロジェクトを複数のOS,ディスプレで自動でデバッグビルドする&lt;br /&gt;
・Androidのアプリのテストプロジェクトを自動でビルドし、実行する&lt;br /&gt;
・Androidのアプリのプロジェクトをリリースビルドして、回収する。&lt;br /&gt;
・テストのカバレッジを←文字化け発生する&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
前準備&lt;br /&gt;
・ライブラリ群のインストール&lt;br /&gt;
yum -y install glibs-devel.i686 zlib-devel.i686 libstdc++-devel.686&lt;br /&gt;
&lt;br /&gt;
何よりもここが面倒くさかった。&lt;br /&gt;
&lt;br /&gt;
・antのインストール&lt;br /&gt;
#wget http://archive.apache.org/dist/ant/binaries/apache-ant-1.8.3-bin.tar.gz&lt;br /&gt;
#tar xzf apache-ant-1.8.3-bin.tar.gz&lt;br /&gt;
#mv apache-ant-1.8.3 /usr/&lt;br /&gt;
&lt;br /&gt;
・Androidプロジェクトを作る&lt;br /&gt;
ディレクトリの構成を&lt;br /&gt;
-Root--AppProject&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; --TestProject&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt; --hoge.keystore&lt;br /&gt;
&lt;br /&gt;
としておくと色々捗ります。&lt;br /&gt;
&lt;br /&gt;
JenkinsやJDKのインストールは終わっているということにしましょう。&lt;br /&gt;
&lt;br /&gt;
・Jenkinsの設定。&lt;br /&gt;
今回は、Gitのリポジトリをポーリングします。&lt;br /&gt;
・公開鍵の作成&lt;br /&gt;
#sudo -u jenkins ssh-keygen -t rsa&lt;br /&gt;
#sudo -u jenkins cat /var/lib/jenkins/.ssh/id_rsa.pub&lt;br /&gt;
&lt;br /&gt;
こうして出来上がった公開鍵は、自分の環境に合わせて鍵の登録とかやっちゃってください。&lt;br /&gt;
&lt;br /&gt;
・プラグインのインストール&lt;br /&gt;
Jenkins Gti Plugin&lt;br /&gt;
Android Emulator Plugin&lt;br /&gt;
をインストールします。&lt;br /&gt;
&lt;br /&gt;
・AndroidSDKの設定&lt;br /&gt;
Jenkins→設定　から&lt;br /&gt;
プラグインがインストールされていると、現れる&lt;br /&gt;
Android&lt;br /&gt;
の項目。&lt;br /&gt;
AndroidSDK root:/var/lib/jenkins/tools/android-sdk を入力&lt;br /&gt;
Automatically install Android components when required にチェック&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMzT6mN_oHY59p9zkxyZrUPCVZTOtt5ZHNf1A451uwjVokfLDRBn8BlP5uMpWnjNf5Fl3YX0TwuUsb83O4U-nbbzZK8lu0ZyIjBhJmabfTrBa8GRNoPHr6zDB8OL5XUt3pbln8rGeNkJQX/s1600/%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A31.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;63&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMzT6mN_oHY59p9zkxyZrUPCVZTOtt5ZHNf1A451uwjVokfLDRBn8BlP5uMpWnjNf5Fl3YX0TwuUsb83O4U-nbbzZK8lu0ZyIjBhJmabfTrBa8GRNoPHr6zDB8OL5XUt3pbln8rGeNkJQX/s400/%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A31.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
・antの設定&lt;br /&gt;
Ant項目の&lt;br /&gt;
名前：ant1.8.3&lt;br /&gt;
ANT_HOME:/usr/apache-ant-1.8.3&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil7kIic6aHW2QXddjVVIKppQB5tlZ-Iprui7u7OSF3DxP0o7pRwv2V5HfDh-6GSTnmmZkSIldmGYiPL7M03GThTA4Gw6WJDJZinloTNzIE46ykK5ZIBi3OlaRbNfTghgJfY2lsmxXffPkT/s1600/%25E3%2582%25AD%25E3%2583%25A3%25E3%2583%2597%25E3%2583%2581%25E3%2583%25A3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;122&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil7kIic6aHW2QXddjVVIKppQB5tlZ-Iprui7u7OSF3DxP0o7pRwv2V5HfDh-6GSTnmmZkSIldmGYiPL7M03GThTA4Gw6WJDJZinloTNzIE46ykK5ZIBi3OlaRbNfTghgJfY2lsmxXffPkT/s400/%25E3%2582%25AD%25E3%2583%25A3%25E3%2583%2597%25E3%2583%2581%25E3%2583%25A3.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;キャプチャは1.8.4&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
・プロジェクトを作る&lt;br /&gt;
新規ジョブの作成　から&lt;br /&gt;
ジョブ名：なんか適当&lt;br /&gt;
マルチ構成のビルド　を選択&lt;br /&gt;
&lt;br /&gt;
ソースコード管理システム&lt;br /&gt;
Git&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Repository URL: git@hogehoge&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Branches to build **&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;リポジトリブラウザ：自動&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKkNA3CUrBmf0C0cAfgb9Sm4tVgWQpqMbYQ74a-N5Yvwh5x74fH7T-2cxfnBxc9hlu9f2nHYa99xEeaTWjl38kiTY2pMDoosAKH5fNe7dVgqmLkPMKIZf5gsMVE2lj8p1fnED5M5lY9krF/s1600/git.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKkNA3CUrBmf0C0cAfgb9Sm4tVgWQpqMbYQ74a-N5Yvwh5x74fH7T-2cxfnBxc9hlu9f2nHYa99xEeaTWjl38kiTY2pMDoosAKH5fNe7dVgqmLkPMKIZf5gsMVE2lj8p1fnED5M5lY9krF/s400/git.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;URL抜いたから赤字出てる。気にしないで。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
ビルドトリガ&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;SCMをポーリング&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;スケジュール；1-59 * * * *&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihBx_7H0KDdCCuI0Bg39fc-JJYiq-wHqqWZvh5DkJ9sVpmcZhouNVFBaUAb-Y7cFX1WLn3GLOy2XTXd8P8RG6GOX4T8BMqDwTMS93sNtUrDIbA6EV9lu2pq4sWs39xtcwQVjJZaDVjKDWp/s1600/triger.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;190&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihBx_7H0KDdCCuI0Bg39fc-JJYiq-wHqqWZvh5DkJ9sVpmcZhouNVFBaUAb-Y7cFX1WLn3GLOy2XTXd8P8RG6GOX4T8BMqDwTMS93sNtUrDIbA6EV9lu2pq4sWs39xtcwQVjJZaDVjKDWp/s400/triger.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;毎秒確認ってことですね。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
マトリクスの設定&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;値の追加→ユーザ定義&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;名前：OS&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;値：2.3.3 3.0&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;名前:display&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;値:WVGA HVGA WXGA&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;名前:density&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;値:170 240&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4ZQRwfuS9nJ7_jTq3gj3KW7MlVw-yQDQCeUaSOI3WI9wco74ZwE7Lkd0_wJtNNmRjCSx4y0P7m5uL3j_TO1wqdedNnvjHjns-8zImYgHpy_JaIny6auTMm1-KhZNKKD9U3NCNDlecsHKF/s1600/matrix.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4ZQRwfuS9nJ7_jTq3gj3KW7MlVw-yQDQCeUaSOI3WI9wco74ZwE7Lkd0_wJtNNmRjCSx4y0P7m5uL3j_TO1wqdedNnvjHjns-8zImYgHpy_JaIny6auTMm1-KhZNKKD9U3NCNDlecsHKF/s400/matrix.JPG&quot; width=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
組み合わせフィルタ&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;フィルター：(!(OS!=&quot;3.0&quot;&amp;amp;&amp;amp;display==&quot;WXGA&quot;))&amp;amp;&amp;amp;(!(OS!=&quot;2.3.3&quot;&amp;amp;&amp;amp;display==&quot;HVGA&quot;))&amp;amp;&amp;amp;(!(density==&quot;170&quot;&amp;amp;&amp;amp;OS!=&quot;2.3.3&quot;&amp;amp;&amp;amp;display!=&quot;HVGA&quot;))&amp;amp;&amp;amp;(!(OS==&quot;3.0&quot;&amp;amp;&amp;amp;(display==&quot;WVGA&quot;||display==&quot;HVGA&quot;)))&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1p6iES7A2FG1zzTJ7x_6Qvl3lssIt8741s9L-G6yOwhcfd8yk85HyvPU2Rb_jIX73k94T3Y_DL9cfvUUDPirvfnhzPyz0bbrEhdq-SDVYFrzHMI00CTZ3dtGv6Rte8E3Or_TTTMLI2Gwq/s1600/filer.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;36&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1p6iES7A2FG1zzTJ7x_6Qvl3lssIt8741s9L-G6yOwhcfd8yk85HyvPU2Rb_jIX73k94T3Y_DL9cfvUUDPirvfnhzPyz0bbrEhdq-SDVYFrzHMI00CTZ3dtGv6Rte8E3Or_TTTMLI2Gwq/s640/filer.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ビルド環境&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Run an Android emulator during buildにチェック&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Run emulator with properties にチェック&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Android OS version:${OS}&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Screen density:${density}&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Screen resolation:${display}&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Device locale:ja_JP&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifnnm3HWgIilurCTh44VVfSXXnx_8UsyrYLfv-uEo9ezDJQ_ncQseje8WP0_NWVuwyg-JsqGeV-1vCFTdSmM8Yrh_faVevWVmRWHHQyaywnLQ1x7qTqtUhS6duT7Rkae6tkrlvNpWZ0IXS/s1600/env.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifnnm3HWgIilurCTh44VVfSXXnx_8UsyrYLfv-uEo9ezDJQ_ncQseje8WP0_NWVuwyg-JsqGeV-1vCFTdSmM8Yrh_faVevWVmRWHHQyaywnLQ1x7qTqtUhS6duT7Rkae6tkrlvNpWZ0IXS/s400/env.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Common emulator options&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;Show emulator window のチェックを外す&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP8WHGNzsUQwrFYYGyPwjtKZLpQ_oEHFMXqRCu8G440ETpUFlMgbK3xJmK2lZuv3Lxft9UaTSVz3-_fyZEtNL292XGkypEJdHaKCK4OdTU4sve0uSqrhcuAA-4-t7d2i26i9PjHCpyCCRT/s1600/show.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;138&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiP8WHGNzsUQwrFYYGyPwjtKZLpQ_oEHFMXqRCu8G440ETpUFlMgbK3xJmK2lZuv3Lxft9UaTSVz3-_fyZEtNL292XGkypEJdHaKCK4OdTU4sve0uSqrhcuAA-4-t7d2i26i9PjHCpyCCRT/s400/show.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;これ付いてると詰むよ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
ビルド&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;#アプリをサーバーのantでビルドできるように設定する。&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;ビルド手順の追加→シェルの実行&lt;/div&gt;
&lt;div&gt;
cd ${WORKSPACE}&lt;/div&gt;
&lt;div&gt;
export PATH=$PATH:/var/lib/jenkins/tools/android-sdk/tools:/usr/apache-ant-1.8.3/bin&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
echo Update Project&lt;/div&gt;
&lt;div&gt;
android update project -p ./ProjectName&lt;/div&gt;
&lt;div&gt;
echo Update Test Project&lt;/div&gt;
&lt;div&gt;
android update test-project -p ./ProjectName -m ${WORKSPACE}/Appname&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
echo Setting Release&lt;/div&gt;
&lt;div&gt;
cd ${WORKSPACE}/ProjectNamer&lt;/div&gt;
&lt;div&gt;
echo &quot;key.store=${WORKSPACE}/hoge.keystore&quot; &amp;gt;&amp;gt; ant.properties&lt;/div&gt;
&lt;div&gt;
echo &quot;key.store.password=hogehoge&quot; &amp;gt;&amp;gt; ant.properties&lt;/div&gt;
&lt;div&gt;
echo &quot;key.alias=hoge&quot; &amp;gt;&amp;gt; ant.properties&lt;/div&gt;
&lt;div&gt;
echo &quot;key.alias.password=hogehoge&quot; &amp;gt;&amp;gt; ant.properties&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCNXTrLg7-_WV9HswlxLAQcfAW0ONjvV6vbfdOchDbWk9vf24V0vqMtpLUQUTtdVzTnQkBrEsaoAM_EwORsqePILij-ord0_UU9xPiYFUkFAVmNtkJhB47p0EMGGTGRr1KLNyrMEbQ8Vig/s1600/shell.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;171&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCNXTrLg7-_WV9HswlxLAQcfAW0ONjvV6vbfdOchDbWk9vf24V0vqMtpLUQUTtdVzTnQkBrEsaoAM_EwORsqePILij-ord0_UU9xPiYFUkFAVmNtkJhB47p0EMGGTGRr1KLNyrMEbQ8Vig/s400/shell.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;秘密の情報無いよな・・・&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;#アプリのデバッグビルドを行う&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;ビルド手順の追加→Antの呼び出し&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;使用するAnt:ant1.8.3&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;ターゲット:clean debug install&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;ビルドファイル:${WORKSPACE}/ProjectName/build.xml&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;#テストプロジェクトのビルドと実行を行う&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;使用するAnt：ant1.8.3&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;ターゲット:clean emma debug install test&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;ビルドファイル:${WORKSPACE}/TestPorject/build.xml&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;#リリースビルドを行う&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;使用するAnt:ant1.8.3&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;ターゲット:clean release&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;ビルドファイル:${WORKSPACE}/ProjectName/build.xml&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
ビルド後の処理&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;ビルド後の処理を追加→成果物を保存&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;保存するファイル：**/ProjectName/bin/*release.apk&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLA6OejwD2aXR5EUa2Ha4kPRqtAnWpTJYd_dmj9zMANE-pyCqohnQO2xlkrcUWNXTpB3xAp7BiJirxhCqxGwXpQbWHQZbjE17qrcH2OTm0wlkyZc9FXP4pUZeZnIrC1PuX7dK1mcbux_AU/s1600/ant.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLA6OejwD2aXR5EUa2Ha4kPRqtAnWpTJYd_dmj9zMANE-pyCqohnQO2xlkrcUWNXTpB3xAp7BiJirxhCqxGwXpQbWHQZbjE17qrcH2OTm0wlkyZc9FXP4pUZeZnIrC1PuX7dK1mcbux_AU/s640/ant.JPG&quot; width=&quot;448&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
うぉーなげぇ&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
プロジェクトのトップに戻ると、構成マトリクスができています。&lt;/div&gt;
&lt;div&gt;
フィルタの設定を確認するには、要素の上にマウス持って行ってリンクが貼られてたら、&lt;/div&gt;
&lt;div&gt;
フィルタされてない場所ってことみたいです。&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJidwTuH3hfV_Iuw3vyHb1_8MjkSxgTXtEr_WGHKUuszGzORwRBqkkH4Id2B3wHGMCCE58r1seFguWQh1yQqZOGMaQFcGe72ByHaUbHMbbOiSFMeJW9s2qfTMjd74ei46RqWkjQYfhFiN-/s1600/result.JPG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJidwTuH3hfV_Iuw3vyHb1_8MjkSxgTXtEr_WGHKUuszGzORwRBqkkH4Id2B3wHGMCCE58r1seFguWQh1yQqZOGMaQFcGe72ByHaUbHMbbOiSFMeJW9s2qfTMjd74ei46RqWkjQYfhFiN-/s1600/result.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
さて、Android4.0.3からAPI(CPU?)を洗濯する必要があるわけですが、&lt;/div&gt;
&lt;div&gt;
エミュレーター設定のABIの項目に変数を入れても、&lt;/div&gt;
&lt;div&gt;
エミュレーター作成時にうまく読み込んでくれないみたいです。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
というわけで、多分4.0系統は別のプロジェクトにしちゃうのが正解なんじゃないですかねぇ？&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
多分。&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/1653316360308494153/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/09/jenkinsandroid.html#comment-form' title='1 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/1653316360308494153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/1653316360308494153'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/09/jenkinsandroid.html' title='JenkinsでAndroidのユニットテスト＋リリースビルドまで自動化'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMzT6mN_oHY59p9zkxyZrUPCVZTOtt5ZHNf1A451uwjVokfLDRBn8BlP5uMpWnjNf5Fl3YX0TwuUsb83O4U-nbbzZK8lu0ZyIjBhJmabfTrBa8GRNoPHr6zDB8OL5XUt3pbln8rGeNkJQX/s72-c/%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A31.JPG" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-5636203790294463278</id><published>2012-09-07T01:05:00.002+09:00</published><updated>2012-09-07T01:05:40.362+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="c#"/><category scheme="http://www.blogger.com/atom/ns#" term="linq"/><category scheme="http://www.blogger.com/atom/ns#" term="rx"/><category scheme="http://www.blogger.com/atom/ns#" term="windowsphone"/><title type='text'>C＃ + LINQでJSONをパースする</title><content type='html'>&lt;br /&gt;
foursquareの&#39;explore&#39;のレスポンスのJSONを、Linq To Jsonを使ってパースします。ちなみにWindowsPhone。&lt;br /&gt;
&lt;br /&gt;
シリアライズすれば早いのに・・・とか言わない。&lt;br /&gt;
&lt;br /&gt;
またパースにはJSON.netを使います。http://json.codeplex.com/&lt;br /&gt;
&lt;br /&gt;
必要なのは、&#39;venue&#39;データだけなので、先に保存用のクラスを作っておきます。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush : csharp&quot;&gt;namespace ConflimJsonParser
{
    public class Venue
    {
        public string name { get; set; }
        public string address { get; set; }
        public string crossStreet { get; set; }
        public string city { get; set; }
        public string state { get; set; }
        public string country { get; set; }
        public string cc { get; set; }
        public double lat { get; set; }
        public double lng { get; set; }
        public string id { get; set; }
    }
}

&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
で、パースの部分。&lt;br /&gt;
&lt;br /&gt;
ちなみに元のJSONは　https://developer.foursquare.com/docs/explore#req=venues/explore%3Fll%3D40.7,-74　をみておいてください。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush : csharp&quot;&gt;namespace ConflimJsonParser
{
    public class MyParser
    {
        private string json = &quot;省略&quot;;
        public void parse()
        {
            var str = JObject.Parse(json).SelectToken(&quot;response.groups&quot;).ToString();
            var venues = JArray.Parse(str).SelectMany(groups =&amp;gt; groups[&quot;items&quot;])
                .Select(items =&amp;gt; items[&quot;venue&quot;]).Select(venue =&amp;gt;
                {
                    var location = venue[&quot;location&quot;];
                    return new Venue()
                    {
                        name = (string)venue[&quot;name&quot;],
                        id = (string)venue[&quot;id&quot;],
                        address = (string)location[&quot;address&quot;],
                        crossStreet = (string)location[&quot;crossStreet&quot;],
                        city = (string)location[&quot;city&quot;],
                        state = (string)location[&quot;state&quot;],
                        country = (string)location[&quot;country&quot;],
                        cc = (string)location[&quot;cc&quot;],
                        lat = (double)location[&quot;lat&quot;],
                        lng = (double)location[&quot;lng&quot;],
                    };
                });

            foreach (var venue in venues)
            {
                Debug.WriteLine(venue.name);
            }

        }

    }
}
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
やってみて&lt;br /&gt;
&lt;br /&gt;
LINQいいよLINQ。&lt;br /&gt;
&lt;br /&gt;
まとまったデータが欲しいならシリアライズしろ。&lt;br /&gt;
&lt;br /&gt;
データというか、モジュールの結合が密接になっているように思います。そのへんがオブジェクト指向じゃないってことかな。&lt;br /&gt;
&lt;br /&gt;
実は今回のコードは今作っているアプリからの引用なんだが、どうもなぁ。&lt;br /&gt;
&lt;br /&gt;
この部分は、IObservable&amp;lt;string&amp;gt;を引数に取るメソッド内で利用される。そのため、かなりコードが違うものになっているのだ。&lt;br /&gt;
&lt;br /&gt;
そりゃあ、引数が違えば実装が変わってくるのは一緒だけどここまで違うの！？　って思うくらいの違い。&lt;br /&gt;
&lt;br /&gt;
なんか再利用性が低いなーみたいなことを思ってしまってます。俺のスキルが足りないだけと言われたらそれまでだけど。&lt;br /&gt;
&lt;br /&gt;
とは言え、Rxを使えば非同期処理もすっきり書けたり、コードを追いかけるのも楽になったりといいことも多いわけで。&lt;br /&gt;
&lt;br /&gt;
まあ、ゆっくりと勉強していきますね。</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/5636203790294463278/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/09/c-linqjson.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/5636203790294463278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/5636203790294463278'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/09/c-linqjson.html' title='C＃ + LINQでJSONをパースする'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-7759067183159848090</id><published>2012-08-26T09:50:00.000+09:00</published><updated>2012-08-26T09:50:12.778+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="iphone"/><category scheme="http://www.blogger.com/atom/ns#" term="windowsphone"/><category scheme="http://www.blogger.com/atom/ns#" term="スマートフォン"/><category scheme="http://www.blogger.com/atom/ns#" term="スマ勉"/><title type='text'>スマ勉関東#20　に参加した</title><content type='html'>&lt;br /&gt;
休講情報のスクレイピングは、誰でもやるんだなぁと&lt;br /&gt;
&lt;br /&gt;
スマートフォン勉強会#関東20に参加してきました。&lt;br /&gt;
&lt;br /&gt;
開催日前日の23:30くらいにいきなり登録して、LT登壇までさせていただけるとは・・・酢酸先生には&lt;br /&gt;
&lt;br /&gt;
足を向けて寝られませんね。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
@icchucさんの「夏期講習 WindowsPhone7開発トライアスロン傾向と対策」&lt;/h2&gt;
&lt;br /&gt;
セカンダリタイルを使うWindowsPhoneトライアスロン第2弾の対策。&lt;br /&gt;
&lt;br /&gt;
タイル作れるよーとか、WEBから画像取ってこれるよーとか、適当に更新できるよーとかそんな話。&lt;br /&gt;
&lt;br /&gt;
相変わらず、WindowsPhoneって制限厳しいよなぁとかちょっと思いました。&lt;br /&gt;
&lt;br /&gt;
ただ、コードはそんなに冗長にならないってのはいいと思います。Javaとは何だったのか・・・&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
@nullpooさんの「東京電機大学　学生ポータルサイトUNIPAからの情報抽出と再利用」&lt;/h2&gt;
&lt;br /&gt;
残念な学生ポータルサイト「UNIPA」の情報のスクレイピングと再利用の話。&lt;br /&gt;
&lt;br /&gt;
どのへんが残念か、それはもう全体的に・・・&lt;br /&gt;
&lt;br /&gt;
なぜか新しいウィンドウで表示されるログインページや、暗号化されていない通信内容、&lt;br /&gt;
&lt;br /&gt;
統一されていない情報の書式などもう、お役所仕事って感じの残念さ。&lt;br /&gt;
&lt;br /&gt;
休講情報をスクレイピングして、APIとしてアクセスできるようにしたり、マイニングして休講を予想（予報）&lt;br /&gt;
&lt;br /&gt;
したりなんてこと。&lt;br /&gt;
&lt;br /&gt;
休講情報のスクレイピング自体は、自分も試したことがあって、ヘッダーが定義されてない残念なHTMLを解析してましたが、&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;h2&gt;
tmytさんの「某Music Unなんとかみたいなことがしたい」&lt;/h2&gt;
&lt;br /&gt;
まあ、普通一家に一台くらいはあるサーバーを活用して、自前の音楽配信サービスを作ろうと言う話。&lt;br /&gt;
&lt;br /&gt;
非常に面白いと思います、思いますが、実はグレーだったような気がします。うろ覚え。自前のVPNを利用していたとしても、&lt;br /&gt;
&lt;br /&gt;
その場に音楽のファイルがない状態で視聴可能な状態を作るのはJasrac的に駄目だったような。&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&lt;br /&gt;
&lt;br /&gt;
自分はNexusQの使い方の提案というか、妄想を語って来ました。&lt;br /&gt;
&lt;br /&gt;
「NexusQを銭湯で使えないかなぁ」って話。&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;
NexusQの話を拡張させるか、あるいは最近ハマってるTDDの話をするかはわかりませんが、なんか話します。&lt;br /&gt;
&lt;br /&gt;
ワクワクだね！！&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/7759067183159848090/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/08/20.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7759067183159848090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7759067183159848090'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/08/20.html' title='スマ勉関東#20　に参加した'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-1937722472574158591</id><published>2012-08-12T01:44:00.006+09:00</published><updated>2012-08-12T01:45:16.140+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ajax"/><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="aquery"/><title type='text'>[Androidアプリ]多機能日付計算機アップデート</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDPd7g3h7bAOriZG_JZuzmuty0g1n5XyYsM_RiCAUYt3514WMyXitYApUfpxK-EFxmDb55Bpp0cBYFPBWOPy7XS_lUQdGeQpQG28igR1wTCCMSexGehMe1ION4E9coPB-IviyNwQ_FIX_K/s1600/icon.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDPd7g3h7bAOriZG_JZuzmuty0g1n5XyYsM_RiCAUYt3514WMyXitYApUfpxK-EFxmDb55Bpp0cBYFPBWOPy7XS_lUQdGeQpQG28igR1wTCCMSexGehMe1ION4E9coPB-IviyNwQ_FIX_K/s200/icon.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
JavaのHTTP通信は残念だと思った・・・。&lt;br /&gt;
&lt;br /&gt;
という訳で多機能日付計算機をアップデートしました。&lt;br /&gt;
&lt;br /&gt;
DLはこちらから。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://play.google.com/store/apps/details?id=jp.teres.numa.DateCalculator&quot;&gt;https://play.google.com/store/apps/details?id=jp.teres.numa.DateCalculator&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
前から実装をしたかった「土日祝日を取り除いた、平日のみの計算」をようやく実装しました。&lt;br /&gt;
&lt;br /&gt;
と言っても、「期間計算」の方だけですが・・・。日数計算の方は明日からやります。&lt;br /&gt;
&lt;br /&gt;
実装は簡単で、Googleカレンダーの「日本の祝日」からJSONで祝日を貰い引き算しているだけ。&lt;br /&gt;
&lt;br /&gt;
土日の除去は、目的の日に達するまでの間ひたすら足し算（または引き算）をしているだけ。&lt;br /&gt;
&lt;br /&gt;
そんな訳で、パーミッションに access.internet を追加してます。&lt;br /&gt;
&lt;br /&gt;
通信部分の実装は、APIを叩くのではなくライブラリ AQuery を利用。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://code.google.com/p/android-query/&quot;&gt;http://code.google.com/p/android-query/&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
AjaxのXMLHttpRequest風にコードを書けるので楽です。&lt;br /&gt;
&lt;br /&gt;
ただ、JavaなのにJS風の書式を挟むことになるのでその辺理解しておかないとあっという間に納豆コードを生み出す原因になりそう。&lt;br /&gt;
&lt;br /&gt;
便利は便利です。やっぱり、わかりきっている処理を書いて冗長なコードを生み出すのは嫌なので。&lt;br /&gt;
&lt;br /&gt;
そのために、例えば通信部分のオレオレライブラリとか作ってもいいんですけどね。&lt;br /&gt;
&lt;br /&gt;
という訳で、是非ダウンロードして使ってみてくださいな。&lt;br /&gt;
&lt;br /&gt;
ちなみに、今バグを見つけてしまいました・・・orz&lt;br /&gt;
&lt;br /&gt;
明日直す・・・直すよ・・・</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/1937722472574158591/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/08/android.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/1937722472574158591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/1937722472574158591'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/08/android.html' title='[Androidアプリ]多機能日付計算機アップデート'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDPd7g3h7bAOriZG_JZuzmuty0g1n5XyYsM_RiCAUYt3514WMyXitYApUfpxK-EFxmDb55Bpp0cBYFPBWOPy7XS_lUQdGeQpQG28igR1wTCCMSexGehMe1ION4E9coPB-IviyNwQ_FIX_K/s72-c/icon.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-7003622284396944069</id><published>2012-07-25T20:43:00.000+09:00</published><updated>2012-07-25T20:43:52.437+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linu"/><category scheme="http://www.blogger.com/atom/ns#" term="tomcat.ノウハウ"/><title type='text'>Tomcat7 on ScientificLinux6</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRiPPRPQcAkhqTxreNS9WftluulWCy0EACbQT2PfVjTZMUD85nlTnQIBmMVMB6IC898SwhV2uVOn_KRC1FCskTMBl-ExSotpF1GGkXyeDBAAkdRTqnP7U7o6_e6BwU4i0vEDL_xWJ333MN/s1600/%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3.JPG&quot; imageanchor=&quot;1&quot; style=&quot;font-size: medium; font-weight: normal; margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRiPPRPQcAkhqTxreNS9WftluulWCy0EACbQT2PfVjTZMUD85nlTnQIBmMVMB6IC898SwhV2uVOn_KRC1FCskTMBl-ExSotpF1GGkXyeDBAAkdRTqnP7U7o6_e6BwU4i0vEDL_xWJ333MN/s1600/%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3.JPG&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2&gt;


&lt;/h2&gt;
&lt;h2&gt;

&lt;/h2&gt;
&lt;h2&gt;



背景&lt;/h2&gt;
&lt;br /&gt;
最近、Rubyの勉強を行なっている。で、Rubyと言えばRailsと思い立った。&lt;br /&gt;
&lt;br /&gt;
実は、CRubyではなくJRubyでコードを書いている。そのため、RailsもTomcatなどのJavaアプリケーション・サーバーで走らせることになる。&lt;br /&gt;
&lt;br /&gt;
動かすだけが目的であるならば、GoogleAppEngineだって、JRrubyやRailsが動くのでそれでも良い。&lt;br /&gt;
&lt;br /&gt;
しかし、先日さくらのVPSのりようを開始したりで手元に環境が揃っているため、自前でアプリケーション・サーバーを用意することにした。&lt;br /&gt;
&lt;br /&gt;
動作させるOSはScientificLinux6。ちなみに、すでにJenkinsが動作しているサーバーであるため、ポートが重なったりしないよう気をつけなければならない。&lt;br /&gt;
&lt;h2&gt;



&lt;br /&gt;手順&lt;/h2&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;JDKのインストール&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;tomcatのインストール&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;tomcatの設定&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;apacheの設定&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;



JDKのインストール&lt;/h3&gt;
&lt;br /&gt;
大事なのは、インストール作業よりも環境変数の登録。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;# vim ~/.bashrc
export JAVA_HOME=/usr/java/default
export PATH=&quot;$PATH&quot;:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar


#source .bashrc
&lt;/pre&gt;
&lt;br /&gt;
&lt;h3&gt;



tomcatのインストール&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;#wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/tomcat/tomcat-7/v7.0.29/bin/apache-tomcat-7.0.29.tar.gz
#tar xzf apache-tomcat-7.0.29.tar.gz
#mv apache-tomcat-7.0.29 /usr/local/tomcat
#rm -rf apache-tomcat-7.0.29.tar.gz
&lt;/pre&gt;
&lt;br /&gt;
&lt;h3&gt;



tomcatの設定&lt;/h3&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;#vim /etc/profile.d/tomcat.sh
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=/usr/local/tomcat
export CLASSPATH=$CLASSPATH:/$CATALINA_HOME/common/lib
&lt;/pre&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h3&gt;



起動スクリプトの記述&lt;/h3&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;#vim /etc/rc.d/init.d/tomcat

#!/bin/bash

# Tomcat7: Start/Stop Tomcat 7
#
# chkconfig: - 90 10
# description: Tomcat is a Java application Server.

. /etc/init.d/functions
. /etc/sysconfig/network
source /etc/profile.d/tomcat.sh

TOMCAT_USER=tomcat
LOCKFILE=/var/lock/subsys/tomcat

RETVAL=0
start(){
        echo &quot;Starting Tomcat7: &quot;
        su - $TOMCAT_USER -c &quot;$CATALINA_HOME/bin/startup.sh&quot;
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch $LOCKFILE
        return $RETVAL
}

stop(){
        echo &quot;Shutting down Tomcat7: &quot;
        $CATALINA_HOME/bin/shutdown.sh
        RETVAL=$?
        echo
        [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f $LOCKFILE
        return $RETVAL
}

case &quot;$1&quot; in
        start)
        start
        ;;
        stop)
        stop
        ;;
        restart)
        stop
        start
        ;;
        status)
        status tomcat
        ;;
        *)
        echo $&quot;Usage: $0 {start|stop|restart|status}&quot;
        exit 1
        ;;
esac
exit $?
&lt;/pre&gt;
&lt;h3&gt;



apacheの設定&lt;/h3&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;h3&gt;



ポートの変更&lt;/h3&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;#vim /usr/local/tomcat/conf/server.xml
#http://server:8080 でのアクセスを禁止する
#コメントアウト
      
#AJPのポートを変更する

#8009 -&amp;gt; 8020 に変更
&lt;/pre&gt;
&lt;h3&gt;


AJPの設定&lt;/h3&gt;
&lt;h3&gt;


&lt;pre class=&quot;brush : bash&quot;&gt;#vim /etc/httpd/conf.d/prozy_ajp.conf
ProxyPass /tomcat/ ajp://localhost:8020/
&lt;/pre&gt;
デーモンの起動&lt;/h3&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;#/etc/rc.d/init.d/httpd restart
#/etc/rc.d/init.d/tomcat start
&lt;/pre&gt;
&lt;h3&gt;



サービスの登録&lt;/h3&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;#chkconfig --add tomcat
#chkconfig tomcat on
&lt;/pre&gt;
というわけで、次はRails&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/7003622284396944069/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/07/tomcat-on-scientificlinux.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7003622284396944069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7003622284396944069'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/07/tomcat-on-scientificlinux.html' title='Tomcat7 on ScientificLinux6'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRiPPRPQcAkhqTxreNS9WftluulWCy0EACbQT2PfVjTZMUD85nlTnQIBmMVMB6IC898SwhV2uVOn_KRC1FCskTMBl-ExSotpF1GGkXyeDBAAkdRTqnP7U7o6_e6BwU4i0vEDL_xWJ333MN/s72-c/%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-3014648786412231578</id><published>2012-07-23T00:54:00.002+09:00</published><updated>2012-07-23T00:54:43.614+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="iptables"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ネットワーク"/><title type='text'>mydns.jpに繋がらなくなった</title><content type='html'>&lt;br /&gt;
mydns.jpに繋がらなくなった。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;

事の発端&lt;/h2&gt;
先日、mydns.jpからメールが来た。&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
IPアドレスの通知が10日間確認できません。&lt;br /&gt;
※注意&lt;br /&gt;
・一週間以上IPアドレスの通知がないと、エラーサイトに誘導します。&lt;br /&gt;
・一ヶ月以上ご利用がないと、全てのデータを削除しますのでご注意ください。&lt;/blockquote&gt;
&lt;br /&gt;
&lt;br /&gt;
ipアドレスの通知は、30分おきにwgetコマンドでログインページにアクセスすることで行なっている。&lt;br /&gt;
&lt;br /&gt;
確かに、mydns.jpのログを見るとアクセス履歴がない。どうやら、サーバーからmydns.jpへの接続がうまく行ってないらしい。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;

結論&lt;/h2&gt;
悪さをしていたのは、iptablesだった。一度&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;/etc/rc,d/init.d/iptables stop&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
で止めた上で&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;ping www.mydns.jp
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
を叩いたら繋がった。一先ず、接続許可リストにwww.mydns.jpを加えて問題解決。しかし、色々と腑に落ちない。&lt;br /&gt;
&lt;br /&gt;
やったこと&lt;br /&gt;
&lt;br /&gt;
まずは、pingを試してみる。&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;ping www.mydns.jp
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
は勿論、直接IPアドレスをターゲットにしたりもしたけどどうやら駄目。&lt;br /&gt;
&lt;br /&gt;
次はtraceroute&lt;br /&gt;
&lt;br /&gt;
見事に途中まで行って繋がらなくなっている。&lt;br /&gt;
&lt;br /&gt;
この辺で困る。&lt;br /&gt;
&lt;br /&gt;
routeコマンドでルーティングテーブル眺めたり、/etc/hostsとか/etc/resolver.confを眺めるも特に問題無さそう。&lt;br /&gt;
&lt;br /&gt;
というか、mydns.jpにのみ繋がらない。&lt;br /&gt;
&lt;br /&gt;
この辺で、&lt;a href=&quot;http://www.twitter.com/masawada&quot; target=&quot;_blank&quot;&gt;@masawada&lt;/a&gt;君に頼んで彼のtracerouteの結果を見せてもらった。&lt;br /&gt;
&lt;br /&gt;
どうも、mydns.jpの直前までは繋がっているらしい。と言うことはルーティングテーブルやDNSの設定ではないなー&lt;br /&gt;
&lt;br /&gt;
って感じで悩んでて、ふとファイアーウォールかなー？と。&lt;br /&gt;
&lt;br /&gt;
そういう訳で、iptablesの設定を変更してどうにか解決。&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;

原因？？&lt;/h2&gt;
&lt;br /&gt;
なんで、mydns.jpが弾かれていたのか結局謎。&lt;br /&gt;
&lt;br /&gt;
接続拒否リストに載っていたとかってこともないし、特にブロックする設定にしていたわけでもない。&lt;br /&gt;
&lt;br /&gt;
以前発生した似たような現象で、許可していない場所から、場所へのアクセスを全て弾く設定をしてしまっていたことがあったけど、今回はそういう事もない。&lt;br /&gt;
&lt;br /&gt;
ただ1点気になるのはiptablesの設定ファイルの中に書いた&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;iptable -A INPUT -t filter -p tcp --syn -j DROP&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
コレが俺の思っている以上に強力なのではないだろうか。特に設定をしていないtcpパケットは弾くっていう意味で書いているつもりだけど、ぜんぜん違うのでは・・・？&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;iptables -L&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
を叩くと&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  jpn.www.mydns.jp     anywhere
ACCEPT     all  --  eu.www.mydns.jp      anywhere
ACCEPT     all  --  usa.www.mydns.jp     anywhere
ACCEPT     all  --  asia.www.mydns.jp    anywhere
ACCEPT     all  --  yoriko.mydns.jp      anywhere
ACCEPT     all  --  yoriko.mydns.jp      anywhere
ACCEPT     all  --  usa.www.mydns.jp     anywhere
ACCEPT     all  --  asia.www.mydns.jp    anywhere
ACCEPT     all  --  www.MyDNS.JP         anywhere
ACCEPT     all  --  eu.www.mydns.jp      anywhere
DROP       all  --  usa.www.mydns.jp     anywhere
DROP       all  --  asia.www.mydns.jp    anywhere
DROP       all  --  www.MyDNS.JP         anywhere
DROP       all  --  eu.www.mydns.jp      anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh
ACCEPT     udp  --  anywhere             anywhere            udp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:http
ACCEPT     udp  --  anywhere             anywhere            udp dpt:http
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:nnsp
ACCEPT     udp  --  anywhere             anywhere            udp dpt:nnsp
&lt;/pre&gt;
&lt;br /&gt;
ってなって、mydns.jpをDROPしてるし・・・？わからん・・・。わからんけど、今日は寝る。</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/3014648786412231578/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/07/mydnsjp.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/3014648786412231578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/3014648786412231578'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/07/mydnsjp.html' title='mydns.jpに繋がらなくなった'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-4762353258257828246</id><published>2012-07-14T00:43:00.001+09:00</published><updated>2012-07-14T00:43:24.039+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="google.chrome.extension"/><title type='text'>Chrome Tech Night #3に参加したっ！</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisGcvBXwCNxVzzGvjgyIHMSKEaOLTR4CAjJ2ffAe9pHhbzVwkmIQOuE8IlWc4jOdrA6J_47uPW04M6kLjc3wV9hPACglIyHFtgVnBecs2_JITeDVnXsKK_X7avZl34r3OTexjX97P14tfT/s1600/chrome-108.gif&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisGcvBXwCNxVzzGvjgyIHMSKEaOLTR4CAjJ2ffAe9pHhbzVwkmIQOuE8IlWc4jOdrA6J_47uPW04M6kLjc3wV9hPACglIyHFtgVnBecs2_JITeDVnXsKK_X7avZl34r3OTexjX97P14tfT/s1600/chrome-108.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Google Japanオフィスに初めて潜入しました。&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvSKAT85N-rAQZBm_3eA7aXRL3man6GZikiiVTBSLbMiwHlPMz4f_F91iUaTO7eascMKIumBAFbz79ihYh2IEgt1jr54hebPZlhXDGeHbPDgJvsr-c9YoeXS5gX4P-hBARxjEPtdzCjoYg/s1600/IMG_20120713_222130.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvSKAT85N-rAQZBm_3eA7aXRL3man6GZikiiVTBSLbMiwHlPMz4f_F91iUaTO7eascMKIumBAFbz79ihYh2IEgt1jr54hebPZlhXDGeHbPDgJvsr-c9YoeXS5gX4P-hBARxjEPtdzCjoYg/s320/IMG_20120713_222130.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvSKAT85N-rAQZBm_3eA7aXRL3man6GZikiiVTBSLbMiwHlPMz4f_F91iUaTO7eascMKIumBAFbz79ihYh2IEgt1jr54hebPZlhXDGeHbPDgJvsr-c9YoeXS5gX4P-hBARxjEPtdzCjoYg/s1600/IMG_20120713_222130.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgJssOtwAoCIL7HzBNPgKJEAHAoVzPsO6t1O1oV2odLyCY3FhRgZ6PJIQpQ4ZxwdguNxxhN5mg_oknc9I2b99CDzN4f_TRRor1NFn-RhuYAXN0dQ3HYY8qtRyBzPxmzI85uCUWaJm_riZEE/s1600/IMG_20120713_195423.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZcD9UpykMknMEd7xC1eC6ga5lo01fGsvWbWMZ1EVI4SP0wyM_ZCVHw2pOqptPDei3vTXS_M_SNQwxpt9-wXzE3lkFHRCChObPqfNZ7YdkhT97LFhYV6EkNJbqqTVzrGpNKmRJO4xG0sou/s1600/IMG_20120713_220437.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
内容は、Google I/Oで行われたセッションの日本語訳。詳細は、Googleのブログを。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://googledevjp.blogspot.jp/2012/07/chrome-tech-talk-night-3.html&quot;&gt;http://googledevjp.blogspot.jp/2012/07/chrome-tech-talk-night-3.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ちなみに、僕自身はChrome Extensionは昨年のDevQuizで書いた経験しかありませんｗ&lt;br /&gt;&lt;br /&gt;まずは、現状のChromeの話。&lt;br /&gt;&lt;br /&gt;セキュリティ系統の話となると、パーミッションを設定してそれに同意した上でユーザはExtensionを導入するというシステムになっています。&lt;br /&gt;&lt;br /&gt;丁度、Androidのアプリと同じ様な感じでしょうか。&lt;br /&gt;&lt;br /&gt;しかしながら、現状では必要以上のパーミッションを要求するものや、システム上機能を有効利用できていないものが多くあるとのこと。&lt;br /&gt;&lt;br /&gt;これらが生み出す問題は悪意のあるExtensionが公開されてしまう、ということよりもExtensionを利用することによって脆弱性が生み出されてしまうことの方が大きいそうです。&lt;br /&gt;&lt;br /&gt;Extensionのコードを介して、WEBサイトに対してXSS攻撃が可能となったりするそうです。&lt;br /&gt;&lt;br /&gt;さらに、APIももっと細かく提供することを考えているそうです。&lt;br /&gt;&lt;br /&gt;これらのことが目指しているのは、開発者の意図をもっとはっきりとさせると言うこと。&lt;br /&gt;&lt;br /&gt;つまり、「このExtensionを使うと、こういうことができるよ」から更に踏み込んで「この機能を実装するために、この仕組み（パーミッション）を利用するよ」&lt;br /&gt;&lt;br /&gt;ということが分かるということかな、と。そう考えると、パーミッションの細分化やAPIの提供に加えて、App Storeでパーミッション毎に注釈なんかが付けられると嬉しいですね。&lt;br /&gt;&lt;br /&gt;さて、それも踏まえて今後のことですが、現在Extensionの開発に必用なManifestファイルのversion1を利用しているアプリは2013年末に向けて使えなくなるそうです。&lt;br /&gt;&lt;br /&gt;ベンダーは、アップデートと今後の開発はvesion2で行いなさいと言うこと。&lt;br /&gt;&lt;br /&gt;今まで開発をしてこなかった僕は、勝ち組ということでしょうかね。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7Ms3bPzelu6PgxdpuSVDTplhHpWxMIqBA4BZwSDM0SBBZErQYrU6J0PLbyWDa4d-htmifTT-KZvxYfXcukftgYAvV-mOU7nNfmf1LAphTtBbvPXMlR43hT-oG8Fxp9L8puDacZHDWiSQI/s1600/IMG_20120713_195423.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7Ms3bPzelu6PgxdpuSVDTplhHpWxMIqBA4BZwSDM0SBBZErQYrU6J0PLbyWDa4d-htmifTT-KZvxYfXcukftgYAvV-mOU7nNfmf1LAphTtBbvPXMlR43hT-oG8Fxp9L8puDacZHDWiSQI/s320/IMG_20120713_195423.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;br /&gt;引き続いてChorme Appの未来の話。&lt;br /&gt;&lt;br /&gt;これらの実装はまだ行われておらず、App Storeでの公開はできないとのことですが、とは言えwktkする内容でした。&lt;br /&gt;&lt;br /&gt;Chrome APPはWEBアプリらいくなHosted APPと、ウィジェットらいくなPackaged APPに分けられるそうですが、話の感じとしてPackaged APPに力が入っている感じでした。&lt;br /&gt;&lt;br /&gt;今後はアプリを Chromeの起動→アプリの起動、ではなくてWindowsならスタートメニュー、MacならDockから起動できるように、&lt;br /&gt;&lt;br /&gt;さらにブラウザの外枠を外したUIや複数ウィンドウへの対応更に、アプリ内で踏んだリンクは新しいブラウザで起動するようにするなど、ブラウザの枠を超えた存在を作るそうです。&lt;br /&gt;&lt;br /&gt;まるで、Adobe Airですね。ネィティブのSilverRightでもイイかもしれませんが？&lt;br /&gt;&lt;br /&gt;さらに、オフラインへの対応の強化。これは、オフライン状態への自動的な切り替えや、オンライン時の自動同期などの提供です。&lt;br /&gt;&lt;br /&gt;そして、盛り上がったのが新しいAPIの提供。例えば、ハードウェアへの直接的なアクセス。今までもWEBカメラは利用できていましたが、更にBluetoothやUSBデバイスへのアクセスが可能に。&lt;br /&gt;&lt;br /&gt;そして、TCP,UDPを利用したネットワークへのアクセスなど思いの外下層レイヤのAPIの提供が実装されていてびっくりでした。&lt;br /&gt;&lt;br /&gt;実際にGoogleI/Oではデモで、LEGO MINDSTORMをPCに接続したゲームパッドから、Chromeを介してBluetoothで操作するものが動いていたそうです。&lt;br /&gt;&lt;br /&gt;さらに、どなたかの質問で挙げられたのが、TCPやUDPでアクセスできるのであればlistenポートを作ってしまえばサーバーアプリケーションを作成することが出来るのではないかというもの。&lt;br /&gt;&lt;br /&gt;詳細はドキュメントを読んでくださいということでしたが、Chromeがサーバーになれば例えば本格的なWEBサーバーと言うよりも、集まった仲間同士で何かをやるグループウェア的な使い方ができるかもしれません。&lt;br /&gt;&lt;br /&gt;というか、各種IRCやチャットサービスの利用やSSHの利用なんかも実装できますね。すでにExtensionで提供されているものもありますが、もっとセキュアな実装で再登場するかもしれませんん。公開鍵認証使えるとか。&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiSNgVhUvtzp5dFkMncPuNAjTNiJEhhUrz1xbbfTHCVetoEeJOMdms4sBJcKrJ6QsPoodYvofh72qS4nUUjCIcGVH2bpAffratQEu5vDBbuWsfpiaXghSpvzaygwQoaThHV6IJyuGBCv6W/s1600/IMG_20120713_211144.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiSNgVhUvtzp5dFkMncPuNAjTNiJEhhUrz1xbbfTHCVetoEeJOMdms4sBJcKrJ6QsPoodYvofh72qS4nUUjCIcGVH2bpAffratQEu5vDBbuWsfpiaXghSpvzaygwQoaThHV6IJyuGBCv6W/s320/IMG_20120713_211144.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;br /&gt;さてセッション終了後は懇親会。皆さんテンションが高くて！！&lt;br /&gt;&lt;br /&gt;何人かの方とお話をしましたが、どうもGoogleが目指しているものは「プラットフォームとしてのChrome」何じゃないかということでした。&lt;br /&gt;&lt;br /&gt;アプリを動かすのもChrome、WEBページを見るのもChrome、そしてもしかしたらサーバーも・・・？&lt;br /&gt;&lt;br /&gt;IE6なんて、今となっては残念なブラウザもありますが「ブラウザって何？」なユーザに対して「このアプリを利用するには、Chromeを入れる必用があります」&lt;br /&gt;&lt;br /&gt;と、説明をするなんてアプローチが可能になるってことでしょうかね。&lt;br /&gt;&lt;br /&gt;それはそれでアレですけど・・・&lt;br /&gt;&lt;br /&gt;モバイル版のChromeも配信され、Extensionは使えないものの盛り上がっている今、明るくてwktkなセッションを聞くことができてほんとうに楽しかったです。&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZcD9UpykMknMEd7xC1eC6ga5lo01fGsvWbWMZ1EVI4SP0wyM_ZCVHw2pOqptPDei3vTXS_M_SNQwxpt9-wXzE3lkFHRCChObPqfNZ7YdkhT97LFhYV6EkNJbqqTVzrGpNKmRJO4xG0sou/s1600/IMG_20120713_220437.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZcD9UpykMknMEd7xC1eC6ga5lo01fGsvWbWMZ1EVI4SP0wyM_ZCVHw2pOqptPDei3vTXS_M_SNQwxpt9-wXzE3lkFHRCChObPqfNZ7YdkhT97LFhYV6EkNJbqqTVzrGpNKmRJO4xG0sou/s320/IMG_20120713_220437.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;br /&gt;ChromeNote や ChromeBoxでOSとしてのChromeも今後どんどん盛り上がっていくと更に楽しいと思います。&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQOQ7eKomsc1YZ_Sp_fHYmt11x1Ur0Dy9VOgi0qZF89IDM5IsppXpmfZ5i_0dptDSDzzhiRn8eOyzR4mXlocpPJKLdzSBVtB-PWa3NS8rEha6OocsCFw-cbnI8j85C-60i8KZG6FJ4czUI/s1600/IMG_20120713_220904.jpg&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQOQ7eKomsc1YZ_Sp_fHYmt11x1Ur0Dy9VOgi0qZF89IDM5IsppXpmfZ5i_0dptDSDzzhiRn8eOyzR4mXlocpPJKLdzSBVtB-PWa3NS8rEha6OocsCFw-cbnI8j85C-60i8KZG6FJ4czUI/s320/IMG_20120713_220904.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;br /&gt;僕も、Extensionを書いたりしてCommitしていきたいですね。&lt;br /&gt;&lt;br /&gt;最後に、Extensionの開発などで利用できるサイトのURLを4個ほど貼り付けておきます。&lt;br /&gt;&lt;br /&gt;Google Chrome -- Google Developers&lt;br /&gt;&lt;a href=&quot;https://developers.google.com/chrome/&quot;&gt;https://developers.google.com/chrome/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Google Chrome Extensions -- Google Code&lt;br /&gt;&lt;a href=&quot;https://developer.chrome.com/trunk/apps/about_apps.html&quot;&gt;https://developer.chrome.com/trunk/apps/about_apps.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Google Chrome -- GitHub&lt;br /&gt;&lt;a href=&quot;https://github.com/GoogleChrome&quot;&gt;https://github.com/GoogleChrome&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;HTML5ROCKS&lt;br /&gt;&lt;a href=&quot;http://www.html5rocks.com/ja/&quot;&gt;http://www.html5rocks.com/ja/&lt;/a&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/4762353258257828246/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/07/chrome-tech-night-3.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/4762353258257828246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/4762353258257828246'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/07/chrome-tech-night-3.html' title='Chrome Tech Night #3に参加したっ！'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisGcvBXwCNxVzzGvjgyIHMSKEaOLTR4CAjJ2ffAe9pHhbzVwkmIQOuE8IlWc4jOdrA6J_47uPW04M6kLjc3wV9hPACglIyHFtgVnBecs2_JITeDVnXsKK_X7avZl34r3OTexjX97P14tfT/s72-c/chrome-108.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-8216129224204448550</id><published>2012-07-12T20:27:00.000+09:00</published><updated>2012-07-12T20:42:30.965+09:00</updated><title type='text'>僕もNginx＋Wordpressだっ！</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9vE2NODT12neDXfu_iptMpccSFsLekiufOmp9FoUfyh_CtIH_o9fczf6r-dxJF938cCx7fl3bFEFAabLgtwO6BsHAYlESQDJ-lE5e4fD7TiUQKKQZT7M6nyOg6IXGk1uKia2xYmcTONEH/s1600/nginx-logo.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;82&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9vE2NODT12neDXfu_iptMpccSFsLekiufOmp9FoUfyh_CtIH_o9fczf6r-dxJF938cCx7fl3bFEFAabLgtwO6BsHAYlESQDJ-lE5e4fD7TiUQKKQZT7M6nyOg6IXGk1uKia2xYmcTONEH/s320/nginx-logo.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
先日のこと。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;twitter-tweet&quot; data-in-reply-to=&quot;222239957824192513&quot; lang=&quot;ja&quot;&gt;
@&lt;a href=&quot;https://twitter.com/numa08&quot;&gt;numa08&lt;/a&gt; ぜひnginxで&lt;br /&gt;
— Masayoshi Wadaさん (@masawada) &lt;a data-datetime=&quot;2012-07-09T08:05:51+00:00&quot; href=&quot;https://twitter.com/masawada/status/222240132055572480&quot;&gt;7月 9, 2012&lt;/a&gt;&lt;/blockquote&gt;
&lt;script charset=&quot;utf-8&quot; src=&quot;//platform.twitter.com/widgets.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
こんな流れでnginx使ってWEBサーバーを立てることになった。インストールと設定のメモを記述。&lt;br /&gt;
&lt;br /&gt;
環境はさくらVPSで動く、ScientificLinux6。&lt;br /&gt;
&lt;br /&gt;
公式でバイナリパッケージが配布されているので、yumを使ってインストールが可能。&lt;br /&gt;
&lt;br /&gt;
参照先リポジトリの設定。&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
#vim /etc/yum.repos.d/nginx.repo
&lt;/pre&gt;
&lt;br&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/6/$basearch/
gpgcheck=0
enabled=1
&lt;/pre&gt;
&lt;br /&gt;
インストール&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
#yum -y  --enablerepo=nginx install nginx
&lt;/pre&gt;
&lt;br /&gt;
php-fpmのインストール&lt;br /&gt;
&lt;br /&gt;
リポジトリの追加&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
#rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi 
#rpm -ivh http://ftp.yz.yamagata-u.ac.jp/pub/linux/fedora/epel/6/i386/epel-release-6-7.noarch.rpm
#rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm  
&lt;/pre&gt;
&lt;br /&gt;
URLの変更&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
#vim /etc/yum.repos.d/remi.repo
&lt;/pre&gt;
&lt;br&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
mirrorlist=http://rpms.famillecollet.com/enterprise/$releasever/remi/mirror
&lt;/pre&gt;
&lt;br&gt;
↓
&lt;br&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
mirrorlist=http://rpms.famillecollet.com/enterprise/6/remi/mirror
&lt;/pre&gt;
&lt;br /&gt;
インストール&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
#yum install -y php php-fpm php-devel php-cli php-xml php-mysql php-mbstring php-gd --enablerepo=remi
&lt;/pre&gt;
&lt;br /&gt;
nginxの設定ファイルの編集&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
#vim /etc/nginx/nginx.conf
&lt;/pre&gt;
&lt;br&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  &#39;$remote_addr - $remote_user [$time_local] &quot;$request&quot; &#39;
                      &#39;$status $body_bytes_sent &quot;$http_referer&quot; &#39;
                      &#39;&quot;$http_user_agent&quot; &quot;$http_x_forwarded_for&quot;&#39;;

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    server_tokens off;
    gzip  on;

    server {
            listen 80;
            server_name _;

            root /usr/local/www/yoriko.mydns.jp;
            index index.php index.html index.htm;
            charset utf-8;

            access_log /var/log/yoriko.access.log;
            error_log /var/log/yoriko.error.log;

            location = /robots.txt { access_log off; log_not_found off;}
            location = /favicon.ico { access_log off; log_not_found off;}

            location ~*\.php$ {
                    fastcgi_pass 127.0.0.1:9000;
                    fastcgi_index index.php;
                    fastcgi_param SCRIPT_FILENAME
                    $document_root$fastcgi_script_name;
                    fastcgi_intercept_errors on;
                    include fastcgi_params;
            }

            location ~/\. {
                    deny all;
                    access_log off;
                    log_not_found off;
            }
    }
    include /etc/nginx/conf.d/*.conf;
}
&lt;/pre&gt;
&lt;br /&gt;
php-fpmの設定ファイルの編集&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
#vim /etc/php-fpm.d/www.conf
&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
user = nginx
group = nginx
pm = static
php_admin_flag[expose_php] = off
&lt;/pre&gt;
&lt;br&gt;
デーモンの起動&lt;br&gt;
&lt;pre class=&quot;brush : bash&quot;&gt;
#/etc/rc.d/init.d/nginx start
#/etc/rc.d/init.d/php-fpm start
&lt;/pre&gt;
ひとまずこの手順で、phpがブラウザで動作します。あとは、普通にWordPressをインストールするだけ。&lt;br /&gt;
&lt;br /&gt;
ただ、.htaccessとか無いのでパーマリンクの設定などをどうするのかは要調査です。&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/8216129224204448550/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/07/nginxwordpress.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/8216129224204448550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/8216129224204448550'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/07/nginxwordpress.html' title='僕もNginx＋Wordpressだっ！'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9vE2NODT12neDXfu_iptMpccSFsLekiufOmp9FoUfyh_CtIH_o9fczf6r-dxJF938cCx7fl3bFEFAabLgtwO6BsHAYlESQDJ-lE5e4fD7TiUQKKQZT7M6nyOg6IXGk1uKia2xYmcTONEH/s72-c/nginx-logo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-324499914116872215.post-7007103903273503903</id><published>2012-07-04T01:03:00.000+09:00</published><updated>2012-07-04T01:03:04.645+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="adk2012"/><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="arduino"/><title type='text'>ADK2012がやってきた</title><content type='html'>GoogleI/O二日目のセッション&quot;ADK2.0&quot;に参加すると、引換券が貰える。それをGear Pick Up(おみやげ配ってた所）に持って行くと、ADK2012をもらうことができた。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyl8vR7J0llegYVvUmfFvZbWt0uUPTY5-lToxt42cg_z1cCMPKsTvS-hTfvDvOlhvYMfHYEv0ObvSeVqyWAcQqWETLMdi5IRSWX-jL92aDlqxO7bQp5HXjBYHJevV7kzvd7MjlraxMxLxt/s1600/IMG_20120628_132324.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyl8vR7J0llegYVvUmfFvZbWt0uUPTY5-lToxt42cg_z1cCMPKsTvS-hTfvDvOlhvYMfHYEv0ObvSeVqyWAcQqWETLMdi5IRSWX-jL92aDlqxO7bQp5HXjBYHJevV7kzvd7MjlraxMxLxt/s320/IMG_20120628_132324.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;引換券表&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWJ5UrQPhS_cqdJmzbu0atvUXiZdJNaihjJ3rc8gkOHTLBpgxW8a_7Gj_uRkO4f4mbd4cDW9jGNEpSqafQYhG4fvGxMi-tbIiATdRz78TyIt0O4Ngg6tF43AB7UQVTHbDEgli9f7iQ-1rc/s1600/IMG_20120628_132111.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWJ5UrQPhS_cqdJmzbu0atvUXiZdJNaihjJ3rc8gkOHTLBpgxW8a_7Gj_uRkO4f4mbd4cDW9jGNEpSqafQYhG4fvGxMi-tbIiATdRz78TyIt0O4Ngg6tF43AB7UQVTHbDEgli9f7iQ-1rc/s320/IMG_20120628_132111.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;引換券裏&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&amp;nbsp;前回のADKはArduinoMegaをベースに色々とセンサーを乗せたものだったが、今回は明確に目覚まし時計となっている。&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI7ChDgg5AKmRgkvnzbB85MhJAqNluAiIpsGNuJP40xrmqgQyLOwMJiea226IQ4YYCShdQtG-sa6Fj2txeQ5uqTrmqVn1RyxWwSCK1eZOku9spbIkPdkhCOzMsgMlE0pr145ZZJWkpi8pg/s1600/IMG_20120703_234115.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI7ChDgg5AKmRgkvnzbB85MhJAqNluAiIpsGNuJP40xrmqgQyLOwMJiea226IQ4YYCShdQtG-sa6Fj2txeQ5uqTrmqVn1RyxWwSCK1eZOku9spbIkPdkhCOzMsgMlE0pr145ZZJWkpi8pg/s320/IMG_20120703_234115.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;目覚まし時計&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiutJr0OkbQoziSZMWp9hAifpgnpk9V8doYYGu0VKzPFT0LyK6BMqVJWD3GrMq9HoGZE1fMzGt5QEkPuhC3cpuLd5VkaBnTP1izsMLm0-bp3MtB-WUg-MUG7jYu91hGZR0BXoRWtb_zgd8Y/s1600/IMG_20120703_234137.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiutJr0OkbQoziSZMWp9hAifpgnpk9V8doYYGu0VKzPFT0LyK6BMqVJWD3GrMq9HoGZE1fMzGt5QEkPuhC3cpuLd5VkaBnTP1izsMLm0-bp3MtB-WUg-MUG7jYu91hGZR0BXoRWtb_zgd8Y/s320/IMG_20120703_234137.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;ご開帳&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8ajx4weQ-3RdO18VRlylWd3mey0bxB_8OtgtPXSxHmT3bj_wIM4Pp3tvRlc1EK0AtqRdj9-KDq6h8B4hssSu53q-0vSdssz4Gmta3c_gl9LTmGtM7-szWan27Rt9sATvVDb9lmEikM4JK/s1600/IMG_20120702_001812.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8ajx4weQ-3RdO18VRlylWd3mey0bxB_8OtgtPXSxHmT3bj_wIM4Pp3tvRlc1EK0AtqRdj9-KDq6h8B4hssSu53q-0vSdssz4Gmta3c_gl9LTmGtM7-szWan27Rt9sATvVDb9lmEikM4JK/s320/IMG_20120702_001812.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;別アングル&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&amp;nbsp;目覚まし時計としての他、オーディオファイルの再生機能も持っているらしい。&lt;br /&gt;
&lt;br /&gt;
本体内部にセンサー類が搭載されていて、NFCや加速度センサー、温度センサー、光センサーなどが利用可能。 &lt;br /&gt;
&lt;br /&gt;
制御用のアプリケーションも配布されている。&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.apps.adk2&quot; target=&quot;_blank&quot;&gt;ADK2012&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinzBvtsz49h2qeiqsS2G6pHjIfocZ652hv60PxnAfOs7GQxNlDxxCoVf3N2BQIUY_XP8HEsEGuwitORSaFLUUkJadHbBs0zu9cKO5A1d7UMIU7RAC_UhU6Ds55fOvOcv0KlxI0_EVsoVV7/s1600/device-2012-07-04-003722.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEinzBvtsz49h2qeiqsS2G6pHjIfocZ652hv60PxnAfOs7GQxNlDxxCoVf3N2BQIUY_XP8HEsEGuwitORSaFLUUkJadHbBs0zu9cKO5A1d7UMIU7RAC_UhU6Ds55fOvOcv0KlxI0_EVsoVV7/s320/device-2012-07-04-003722.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;起動画面。BluetoothかUSBで接続する。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLdl8KqKrhGN2EBa1Ecx5ePs_C_uDgxxOQarSL2o8BFTlqBR-fiOHMp5aYwPtyDedPW1JjrN-j1jjnYz-lZ1qBhE03gaA7jhXJf_EtHJuPW0GkP9gTiFSBfz64bDtbIis8mIbxZkkn9X0r/s1600/device-2012-07-04-000758.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLdl8KqKrhGN2EBa1Ecx5ePs_C_uDgxxOQarSL2o8BFTlqBR-fiOHMp5aYwPtyDedPW1JjrN-j1jjnYz-lZ1qBhE03gaA7jhXJf_EtHJuPW0GkP9gTiFSBfz64bDtbIis8mIbxZkkn9X0r/s320/device-2012-07-04-000758.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;スタート画面。色々な機能にアクセスできる。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisxD8evUSCh7f1sTIOOCQGRFmkVBpKznh1t7_y9PW8Hn2OuStRDtGFi-ma9o19XGeFP3RiJKnYlidGFvQlsncQ_ORWEkQs8zoJA-3j4nkEMllnadhSPQ1kTc5417MyU_cbaoOOP_JOG0kx/s1600/device-2012-07-04-000811.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisxD8evUSCh7f1sTIOOCQGRFmkVBpKznh1t7_y9PW8Hn2OuStRDtGFi-ma9o19XGeFP3RiJKnYlidGFvQlsncQ_ORWEkQs8zoJA-3j4nkEMllnadhSPQ1kTc5417MyU_cbaoOOP_JOG0kx/s320/device-2012-07-04-000811.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;アラーム設定画面。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLru3dRe2ULVJNK1UEL1npGzHwVYLJYkN9WE4GNwA02I0WFg1Rk36B9g3kqeIEMiEetrmkv4fU7msaT8daG1UW2iivOTuUJI4KY_DnAlukfyu1p-cwAomx92ZcipOCB-wAep54ZNoLNVym/s1600/device-2012-07-04-000828.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLru3dRe2ULVJNK1UEL1npGzHwVYLJYkN9WE4GNwA02I0WFg1Rk36B9g3kqeIEMiEetrmkv4fU7msaT8daG1UW2iivOTuUJI4KY_DnAlukfyu1p-cwAomx92ZcipOCB-wAep54ZNoLNVym/s320/device-2012-07-04-000828.png&quot; width=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;LEDの色の設定画面。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
なお、目覚まし時計ADK単体で設定が可能だし、オーディオファイルの再生はAndroid4.1以降の端末ならBluetoothでファイルを送信して再生することが可能。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
ソースコードやIDEは既に公開されている。Arduinoを搭載しているのでProcessingが利用可能だが、セッションではCを利用していた。&lt;br /&gt;
&lt;br /&gt;
端末とはBluetoothかUSBで接続をするが、USBの場合は両方の端子がMicroBとなっているケーブルを利用する。&lt;br /&gt;
&lt;br /&gt;
無線による通信のサポートがここまで行き届いているのは有難い限り。&lt;br /&gt;
&lt;br /&gt;
しかし、気になるのはアナログ、デジタルI/Oポートが無い点。今回はADK単体とAndroidで完結する物作りに制限されるということだろうか。&lt;br /&gt;
&lt;br /&gt;
あるいは、ボードを取り外すことができるのか？&lt;br /&gt;
&lt;br /&gt;
サンプルコードを読んだりしてなんかやろうと考えてます。NFC使いたい。&lt;br /&gt;
&lt;br /&gt;
今後の販売などのアナウンスはまだ出てないようです。でも、その内出るのではないかな？&lt;br /&gt;
&lt;br /&gt;
しかし、所詮Arduinoなので適当なボードとシールドを買ってくれば同等のものが実装可能なハズ。そういうアプローチで「ADK2012俺Ver」とかやるのも、面白いのかもしれません。</content><link rel='replies' type='application/atom+xml' href='http://numa08.blogspot.com/feeds/7007103903273503903/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://numa08.blogspot.com/2012/07/adk2012.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7007103903273503903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/324499914116872215/posts/default/7007103903273503903'/><link rel='alternate' type='text/html' href='http://numa08.blogspot.com/2012/07/adk2012.html' title='ADK2012がやってきた'/><author><name>numa08</name><uri>http://www.blogger.com/profile/13615982691917580697</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLrez6gBCsTXq8sxcQZpLdiND6hQ_K8d5k7OzN1csxQH_dL0-Sy1xO35MFXBdVotnBNfyLI3mxrz_FIrgsQb-v7U0Gx8d8QfH6i0JxDXYLIZ0GgEW2GVBe-hJRnn64ow/s220/icon.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiyl8vR7J0llegYVvUmfFvZbWt0uUPTY5-lToxt42cg_z1cCMPKsTvS-hTfvDvOlhvYMfHYEv0ObvSeVqyWAcQqWETLMdi5IRSWX-jL92aDlqxO7bQp5HXjBYHJevV7kzvd7MjlraxMxLxt/s72-c/IMG_20120628_132324.jpg" height="72" width="72"/><thr:total>0</thr:total></entry></feed>