<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2japanesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Supernova</title>
	
	<link>http://blog.dealforest.net</link>
	<description>be careful, be bravely</description>
	<lastBuildDate>Thu, 09 Feb 2012 00:00:00 PST</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/dealforest" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="dealforest" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><image><link>http://blog.dealforest.net</link><url>http://blog.dealforest.net/wp-content/uploads/2008/09/icon.gif</url><title>dealforest</title></image><item><title>Links for 2012-02-08 [del.icio.us]</title><link>http://del.icio.us/dealforest#2012-02-08</link><pubDate>Thu, 09 Feb 2012 00:00:00 PST</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2012-02-08</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.fenrir-inc.com/jp/2011/04/addressbook_framework.html"&gt;iOS &amp;#27161;&amp;#28310;&amp;#12398;&amp;#36899;&amp;#32097;&amp;#20808;&amp;#24773;&amp;#22577;&amp;#12434;&amp;#12450;&amp;#12503;&amp;#12522;&amp;#12363;&amp;#12425;&amp;#21033;&amp;#29992;&amp;#12377;&amp;#12427; (&amp;#12501;&amp;#12455;&amp;#12531;&amp;#12522;&amp;#12523; | &amp;#12487;&amp;#12505;&amp;#12525;&amp;#12483;&amp;#12497;&amp;#12540;&amp;#12474;&amp;#12502;&amp;#12525;&amp;#12464;)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2012-02-06 [del.icio.us]</title><link>http://del.icio.us/dealforest#2012-02-06</link><pubDate>Tue, 07 Feb 2012 00:00:00 PST</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2012-02-06</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/kimada/20090917/1253187128"&gt;UITableViewController&amp;#12398;viewWillAppear:&amp;#12513;&amp;#12477;&amp;#12483;&amp;#12489;&amp;#12391;&amp;#27671;&amp;#12434;&amp;#12388;&amp;#12369;&amp;#12427;&amp;#12371;&amp;#12392; - The iPhone Development Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yusukebe.com/archives/20120206/220152.html"&gt;&amp;#12494;&amp;#12531;&amp;#12467;&amp;#12540;&amp;#12489;&amp;#12394;&amp;#12501;&amp;#12449;&amp;#12452;&amp;#12523;&amp;#12434;&amp;#12514;&amp;#12472;&amp;#12517;&amp;#12540;&amp;#12523;&amp;#12392;&amp;#19968;&amp;#32210;&amp;#12395;&amp;#12452;&amp;#12531;&amp;#12473;&amp;#12488;&amp;#12540;&amp;#12523;&amp;#12375;&amp;#12383;&amp;#12369;&amp;#12428;&amp;#12400;share&amp;#12487;&amp;#12451;&amp;#12524;&amp;#12463;&amp;#12488;&amp;#12522;&amp;#12434;&amp;#20351;&amp;#12358; - &amp;#12422;&amp;#12540;&amp;#12377;&amp;#12369;&amp;#12409;&amp;#12540;&amp;#26085;&amp;#35352;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/nakamura001/20120205/1328456039"&gt;iOS&amp;#12398;&amp;#12503;&amp;#12525;&amp;#12464;&amp;#12521;&amp;#12511;&amp;#12531;&amp;#12464;&amp;#20013;&amp;#12395; gdb &amp;#12391; recursiveDescription &amp;#12434;&amp;#20351;&amp;#12358;&amp;#12398;&amp;#12399;&amp;#33391;&amp;#12356;&amp;#12450;&amp;#12452;&amp;#12487;&amp;#12451;&amp;#12450;!! - &amp;#24375;&amp;#28779;&amp;#12391;&amp;#36914;&amp;#12417;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2012-02-05 [del.icio.us]</title><link>http://del.icio.us/dealforest#2012-02-05</link><pubDate>Mon, 06 Feb 2012 00:00:00 PST</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2012-02-05</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.livedoor.jp/inonb/archives/1543275.html"&gt;facebook&amp;#12521;&amp;#12452;&amp;#12463;&amp;#12394;&amp;#12473;&amp;#12521;&amp;#12452;&amp;#12489;&amp;#12513;&amp;#12491;&amp;#12517;&amp;#12540; - iOS Advent Calender - build note&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/sinsoku/20111025/1319497900"&gt;&amp;#22259;&amp;#12391;&amp;#20998;&amp;#12363;&amp;#12427;git-merge&amp;#12398;--ff, --no-ff, --squash&amp;#12398;&amp;#36949;&amp;#12356; - &amp;#12450;&amp;#12472;&amp;#12515;&amp;#12452;&amp;#12523;SE&amp;#12434;&amp;#30446;&amp;#25351;&amp;#12377;&amp;#12502;&amp;#12525;&amp;#12464;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/u1tnk/20110405/gitmergedetail"&gt;git-merge&amp;#12391;--ff(&amp;#12487;&amp;#12501;&amp;#12457;&amp;#12523;&amp;#12488;)&amp;#12392;--no-ff&amp;#12392;--squash&amp;#12398;&amp;#36949;&amp;#12356; - &amp;#20961;&amp;#20154;&amp;#12503;&amp;#12525;&amp;#12464;&amp;#12521;&amp;#12510;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://uupaa.hatenablog.com/entry/2012/02/04/145400"&gt;uupaa looper &amp;#35211;&amp;#12387;&amp;#12369;&amp;#12383;&amp;#12424;&amp;#12540; - latest log&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2012-02-04 [del.icio.us]</title><link>http://del.icio.us/dealforest#2012-02-04</link><pubDate>Sun, 05 Feb 2012 00:00:00 PST</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2012-02-04</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.zero4racer.com/blog/467"&gt;&amp;#12371;&amp;#12428;&amp;#12399;&amp;#20415;&amp;#21033;&amp;#65281;iPad&amp;#12392;Mac&amp;#12391;&amp;#23455;&amp;#29694;&amp;#12377;&amp;#12427;&amp;#24555;&amp;#36969;&amp;#29289;&amp;#26360;&amp;#12365;&amp;#29872;&amp;#22659; &amp;laquo; Zero4Racer PRO Developer's Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2012-02-02 [del.icio.us]</title><link>http://del.icio.us/dealforest#2012-02-02</link><pubDate>Fri, 03 Feb 2012 00:00:00 PST</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2012-02-02</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://tetsuwo.tumblr.com/post/5572292332/mysql-order-by-null-null"&gt;MySQL &amp;#12398; ORDER BY &amp;#12391; NULL &amp;#12434;&amp;#20808;&amp;#12395;&amp;#12418;&amp;#12387;&amp;#12390;&amp;#12365;&amp;#12390; NULL &amp;#20197;&amp;#22806;&amp;#12399;&amp;#38477;&amp;#38918;&amp;#12395;&amp;#12377;&amp;#12427; &amp;laquo; TECHLOG - Tetsuwo OISHI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2012-01-31 [del.icio.us]</title><link>http://del.icio.us/dealforest#2012-01-31</link><pubDate>Wed, 01 Feb 2012 00:00:00 PST</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2012-01-31</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.penpale.jp/blog/iOS/entry-86.html"&gt;&amp;#12513;&amp;#12514;&amp;#65306;NSString&amp;#12391;&amp;#12486;&amp;#12461;&amp;#12473;&amp;#12488;&amp;#12501;&amp;#12449;&amp;#12452;&amp;#12523;&amp;#12434;&amp;#35501;&amp;#12415;&amp;#36796;&amp;#12416; | Objective-C(iOS) |&amp;#12506;&amp;#12531;&amp;#12462;&amp;#12531;&amp;#12497;&amp;#12524;&amp;#12483;&amp;#12488;-&amp;#27178;&amp;#27996;&amp;#12398;&amp;#12454;&amp;#12455;&amp;#12502;&amp;#12469;&amp;#12452;&amp;#12488;&amp;#12539;&amp;#12507;&amp;#12540;&amp;#12512;&amp;#12506;&amp;#12540;&amp;#12472;&amp;#21046;&amp;#20316;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://meandmark.com/blog/2011/11/creating-custom-xcode-4-file-templates/"&gt;Creating Custom Xcode 4 File Templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://d.hatena.ne.jp/shu223/20110318/1300390974"&gt;Xcode 4 &amp;#12395;&amp;#33258;&amp;#20316;&amp;#12501;&amp;#12449;&amp;#12452;&amp;#12523;&amp;#12486;&amp;#12531;&amp;#12503;&amp;#12524;&amp;#12540;&amp;#12488;&amp;#12434;&amp;#36861;&amp;#21152;&amp;#12377;&amp;#12427; - Over&amp;amp;Out; &amp;#12381;&amp;#12398;&amp;#24460;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ido.nu/kuma/2012/01/29/how-to-use-mitmproxy/"&gt;mitmproxy&amp;#12434;&amp;#20351;&amp;#12387;&amp;#12390;SSL&amp;#36890;&amp;#20449;&amp;#12398;&amp;#20013;&amp;#36523;&amp;#12434;&amp;#30906;&amp;#35469;&amp;#12377;&amp;#12427; &amp;laquo; ku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://codedehitokoto.blogspot.com/2012/01/nodeidecloud9.html"&gt;&amp;#12467;&amp;#12540;&amp;#12489;&amp;#12391;&amp;#19968;&amp;#35328;: &amp;#12371;&amp;#12398;&amp;#23436;&amp;#25104;&amp;#24230;&amp;#12395;&amp;#38663;&amp;#12360;&amp;#12364;&amp;#27490;&amp;#12414;&amp;#12425;&amp;#12394;&amp;#12356;&amp;#65281;Node.js&amp;#21490;&amp;#19978;&amp;#26368;&amp;#39640;&amp;#12398;IDE&amp;#12289;Cloud9&amp;#12434;&amp;#12452;&amp;#12531;&amp;#12473;&amp;#12488;&amp;#12540;&amp;#12523;&amp;#12375;&amp;#12424;&amp;#12358;&amp;#12290;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2012-01-30 [del.icio.us]</title><link>http://del.icio.us/dealforest#2012-01-30</link><pubDate>Tue, 31 Jan 2012 00:00:00 PST</pubDate><guid isPermaLink="false">http://del.icio.us/dealforest#2012-01-30</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://jomnius.blogspot.com/2011/02/how-to-find-mfmailcomposeviewcontroller.html"&gt;iLessons iLearned: How to Find MFMailComposeViewController Email Addresses&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.zakzak.co.jp/sports/baseball/news/20120118/bbl1201181531008-n1.htm"&gt;&amp;#12304;&amp;#12473;&amp;#12462;&amp;#12398;&amp;#12415;&amp;#12382;&amp;#30693;&amp;#12427;&amp;#12305;&amp;#23614;&amp;#33457;&amp;#21069;&amp;#30435;&amp;#30563;&amp;#12364;&amp;#21021;&amp;#12417;&amp;#12390;&amp;#26126;&amp;#12363;&amp;#12377;&amp;ldquo;&amp;#27178;&amp;#27996;&amp;#12398;&amp;#23455;&amp;#20687;&amp;rdquo; - &amp;#12473;&amp;#12509;&amp;#12540;&amp;#12484; - ZAKZAK&lt;/a&gt;&lt;br/&gt;
かなしす&lt;/li&gt;
&lt;/ul&gt;</description></item><item>
		<title>Jenkins を iOS に導入してみたメモ -Kiwi編-</title>
		<link>http://blog.dealforest.net/2012/01/jenkins-ios-kiwi/</link>
		<comments>http://blog.dealforest.net/2012/01/jenkins-ios-kiwi/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 17:26:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[jenkins]]></category>
		<category><![CDATA[iOS]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=693</guid>
		<description>どうも最低限１週間に１回更新しようと思いつつなかなかできていない僕です。 最近個人的に CI が便利で勝手にやってたりします。Jenkins はよくできていて個人的に気に入っています。 個人的に気になってるのが KIF, Kiwi, cedar あたりですね。 Kiwi cedar は BDD のテスティングフレームワークです。 情報もあって Jenkins で 簡単に導入できるのは GHUnit だと思います。ここみれば簡単に導入できます。 個人的には logic 周りのテストを Kiwi をつかって UI が絡んだテストに KIF を使おうかなと思ったりしてる今日この頃です。 前置きが長くなりましたが今回は Kiwi を使用して Jenkins で CI ができる状態までのお話です。 といってもリンク先をみれば解決するんですけどねｗ そういうまとめがなかったので試したまとめって感じです。 project への導入はここをみればいけます。 Jenkins の設定はここの通りで大丈夫です。 上記の設定では SCM ポーリングで監視したりしてるんですけど git リポジトリも管理下にあるなら hooks/post-update で http リクエストを送ってジョブ登録するのがいいかと思います。 はまったのが &amp;#8220;Buid Settings&amp;#8221; [...]</description>
			<content:encoded><![CDATA[<p>どうも最低限１週間に１回更新しようと思いつつなかなかできていない僕です。<br />
最近個人的に CI が便利で勝手にやってたりします。Jenkins はよくできていて個人的に気に入っています。<br />
個人的に気になってるのが <a href="https://github.com/square/KIF" target="_blank">KIF</a>, <a href="https://github.com/allending/Kiwi" target="_blank">Kiwi</a>, <a href="https://github.com/pivotal/cedar" target="_blank">cedar</a> あたりですね。<br />
Kiwi cedar は BDD のテスティングフレームワークです。<br />
情報もあって Jenkins で 簡単に導入できるのは GHUnit だと思います。ここみれば簡単に導入できます。<br />
個人的には logic 周りのテストを Kiwi をつかって UI が絡んだテストに KIF を使おうかなと思ったりしてる今日この頃です。</p>
<p>前置きが長くなりましたが今回は Kiwi を使用して Jenkins で CI ができる状態までのお話です。<br />
といってもリンク先をみれば解決するんですけどねｗ<br />
そういうまとめがなかったので試したまとめって感じです。</p>
<p>project への導入は<a href="http://tech-gym.com/2012/01/objective-c/652.html" target="_blank">ここ</a>をみればいけます。<br />
Jenkins の設定は<a href="http://akisute.com/2012/01/jenkins-ios-sentestkit.htmll" target="_blank">ここ</a>の通りで大丈夫です。</p>
<p>上記の設定では SCM ポーリングで監視したりしてるんですけど git リポジトリも管理下にあるなら hooks/post-update で http リクエストを送ってジョブ登録するのがいいかと思います。</p>
<p>はまったのが &#8220;Buid Settings&#8221; => &#8220;Test Host&#8221; を消さないといけないのを忘れてテスト結果がちゃんと反映されず悩んでました。<br />
そこで書かれている通り <b>&#8220;UIWindow&#8221;</b> や <b>&#8220;UIApplication&#8221;</b> を使用している場合は動作しなくなるので気をつけてください。</p>
<p>あとほかに code coverage を出したりしようとすると<a href="http://akisute.com/2012/01/jenkins-ios-gcov.html" target="_blank">ここ</a>をみればいけると思います。<br />
ここまでやると楽しいテストサイクルを送れるはずです。<br />
こうやって視覚的にみれるのもそうだし自動ビルドできるのは便利ですね。</p>
<p>僕がやった環境のせいかわからないですけど gcov で code coverage をとろうとするとエラーでこけちゃってとれませんでした。。。。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">fopen$UNIX2003 called from function llvm_gcda_start_file in image [project名].</pre></div></div>

<p>/Develper/usr/lib/libprofile_rt.dylib を追加すれば大丈夫という記事をみかけたりしたのですがうまくいかず。。。<br />
このあたりはもう少し調べてみようと思います。</p>
<h2>参考資料</h2>
<p><a href="http://tech-gym.com/2012/01/objective-c/652.html" target="__blank">もう一つのBDDスタイルのiOSテスティングフレームワーク「Kiwi」の導入方法</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/sKdN4u66ADc-96Iv5pT3rf1mic4/0/da"><img src="http://feedads.g.doubleclick.net/~a/sKdN4u66ADc-96Iv5pT3rf1mic4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/sKdN4u66ADc-96Iv5pT3rf1mic4/1/da"><img src="http://feedads.g.doubleclick.net/~a/sKdN4u66ADc-96Iv5pT3rf1mic4/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2012/01/jenkins-ios-kiwi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Node.js で POST したコードを Closure Compiler で圧縮する簡易サーバーを書いた</title>
		<link>http://blog.dealforest.net/2011/10/pmake_server_in_nodejs_of_gcc/</link>
		<comments>http://blog.dealforest.net/2011/10/pmake_server_in_nodejs_of_gcc/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 13:45:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[nodejs]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=684</guid>
		<description>webAPI で Node.js を使ったのは勉強がてらです。はい。完全に趣味ですね。 jar おとしてきて conpile すればいいやんといえばそれでおしまいですねｗ コードは Github にあげてあります。 そもそも複数ファイルをまとめて圧縮したり、Web で毎回コピペしてやるのもめんどくなってきたのでちょりっと書いてみました。 コマンドラインから post して圧縮できたらいいなと思ってたのでそんな感じにした。 $node server.js Server running at http://127.0.0.1:8000/ デフォルトだと localhost の 8000 でサーバーが起動します。 あとはそこにむかって POST するだけです。 そうすると圧縮された js が標準出力に表示されます。 $echo &amp;#34;(function() { alert('hoge'); })();&amp;#34; &amp;#124; curl -d @- http://localhost:8000 alert(&amp;#34;hoge&amp;#34;); $alias -g GCC='&amp;#124; curl -d @- http://localhost:8000 ' みたいなエイリアスを定義しておくと下記みたいに使えるので便利ですね $echo &amp;#34;(function() [...]</description>
			<content:encoded><![CDATA[<p>webAPI で Node.js を使ったのは勉強がてらです。はい。完全に趣味ですね。<br />
jar おとしてきて conpile すればいいやんといえばそれでおしまいですねｗ<br />
コードは <a href="https://github.com/dealforest/google-closure">Github</a> にあげてあります。</p>
<p>そもそも複数ファイルをまとめて圧縮したり、<a href="http://closure-compiler.appspot.com/home">Web</a> で毎回コピペしてやるのもめんどくなってきたのでちょりっと書いてみました。<br />
コマンドラインから post して圧縮できたらいいなと思ってたのでそんな感じにした。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$node server.js
Server running at http://127.0.0.1:8000/</pre></div></div>

<p>デフォルトだと localhost の 8000 でサーバーが起動します。<br />
あとはそこにむかって POST するだけです。<br />
そうすると圧縮された js が標準出力に表示されます。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$echo &quot;(function() { alert('hoge'); })();&quot; |  curl -d @- http://localhost:8000
alert(&quot;hoge&quot;);</pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$alias -g GCC='| curl -d @- http://localhost:8000 '</pre></div></div>

<p>みたいなエイリアスを定義しておくと下記みたいに使えるので便利ですね</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$echo &quot;(function() { alert('hoge'); })();&quot; GCC -o compress.js
$cat hoge.js fuga.js GCC -o compress.js</pre></div></div>

<p>実装に少しふれておくと server のコードは 40 行くらい。<br />
Google Closure Compiler API のライブラリは <a href="http://www.benweaver.com/blog/use-the-google-closure-service-with-nodejs.html">ここ</a>のを使いました。<br />
npm でもライブラリが３つくらいあったので、とりあえず一番最初に見つけたのを使ったかんじ。<br />
あと Node.js をそこまで理解して書いたわけでもないので、突っ込みどころあればよろしくです</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> host    <span style="color: #339933;">=</span> <span style="color: #3366CC;">'127.0.0.1'</span><span style="color: #339933;">,</span>
    port    <span style="color: #339933;">=</span> <span style="color: #CC0000;">8000</span><span style="color: #339933;">,</span>
    http    <span style="color: #339933;">=</span> require<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    closure <span style="color: #339933;">=</span> require<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'./lib/closure'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
http.<span style="color: #660066;">createServer</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #009900;">&#40;</span>request<span style="color: #339933;">,</span> response<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> code<span style="color: #339933;">;</span>
    request.<span style="color: #660066;">setEncoding</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'utf-8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    request.<span style="color: #660066;">on</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'data'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>chunk<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>chunk<span style="color: #009900;">&#41;</span> code <span style="color: #339933;">=</span> chunk<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    request.<span style="color: #660066;">on</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'end'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
            console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'[CODE]: '</span> <span style="color: #339933;">+</span> code<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>code<span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">throw</span> <span style="color: #003366; font-weight: bold;">new</span> Error<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'not found post data'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            closure.<span style="color: #660066;">compile</span><span style="color: #009900;">&#40;</span>code<span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>err<span style="color: #339933;">,</span> _code<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>err<span style="color: #009900;">&#41;</span> <span style="color: #000066; font-weight: bold;">throw</span> err<span style="color: #339933;">;</span>
&nbsp;
                <span style="color: #003366; font-weight: bold;">var</span> rate <span style="color: #339933;">=</span> Math.<span style="color: #660066;">round</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>_code.<span style="color: #660066;">length</span> <span style="color: #339933;">/</span> code.<span style="color: #660066;">length</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #CC0000;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;[COMPILED] compiled (%d% smaller)<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span> <span style="color: #339933;">+</span> code<span style="color: #339933;">,</span> rate<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                response.<span style="color: #660066;">writeHead</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">200</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> <span style="color: #3366CC;">'Content-Type'</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">'text/plain'</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                response.<span style="color: #660066;">end</span><span style="color: #009900;">&#40;</span>_code<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000066; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>err<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            console.<span style="color: #660066;">error</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Faild to Compile: '</span> <span style="color: #339933;">+</span> err.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            response.<span style="color: #660066;">writeHead</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">500</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span> <span style="color: #3366CC;">'Content-Type'</span> <span style="color: #339933;">:</span> <span style="color: #3366CC;">'text/plain'</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            response.<span style="color: #660066;">end</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'Faild to Compile: '</span> <span style="color: #339933;">+</span> err.<span style="color: #660066;">toString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">listen</span><span style="color: #009900;">&#40;</span>port<span style="color: #339933;">,</span> host<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
console.<span style="color: #660066;">log</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;Server running at http://&quot;</span> <span style="color: #339933;">+</span> host <span style="color: #339933;">+</span> <span style="color: #3366CC;">':'</span> <span style="color: #339933;">+</span> port <span style="color: #339933;">+</span> <span style="color: #3366CC;">&quot;/&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>


<p><a href="http://feedads.g.doubleclick.net/~a/8kY7hur4hB36Qw-1HmHERdIKLZg/0/da"><img src="http://feedads.g.doubleclick.net/~a/8kY7hur4hB36Qw-1HmHERdIKLZg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/8kY7hur4hB36Qw-1HmHERdIKLZg/1/da"><img src="http://feedads.g.doubleclick.net/~a/8kY7hur4hB36Qw-1HmHERdIKLZg/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2011/10/pmake_server_in_nodejs_of_gcc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter の bootstrap を使ったメモ</title>
		<link>http://blog.dealforest.net/2011/09/use-bootstrap-of-twitter/</link>
		<comments>http://blog.dealforest.net/2011/09/use-bootstrap-of-twitter/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 18:19:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=675</guid>
		<description>ドキュメント自体が bootstrap で作られていて、それがサンプルも兼ねていてそっから少しいじったメモ。以下、bootstrap の version 1.2.0 での話です。 使い方 bootstrap を使用しようとすると２通りの方法があります。 1. less.js を使用し less ファイルを読み込む方法。(こんな感じ)(※1) 2. css をファイルを読み込む。github に置かれています。 (※1)sass 的なやつです。less ファイルをコンパイルして css ファイルを作ることもできます。 これは npm でインストールする必要があるので node 環境が必要になってきます。 less と sass が分からない場合は&amp;#8221;CSS拡張メタ言語「SCSS(Sass)」と「LESS」の比較&amp;#8220;がわかりやすかったです。 画面上を16カラムで分割されていて、そこをどう使うかでレイアウトしていく感じ。 ちょっと使った感じ開発の時にはかなり使いやすい！！ ただDOMを書く量のが少し増える。その辺は snipets で対応できる範囲な気がしてる。 作ればそのうち公開する予定。そもそも作るかどうかもあるけど(ぉ ぱっと見た感じはどうしても twitter っぽくはなるのは諦めるしかないｗ &amp;#60;!DOCTYPE html&amp;#62; &amp;#60;html lang=&amp;#34;en&amp;#34;&amp;#62; &amp;#60;head&amp;#62; &amp;#60;meta charset=&amp;#34;utf-8&amp;#34;&amp;#62; &amp;#60;title&amp;#62;&amp;#60;/title&amp;#62; &amp;#60;meta name=&amp;#34;description&amp;#34; content=&amp;#34;&amp;#34;&amp;#62; &amp;#60;meta name=&amp;#34;author&amp;#34; [...]</description>
			<content:encoded><![CDATA[<p><a href="http://twitter.github.com/bootstrap/">ドキュメント</a>自体が bootstrap で作られていて、それがサンプルも兼ねていてそっから少しいじったメモ。以下、bootstrap の version 1.2.0 での話です。</p>
<h2>使い方</h2>
<p>bootstrap を使用しようとすると２通りの方法があります。</p>
<p>1. <a href="http://lesscss.org/">less.js</a> を使用し less ファイルを読み込む方法。(<a href="http://twitter.github.com/bootstrap/#less">こんな感じ</a>)(※1)<br />
2. css をファイルを読み込む。github に置かれています。</p>
<p>(※1)<a href="http://sass-lang.com/">sass</a> 的なやつです。less ファイルをコンパイルして css ファイルを作ることもできます。<br />
    これは npm でインストールする必要があるので node 環境が必要になってきます。<br />
    less と sass が分からない場合は&#8221;<a href="http://dxd8.com/archives/217/">CSS拡張メタ言語「SCSS(Sass)」と「LESS」の比較</a>&#8220;がわかりやすかったです。</p>
<p>画面上を16カラムで分割されていて、そこをどう使うかでレイアウトしていく感じ。<br />
ちょっと使った感じ開発の時にはかなり使いやすい！！<br />
ただDOMを書く量のが少し増える。その辺は snipets で対応できる範囲な気がしてる。<br />
作ればそのうち公開する予定。そもそも作るかどうかもあるけど(ぉ<br />
ぱっと見た感じはどうしても twitter っぽくはなるのは諦めるしかないｗ</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;utf-8&quot;&gt;
    &lt;title&gt;&lt;/title&gt;
    &lt;meta name=&quot;description&quot; content=&quot;&quot;&gt;
    &lt;meta name=&quot;author&quot; content=&quot;&quot;&gt;
&nbsp;
    &lt;!-- Le HTML5 shim, for IE6-8 support of HTML elements --&gt;
    &lt;!--[if lt IE 9]&gt;
      &lt;script src=&quot;http://html5shim.googlecode.com/svn/trunk/html5.js&quot;&gt;&lt;/script&gt;
    &lt;![endif]--&gt;
&nbsp;
    &lt;!-- Le styles --&gt;
    &lt;link href=&quot;http://twitter.github.com/bootstrap/assets/css/bootstrap-1.2.0.css&quot; rel=&quot;stylesheet&quot;&gt;
&nbsp;
  &lt;/head&gt;
    &lt;body&gt;
    &lt;!--
    	TOPBAR 必要ならここに記入
    --&gt;
    &lt;div class=&quot;container&quot;&gt;
    &lt;!--
    	ここに各ページのDOMを追加
    --&gt;
    &lt;/div&gt;
    &lt;footer&gt;
        &lt;p&gt;&amp;copy; hoge&lt;/p&gt;
    &lt;/footer&gt;
  &lt;/body&gt;
&lt;/html&gt;</pre></div></div>

<p>こんな感じでコメントの所にDOMを追加すればすぐに試せる。<br />
すてきですね。上記を少し変更して wrapper とかにしてやれば良い感じになります。<br />
サイドバーを使いたい場合を <b>contailer</b> の部分を<a href="http://twitter.github.com/bootstrap/#layouts">ここ</a>の <b>Fluid layout</b>みたいにすればいいです。</p>
<p>使う際は github や googlecode から js や css を参照してるけど、ローカルに変えた方がよいです。<br />
TOPBAR は使用する際には 40px 分あるので div.contents を <b>&#8220;margin-top: 60px&#8221;</b>くらいしてやれば良い感じに表示されます。<br />
&#8220;hero-unit&#8221; を指定していればそこのスタイルで指定されています。</p>
<p>基本的には <a href="http://twitter.github.com/bootstrap/">ドキュメント</a> にあるソースコードのとおりにかけばちゃんと動作します。<br />
ただいくつか javascript が必要な部分があったりなどしたのでコピペで使えない部分を下記にまとめました。</p>
<h2>注意点</h2>
<p>基本的には HTML + CSS で完結していて非常に使いやすいのですがいくつか注意点が必要です。</p>
<p>1. <a href="http://twitter.github.com/bootstrap/#navigation">TOPBARでドロップダウンのメニュー</a>を使用したい場合は javascript が必要（<a href="http://twitter.github.com/bootstrap/assets/js/application.js">ここ</a>の&#8221;Dropdown example for topbar nav&#8221;の部分)<br />
2. Twipsies を使用する際は javascript が必要（<a href="">ここ</a>の&#8221;POSITION TWIPSIES&#8221;の部分)<br />
3. alert や modal を表示後に消す処理等は自分で実装する<br />
4. popover は bootstrap 意外にも自分で css を定義する必要がある。まぁ位置・サイズ指定が入るからそうなりますよね（<a href="http://twitter.github.com/bootstrap/assets/css/docs.css">ここ</a>の&#8221;Popover docs&#8221;の部分)<br />
5. table で sort を使用したい場合は <a href="http://autobahn.tablesorter.com/jquery.tablesorter.min.js">jquery.tablesorter.min.js</a> が必要。sort せずにハイライトするだけなら css だけで可能</p>
<h2>まとめ</h2>
<p>作った人はすてきです。公開したことはもっとすてきです。<br />
markdotto++<br />
fat++</p>

<p><a href="http://feedads.g.doubleclick.net/~a/tl5RNrN5dhRQcUJa3uSOtk0Bjrk/0/da"><img src="http://feedads.g.doubleclick.net/~a/tl5RNrN5dhRQcUJa3uSOtk0Bjrk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tl5RNrN5dhRQcUJa3uSOtk0Bjrk/1/da"><img src="http://feedads.g.doubleclick.net/~a/tl5RNrN5dhRQcUJa3uSOtk0Bjrk/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2011/09/use-bootstrap-of-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>“attaching to [appname]“で止まり起動しなくなった時の対処法</title>
		<link>http://blog.dealforest.net/2011/08/hangup-attaching-to-appname/</link>
		<comments>http://blog.dealforest.net/2011/08/hangup-attaching-to-appname/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 16:43:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[未分類]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=669</guid>
		<description>Simulator を起動すると &amp;#8220;attaching to [appname]&amp;#8220; で hang する状態になってしまった。 そして無駄に時間を費やすハメに。。。 色々いじるも拉致があかず実機に転送してみるとThe application does not have a valid signature.というポップアップが！！ Titanium を使ってた際にこれでハマったことがあったので助かった。 原因は .app の直下に contents というフォルダを作っていたためでした。 詳細はここで説明していますのでそちらでどうぞ。 contents というフォルダをリネームすると起動したり実機に転送することができた。 Titanium だけと思ってたけども違ったみたい。それにしても、もう少しワーニングなりなんなり出してほしいものですね。 その他にも以下のような原因でもなるらしいです。 XCode 4 hangs at &amp;#8220;Attaching to (app name)&amp;#8221; XCode4でSimulatorで動かそうとしたらAttaching to…で固まる Xcode4: Attaching to MyApp とにかく contents というフォルダを .app 直下に作らないことが吉です。</description>
			<content:encoded><![CDATA[<p>Simulator を起動すると <b>&#8220;attaching to [appname]&#8220;</b> で hang する状態になってしまった。<br />
そして無駄に時間を費やすハメに。。。</p>
<p>色々いじるも拉致があかず実機に転送してみると<b>The application does not have a valid signature.</b>というポップアップが！！<br />
Titanium を使ってた際にこれでハマったことがあったので助かった。</p>
<p>原因は .app の直下に contents というフォルダを作っていたためでした。<br />
詳細は<a href="http://d.hatena.ne.jp/shunsuk/20110216">ここ</a>で説明していますのでそちらでどうぞ。<br />
contents というフォルダをリネームすると起動したり実機に転送することができた。<br />
Titanium だけと思ってたけども違ったみたい。それにしても、もう少しワーニングなりなんなり出してほしいものですね。</p>
<p>その他にも以下のような原因でもなるらしいです。<br />
<a href="http://stackoverflow.com/questions/5382968/xcode-4-hangs-at-attaching-to-app-name">XCode 4 hangs at &#8220;Attaching to (app name)&#8221;</a><br />
<a href="http://stack3.net/blogdev/p/618">XCode4でSimulatorで動かそうとしたらAttaching to…で固まる</a><br />
<a href="http://blog.kabisa.nl/2011/05/24/xcode4-attaching-to-myapp/">Xcode4: Attaching to MyApp</a></p>
<p>とにかく <b>contents </b> というフォルダを .app 直下に作らないことが吉です。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/YC2LVcbSM0nvWHiDGzMK59GNUZ0/0/da"><img src="http://feedads.g.doubleclick.net/~a/YC2LVcbSM0nvWHiDGzMK59GNUZ0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YC2LVcbSM0nvWHiDGzMK59GNUZ0/1/da"><img src="http://feedads.g.doubleclick.net/~a/YC2LVcbSM0nvWHiDGzMK59GNUZ0/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2011/08/hangup-attaching-to-appname/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac で開発用の SMTP サーバーを起動するまでのメモ</title>
		<link>http://blog.dealforest.net/2011/08/use-postfix-on-mac/</link>
		<comments>http://blog.dealforest.net/2011/08/use-postfix-on-mac/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 15:36:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[postfix]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=662</guid>
		<description>Macで開発用SMTPサーバをたてたい! を参考にして snow leopard でやってみた。 これで送信できるとのことなので試すと下記エラーがでていて送信できなかった $postfix start $mail dealforest@dealforest.net &amp;#160; Aug 16 20:05:56 dealforest-MBP-2 postfix[5026]: error: to submit mail, use the Postfix sendmail command Aug 16 20:05:56 dealforest-MBP-2 postfix[5026]: fatal: the postfix command is reserved for the superuser 実行権限的な問題かなと思って sudo をつけて再度ためす $sudo postfix start $mail dealforest@dealforest.net &amp;#160; fatal: open lock file pid/master.pid: unable to [...]</description>
			<content:encoded><![CDATA[<p><a href="http://aqubiblog.blogspot.com/2009/03/macsmtp.html">Macで開発用SMTPサーバをたてたい!</a><br />
を参考にして snow leopard でやってみた。</p>
<p>これで送信できるとのことなので試すと下記エラーがでていて送信できなかった</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$postfix start
$mail dealforest@dealforest.net
&nbsp;
Aug 16 20:05:56 dealforest-MBP-2 postfix[5026]: error: to submit mail, use the Postfix sendmail command
Aug 16 20:05:56 dealforest-MBP-2 postfix[5026]: fatal: the postfix command is reserved for the superuser</pre></div></div>

<p>実行権限的な問題かなと思って sudo をつけて再度ためす</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$sudo postfix start
$mail dealforest@dealforest.net
&nbsp;
fatal: open lock file pid/master.pid: unable to set exclusive lock: Resource temporarily unavailable</pre></div></div>

<p>ログを見ていると上記のようなエラーがを発見<br />
どっかしらないとこで起動してるのかと思って launchd を調べてみた</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">sudo launchctl list | grep postfix</pre></div></div>

<p>sudo をつけないと org.postfix.master でてこなくて少し悩んだ。<br />
対処方法は<a href="http://switch.richard5.net/2006/08/19/fatal-open-lock-file-pidmasterpid/">ここ</a>にあるように plist をいじるのもいいって自分で postfix を起動させる方法でもいいんだけど、それも気持ち悪いので launchd をそのまま使うことにした。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$sudo launchctl start org.postfix.master  [起動]
$sudo launchctl stop org.postfix.master  [停止]</pre></div></div>

<p>設定ファイルは /etc/postfix/master.cf にあります。</p>
<p>とりあえずこれで送信できるようになりましたとさ。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/9RONMR9xuITleGY1HcGAlWex9xU/0/da"><img src="http://feedads.g.doubleclick.net/~a/9RONMR9xuITleGY1HcGAlWex9xU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9RONMR9xuITleGY1HcGAlWex9xU/1/da"><img src="http://feedads.g.doubleclick.net/~a/9RONMR9xuITleGY1HcGAlWex9xU/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2011/08/use-postfix-on-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>facebook SDKを使用してOAuth認証時の方法を Dialog 固定にする</title>
		<link>http://blog.dealforest.net/2011/08/i-get-oauth-token-by-force-open-dialog-in-facebooks-sdk/</link>
		<comments>http://blog.dealforest.net/2011/08/i-get-oauth-token-by-force-open-dialog-in-facebooks-sdk/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 14:24:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ios]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[iOS]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=652</guid>
		<description>facebook SDKを使用するとOSのバージョン、マルチタスクの有無、Facebookアプリの有無によって認証方法がかわります。 詳細はREADME.mdownを見てもらえれば分かるかと思います。 大雑把にいうと３つの認証方法があります。 (1)Facebookのアプリを起動し認証後に URL Scheme を使用しアプリに戻る (2)Safari を起動し認証後に URL Scheme を使用しアプリに戻る (3)アプリ内の Dialog 内で webView を開き認証する 今回はとある事情があり URL Scheme を使用したくなかったため全て(3)の方法で認証を使用したかったわけです。 結論から言うと Facebook.m のコードを書き換えたら可能というかんじでした。 ここを参考にして対応しました。 --- a/facebook-ios-sdk/src/Facebook.m +++ b/facebook-ios-sdk/src/Facebook.m @@ -129,6 +129,7 @@ static NSString* kSDKVersion = @&amp;#34;2&amp;#34;; */ - &amp;#40;void&amp;#41;authorizeWithFBAppAuth:&amp;#40;BOOL&amp;#41;tryFBAppAuth safariAuth:&amp;#40;BOOL&amp;#41;trySafariAuth &amp;#123; + tryFBAppAuth = NO; + trySafariAuth = NO; NSMutableDictionary* params = [...]</description>
			<content:encoded><![CDATA[<p><a href="https://github.com/facebook/facebook-ios-sdk">facebook SDK</a>を使用するとOSのバージョン、マルチタスクの有無、Facebookアプリの有無によって認証方法がかわります。<br />
詳細は<a href="https://github.com/facebook/facebook-ios-sdk/blob/master/README.mdown">README.mdown</a>を見てもらえれば分かるかと思います。</p>
<p>大雑把にいうと３つの認証方法があります。<br />
(1)Facebookのアプリを起動し認証後に URL Scheme を使用しアプリに戻る<br />
(2)Safari を起動し認証後に URL Scheme を使用しアプリに戻る<br />
(3)アプリ内の Dialog 内で webView を開き認証する</p>
<p>今回はとある事情があり URL Scheme を使用したくなかったため全て(3)の方法で認証を使用したかったわけです。</p>
<p>結論から言うと Facebook.m のコードを書き換えたら可能というかんじでした。<br />
<a href="https://github.com/facebook/facebook-ios-sdk/issues/255">ここ</a>を参考にして対応しました。</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #002200;">---</span> a<span style="color: #002200;">/</span>facebook<span style="color: #002200;">-</span>ios<span style="color: #002200;">-</span>sdk<span style="color: #002200;">/</span>src<span style="color: #002200;">/</span>Facebook.m
<span style="color: #002200;">+++</span> b<span style="color: #002200;">/</span>facebook<span style="color: #002200;">-</span>ios<span style="color: #002200;">-</span>sdk<span style="color: #002200;">/</span>src<span style="color: #002200;">/</span>Facebook.m
@@ <span style="color: #002200;">-</span><span style="color: #2400d9;">129</span>,<span style="color: #2400d9;">6</span> <span style="color: #002200;">+</span><span style="color: #2400d9;">129</span>,<span style="color: #2400d9;">7</span> @@ <span style="color: #a61390;">static</span> <span style="color: #400080;">NSString</span><span style="color: #002200;">*</span> kSDKVersion <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;2&quot;</span>;
  <span style="color: #002200;">*/</span>
 <span style="color: #002200;">-</span> <span style="color: #002200;">&#40;</span><span style="color: #a61390;">void</span><span style="color: #002200;">&#41;</span>authorizeWithFBAppAuth<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>tryFBAppAuth
                     safariAuth<span style="color: #002200;">:</span><span style="color: #002200;">&#40;</span><span style="color: #a61390;">BOOL</span><span style="color: #002200;">&#41;</span>trySafariAuth <span style="color: #002200;">&#123;</span>
<span style="color: #002200;">+</span>  tryFBAppAuth <span style="color: #002200;">=</span> <span style="color: #a61390;">NO</span>;
<span style="color: #002200;">+</span>  trySafariAuth <span style="color: #002200;">=</span> <span style="color: #a61390;">NO</span>;
   <span style="color: #400080;">NSMutableDictionary</span><span style="color: #002200;">*</span> params <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #400080;">NSMutableDictionary</span> dictionaryWithObjectsAndKeys<span style="color: #002200;">:</span>
                                  _appId, <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;client_id&quot;</span>,
                                  <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;user_agent&quot;</span>, <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;type&quot;</span>,</pre></div></div>

<p>以下のやり方でも Dialog を開いて認証ができるものの FBDialogDelegate, FBSessionDelegate の各種メソッドが呼ばれなくて今回の用途だと少し厳しくてパスした。</p>

<div class="wp_syntax"><div class="code"><pre class="objc" style="font-family:monospace;"><span style="color: #400080;">NSString</span> <span style="color: #002200;">*</span>appId <span style="color: #002200;">=</span> <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;[APPID]&quot;</span>
<span style="color: #400080;">NSMutableDictionary</span> <span style="color: #002200;">*</span>params <span style="color: #002200;">=</span> <span style="color: #002200;">&#91;</span><span style="color: #002200;">&#91;</span><span style="color: #400080;">NSMutableDictionary</span> alloc<span style="color: #002200;">&#93;</span> initWithObjectsAndKeys<span style="color: #002200;">:</span>
                                       appId,<span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;client_id&quot;</span>,
                                       <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;touch&quot;</span>, <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;display&quot;</span>,
                                       <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;publish_stream,read_stream,offline_access&quot;</span>, <span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;scope&quot;</span>,
                                       <span style="color: #a61390;">nil</span><span style="color: #002200;">&#93;</span>;
<span style="color: #002200;">&#91;</span>facebook dialog<span style="color: #002200;">:</span><span style="color: #bf1d1a;">@</span><span style="color: #bf1d1a;">&quot;oauth&quot;</span> andParams<span style="color: #002200;">:</span>params andDelegate<span style="color: #002200;">:</span>self<span style="color: #002200;">&#93;</span>;</pre></div></div>

<p>dialog の指定が &#8220;feed&#8221; だと delegate メソッドは呼ばれてたのだけど、なぜか &#8220;oauth&#8221; だと呼ばれない。<br />
分かる人いれば教えてください。</p>
<p>個人的にはFacebookアプリ認証の方がアイパスを入力しなくて楽なんですけどね。</p>
<h4>参考資料</h4>
<p><a href="http://d.hatena.ne.jp/tkwn/20101215/1292402660">自分のiphoneアプリに　Facebook ios sdk を導入する</a><br />
<a href="http://www.atmarkit.co.jp/fsmart/articles/facebookios01/02.html">Facebook Graph API活用 iPhoneアプリ開発入門</a></p>

<p><a href="http://feedads.g.doubleclick.net/~a/48CCD8SEZ-Le7eIRzxSd4Mej8_Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/48CCD8SEZ-Le7eIRzxSd4Mej8_Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/48CCD8SEZ-Le7eIRzxSd4Mej8_Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/48CCD8SEZ-Le7eIRzxSd4Mej8_Q/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2011/08/i-get-oauth-token-by-force-open-dialog-in-facebooks-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian Squeeze を RAID 下でインストール</title>
		<link>http://blog.dealforest.net/2011/07/debian-squeeze-hardware-raid-install/</link>
		<comments>http://blog.dealforest.net/2011/07/debian-squeeze-hardware-raid-install/#comments</comments>
		<pubDate>Tue, 26 Jul 2011 11:33:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[debian Squeeze]]></category>
		<category><![CDATA[RAID]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=643</guid>
		<description>HDD 2台でハードウェア RAID0 を組んだ状態で インストーラーを起動しインストールをすすめていくと パーティションの設定をする際に HDD が複数みえてしまって RAID が組めてない？？とはまったのでそのメモ。 結論から言うとインストーラー起動時の GRUB にオプションを渡さないといけなかったみたい。 FreeBSD をいれた時は何もなかったのになぁ。。。 dmraid=true とりあえずこれでいけた 詳細は下記URLからどうぞ。 DebianInstaller/SataRaid &amp;#8211; Debian Wiki 追記 2011/08/01 11:48 正確にはハードウェアRAID下ではなくフェイクRAIDでした。 フェイクRAIDのため、ソフトウェアRAIDとして扱わないといけなかったみたい。 というわけで起動オプションに&amp;#8221;dmraid=true&amp;#8221;というオプションが必要だったみたいです。 ということは BSD の場合はインストーラが自動で判断してるってことかな。</description>
			<content:encoded><![CDATA[<p>HDD 2台でハードウェア RAID0 を組んだ状態で<br />
インストーラーを起動しインストールをすすめていくと<br />
パーティションの設定をする際に<br />
HDD が複数みえてしまって RAID が組めてない？？とはまったのでそのメモ。</p>
<p>結論から言うとインストーラー起動時の GRUB にオプションを渡さないといけなかったみたい。<br />
FreeBSD をいれた時は何もなかったのになぁ。。。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">dmraid=true</pre></div></div>

<p>とりあえずこれでいけた</p>
<p>詳細は下記URLからどうぞ。<br />
<a href="http://wiki.debian.org/DebianInstaller/SataRaid">DebianInstaller/SataRaid &#8211; Debian Wiki</a></p>
<h2>追記 2011/08/01 11:48</h2>
<p>正確にはハードウェアRAID下ではなく<a href="http://itpro.nikkeibp.co.jp/article/Keyword/20070824/280335/">フェイクRAID</a>でした。<br />
フェイクRAIDのため、ソフトウェアRAIDとして扱わないといけなかったみたい。<br />
というわけで起動オプションに&#8221;dmraid=true&#8221;というオプションが必要だったみたいです。<br />
ということは BSD の場合はインストーラが自動で判断してるってことかな。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/ngUfdbGhzg3lj6P1O87Q1waIQxU/0/da"><img src="http://feedads.g.doubleclick.net/~a/ngUfdbGhzg3lj6P1O87Q1waIQxU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/ngUfdbGhzg3lj6P1O87Q1waIQxU/1/da"><img src="http://feedads.g.doubleclick.net/~a/ngUfdbGhzg3lj6P1O87Q1waIQxU/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2011/07/debian-squeeze-hardware-raid-install/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>objective-c で websocket クライアント</title>
		<link>http://blog.dealforest.net/2011/06/websocket_client_objc/</link>
		<comments>http://blog.dealforest.net/2011/06/websocket_client_objc/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 13:14:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[objective-c]]></category>
		<category><![CDATA[websocket]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=626</guid>
		<description>ktat さんの記事を見て iPhone から試してみた zimt ってライブラリを見つけたので、それを使用。 esad さんの master だと WebSocket の draft75 の対応までしかないけど fork してるのだと draft76 にも対応してることがわかったので、そっちから clone してくる。 何個か fork してるのがあったけど mikebevz さんのが一番よさげだったのでそれを使用。 また簡単なチャットサーバーのサンプルも入ってる。 $git clone git://github.com/mikebevz/zimt.git とりあえず同梱されている ruby で書かれたサーバーで試すことに。 $cd samples/Chat $gem install em-websocket $ruby server.rb 次にChatViewController.m の ws://〜 を ws://localhost:10000 に変更します 今のままだとnilにアクセスして強制終了してしまうのでコードを少し修正 --- a/samples/Chat/Classes/ChatViewController.m +++ b/samples/Chat/Classes/ChatViewController.m @@ -11,6 +11,7 @@ @implementation [...]</description>
			<content:encoded><![CDATA[<p><a href="http://d.hatena.ne.jp/ktat/20110602/1306950627">ktat さんの記事</a>を見て iPhone から試してみた<br />
<a href="https://github.com/esad/zimt">zimt</a> ってライブラリを見つけたので、それを使用。</p>
<p>esad さんの master だと WebSocket の draft75 の対応までしかないけど fork してるのだと<br />
draft76 にも対応してることがわかったので、そっちから clone してくる。<br />
何個か fork してるのがあったけど <a href="https://github.com/mikebevz/zimt">mikebevz さん</a>のが一番よさげだったのでそれを使用。<br />
また簡単なチャットサーバーのサンプルも入ってる。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$git clone git://github.com/mikebevz/zimt.git</pre></div></div>

<p>とりあえず同梱されている ruby で書かれたサーバーで試すことに。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$cd samples/Chat
$gem install em-websocket
$ruby server.rb</pre></div></div>

<p>次にChatViewController.m の ws://〜 を ws://localhost:10000 に変更します</p>
<p>今のままだとnilにアクセスして強制終了してしまうのでコードを少し修正</p>

<div class="wp_syntax"><div class="code"><pre class="objective-c" style="font-family:monospace;">--- a/samples/Chat/Classes/ChatViewController.m
+++ b/samples/Chat/Classes/ChatViewController.m
@@ -11,6 +11,7 @@
 @implementation ChatViewController
&nbsp;
 -(void)write:(NSString*)text {
+    if (!text) { text = @&quot;&quot;; }</pre></div></div>

<p>あとは Simulator を起動してアクセスすれば OK.</p>
<p>サーバーを ktat さんが作った物に変更するだけと思いきや<br />
変更するとつながらない。。。。<br />
まさかと思い <a href="https://gist.github.com/1004361">node.js でサーバー</a>を作ってもハンドシェイクで失敗してしまう自体に。</p>
<p>結論から言うと zimt がレスポンスヘッダーに対して<br />
正規表現をおこなってハンドシェイクの正否を判断していたからでした。<br />
これって必要なの？？とおもいつつ<br />
とりあえず Protocol::WebSocket::Handshake::Server でもつながるように修正。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">diff --git a/ZTWebSocket.m b/ZTWebSocket.m
index 7d2b5f0..53aed04 100644
--- a/ZTWebSocket.m
+++ b/ZTWebSocket.m
@@ -305,8 +305,10 @@ enum {
     if (tag == ZTWebSocketTagHandshake) {
         NSString* response = [[[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding] autorelease];
&nbsp;
         //TODO - Compare handshakeMd5 to value received with handshake
-        if ([response hasPrefix:@&quot;HTTP/1.1 101 WebSocket Protocol Handshake\r\nUpgrade: WebSocket\r\nConnection: Upgrade\r\nSec-WebSocket-Location:&quot;]) {
+        if ([response hasPrefix:@&quot;HTTP/1.1 101 WebSocket Protocol Handshake\r\nUpgrade: WebSocket\r\nConnection: Upgrade&quot;]) {
             connected = YES;
             [self _dispatchOpened];</pre></div></div>

<p>以下、各ライブラリでのハンドシェイク時のレスポンス</p>
<p><b>ruby: em-websocket</b></p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Location: ws://localhost:10000/
Sec-WebSocket-Origin: http://localhost
&nbsp;
(16バイトのresponse文字列)</pre></div></div>

<p><b>perl: Protocol::WebSocket::Handshake::Server</b></p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://localhost
Sec-WebSocket-Location: ws://localhost:10000/
&nbsp;
(16バイトのresponse文字列)</pre></div></div>

<p><b>node.js: websocket-server</b></p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://localhost
Sec-WebSocket-Location: ws://localhost:10000/
Sec-WebSocket-Protocol: *
&nbsp;
(16バイトのresponse文字列)</pre></div></div>

<p>こんな感じでヘッダーの順番が違う。<br />
順番固定ってドラフトにも書かれてなさげだし<br />
それを正規表現でやるのはいかがなものかと。</p>
<p>というわけで順番固定の正規表現が微妙と思いつつも<br />
とりあえず原因が分かったので後日ちゃんとしたパッチでも書く予定</p>

<p><a href="http://feedads.g.doubleclick.net/~a/tkDpwds-nlrlkIzT-hj4xbVPRCc/0/da"><img src="http://feedads.g.doubleclick.net/~a/tkDpwds-nlrlkIzT-hj4xbVPRCc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tkDpwds-nlrlkIzT-hj4xbVPRCc/1/da"><img src="http://feedads.g.doubleclick.net/~a/tkDpwds-nlrlkIzT-hj4xbVPRCc/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2011/06/websocket_client_objc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone Simulator にアドレス帳のインポートした時のメモ</title>
		<link>http://blog.dealforest.net/2011/05/import_from_addressbook_to_iphonesimulator/</link>
		<comments>http://blog.dealforest.net/2011/05/import_from_addressbook_to_iphonesimulator/#comments</comments>
		<pubDate>Mon, 16 May 2011 17:54:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphonesimulator]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=618</guid>
		<description>Importing AddressBook data into the iPhone Simulator を参考にして作業したら簡単にできた。 iPhone のバックアップからアドレス帳を抽出してsqlitedbをいれかえる感じ。 バックアップデータがあることを前提として話しをすすめます。 何かあったときのためにaddressbookのバックアップをとっておきます。 cp -r ~/Library/Application Support/iPhone Simulator/{SDK}/Library/AddressBook/* /tmp/backup/ インポート作業 1.&amp;#60;a href=&amp;#34;http://supercrazyawesome.com/&amp;#34;&amp;#62; iPhone/iPod Touch Backup Extractor&amp;#60;/a&amp;#62;を取得 2.起動してバックアップを選択して &amp;#34;iOS Files&amp;#34; の項目を選び &amp;#34;extract&amp;#34; 3. cp -r {保存先}/iOS\ Files/Library/AddressBook/* ~/Library/Application Support/iPhone Simulator/{SDK}/Library/AddressBook/ 4.iPhone Simulator 起動</description>
			<content:encoded><![CDATA[<p><a href="http://stackoverflow.com/questions/901132/importing-addressbook-data-into-the-iphone-simulator">Importing AddressBook data into the iPhone Simulator</a><br />
を参考にして作業したら簡単にできた。</p>
<p> iPhone のバックアップからアドレス帳を抽出してsqlitedbをいれかえる感じ。</p>
<p>バックアップデータがあることを前提として話しをすすめます。<br />
何かあったときのためにaddressbookのバックアップをとっておきます。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">cp -r ~/Library/Application Support/iPhone Simulator/{SDK}/Library/AddressBook/* /tmp/backup/</pre></div></div>

<p>インポート作業</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">1.&lt;a href=&quot;http://supercrazyawesome.com/&quot;&gt; iPhone/iPod Touch Backup Extractor&lt;/a&gt;を取得
2.起動してバックアップを選択して &quot;iOS Files&quot; の項目を選び &quot;extract&quot;
3. cp -r {保存先}/iOS\ Files/Library/AddressBook/* ~/Library/Application Support/iPhone Simulator/{SDK}/Library/AddressBook/
4.iPhone Simulator 起動</pre></div></div>


<p><a href="http://feedads.g.doubleclick.net/~a/XZrpPLyAVyP9eM4h8EpypELX9dw/0/da"><img src="http://feedads.g.doubleclick.net/~a/XZrpPLyAVyP9eM4h8EpypELX9dw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/XZrpPLyAVyP9eM4h8EpypELX9dw/1/da"><img src="http://feedads.g.doubleclick.net/~a/XZrpPLyAVyP9eM4h8EpypELX9dw/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2011/05/import_from_addressbook_to_iphonesimulator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>homebrewでインストールしたMySQLにQ4Mをインストールしたメモ</title>
		<link>http://blog.dealforest.net/2011/02/q4m-installed-to-mysql-of-homebrew/</link>
		<comments>http://blog.dealforest.net/2011/02/q4m-installed-to-mysql-of-homebrew/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 08:54:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mac]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[q4m]]></category>

		<guid isPermaLink="false">http://blog.dealforest.net/?p=609</guid>
		<description>homebrew で MySQL をインストール formula を更新してからインストール。(リンク切れの可能性があるため) 2011-02-14 時点では 5.1.54 がインストールされる。 $brew update $brew install Q4Mのインストールにソースが必要となるのでCleanupしないこと。 ~/Library/Caches/Homebrew/mysql-5.1.54.tar.gzがあるの解凍しておく。 $cd ~/Library/Caches/Homebrew $tar xzvf mysql-5.1.54.tar.gz Q4M をインストール まずここから最新版をダウンロード。 今回は 0.9.4 をインストール。 MacPortsのMySQLにQ4Mをインストールする方法を参考にして configure option をつくりました。 $curl -O http://q4m.kazuhooku.com/dist/q4m-0.9.4.tar.gz $tar xzvf q4m-0.9.4.tar.gz $cd q4m-0.9.4 $./configure --prefix=/usr/local LDFLAGS=-L/usr/local/lib CPPFLAGS=-I/usr/local/include --with-mysql=~/Library/Caches/Homebrew/mysql-5.1.54 CFLAGS=&amp;#34;-I/usr/local/include/mysql -I/usr/local/include&amp;#34; CPPFLAGS=&amp;#34;-I/usr/local/include/mysql -I/usr/local/include&amp;#34; $make $make install $mysql -u root &amp;#60; [...]</description>
			<content:encoded><![CDATA[<h3>homebrew で MySQL をインストール</h3>
<p>formula を更新してからインストール。(リンク切れの可能性があるため)<br />
2011-02-14 時点では 5.1.54 がインストールされる。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$brew update
$brew install</pre></div></div>

<p>Q4Mのインストールにソースが必要となるのでCleanupしないこと。<br />
<b>~/Library/Caches/Homebrew/mysql-5.1.54.tar.gz</b>があるの解凍しておく。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$cd ~/Library/Caches/Homebrew
$tar xzvf mysql-5.1.54.tar.gz</pre></div></div>

<h3>Q4M をインストール</h3>
<p>まず<a href="http://q4m.kazuhooku.com/dist/">ここ</a>から最新版をダウンロード。<br />
今回は 0.9.4 をインストール。<br />
<a href="http://blog.asial.co.jp/616">MacPortsのMySQLにQ4Mをインストールする方法</a>を参考にして<br />
configure option をつくりました。</p>

<div class="wp_syntax"><div class="code"><pre class="shell" style="font-family:monospace;">$curl -O http://q4m.kazuhooku.com/dist/q4m-0.9.4.tar.gz
$tar xzvf q4m-0.9.4.tar.gz
$cd q4m-0.9.4
$./configure --prefix=/usr/local LDFLAGS=-L/usr/local/lib CPPFLAGS=-I/usr/local/include --with-mysql=~/Library/Caches/Homebrew/mysql-5.1.54 CFLAGS=&quot;-I/usr/local/include/mysql -I/usr/local/include&quot; CPPFLAGS=&quot;-I/usr/local/include/mysql -I/usr/local/include&quot;
$make
$make install
$mysql -u root &lt; support-files/install.sql
$perl run_tests.pl
$mysql -u root -e 'show plugins'
+------------+--------+----------------+--------------------+---------+
| Name       | Status | Type           | Library            | License |
+------------+--------+----------------+--------------------+---------+
| binlog     | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| CSV        | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| MEMORY     | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| InnoDB     | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| MyISAM     | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL               | GPL     |
| QUEUE      | ACTIVE | STORAGE ENGINE | libqueue_engine.so | GPL     |
+------------+--------+----------------+--------------------+---------+</pre></div></div>

<p>めでたくインストール終了。<br />
動作確認ですが<a href="http://labs.unoh.net/2009/12/q4m.html">ウノウさん</a>の方でいい感じにまとめられてるのでそちらでどうぞ。</p>

<p><a href="http://feedads.g.doubleclick.net/~a/t9DYaYT1_szdVS9oEkSfN68hfpw/0/da"><img src="http://feedads.g.doubleclick.net/~a/t9DYaYT1_szdVS9oEkSfN68hfpw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/t9DYaYT1_szdVS9oEkSfN68hfpw/1/da"><img src="http://feedads.g.doubleclick.net/~a/t9DYaYT1_szdVS9oEkSfN68hfpw/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.dealforest.net/2011/02/q4m-installed-to-mysql-of-homebrew/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.484 seconds --><!-- Cached page served by WP-Cache -->

