<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>shinodogg.com &#187; 技</title>
	<atom:link href="http://shinodogg.com/?feed=rss2&#038;cat=5" rel="self" type="application/rss+xml" />
	<link>http://shinodogg.com</link>
	<description>東京湾岸で働くエンジニアのブログ</description>
	<lastBuildDate>Thu, 09 Sep 2010 08:00:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://shinodogg.com/?feed=rss2&amp;cat=5" />
		<item>
		<title>PHP5+PHPUnit+phpUnderControl</title>
		<link>http://shinodogg.com/?p=3128</link>
		<comments>http://shinodogg.com/?p=3128#comments</comments>
		<pubDate>Thu, 09 Sep 2010 07:53:28 +0000</pubDate>
		<dc:creator>shinodogg</dc:creator>
				<category><![CDATA[技]]></category>

		<guid isPermaLink="false">http://shinodogg.com/?p=3128</guid>
		<description><![CDATA[＃ すいません結果的にまだ出来てないです・・・ちょっと難しいなぁ。。
＃ やっぱMicrosoftのみたいにウィザードで次へ次へで作れちゃうってのは
＃ 魅力的だなって思ったり思わなかったり。。
&#8212;&#821 [...]]]></description>
			<content:encoded><![CDATA[<p>＃ すいません結果的にまだ出来てないです・・・ちょっと難しいなぁ。。<br />
＃ やっぱMicrosoftのみたいにウィザードで次へ次へで作れちゃうってのは<br />
＃ 魅力的だなって思ったり思わなかったり。。</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8211;<br />
1. PHPをインストールします。<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
$ apt-get install php5</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8211;<br />
2. pearをインストールします。<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
$ apt-get install php-pear<br />
　<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
3. pearのプロキシを設定します。(必要な場合は)<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
$ pear config-set http_proxy サーバ:ポート<br />
　<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
4. pearのアップデートしておきます。<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
pear channel-update pear.php.net<br />
　<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
5. PHPUnitをインストールします。<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
$ pear install phpunit/PHPUnit<br />
　<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
6. phpunitを叩いてみます。<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
$ phpunit &#8211;version<br />
PHPUnit 3.4.15 by Sebastian Bergmann.<br />
　<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
7. テストクラスを作ってみます。<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
<?php　<br />
require_once 'PHPUnit/Framework.php';<br />
　<br />
class HogeTest extends PHPUnit_Framework_TestCase<br />
{<br />
　public function testHoge()<br />
　{<br />
　　$hoge = "hoge";<br />
　　$this->assertEquals(&#8221;hoge&#8221;, $hoge); ★ 成功<br />
　}<br />
　public function testHage()<br />
　{<br />
　　$hage = &#8220;hage&#8221;;<br />
　　$this->assertEquals(&#8221;hoge&#8221;, $hage); ★ 失敗<br />
　 }<br />
}<br />
　<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
8. 実行してみます。<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
root@P8033:/usr/local/hob# phpunit HogeTest<br />
PHPUnit 3.4.15 by Sebastian Bergmann.</p>
<p>.F</p>
<p>Time: 0 seconds, Memory: 4.00Mb</p>
<p>There was 1 failure:</p>
<p>1) HogeTest::testHage<br />
Failed asserting that two strings are equal.<br />
&#8212; Expected<br />
+++ Actual<br />
@@ @@<br />
-hoge<br />
+hage</p>
<p>/usr/local/hob/HogeTest.php:14</p>
<p>FAILURES!<br />
Tests: 2, Assertions: 2, Failures: 1.<br />
　<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
9. CIするためには、なんとJavaのサーバ(CruiseControl )立てなきゃいけません。。<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
$ cd /usr/local/<br />
wgetして、、<br />
$ wget http://sourceforge.net/projects/cruisecontrol/files/CruiseControl/2.8.3/cruisecontrol-bin-2.8.3.zip<br />
解凍して、、<br />
$ unzip cruisecontrol-bin-2.8.3.zip<br />
mvして、、<br />
$ mv cruisecontrol-bin-2.8.3 cruisecontrol<br />
$ cd cruisecontrol<br />
叩いてみます<br />
$ ./cruisecontrol.sh<br />
なんかおこられたので、、<br />
./cruisecontrol.sh: line 105: /bin/java: No such file or directory<br />
$ export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.20/<br />
もう一度叩くと、、、なんかツラツラとログが出て、、<br />
http://localhost:8080/cruisecontrol/<br />
起動されました。<br />
　<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
10. Subversionのリポジトリを作る<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
svn自体は既に入ってたので、、<br />
$ cd /var/svn<br />
$ svnadmin create hoge<br />
　<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
11. phpUnderControlをインストールする<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
なんか失敗しやがる。。<br />
$ pear install &#8211;alldeps phpunit/phpUnderControl<br />
Failed to download phpunit/phpUnderControl within preferred state &#8220;stable&#8221;, latest release is version 0.5.0, stability &#8220;beta&#8221;, use &#8220;channel://pear.phpunit.de/phpUnderControl-0.5.0&#8243; to install<br />
install failed<br />
ネットで探したら↓こんなの見つけたので、、<br />
$ pear config-set preferred_state beta<br />
$ pear install &#8211;alldeps phpunit/phpUnderControl<br />
ツラツラログが出て入ってるぽかったのでまぁいいかと。。<br />
$ echo $?<br />
0<br />
　<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
12. phpucコマンドでプロジェクトを作ってツラツラやる<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
$ phpuc project &#8211;version-control svn &#8211;version-control-url file:///var/svn/hoge &#8211;test-case HogeTest &#8211;test-file HogeTest.php &#8211;test-dir . &#8211;project-name Hoge /usr/local/cruisecontrol<br />
なんか怒られる↓<br />
you must install xdebug with the following command:<br />
なんかネットみたらphp5-devとXdebugてのを入れなきゃダメらしい<br />
(この辺からよく分からなくてしんどくなってくるなぁ・・・)<br />
↓これでxdebugが入るらしい。。<br />
pecl install xdebug<br />
もうよく分からないので↓のサイトをコピペるくらいな勢いで・・・<br />
http://d.hatena.ne.jp/miau/20090525/1243209286<br />
なんかファイル作って<br />
$ vim /etc/php5/conf.d/xdebug.ini<br />
なんか書き込んで(ちょっと上記のサイトからパス変わってましたが・・)<br />
zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so<br />
なんかうまくいったっぽいｗ<br />
$ php -i | grep Xdebug<br />
    with Xdebug v2.1.0, Copyright (c) 2002-2010, by Derick Rethans<br />
　<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
13. 画面にアクセスすると・・・<br />
&#8212;&#8212;&#8212;&#8212;&#8211;<br />
http://localhost:8080/cruisecontrol/をみると↓phpUnderControlになっちょる。。<br />
phpUnderControl at localhost [ 10/09/09 16:39  ]<br />
でも、上で作った Hoge ってプロジェクトがありゃしません。。。<br />
あ、Xdebug入れる前に怒られて、そのまま叩いてないのか。。<br />
で、もっかい叩くと、、、<br />
Missing cli tool &#8216;phpcb&#8217;, check the PATH variable.<br />
あうぅ。。<br />
　<br />
今日はここまで。。</p>
]]></content:encoded>
			<wfw:commentRss>http://shinodogg.com/?feed=rss2&amp;p=3128</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://shinodogg.com/?p=3128" />
	</item>
		<item>
		<title>パターン、Wiki、XP ~時を超えた創造の原則</title>
		<link>http://shinodogg.com/?p=3125</link>
		<comments>http://shinodogg.com/?p=3125#comments</comments>
		<pubDate>Tue, 31 Aug 2010 13:46:38 +0000</pubDate>
		<dc:creator>shinodogg</dc:creator>
				<category><![CDATA[技]]></category>
		<category><![CDATA[読]]></category>

		<guid isPermaLink="false">http://shinodogg.com/?p=3125</guid>
		<description><![CDATA[


パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)
posted with amazlet at 10.08.31

江渡 浩一郎 技術評論社 売り上げランキング: 2 [...]]]></description>
			<content:encoded><![CDATA[<div class="amazlet-box" style="margin-bottom:0px;">
<div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774138975/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51psMmyTdWL._SL160_.jpg" alt="パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)" style="border: none;" /></a></div>
<div class="amazlet-info" style="line-height:120%; margin-bottom: 10px">
<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774138975/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)</a>
<div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4774138975/shinodogg-22/ref=nosim/" title="パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)" target="_blank">amazlet</a> at 10.08.31</div>
</div>
<div class="amazlet-detail">江渡 浩一郎 <br />技術評論社 <br />売り上げランキング: 24981</div>
<div class="amazlet-sub-info" style="float: left;">
<div class="amazlet-review" style="margin-top:10px; margin-bottom:10px">
<div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-5.gif" alt="4.5" /></div>
<p><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4" /> 歴史を知る<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> オープンなソフトウェア開発を指導する立場の人は読んでおくべき本<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4" /> ソフトウェア設計思想のひとつの系譜<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 名著<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 読んでびっくりの知的興奮。何かを「創造」しようとする人にとっては深いヒントがある。</div>
<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774138975/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div>
</div>
</div>
<div class="amazlet-footer" style="clear: left"></div>
</div>
<p><a href="http://pt.afl.rakuten.co.jp/c/04fed2dc.32edae68/?url=http%3a%2f%2fbooks.rakuten.co.jp%2frb%2f%25E3%2583%2591%25E3%2582%25BF%25E3%2583%25BC%25E3%2583%25B3%25E3%2580%2581Wiki%25E3%2580%2581XP-%25E6%2599%2582%25E3%2582%2592%25E8%25B6%2585%25E3%2581%2588%25E3%2581%259F%25E5%2589%25B5%25E9%2580%25A0%25E3%2581%25AE%25E5%258E%259F%25E5%2589%2587-%25E6%25B1%259F%25E6%25B8%25A1%25E6%25B5%25A9%25E4%25B8%2580%25E9%2583%258E-9784774138978%2fitem%2f6118704%2f" target="_blank">パターン、Wiki、XP ~時を超えた創造の原則</a>を読みました。<br />
　<br />
自分は2002年にサラリーマンになりました。<br />
一応大手って言われるSIerにしてはめずらしく、内製でやろうって部署に配属されて。<br />
　<br />
30〜40人くらいのアプリ屋のボスがXP信者で、ケントベックとかマーチンファウラーとか、<br />
よく分からないなりにも本読んだりしてました。<br />
　<br />
で、かれこれ8年とかエンジニアやってるわけですが、<br />
そのバックグランドにどんなことがあるのかとか考えもしなかったわけですが、<br />
建築家のアレグザンダーの話、うぉって思っちゃいますねぇ。<br />
　<br />
アレグザンダーの設計で、日本の高校の校舎たてるときに、インクリメンタルに作ってくと<br />
時間とコストがかかっちゃうから、ゼネコンに丸投げしたら、イタいのが出来ちゃったとか、<br />
SIerにいた自分的には笑えないっていうか。。<br />
　<br />
Wikiとかも起源を知らずに使ってたから、そこら辺のLinuxマシンに立ててみて、<br />
”ウィーキー”とかって読んでたしねぇ。。記法とか覚えるのかったるくて、結局みんな書かねぇみたいな。。<br />
　<br />
もし、当時この本読んでたら、いろんな事がまた違った印象なんだろなって。<br />
　<br />
クライスラー社のCOBOLな給与計算システムをSmallTalkで〜、<br />
ってシステムは稼働しなかったとか、上記の高校のエピソードとか、<br />
なんでもかんでもうまくいったわけじゃないってのがちゃんと紹介されてるとことか、<br />
自分的には共感出来るというか。<br />
　<br />
この本は是非若手のエンジニアにも読んでもらいたいですねん。</p>
]]></content:encoded>
			<wfw:commentRss>http://shinodogg.com/?feed=rss2&amp;p=3125</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://shinodogg.com/?p=3125" />
	</item>
		<item>
		<title>SolrにRequestHandlerを追加する</title>
		<link>http://shinodogg.com/?p=3116</link>
		<comments>http://shinodogg.com/?p=3116#comments</comments>
		<pubDate>Sun, 22 Aug 2010 02:13:03 +0000</pubDate>
		<dc:creator>shinodogg</dc:creator>
				<category><![CDATA[技]]></category>

		<guid isPermaLink="false">http://shinodogg.com/?p=3116</guid>
		<description><![CDATA[以前Solrをイジった備忘録その1(データ投入編)でEmbeddedSolrServerなんちゅうのを使ってますよ
なんてエントリを書きましたが、その時もRequestHandlerを追加したわけなんですが、
ローカルの [...]]]></description>
			<content:encoded><![CDATA[<p>以前<a href="http://shinodogg.com/?p=3027" target="_blank">Solrをイジった備忘録その1(データ投入編)</a>でEmbeddedSolrServerなんちゅうのを使ってますよ<br />
なんてエントリを書きましたが、その時もRequestHandlerを追加したわけなんですが、<br />
ローカルのUbuntuマシンにSolrの環境作ってて、どうやって追加したのか忘れちゃってたので備忘録的な。<br />
　<br />
RequestHandlerを追加するのはとても簡単で、<br />
例えば↓こんなURL外から叩いたら、System.gc()して欲しいな、なんて局面があったとする。<br />
＃そんな局面ねぇよ、なんてのはさておきｗ<br />
＝＝＝＝＝＝<br />
http://localhost:8080/solr/hoge?gc=do<br />
＝＝＝＝＝＝<br />
　<br />
そんな場合は、solrconfig.xmlに↓こんな入れてやります。<br />
＃検証用なのでデフォルトパッケージです。。WEB-INF/classesに突っ込んでやります。<br />
＝＝＝＝＝＝<br />
＜requestHandler name=&#8221;/hoge&#8221; class=&#8221;HogeHandler&#8221; /＞<br />
＝＝＝＝＝＝<br />
　<br />
作るクラスは org.apache.solr.handler.RequestHandlerBase ってクラスがいるので、<br />
そいつを extends してやります。<br />
＝＝＝＝＝＝<br />
public class HogeHandler extends RequestHandlerBase {<br />
＝＝＝＝＝＝<br />
　<br />
Eclipseがオーバーライドをするヤツをビヨって作ってくれるので、<br />
後は中身を埋めていくだけなのですが、メインな処理を書くところが↓<br />
＝＝＝＝＝＝<br />
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp)<br />
＝＝＝＝＝＝<br />
　<br />
上記の例だとgcってリクエストパラメータがdoだったらSystem.gc()ってことなので、<br />
↓こんなロジック入れてやります。<br />
＝＝＝＝＝＝<br />
if (req.getParams().get(&#8221;gc&#8221;).equals(&#8221;do&#8221;)) {<br />
　　System.out.println(&#8221;hogehoge&#8221;);<br />
　　System.gc();<br />
}<br />
＝＝＝＝＝＝<br />
　<br />
一個ハマったところが↓こいつ。<br />
<a href="http://lucene.apache.org/solr/api/org/apache/solr/response/SolrQueryResponse.html#setHttpCaching%28boolean%29">SolrQueryResponseのsetHttpCaching</a><br />
ソース読んだら protected boolean httpCaching=true; で宣言されてました。ってことで、<br />
＝＝＝＝＝＝<br />
rsp.setHttpCaching(false);<br />
＝＝＝＝＝＝<br />
　<br />
で、 http://localhost:8080/solr/hoge?gc=do を叩くと、(Tomcatなので)catalina.outに、<br />
↓こんなん出てきてメデタシメデタシっていう。<br />
＝＝＝＝＝＝<br />
hogehoge<br />
23.964: [GC 24347K->3996K(125632K), 0.0118300 secs]<br />
23.976: [Full GC 3996K->3934K(125632K), 0.0982040 secs]<br />
2010/08/20 15:18:19 org.apache.solr.core.SolrCore execute<br />
情報: [] webapp=/solr path=/hoge params={gc=do} status=0 QTime=144<br />
＝＝＝＝＝＝<br />
　<br />
さて、ぼちぼち環境出来てきたので、検証始めるか・・・。<br />
　<br />
　</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td valign="top">
<div style="border:1px solid;margin:0px;padding:6px 0px;width:160px;text-align:center;float:left"><a href="http://hb.afl.rakuten.co.jp/hgc/06364587.8e98a7a6.06364588.a9b17cbd/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f6360171%2f%3fscid%3daf_ich_link_tbl&amp;m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f13547648%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f7741%2f77414175.jpg%3f_ex%3d128x128&amp;m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f7741%2f77414175.jpg%3f_ex%3d80x80" alt="Apache Solr入門" border="0" style="margin:0px;padding:0px">
<p style="font-size:12px;line-height:1.4em;text-align:left;margin:0px;padding:2px 6px">Apache Solr入門</p>
<p></a>
<p style="font-size:12px;line-height:1.4em;text-align:left;margin: 0px;padding:2px 6px">価格：3,780円（税込、送料別）</p>
</div>
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://shinodogg.com/?feed=rss2&amp;p=3116</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://shinodogg.com/?p=3116" />
	</item>
		<item>
		<title>アプレンティスシップ・パターン　—徒弟制度に学ぶ熟練技術者の技と心得</title>
		<link>http://shinodogg.com/?p=3117</link>
		<comments>http://shinodogg.com/?p=3117#comments</comments>
		<pubDate>Sun, 22 Aug 2010 02:04:35 +0000</pubDate>
		<dc:creator>shinodogg</dc:creator>
				<category><![CDATA[技]]></category>
		<category><![CDATA[読]]></category>

		<guid isPermaLink="false">http://shinodogg.com/?p=3117</guid>
		<description><![CDATA[


アプレンティスシップ・パターン　―徒弟制度に学ぶ熟練技術者の技と心得
posted with amazlet at 10.08.22

Dave H. Hoover Adewale Oshineye オライリージャ [...]]]></description>
			<content:encoded><![CDATA[<div class="amazlet-box" style="margin-bottom:0px;">
<div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114608/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51ETCvQpeJL._SL160_.jpg" alt="アプレンティスシップ・パターン　―徒弟制度に学ぶ熟練技術者の技と心得" style="border: none;" /></a></div>
<div class="amazlet-info" style="line-height:120%; margin-bottom: 10px">
<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114608/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">アプレンティスシップ・パターン　―徒弟制度に学ぶ熟練技術者の技と心得</a>
<div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4873114608/shinodogg-22/ref=nosim/" title="アプレンティスシップ・パターン　―徒弟制度に学ぶ熟練技術者の技と心得" target="_blank">amazlet</a> at 10.08.22</div>
</div>
<div class="amazlet-detail">Dave H. Hoover Adewale Oshineye <br />オライリージャパン <br />売り上げランキング: 25539</div>
<div class="amazlet-sub-info" style="float: left;">
<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114608/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div>
</div>
</div>
<div class="amazlet-footer" style="clear: left"></div>
</div>
<p><a href="http://hb.afl.rakuten.co.jp/hgc/06364587.8e98a7a6.06364588.a9b17cbd/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f6546935%2f%3fscid%3daf_ich_link_txt&amp;m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f13730936%2f" target="_blank">アプレンティスシップ・パターン</a>を読みました。<br />
　<br />
いろいろと考えさせられる一冊でした。<br />
　<br />
自分はSIerで働いていましたが、以下のような理由で、<br />
　・自社サービスを自社内で開発してるところ〜ってのと、<br />
　・どうせやるならデカイ事やりたい〜ってので、<br />
3年前くらいに今の会社に転職しました。<br />
　<br />
今の会社がいいなって思ったのは、当時Ruby使ってますよってのを全面に押し出してた事。<br />
　<br />
自分でRuby on Railsを試してて、あまりのお手軽さにビックリしました。<br />
Award on Railsってコンテストに、iKnowのちょーショボい版みたいの作って応募したり。<br />
おまけにデータベースのマイグレーション機能までついてて。<br />
こんなんでガンガン作って世の中に出していきたいって。<br />
　<br />
でも、Rubyの言語仕様や、Ruby on Railsのアーキテクチャに魅せられたわけじゃなかった。<br />
短く書けるし、Javaよりメンド臭くないからいいな、くらい。<br />
開発プロセスにしても、別にアジャイルじゃなくても、なんだってよかった。<br />
とにかく気合入ったヤツらとバンバン作って出して〜って、やっていきたかった。<br />
　<br />
で、転職してどうだったか？っていうと、自分がやりたい事は出来なかった。<br />
SIerにいた頃よりも、無駄だな〜って思える事はかなり減ったのはとても良かったけど、<br />
いろんな価値観や、いろんなレベルのエンジニアがいて。<br />
開発そのもののレベル感やスピード感はたいした事ないなって。<br />
社歴が長くなるほど、自分の立ち位置も、だんだんSIerにいた頃と近くなってきてるような気もするし。<br />
　<br />
なんででしょね。<br />
　<br />
AクラスのヤツらはAクラスのヤツと仕事をしたがる。<br />
BクラスのヤツらはCクラスの〜、とかって話があるけれども、<br />
自分はいっつもB〜Cクラス集団にいるように思う。少なくともAではない。<br />
　<br />
部屋の掃除してて出てきた、<a href="http://hb.afl.rakuten.co.jp/hgc/06364587.8e98a7a6.06364588.a9b17cbd/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f5713642%2f%3fscid%3daf_ich_link_txt&amp;m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f12947883%2f" target="_blank">まるごとRuby！（vol．1）</a>を読んでて思った。<br />
Rubyの事わかってねーなー俺、と。実はJavaの事だってあんまよくわかってない。<br />
じゃあRubyに長けてるヤツらが、そんな自分と働きたいって思ってもらえるだろうか？と。<br />
　<br />
外から見てて、自分がやりたいような、すげぇスピードで新機能をバンバン出してきてるところもある。<br />
(もちろん、スピード感はあるけど、、、な、ところもあるけれども。。)<br />
Facebookとかそんな感じなんすかね。中の事は知らないから分からないけども。<br />
じゃあ、どうやったらそんな風に仕事できるのかな？って。<br />
　<br />
この本にはどうやってエンジニアとしてサバイブしてくか？ってことが、<br />
すごい分かりやすく、ですよねー的に書いてある。腹落ち。<br />
　<br />
11月で31歳になるわけだけど、改めて勉強しようって思えた。<br />
50歳になった時にイカしたエンジニアでいたいし。<br />
　<br />
大変で長い道のりだけど、毎日本読みながら仲間みつけて頑張ろう。<br />
そんな気持ちになれました。この本読んでとてもよかった。</p>
]]></content:encoded>
			<wfw:commentRss>http://shinodogg.com/?feed=rss2&amp;p=3117</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://shinodogg.com/?p=3117" />
	</item>
		<item>
		<title>UbuntuでApache2とTomcat6の接続(proxy, proxy_ajp, proxy_balancer)</title>
		<link>http://shinodogg.com/?p=3110</link>
		<comments>http://shinodogg.com/?p=3110#comments</comments>
		<pubDate>Thu, 19 Aug 2010 04:42:41 +0000</pubDate>
		<dc:creator>shinodogg</dc:creator>
				<category><![CDATA[技]]></category>

		<guid isPermaLink="false">http://shinodogg.com/?p=3110</guid>
		<description><![CDATA[会社ではUbuntuをローカルの開発機にして仕事をしています。
ローカルの場合はTomcatに直接アクセスして～ってやってましたが、
極力本番に近づけた方がいいかなと思ってApache経由でajpでやりくりしてみることに [...]]]></description>
			<content:encoded><![CDATA[<p>会社ではUbuntuをローカルの開発機にして仕事をしています。<br />
ローカルの場合はTomcatに直接アクセスして～ってやってましたが、<br />
極力本番に近づけた方がいいかなと思ってApache経由でajpでやりくりしてみることにしました。<br />
　<br />
<strong>【UbuntuのApache】</strong><br />
　Ubuntuのパッケージ管理でApacheを入れると、<br />
　　・設定ファイルとかは ⇒ /etc/apache2/<br />
　　・再起動とかは ⇒ /etc/init.d/apache2 xxx<br />
　　・ログは⇒ /var/log/apache2<br />
　＃てな具合になっています。普段仕事では/usr/local～とかなのでちょっと違和感ありますね。。<br />
　<br />
<strong>【Apacheの設定】</strong><br />
　・使えるモジュールは⇒ /etc/apache2/mods-available<br />
　　　proxy.load<br />
　　　proxy_ajp.load<br />
　　　proxy_balancer.load<br />
　<br />
　うぉ、全部入ってるじゃーんって事で、<br />
　↓こんなのズゴンって叩くだけでOK<br />
　＝＝＝＝<br />
　a2enmod proxy proxy_ajp proxy_balancer<br />
　＝＝＝＝　<br />
　<br />
　・設定ファイル<br />
　　/etc/apache2/sites-available/default ってのに<br />
　　DocumentRootの定義とかが書いてあるんですが、<br />
　　そこに Proxyの情報を記載してあげます。</p>
<p>　　- バランサーマネージャーの画面用に<br />
　　　＜Location /balancer-manager＞<br />
　　　　SetHandler balancer-manager<br />
　　　　Allow from all ← お試しなので・・・<br />
　　　＜/Location＞<br />
　<br />
　　- バランシング用に<br />
　　　ProxyPass /balancer-manager !<br />
　　　ProxyPass /hoge balancer://hoge/ stickysession=JSESSIONID timeout=10<br />
　<br />
　　あとは /etc/apache2/mods-available で、、<br />
　　・proxy.conf を Allow from allにしたり(お試しなので…)<br />
　　・proxy_ajp.confを作って AddOutputFilterByType DEFLATE とかやってやったりしつつ<br />
　　　↓8009ポートに向けて～的な。<br />
　　　BalancerMember ajp://localhost:8009/ loadfactor=10 route=hoge keepalive=On min=100 timeout=10 retry=20<br />
　<br />
<strong>【Tomcatの設定】</strong><br />
　server.xmlはデフォルトだと8009ポートでajpをリスンするようになっているので特に対応不要です。<br />
　普通に startup.sh 叩いて上げるだけ。<br />
　<br />
ってことで↓Apache再起動してあげたら<br />
/etc/init.d/apache2 restart<br />
　<br />
http://localhost/hoge でTomcatまでアクセスが行って、<br />
http://localhost/balancer-manager でバランシングの設定が出来ます<br />
　<br />
意外とお手軽なもんですねぇ。</p>
]]></content:encoded>
			<wfw:commentRss>http://shinodogg.com/?feed=rss2&amp;p=3110</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://shinodogg.com/?p=3110" />
	</item>
		<item>
		<title>MRUnit(MapReduce用のテストライブラリ)を試す</title>
		<link>http://shinodogg.com/?p=3102</link>
		<comments>http://shinodogg.com/?p=3102#comments</comments>
		<pubDate>Wed, 18 Aug 2010 10:55:26 +0000</pubDate>
		<dc:creator>shinodogg</dc:creator>
				<category><![CDATA[技]]></category>

		<guid isPermaLink="false">http://shinodogg.com/?p=3102</guid>
		<description><![CDATA[昨日のHadoopソースリーディング4回目(Hadoopソースコードリーディングまとめ第4回 #hadoopreading)で、
@okachimachiorz1 さんが、MRUnit便利だし使うよね的な事をおっしゃって [...]]]></description>
			<content:encoded><![CDATA[<p>昨日のHadoopソースリーディング4回目(<a href="http://togetter.com/li/42768" target="_blank">Hadoopソースコードリーディングまとめ第4回 #hadoopreading</a>)で、<br />
<a href="http://twitter.com/@okachimachiorz1" target="_blank">@okachimachiorz1</a> さんが、MRUnit便利だし使うよね的な事をおっしゃっていて、<br />
どんなもんかなと思ってチョロっと自動テストしてみました。</p>
<p><strong>【環境】</strong><br />
　1. EclipseのMapReduceプラグイン<br />
　　hadoop-0.20.2-eclipse-plugin.jar(Hadoopをインストールしたところのcontribに入ってる)を<br />
　　eclipseのプラグインディレクトリに突っ込んで再起動すると<br />
　　ウィザードでMap/Reduce Projectが作れるようになります。<br />
　　⇒ Hadoopのインストールディレクトリを指定するとそこにパス通してくれる感じ。<br />
　<br />
　2. JUnit4のjarを落としてパスを通す<br />
　　HadoopのlibにはJUnit3.8しか入ってなかったので。<br />
　　MRUnitのページみたら @Before とかJUnit4のアノテーションが前提みたいになってました。<br />
　<br />
　3. MRUnitのjarを落としてパスを通す<br />
　　ググったら↓に置いてありました。<br />
　　<a href="https://repository.cloudera.com/index.html#nexus-search;classname~MRUnit">https://repository.cloudera.com/index.html#nexus-search;classname~MRUnit</a><br />
　　コレ、maven使ってれば依存関係の定義をpom.xmlに入れてやるだけでイケそうですね～<br />
　<br />
　<br />
<strong>【実装】</strong><br />
　使い方は↓こんな感じのようなので、、、<br />
　<a href="http://www.slideshare.net/emwendelin/testing-hadoop-jobs-with-mrunit">http://www.slideshare.net/emwendelin/testing-hadoop-jobs-with-mrunit</a><br />
　<a href="http://www.cloudera.com/blog/2009/07/debugging-mapreduce-programs-with-mrunit/">http://www.cloudera.com/blog/2009/07/debugging-mapreduce-programs-with-mrunit/</a><br />
　<br />
　↓こんな感じのMapperに、、<br />
＝＝＝＝＝＝＝＝<br />
<code>public class HogeMapper extends MapReduceBase implements Mapper {<br />
　　private Text word = new Text();<br />
　　@Override<br />
　　public void map(Object key, Object value, OutputCollector output,<br />
　　　　　　Reporter reporter) throws IOException {<br />
　　　　// TODO Auto-generated method stub<br />
　　　　String line = value.toString();<br />
　　　　StringTokenizer st = new StringTokenizer(line, ",");<br />
　　　　while (st.hasMoreTokens()) {<br />
　　　　　　word.set(st.nextToken());<br />
　　　　　　output.collect(word, new IntWritable(1));<br />
　　　　}<br />
　　}<br />
}</code><br />
＝＝＝＝＝＝＝＝<br />
　<br />
　↓こんな感じのテストしてみました。<br />
＝＝＝＝＝＝＝＝<br />
<code>public class HogeTest extends TestCase {<br />
　　private Mapper mapper;<br />
　　private MapDriver driver; ←こいつがMRUnitのオブジェクト<br />
　　@Before<br />
　　public void setUp() {<br />
　　　　mapper = new HogeMapper();<br />
　　　　driver = new MapDriver(mapper);<br />
　　}<br />
　　@Test<br />
　　public void testHogeMapper() {<br />
　　　　driver.withInput(new Text("foo"), new Text("aar,kar,sar,tar,aar"));<br />
　　　　driver.withOutput(new Text("aar"), new IntWritable(1));<br />
　　　　driver.withOutput(new Text("kar"), new IntWritable(1));<br />
　　　　driver.withOutput(new Text("sar"), new IntWritable(1));<br />
　　　　driver.withOutput(new Text("tar"), new IntWritable(1));<br />
　　　　driver.withOutput(new Text("aar"), new IntWritable(1));<br />
　　　　driver.runTest();<br />
　　}<br />
}</code><br />
＝＝＝＝＝＝＝＝<br />
　<br />
インプットのファイルを用意しなくていいから楽チンって感じですかねぇ～</p>
]]></content:encoded>
			<wfw:commentRss>http://shinodogg.com/?feed=rss2&amp;p=3102</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://shinodogg.com/?p=3102" />
	</item>
		<item>
		<title>たまには広告エンジニアっぽい事でも(ヤフーとグーグルのアレ)</title>
		<link>http://shinodogg.com/?p=3088</link>
		<comments>http://shinodogg.com/?p=3088#comments</comments>
		<pubDate>Fri, 30 Jul 2010 15:10:07 +0000</pubDate>
		<dc:creator>shinodogg</dc:creator>
				<category><![CDATA[技]]></category>

		<guid isPermaLink="false">http://shinodogg.com/?p=3088</guid>
		<description><![CDATA[2010年07月27日。
インターネット業界で働いている自分のTwitterのタイムラインは
YahooJapanがGoogleのサーチエンジンとリスティング広告の
配信システムを採用するっていうニュースで騒然となりまし [...]]]></description>
			<content:encoded><![CDATA[<p>2010年07月27日。<br />
インターネット業界で働いている自分のTwitterのタイムラインは<br />
YahooJapanがGoogleのサーチエンジンとリスティング広告の<br />
配信システムを採用するっていうニュースで騒然となりました。<br />
　<br />
自分は日頃↓こんなお仕事してたりします。<br />
・コンテンツ解析をして、そのページに合った広告出したり<br />
・ユーザーの行動を分析して、その人に合った広告出したり<br />
・検索窓に入れられたキーワードに連動する広告出したり<br />
まさに、、な分野なわけです。(まぁ、他にもいろんな事やってますが…)<br />
日々大量データに押しつぶされそうになりながら、<br />
memcached使ったり、Solr使ったり、Hadoop使ったり、<br />
アレやコレや頑張ってるわけです。<br />
　<br />
で、一連の報道とかの中でも、ビジネスの話はアレですが、<br />
自分にとって一番分かりやすいなと思ったのが↓有名な、たつをさんのブログ。<br />
　<br />
<strong><a href="http://chalow.net/2010-07-27-5.html" target="_blank">[を] Yahoo! JAPAN のウェブ検索と検索連動広告配信システムが Google に変更になります</a></strong><br />
<em>・米ヤフー(Yahoo! Inc)との日本ヤフー(Yahoo! JAPAN)は別会社である<br />
・現在の米ヤフーのウェブ検索エンジンは YST、検索連動型広告は YSM(旧オーバーチュア)<br />
・YSTとYSMは米ヤフーの技術。だけど近々廃止になる<br />
・米ヤフーはYSTをBingに、YSMをMS adCenterに置き換える<br />
・Yahoo! JAPANは米ヤフーのYSTとYSMを使っていたが廃止になるため他を探していた<br />
・で、YST の代わりに Google 検索を、YSM の代わりに AdWords を使うことになった</em><br />
　<br />
なんとも腹落ち。くぅ。<br />
　<br />
でもね、同じ業界にいると、廃止になるとか言ってるYSMも、<br />
「ｘｘだからオーバーチュアはすげーよなぁ、<br />
　どうやってやってんだろうね〜？」<br />
なんて話したりしてるようなものだったりするわけです。<br />
HadoopだってYSTで使ってるNutchのために開発されたのが最初だって<br />
象本(<a href="http://hb.afl.rakuten.co.jp/hgc/06364587.8e98a7a6.06364588.a9b17cbd/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f6332026%2f%3fscid%3daf_ich_link_txt&amp;m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f13513995%2f" target="_blank">Hadoop</a>)に買いてあったし。<br />
　<br />
が、そういうの放り出してもー的な事が起こるんだから、<br />
エンジニアとしてはデッカイ会社に所属してるから<br />
安泰だーなんて思っちゃいけないんだな、とか思うわけです。<br />
　<br />
で、この先どうなるのよ？っていう話で。<br />
Webの広告屋をやってると、最近よく聞くのがAdExchange。<br />
　<br />
AdExchangeって、オンライン広告にまつわる<br />
いろんな関係者が集まるオンライン市場みたいなもんなんだけど、<br />
やれリアルタイムビッダーだの、ややこしくてよく分からなかったりするアレです。<br />
＃ いや、よくわかってないのは俺だけかも知れぬがw　<br />
　<br />
まぁ、なんつーか、この先にWeb広告業界で流行りそうな感じのヤツなんだけど、<br />
　<br />
　・Googleは、<a href="http://adwords.google.com/support/aw/bin/answer.py?hl=jp&#038;answer=146604">DoubleClick Ad Exchange</a><br />
　・Yahooは、<a href="http://www.rightmedia.com/exchange">Right Media Exchange</a><br />
　<br />
それぞれプロダクト持ってるわけです。でもって、YahooJapanは先日、<br />
<a href="http://web-tan.forum.impressrd.jp/n/2010/03/03/7516">AdExchangeは米ヤフーのRight Media Exchangeを使うぜ</a>的な発表とかしてましたけど、<br />
YahooJapanはGoogleさんにデータを沢山提供しちゃったりするわけですからねぇ的な。<br />
　<br />
どうなっていっちゃうんでしょうねぇ。<br />
いやー、この業界、目が離せないっていうかなんていうか。<br />
　<br />
っていうか、業界独占だーとか言われちゃってねぇで、<br />
自分らのとこも、この分野にグイグイ食い込んで、<br />
パイを取りにいかなきゃいけないんすけどね。。<br />
　<br />
あと、ネット広告って何やら専門的でややこしいような印象<br />
あるかもしれませんが↓こんな本一冊読んでおけば実は結構問題なかったり<br />
するんじゃないかと思う今日この頃です。</p>
<div class="amazlet-box" style="margin-bottom:0px;">
<div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4820745611/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51M-mFxeS7L._SL160_.jpg" alt="ネット広告ハンドブック 最新知識から出稿の実務、効果測定、技術動向まで" style="border: none;" /></a></div>
<div class="amazlet-info" style="line-height:120%; margin-bottom: 10px">
<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4820745611/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">ネット広告ハンドブック 最新知識から出稿の実務、効果測定、技術動向まで</a>
<div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4820745611/shinodogg-22/ref=nosim/" title="ネット広告ハンドブック 最新知識から出稿の実務、効果測定、技術動向まで" target="_blank">amazlet</a> at 10.07.30</div>
</div>
<div class="amazlet-detail">デジタル・アドバタイジング・コンソーシアム <br />日本能率協会マネジメントセンター <br />売り上げランキング: 124894</div>
<div class="amazlet-sub-info" style="float: left;">
<div class="amazlet-review" style="margin-top:10px; margin-bottom:10px">
<div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-5.gif" alt="4.5" /></div>
<p><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 大変参考になります。<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4" /> 中身の濃い本<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4" /> ネット広告はこれから伸びる。経営者必読の書籍だ。</div>
<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4820745611/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div>
</div>
</div>
<div class="amazlet-footer" style="clear: left"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://shinodogg.com/?feed=rss2&amp;p=3088</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://shinodogg.com/?p=3088" />
	</item>
		<item>
		<title>Agile Conference Tokyo 2010 に行ってきました。</title>
		<link>http://shinodogg.com/?p=3082</link>
		<comments>http://shinodogg.com/?p=3082#comments</comments>
		<pubDate>Sat, 24 Jul 2010 00:34:54 +0000</pubDate>
		<dc:creator>shinodogg</dc:creator>
				<category><![CDATA[技]]></category>

		<guid isPermaLink="false">http://shinodogg.com/?p=3082</guid>
		<description><![CDATA[■ 会場
秋葉原ダイビルという駅から出てすぐのところ。

ちょっと早めに着きましたが、コギレイな会場でした。
受付時にThoughtWorksのトートがもらえました。中には資料とか入ってる。
こういうのも嬉しいですねぇ。 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>■ 会場</strong><br />
秋葉原ダイビルという駅から出てすぐのところ。<br />
<a href="http://picasaweb.google.com/lh/photo/fB_rPw9M2-vwSf4CI8G0Z44SYtak3qVBJAc210Qd-Mc?feat=embedwebsite"><img src="http://lh4.ggpht.com/_MiG0GWdtu0E/TEom9H5ROoI/AAAAAAAACag/cPpOsStWk4g/s400/IMG_1397.JPG" /></a><br />
ちょっと早めに着きましたが、コギレイな会場でした。</p>
<p>受付時にThoughtWorksのトートがもらえました。中には資料とか入ってる。<br />
こういうのも嬉しいですねぇ。<br />
<a href="http://picasaweb.google.com/lh/photo/Ws-zTuSn4wxTVmxaO8xFj44SYtak3qVBJAc210Qd-Mc?feat=embedwebsite"><img src="http://lh3.ggpht.com/_MiG0GWdtu0E/TEonepVS0BI/AAAAAAAACbc/HIuJ0mrmzaA/s400/IMG_1406.jpg" /></a><br />
　<br />
　<br />
<strong>■ オライリー</strong><br />
カンファレンスといったらコレだろう、、ということで。。<br />
ヤバい書籍たちが10％OFF＆ｘｘ円以上買うとノベルティーグッズが！<br />
<a href="http://picasaweb.google.com/lh/photo/cdTis3xn75q-NpXZ26fziY4SYtak3qVBJAc210Qd-Mc?feat=embedwebsite"><img src="http://lh6.ggpht.com/_MiG0GWdtu0E/TEom-kpRfPI/AAAAAAAACao/9GergAA7QTc/s400/IMG_1398.jpg" /></a><br />
と、その前にガチャガチャをキメるｗ<br />
　<br />
　<br />
<strong>■ Twitter</strong><br />
http://twitter.com/#search?q=agiletokyo<br />
もうどこで何やってもツイッターですねぇ。<br />
参加した人の生の声を聞くにはコレが一番。<br />
会場では左前に #agiletokyo タグを付けてつぶやいた人のが<br />
デッカく出るようになってました。<br />
→ 講演者には見えないようだったので、それだけちょっと残念。<br />
　<br />
　<br />
<strong>■ Continous Delivery</strong><br />
ThoughtWorksのJez Humbleさん。<br />
Build and Release Principalとかいってイカした肩書き！</p>
<p>同時通訳なのでリズムが悪いっていうか、とても分かりやすい英語で<br />
ゆっくりと話してくれたので英語だけでよかったのかも的な。。</p>
<p>終始そうだよねーって思いっぱなしだったのですが、その中でもいくつか。</p>
<p>『Always Production Ready』<br />
　グッときちゃいますよねぇ。コレ。<br />
　”たった一つのバイナリ”って話もあって、<br />
　開発者がコンパイルしたソレは、そのまま全く同じものが<br />
　プロダクション環境まで自動的に行っちゃうような仕掛けをつくろう。<br />
　→ 自分がコミットしたものがデリバリされんだからそこに責任を持とう、と。<br />
　　 Done means released!なんていう、これまたカッコよす。。<br />
　<br />
『Blue-Green Deployments』<br />
　本番環境に全く同じ構成を2つ組んでおきましょう、と。<br />
　で、Active-Standbyにしておいて、Standbyにリリースしたら、<br />
　ネットワーク機器で振り分けをStandbyに向けてリリース完了的な。<br />
　<br />
『Canary Release』<br />
　ABテスト的な。インターネットサービス会社だとよくやる手だと思う。<br />
　これも環境を2つ作っておいて、例えば3分の1だけ出してみて<br />
　評判良ければ全台反映とかそういうの。<br />
　<br />
なんか本が出たりするらしいです。<br />
にしても、ThoughtWorksはいつもカッチョいいのぅ。<br />
日本支社ってなんで無いんだろう。。<br />
　<br />
　<br />
<strong>■ Microsoft</strong><br />
TFS(Team Foundation Server 2010)の紹介。<br />
これはヤバすぎたな。。今日からでも使いたいくらい。<br />
　<br />
CI環境はウィザードだけで作れるとか、<br />
アジャイルにチームを管理するためのクライアントソフトは<br />
俄然Excelゴリ押しだったりとか、(なんだかんだでどこでも使ってるしねぇ)<br />
とにかくボタン一個であれもこれも簡単にってのがグッときました。<br />
　<br />
Microsoftのコレ系のプロダクトは、Scrumで作ってるらしくて、<br />
そのフィードバックが盛り込まれてたりもするみたい。<br />
　<br />
CI環境とか、別に.NETじゃなくてもよくて、<br />
mavenとか使ってればEclipseのJavaのプロジェクトでも問題なく使える。<br />
＃デモはMacBook上のEclipseからやってました。<br />
　<br />
テストスイートも半端なくて、テスターのオペレーションを録画してくれて、<br />
簡単に再現出来るようになってたり、マルチブラウザで自動的にテストしてくれたり、<br />
なんとも至れり尽くせり。<br />
　<br />
こないだVisualStudioで.NET4のソースを見る機会があったんだけど、<br />
データモデリングからソースのジェネレートから、<br />
Railsのroutes.rbみたいなクラスとかもあったりして、<br />
自分の中でかなり盛り上がってます。Microsoft。<br />
　<br />
　<br />
<strong>■ その他</strong><br />
他にもアツい発表がたくさんありましたが、<br />
印象としては、SI系の人や、結構ベテラン系の人もアジャイルに注目してて。<br />
IPAの人の発表もあったし。(非ウォーターフォール型開発に関する調査は興味深い)<br />
　<br />
契約は請負でも目標コスト契約ってのがあるんだーとか、(派遣や準委任とか懐かしい響き)<br />
今までのウォーターフォールのガッツリしたプロセスの中に<br />
どうやってアジャイルのエッセンス持ち込む？とか、<br />
日本では、日本なりに消化してやってこうって感じなのかなぁと。<br />
　<br />
自分のやってる仕事は、常に数人単位でしか動いてないので<br />
大手SI系の人の話とかはどうもしっくりこなかったりします。<br />
＃数年前まではモロそっち系の人間だったくせに、、ですがｗ<br />
　<br />
　<br />
<strong>■ 昼飯</strong><br />
せっかく秋葉原ってことで、ガンダムカフェに行ってみました。<br />
<a href="http://picasaweb.google.com/lh/photo/ZP9VZJgdKZuawshqT5w57Y4SYtak3qVBJAc210Qd-Mc?feat=embedwebsite"><img src="http://lh5.ggpht.com/_MiG0GWdtu0E/TEonB9-z5II/AAAAAAAACaw/jXSnYTcs_jQ/s400/IMG_1400.jpg" /></a><br />
メシは期待しない方がいいかと。。値段高い割に的な。。<br />
ただ、店内はガンダムグッズ満載で、好きな人にはいいのかも知れませんね。。<br />
自分も普通にみてましたがそこまでいれこんでたわけでもないので。。。<br />
　<br />
　<br />
<strong>■ 書籍系</strong><br />
IBMのセッションで質問したら本くれました。<br />
＃ ってかローカルにインストールする型のプロジェクト管理ツール系の話だったのに、<br />
＃ ブラウザで管理できないの？って聞いたら、実はアメリカでクラウド型の作ってますって。。<br />
＃ 最初からそっちの話が聞きたかったなぁと。。<br />
＃ あと、IBMさんはいろんな名前の製品があってどれがどれだか。。。汗<br />
<a href="http://picasaweb.google.com/lh/photo/L-GsJQJgJdLWObMQwWZEOo4SYtak3qVBJAc210Qd-Mc?feat=embedwebsite"><img src="http://lh5.ggpht.com/_MiG0GWdtu0E/TEonABl-sjI/AAAAAAAACas/G1PJ8BtKKP8/s400/IMG_1399.jpg" /></a><br />
　<br />
以下の書籍を買って、セマンティックWebTシャツと、オライリーのトートもらいました♪<br />
<a href="http://picasaweb.google.com/lh/photo/uIRRDFzKFUpRTY_TcmAIHo4SYtak3qVBJAc210Qd-Mc?feat=embedwebsite"><img src="http://lh6.ggpht.com/_MiG0GWdtu0E/TEonfk11ydI/AAAAAAAACbg/3G-5FZ5jJCU/s400/IMG_1407.jpg" /></a><br />
　</p>
<div class="amazlet-box" style="margin-bottom:0px;">
<div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114519/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/41MEHSYI%2BpL._SL160_.jpg" alt="セキュリティの神話" style="border: none;" /></a></div>
<div class="amazlet-info" style="line-height:120%; margin-bottom: 10px">
<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114519/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">セキュリティの神話</a>
<div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4873114519/shinodogg-22/ref=nosim/" title="セキュリティの神話" target="_blank">amazlet</a> at 10.07.24</div>
</div>
<div class="amazlet-detail">John Viega <br />オライリージャパン <br />売り上げランキング: 143889</div>
<div class="amazlet-sub-info" style="float: left;">
<div class="amazlet-review" style="margin-top:10px; margin-bottom:10px">
<div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-3-5.gif" alt="3.5" /></div>
<p><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> 「銀の弾」は存在しない？<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-2-0.gif" alt="2" /> 未だP7ですが</div>
<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114519/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div>
</div>
</div>
<div class="amazlet-footer" style="clear: left"></div>
</div>
<p>　</p>
<div class="amazlet-box" style="margin-bottom:0px;">
<div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114586/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51Hgko0APOL._SL160_.jpg" alt="クラウド セキュリティ&#038;プライバシー ―リスクとコンプライアンスに対する企業の視点" style="border: none;" /></a></div>
<div class="amazlet-info" style="line-height:120%; margin-bottom: 10px">
<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114586/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">クラウド セキュリティ&#038;プライバシー ―リスクとコンプライアンスに対する企業の視点</a>
<div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4873114586/shinodogg-22/ref=nosim/" title="クラウド セキュリティ&#038;プライバシー ―リスクとコンプライアンスに対する企業の視点" target="_blank">amazlet</a> at 10.07.24</div>
</div>
<div class="amazlet-detail">Tim Mather Subra Kumaraswamy Shahed Latif <br />オライリージャパン <br />売り上げランキング: 5138</div>
<div class="amazlet-sub-info" style="float: left;">
<div class="amazlet-review" style="margin-top:10px; margin-bottom:10px">
<div class="amazlet-review-average" style="margin-bottom:5px">おすすめ度の平均: <img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-5.gif" alt="4.5" /></div>
<p><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-4-0.gif" alt="4" /> これまでの総括として役立つリファレンス<br /><img src="http://images-jp.amazon.com/images/G/09/x-locale/common/customer-reviews/stars-5-0.gif" alt="5" /> クラウドセキュリティの１つの標準になるうる本</div>
<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114586/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div>
</div>
</div>
<div class="amazlet-footer" style="clear: left"></div>
</div>
<p>　</p>
<div class="amazlet-box" style="margin-bottom:0px;">
<div class="amazlet-image" style="float:left;margin:0px 12px 1px 0px;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114608/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51ETCvQpeJL._SL160_.jpg" alt="アプレンティスシップ・パターン　―徒弟制度に学ぶ熟練技術者の技と心得" style="border: none;" /></a></div>
<div class="amazlet-info" style="line-height:120%; margin-bottom: 10px">
<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114608/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">アプレンティスシップ・パターン　―徒弟制度に学ぶ熟練技術者の技と心得</a>
<div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4873114608/shinodogg-22/ref=nosim/" title="アプレンティスシップ・パターン　―徒弟制度に学ぶ熟練技術者の技と心得" target="_blank">amazlet</a> at 10.07.24</div>
</div>
<div class="amazlet-detail">Dave H. Hoover Adewale Oshineye <br />オライリージャパン <br />売り上げランキング: 3872</div>
<div class="amazlet-sub-info" style="float: left;">
<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114608/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div>
</div>
</div>
<div class="amazlet-footer" style="clear: left"></div>
</div>
<p>　<br />
他にもpythonでコンピューターの事が勉强出来ちゃう入門書とか<br />
欲しいのいっぱいありましたが、ガマンガマン。。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://shinodogg.com/?feed=rss2&amp;p=3082</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://shinodogg.com/?p=3082" />
	</item>
		<item>
		<title>Capistranoのroleのサーバを実行時に決めたい件</title>
		<link>http://shinodogg.com/?p=3068</link>
		<comments>http://shinodogg.com/?p=3068#comments</comments>
		<pubDate>Fri, 07 May 2010 08:33:13 +0000</pubDate>
		<dc:creator>shinodogg</dc:creator>
				<category><![CDATA[技]]></category>

		<guid isPermaLink="false">http://shinodogg.com/?p=3068</guid>
		<description><![CDATA[一つ前のエントリでCapistranoの↓の事を記載しましたが、
＝＝＝＝＝＝
-S, –set-before NAME=VALUE　　Set a variable before the recipes are load [...]]]></description>
			<content:encoded><![CDATA[<p>一つ前のエントリでCapistranoの↓の事を記載しましたが、<br />
＝＝＝＝＝＝<br />
-S, –set-before NAME=VALUE　　Set a variable before the recipes are loaded.<br />
＝＝＝＝＝＝<br />
今日は新たな壁に当たりました。<br />
　<br />
roleの対象サーバをcapコマンドの引数に渡して制御したいけど、<br />
-Sで指定してもtaskの中まで行かないと使えないんですよね、、<br />
　<br />
ネットで探しても、タスクごとにroleを振り分けられるんですよ～的なのは<br />
たくさん見つかりましたが、コレっていうのが出てこず。<br />
＃ Capistranoでは対象のサーバをroleというので指定します。<br />
＃ 実行するときは↓こんな風に出てくるわけですけど。<br />
＃ servers: ["hoge1", "hoge2", "hoge3", "hoge4"]<br />
　<br />
そしたら、roleの設定ってtaskの中でも出来るんですね。<br />
　<br />
↓こんな感じでいい感じに実行時に-Sで渡した値によって<br />
対象のサーバを切り替えられるようになりました。<br />
＝＝＝＝＝＝<br />
task :hoge_role do<br />
　if &#8220;#{hoge}&#8221; == &#8220;aaa&#8221; then<br />
　　role :hosts, &#8220;hoge1&#8243;,&#8221;hoge2&#8243;,&#8221;hoge3&#8243;,&#8221;hoge4&#8243;<br />
　elsif &#8220;#{hoge}&#8221; == &#8220;bbb&#8221; then<br />
　　role :hosts, &#8220;hoge5&#8243;,&#8221;hoge6&#8243;,&#8221;hoge7&#8243;,&#8221;hoge8&#8243;<br />
～略～<br />
end<br />
＝＝＝＝＝＝<br />
　</p>
<div class="amazlet-box" style="margin-bottom:0px;">
<div class="amazlet-image" style="float:left;"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114004/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank"><img src="http://ecx.images-amazon.com/images/I/415gQgbRZuL._SL160_.jpg" alt="Railsデプロイ" style="border: none;" /></a></div>
<div class="amazlet-info" style="float:left;margin-left:15px;line-height:120%">
<div class="amazlet-name" style="margin-bottom:10px;line-height:120%"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114004/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">Railsデプロイ</a>
<div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a href="http://www.amazlet.com/browse/ASIN/4873114004/shinodogg-22/ref=nosim/" title="Railsデプロイ" target="_blank">amazlet</a> at 10.05.07</div>
</div>
<div class="amazlet-detail">Ezra Zygmuntowicz Bruce A. Tate Clinton Begin <br />オライリージャパン <br />売り上げランキング: 278746</div>
<div class="amazlet-link" style="margin-top: 5px"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4873114004/shinodogg-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div>
</div>
<div class="amazlet-footer" style="clear: left"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://shinodogg.com/?feed=rss2&amp;p=3068</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://shinodogg.com/?p=3068" />
	</item>
		<item>
		<title>Capistranoの備忘録</title>
		<link>http://shinodogg.com/?p=3066</link>
		<comments>http://shinodogg.com/?p=3066#comments</comments>
		<pubDate>Thu, 06 May 2010 13:11:44 +0000</pubDate>
		<dc:creator>shinodogg</dc:creator>
				<category><![CDATA[技]]></category>

		<guid isPermaLink="false">http://shinodogg.com/?p=3066</guid>
		<description><![CDATA[Capistrano自体はレシピファイルの中でRubyでゴリゴリ書けそうな気配ですが、
出来る限りスッキリさせたいもので。
　
自分が担当しているシステムは何十台も並べて～的な感じで、
群構成にしているのですが、ｘｘだっ [...]]]></description>
			<content:encoded><![CDATA[<p>Capistrano自体はレシピファイルの中でRubyでゴリゴリ書けそうな気配ですが、<br />
出来る限りスッキリさせたいもので。<br />
　<br />
自分が担当しているシステムは何十台も並べて～的な感じで、<br />
群構成にしているのですが、ｘｘだったらｘｘみたいなのがかったるいな、と。<br />
　<br />
ということで、今回はCapistranoを使って、以下の方針でやることにしました。<br />
　<br />
　1. アプリケーション(Webアプリ/検索用アプリ/バッチアプリ)によってCapfileを分ける<br />
　2. それぞれのアプリの中で使う変数をコマンドラインから渡す<br />
　<br />
非常に簡単で、cap &#8211;help すれば出てくるのですが、<br />
上記1.は↓の-fでファイルを指定します。<br />
　-f, &#8211;file FILE　　A recipe file to load. May be given more than once.<br />
上記2.は↓の-Sで変数を指定します。<br />
　-S, &#8211;set-before NAME=VALUE　　Set a variable before the recipes are loaded.<br />
　<br />
実際には↓のようなコマンドラインになります。<br />
　cap -f web_app_deploy.rb -S cluster_no=1 deploy<br />
　<br />
レシピファイルの中身は↓ザックリこんな感じです。<br />
他にも監視止めたりとかあーだこーだあるのですが、その辺は割愛。<br />
(まだ書いてないだけっていう話もあるｗ)<br />
出来るだけ細かく分割しておけば、他でも使いまわせそうな予感がします。<br />
＝＝＝＝＝＝＝<br />
task :backup do<br />
　run &#8220;cpでバックアップ。パスに#{cluster_no}を使います。&#8221;<br />
end<br />
　<br />
task :stop do<br />
　run &#8220;ミドルウエア停止用のスクリプト&#8221;<br />
end<br />
　<br />
task :remove do<br />
　run &#8220;rmでゴミ掃除して&#8221;<br />
end<br />
　<br />
task :put do<br />
　run &#8220;cpで所定の場所にアプリを置きます。#{cluster_no}な名前のファイル&#8221;<br />
end<br />
　<br />
task :start do<br />
　run &#8220;ミドルウエア起動用のスクリプト&#8221;<br />
end<br />
　<br />
task :deploy do<br />
　backup<br />
　stop<br />
　remove<br />
　put<br />
　start<br />
end<br />
＝＝＝＝＝＝＝<br />
　<br />
明日もCapistranoをイジる予定なので、面白そうな発見があったら、<br />
また載せていきます。</p>
]]></content:encoded>
			<wfw:commentRss>http://shinodogg.com/?feed=rss2&amp;p=3066</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://shinodogg.com/?p=3066" />
	</item>
	</channel>
</rss>
