<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <link href="http://thug4dev.com/index.php?/feeds/atom10.xml" rel="self" title="ヱビスブログ" type="application/atom+xml" />
    <link href="http://thug4dev.com/"                        rel="alternate"    title="ヱビスブログ" type="text/html" />
    <link href="http://thug4dev.com/rss.php?version=2.0"     rel="alternate"    title="ヱビスブログ" type="application/rss+xml" />
    <title type="html">ヱビスブログ</title>
    <subtitle type="html">ThugDevLife</subtitle>
    <icon>http://thug4dev.com/templates/default/img/s9y_banner_small.png</icon>
    <id>http://thug4dev.com/</id>
    <updated>2010-06-22T19:03:13Z</updated>
    <generator uri="http://www.s9y.org/" version="1.5.3">Serendipity 1.5.3 - http://www.s9y.org/</generator>
    <dc:language>ja</dc:language>

    <entry>
        <link href="http://thug4dev.com/index.php?/archives/223-iOS-4-Wi-Fi-Sync.html" rel="alternate" title="iOS 4 と復元が終わらない祭り、そして Wi-Fi Sync" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2010-06-22T19:03:13Z</published>
        <updated>2010-06-22T19:03:13Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=223</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=223</wfw:commentRss>
    
            <category scheme="http://thug4dev.com/index.php?/categories/15-iPhone" label="iPhone" term="iPhone" />
    
        <id>http://thug4dev.com/index.php?/archives/223-guid.html</id>
        <title type="html">iOS 4 と復元が終わらない祭り、そして Wi-Fi Sync</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                早速 iOS 4 にしてみましたよ。<br />
<br />
ところで以下は妄想だとか白昼夢的内容になります。<br />
<br />
ソッコーでアップデートを仕掛けたんですが、「iPhoneソフトウェアを復元中」のプロセスが終わらず次のフェーズに進まない。それこそ10分以上待ってみたんだが何の進展もない。<br />
<br />
しょうがないのでケーブルをブッコ抜き、iPhone を再起動。iTunes も強制終了してリトライしたものの変わらず止まる。Mac 自体を再起動してみたり、Last.fm クライアントをサクってみたりとゴチャゴチャやってみるもののカイゼンせず。大体このへんで4時半くらい。<br />
<br />
で、ふとメニューバーを見ると Wi-Fi Sync クライアントのアイコンが。アンインストーラーをダウンロードして、Wi-Fi Sync 方面をキチッとサクってから Mac 再起動でリトライ。今度は止まらずスルスル進む！<br />
<br />
ってな調子でようやっとインストールに成功。<br />
まあ Wi-Fi Sync クライアントが本当に原因だったのかどうかわからんですが。<br />
<br />
就寝5時半。<br />
<br />
そういうシーケンスを幻視したという話ですよ。 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/222-mediatemple-DDoS.html" rel="alternate" title="mediatemple の DDoS 問題解消" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2010-06-08T21:45:30Z</published>
        <updated>2010-06-08T21:45:30Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=222</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=222</wfw:commentRss>
    
    
        <id>http://thug4dev.com/index.php?/archives/222-guid.html</id>
        <title type="html">mediatemple の DDoS 問題解消</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                このブログをホストしてるサービスが DDoS を喰らって DNS の IP アドレスを変更したり、それによって MySQL の方に影響が出てみたりでちょっと厄介だった。とりあえずテスト投稿みたいな感じで。<br />
<br />
iPad はソフトウェアキーボードが Dvorak 配列をサポートしたら買う！<br />
iPhone 4 は多分買わない！ 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/221-Wi-Fi.html" rel="alternate" title="[俺メモ]台北市内の Wi-Fi 事情" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2010-01-13T01:45:33Z</published>
        <updated>2010-01-13T01:45:33Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=221</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=221</wfw:commentRss>
    
    
        <id>http://thug4dev.com/index.php?/archives/221-guid.html</id>
        <title type="html">[俺メモ]台北市内の Wi-Fi 事情</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                成人の日を組み込んで2泊3日ほど台北に遊びに行ってきた。<br />
iPhone を持っていたんだけどもなかなか野良 Wi-Fi が掴めず、ホテルのロビーだとかバーが用意してるモノを使っていた。<br />
<br />
台北市内の至る所で WIFLY と hinet という有料の無線 LAN の電波を拾えるんだけども、どうやってアカウントを作るのか良く判らずに歯がゆい思いをしたのだった。<br />
<br />
この WIFLY はプリペイド式で、カードはスタバ等で買えるようだ。<br />
スタバはちょいちょいあった気がする。101に遊びに行った流れでスタバに寄れば良い。<br />
<a onclick="_gaq.push(['_trackPageview', '/extlink/blog.umashi-umamo.com/?eid=824250']);"  onclick="_gaq.push(['_trackPageview', '/extlink/blog.umashi-umamo.com/?eid=824250']);"  href="http://blog.umashi-umamo.com/?eid=824250">:: うましうまもブログ！ | 台北市内でiPhoneを使う【WIFLY編】 :::</a><br />
<br />
ちなみにスタバは日本のよりもちょいと味が薄かった。<br />
<br />
24時間100NT$で、31日利用の場合は500NT$ってのはかなり良心的に思える。<br />
とにかく台北市内においては全域って言っちゃっても良いんじゃないかって程に引っかかる。<br />
<br />
次回は間違いない。 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/220-php-injection-exploit.html" rel="alternate" title="php injection exploit によって悪意のあるサイトにリダイレクトされていた話" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2009-11-17T17:28:39Z</published>
        <updated>2009-11-17T17:28:39Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=220</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=220</wfw:commentRss>
    
    
        <id>http://thug4dev.com/index.php?/archives/220-guid.html</id>
        <title type="html">php injection exploit によって悪意のあるサイトにリダイレクトされていた話</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                twitter にて報告もらいました。<br />
<br />
<blockquote>As of Nov 6, 2009, we have noticed many customers reporting a new php injection exploit. <br />
<a onclick="_gaq.push(['_trackPageview', '/extlink/kb.mediatemple.net/questions/1715/Working+with+a+php+injected+website']);"  onclick="_gaq.push(['_trackPageview', '/extlink/kb.mediatemple.net/questions/1715/Working+with+a+php+injected+website']);"  href="http://kb.mediatemple.net/questions/1715/Working+with+a+php+injected+website">http://kb.mediatemple.net/questions/1715/Working+with+a+php+injected+website</a></blockquote><br />
<br />
現在は修正済みで正常にアクセス可能です。<br />
ご迷惑お掛けしました。 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/219-unknown.html" rel="alternate" title="ちょいとテスト" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2009-11-17T17:16:21Z</published>
        <updated>2009-11-17T17:16:21Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=219</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=219</wfw:commentRss>
    
    
        <id>http://thug4dev.com/index.php?/archives/219-guid.html</id>
        <title type="html">ちょいとテスト</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                テストテストテスト<br />
Modern Warfare2 実績 1000 になりました。<br />
もう Spec Ops やりたくない！！！ 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/218-2009-The-Riot-10.html" rel="alternate" title="高円寺フェス2009に真っ昼間から出演する The Riot 怒りの10代" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2009-11-05T02:08:11Z</published>
        <updated>2009-11-05T02:31:23Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=218</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=218</wfw:commentRss>
    
            <category scheme="http://thug4dev.com/index.php?/categories/7-Games" label="Games" term="Games" />
    
        <id>http://thug4dev.com/index.php?/archives/218-guid.html</id>
        <title type="html">高円寺フェス2009に真っ昼間から出演する The Riot 怒りの10代</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                タイトルままですが。<br />
<br />
<a onclick="_gaq.push(['_trackPageview', '/extlink/www.mmv.co.jp/special/game/wiiware/discipline/']);"  onclick="_gaq.push(['_trackPageview', '/extlink/www.mmv.co.jp/special/game/wiiware/discipline/']);"  href="http://www.mmv.co.jp/special/game/wiiware/discipline/">『ディシプリン＊帝国の誕生』</a>方面で慌ただしい、<a onclick="_gaq.push(['_trackPageview', '/extlink/getnews.jp/archives/25423']);"  onclick="_gaq.push(['_trackPageview', '/extlink/getnews.jp/archives/25423']);"  href="http://getnews.jp/archives/25423">どうかしている天才ゲームクリエーター</a>であるところの<a onclick="_gaq.push(['_trackPageview', '/extlink/twitter.com/iidakazutoshi']);"  onclick="_gaq.push(['_trackPageview', '/extlink/twitter.com/iidakazutoshi']);"  href="http://twitter.com/iidakazutoshi">飯田和敏</a>がヴォーカルを務める我々 The Riot 怒りの10代がライブをやりますよ、今年も。<br />
<blockquote><br />
先日、母に電話したら猛烈にお怒りのご様子だったので、思わず切ってしまった。怒りの10代のマインドは不滅です。というわけでライブの告知！今週の日曜、高円寺（あとは誰かヨロシク）。<br />
<a onclick="_gaq.push(['_trackPageview', '/extlink/twitter.com/iidakazutoshi/status/5409865609']);"  onclick="_gaq.push(['_trackPageview', '/extlink/twitter.com/iidakazutoshi/status/5409865609']);"  href="http://twitter.com/iidakazutoshi/status/5409865609">http://twitter.com/iidakazutoshi/status/5409865609</a><br />
</blockquote><br />
今回は<a onclick="_gaq.push(['_trackPageview', '/extlink/koenjifes.jp/live.html#01']);"  onclick="_gaq.push(['_trackPageview', '/extlink/koenjifes.jp/live.html#01']);"  href="http://koenjifes.jp/live.html#01">高円寺フェス2009フリーホイーリン</a>という高円寺中のライブハウスにてドリンク代のみでライブが観れるっちゅーとんでもない企画に参加しちゃうわけです。<br />
<br />
11月8日の日曜日。時間は12:30から。昼間の。すごい。<br />
ハコは <a onclick="_gaq.push(['_trackPageview', '/extlink/koenjifes.jp/shops/shop120.html']);"  onclick="_gaq.push(['_trackPageview', '/extlink/koenjifes.jp/shops/shop120.html']);"  href="http://koenjifes.jp/shops/shop120.html">Club Mission's</a> という大変キレイな所で御座います。<br />
<br />
演奏時間は15分。短い？そうか？<br />
<br />
15分激高し続ける事はそんなに簡単じゃないと思うんです。<br />
でも飯田さんを始め、我々は伊達に怒りの10代なんて名前を付けてませんよ。憤死スレスレの15分をお届けするのです。<br />
<br />
ref - <a onclick="_gaq.push(['_trackPageview', '/extlink/koenjifes.jp/index.php']);"  onclick="_gaq.push(['_trackPageview', '/extlink/koenjifes.jp/index.php']);"  href="http://koenjifes.jp/index.php">高円寺フェス2009</a> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/217-MacPorts-Screen-4.0.3_3.html" rel="alternate" title="MacPorts の Screen 4.0.3_3 がおかしいのでなんとかする" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2009-03-06T00:32:05Z</published>
        <updated>2009-03-06T00:40:46Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=217</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=217</wfw:commentRss>
    
            <category scheme="http://thug4dev.com/index.php?/categories/9-Mac" label="Mac" term="Mac" />
    
        <id>http://thug4dev.com/index.php?/archives/217-guid.html</id>
        <title type="html">MacPorts の Screen 4.0.3_3 がおかしいのでなんとかする</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                deflogin が unknown command だ、みたいな事を言われるようになってしまった。あと mate コマンドで TextMate が起動出来ない。<br />
<br />
これは困るので 4.0.3_1 に戻したい。<br />
screen はアンインストールした状態で始めます。<br />
<br />
<strong>1. trac で確認する</strong><br />
MacPorts Trac<br />
<a onclick="_gaq.push(['_trackPageview', '/extlink/trac.macports.org/browser/trunk/dports']);"  onclick="_gaq.push(['_trackPageview', '/extlink/trac.macports.org/browser/trunk/dports']);"  href="http://trac.macports.org/browser/trunk/dports">http://trac.macports.org/browser/trunk/dports</a><br />
<br />
今回の件はチケットがあった。<br />
<a onclick="_gaq.push(['_trackPageview', '/extlink/trac.macports.org/ticket/18235']);"  onclick="_gaq.push(['_trackPageview', '/extlink/trac.macports.org/ticket/18235']);"  href="http://trac.macports.org/ticket/18235">http://trac.macports.org/ticket/18235</a><br />
<br />
4.0.3_1 のリビジョンを確認する。これだ。<br />
<a onclick="_gaq.push(['_trackPageview', '/extlink/trac.macports.org/browser/trunk/dports/sysutils/screen/Portfile?rev=45522']);"  onclick="_gaq.push(['_trackPageview', '/extlink/trac.macports.org/browser/trunk/dports/sysutils/screen/Portfile?rev=45522']);"  href="http://trac.macports.org/browser/trunk/dports/sysutils/screen/Portfile?rev=45522">http://trac.macports.org/browser/trunk/dports/sysutils/screen/Portfile?rev=45522</a><br />
<br />
<strong>2. svn co する</strong><br />
適当な所でもいいし、自分の local portfile 置き場あるならそこに。俺は $HOME/dports というディレクトリを作ってるのでそこへチェックアウト。<br />
<pre>
% cd ~/dports
% svn co –r 45522 http://svn.macports.org/repository/macports/trunk/dports/sysutils/screen \
sysutils/screen/</pre><br />
<strong>3. sudo port install する</strong><br />
Portfile のあるディレクトリで port install すると宜しくやってくれるようだ。<br />
<pre>
% cd ./sysutils/screen
% sudo port install</pre><br />
<strong>4. 確認する</strong><br />
<pre>
% port installed | grep screen
  screen @4.0.3_1 (active)</pre><br />
いいんじゃないでしょうか。<br />
<br />
local portfile の手法でチェックアウト後に portindex したんだけれども、どうもリビジョンまでは見てもらえないっぽい？ sudo port install screen @4.0.3_1 にしても 4.0.3_3 が入ってしまった。<br />
<br />
screen に限らず MacPorts で older revision のアイテムが欲しい時はこのやり方でいけそう。<br />
<br />
ref<br />
<a onclick="_gaq.push(['_trackPageview', '/extlink/trac.macports.org/wiki/howto/InstallingOlderPort']);"  onclick="_gaq.push(['_trackPageview', '/extlink/trac.macports.org/wiki/howto/InstallingOlderPort']);"  href="https://trac.macports.org/wiki/howto/InstallingOlderPort">https://trac.macports.org/wiki/howto/InstallingOlderPort</a><br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/216-mashable.html" rel="alternate" title="mashable のエントリをはてブするとモバイル扱いされる件" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2008-10-03T22:49:06Z</published>
        <updated>2008-10-03T23:27:19Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=216</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=216</wfw:commentRss>
    
    
        <id>http://thug4dev.com/index.php?/archives/216-guid.html</id>
        <title type="html">mashable のエントリをはてブするとモバイル扱いされる件</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                表題の通り。<br />
<br />
<blockquote>高橋(13:38)<br />
Mashableのページがはてブできないのはなぜ？<br />
なぜかモバイル用ページになっちゃう...<br />
ライブドアクリップではそういうことないかね？<br />
<br />
Kiyoshi Yoshida(13:39)<br />
おお<br />
ホントだ<br />
<br />
高橋(13:40)<br />
だしょ<br />
<br />
Kiyoshi Yoshida(13:40)<br />
はてなが送ってるUAがおかしいみたいな事かなー<br />
<br />
高橋(13:40)<br />
なんかそんな感じだよね<br />
ページ取得いってモバイルて言われて帰ってきてるよね</blockquote><br />
<br />
はてブするとはてな側からエントリ情報、本文（の一部）、スクリーンショットを取る為のスクリプトがいらっしゃる。<br />
<br />
各々の UA は<br />
<ul><li>Hatena Bookmark/0.1</li><li>Hatena2::RemoteDocument/0.02</li><li>HatenaScreenshot/1.0 (checker)</li></ul><br />
こんなんかな。<br />
スクリーンショットは今回の件とは関係薄そうなので上2件をテスト。<br />
<br />
まず Hatena Bookmark/0.1 をためす。<br />
<blockquote>irb(main):002:0&gt; Net::HTTP.start(&#x27;mashable.com&#x27;){|h| h.get(&#x27;/&#x27;, &quot;User-Agent&quot; =&gt; &quot;Hatena Bookmark/0.1&quot;)}<br />
=&gt; #&lt;Net::HTTPOK 200 OK readbody=true&gt;</blockquote><br />
次に Hatena2::RemoteDocument/0.02 で。<br />
<blockquote>irb(main):003:0&gt; Net::HTTP.start(&#x27;mashable.com&#x27;){|h| h.get(&#x27;/&#x27;, &quot;User-Agent&quot; =&gt; &quot;Hatena2::RemoteDocument/0.02&quot;)}<br />
=&gt; #&lt;Net::HTTPFound 302 Found readbody=true&gt;</blockquote><br />
302 が返って来た！どうもこっちが怪しい。<br />
<br />
「Remo」は通し。<br />
<blockquote>irb(main):005:0&gt; Net::HTTP.start(&#x27;mashable.com&#x27;){|h| h.get(&#x27;/&#x27;, &quot;User-Agent&quot; =&gt; &quot;Hatena2::Remo&quot;)}<br />
=&gt; #&lt;Net::HTTPOK 200 OK readbody=true&gt;</blockquote><br />
「Remot」は通らず。<br />
<blockquote><br />
irb(main):006:0&gt; Net::HTTP.start(&#x27;mashable.com&#x27;){|h| h.get(&#x27;/&#x27;, &quot;User-Agent&quot; =&gt; &quot;Hatena2::Remot&quot;)}<br />
=&gt; #&lt;Net::HTTPFound 302 Found readbody=true&gt;<br />
</blockquote><br />
どうやら「mot」が通らない。<br />
<blockquote><br />
irb(main):010:0&gt; Net::HTTP.start(&#x27;mashable.com&#x27;){|h| h.get(&#x27;/&#x27;, &quot;User-Agent&quot; =&gt; &quot;mot&quot;)}<br />
=&gt; #&lt;Net::HTTPFound 302 Found readbody=true&gt;<br />
</blockquote><br />
ユーザーエージェントが「mot」と言えば、それはモトローラ系端末。MOT-V980 とか。<br />
<br />
mashable の UA に「mot」が入ってたらモバイル扱いするザックリ具合が主な原因。<br />
「『mot』で判定するケースがあるから『remote』とか使うな」ってのは自分でクローラ書く時の参考になった。<br />
<br />
ちなみに delicious には問題無くブックマーク出来ました。 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/215-HOPPERS.html" rel="alternate" title="今年もHOPPER'Sに出演しますよ" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2008-09-03T03:57:02Z</published>
        <updated>2008-09-03T03:57:02Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=215</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=215</wfw:commentRss>
    
            <category scheme="http://thug4dev.com/index.php?/categories/7-Games" label="Games" term="Games" />
    
        <id>http://thug4dev.com/index.php?/archives/215-guid.html</id>
        <title type="html">今年もHOPPER'Sに出演しますよ</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                グラスホッパーマニュファクチュア設立10周年記念イベント。<br />
今年は 2 Days で3イベントという無茶苦茶なスケジュール。<br />
<br />
2日目であるところの HOPPER'S Vol.3 に去年に引き続き「THE RIOT-怒りの十代-」のギターとして出演します。<br />
<br />
<blockquote><br />
HOPPER'S VOL.3 -A BATTLE OF THE BANDS-<br />
<br />
熱狂のロックフェス第３弾！ GhM10周年の祝砲を撃ち鳴らせ！<br />
<br />
2008年9月20日（土）　六本木SUPER DELUXE<br />
OPEN 18:00　START 18:30　CLOSE 22:00<br />
入場予約価格：3,000円（税込/ドリンク別）　<br />
<br />
年齢制限：18歳未満の方は保護者の同伴が必要です。<br />
年齢確認のため身分証明証をご持参ください。<br />
<br />
出演バンド：GhMサウンドチーム／Spelunker／ニュートリノ／THE RIOT-怒りの十代-<br />
※須田剛一の出演はありません<br />
<br />
<a onclick="_gaq.push(['_trackPageview', '/extlink/www.grasshopper.co.jp/GhM10th2DAYZ/ghm2days.html']);"  onclick="_gaq.push(['_trackPageview', '/extlink/www.grasshopper.co.jp/GhM10th2DAYZ/ghm2days.html']);"  href="http://www.grasshopper.co.jp/GhM10th2DAYZ/ghm2days.html">http://www.grasshopper.co.jp/GhM10th2DAYZ/ghm2days.html</a><br />
</blockquote><br />
<br />
チケットはすでに発売中。<br />
<br />
RIOT を結成して1年半くらいですが、結構な数のライブもこなしてますし、CDも出しましたし。<br />
イベントドリブンなバンドの割に相当充実。 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/214-The-door-wont-open.html" rel="alternate" title="The door won't open" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2008-07-24T09:04:00Z</published>
        <updated>2008-07-24T09:12:35Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=214</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=214</wfw:commentRss>
    
            <category scheme="http://thug4dev.com/index.php?/categories/4-Blog" label="Blog" term="Blog" />
    
        <id>http://thug4dev.com/index.php?/archives/214-guid.html</id>
        <title type="html">The door won't open</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                「意思の will」にはなかなか気付けないので修業が足りない。<br />
<br />
<blockquote>"will"で未来を念じているのは、人です。だから"will"は未来形であると同時に、「意志」という意味があります。<br />
<a onclick="_gaq.push(['_trackPageview', '/extlink/blog.livedoor.jp/dankogai/archives/51085107.html']);"  onclick="_gaq.push(['_trackPageview', '/extlink/blog.livedoor.jp/dankogai/archives/51085107.html']);"  href="http://blog.livedoor.jp/dankogai/archives/51085107.html">404 Blog Not Found:English - can の未来形</a><br />
</blockquote><br />
<br />
タイトルくらいわかりやすいと良いんですが、流れの中でポッと出てくると戸惑ってしまう。<br />
極々個人的な経験で言うと、「意思の will」特に「頑なに〜しようとしない」の「won't」は個人よりも物体であるとかちょっとした集団のポリシーに使われてるケースに出会う。"PS3 won't work!"とか"We won't do that ~"とか。<br />
<br />
いわゆる未来の will も中学くらいでは「be going to と同じだよ」という教わり方をした（よね？）わけですけど、実は細かい違いがある。という事は予備校で知った。<br />
<br />
で、ここでアサマシです。<br />
大学受験で散々ブッコんだ英語知識も大学生になってからと言うもの、ボロボロと抜け落ちてしまった。それをある程度戻すのに役立ったのがこの本。「if の省略形仮定法」とか久々に思い出せた。<br />
<br />
<div class="amazlet-box" style="margin-bottom:0px;"><div class="amazlet-image" style="float:left;"><a onclick="_gaq.push(['_trackPageview', '/extlink/www.amazon.co.jp/exec/obidos/ASIN/4342010208/yebisublog-22/ref=nosim/']);"  onclick="_gaq.push(['_trackPageview', '/extlink/www.amazon.co.jp/exec/obidos/ASIN/4342010208/yebisublog-22/ref=nosim/']);"  href="http://www.amazon.co.jp/exec/obidos/ASIN/4342010208/yebisublog-22/ref=nosim/" name="amazletlink" target="<u>blank"><img src="http://ecx.images-amazon.com/images/I/51AEB09SVBL._SL160</u>.jpg" alt="総合英語Forest" 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 onclick="_gaq.push(['_trackPageview', '/extlink/www.amazon.co.jp/exec/obidos/ASIN/4342010208/yebisublog-22/ref=nosim/']);"  onclick="_gaq.push(['_trackPageview', '/extlink/www.amazon.co.jp/exec/obidos/ASIN/4342010208/yebisublog-22/ref=nosim/']);"  href="http://www.amazon.co.jp/exec/obidos/ASIN/4342010208/yebisublog-22/ref=nosim/" name="amazletlink" target="_blank">総合英語Forest</a><div class="amazlet-powered-date" style="font-size:7pt;margin-top:5px;font-family:verdana;line-height:120%">posted with <a onclick="_gaq.push(['_trackPageview', '/extlink/www.amazlet.com/browse/ASIN/4342010208/yebisublog-22/ref=nosim/']);"  onclick="_gaq.push(['_trackPageview', '/extlink/www.amazlet.com/browse/ASIN/4342010208/yebisublog-22/ref=nosim/']);"  href="http://www.amazlet.com/browse/ASIN/4342010208/yebisublog-22/ref=nosim/" title="総合英語Forest" target="_blank">amazlet</a> at 08.07.24</div></div><div class="amazlet-detail">墺 タカユキ 石黒 昭博 <br />桐原書店 <br />売り上げランキング: 220<br /></div><div class="amazlet-link" style="margin-top: 5px"><a onclick="_gaq.push(['_trackPageview', '/extlink/www.amazon.co.jp/exec/obidos/ASIN/4342010208/yebisublog-22/ref=nosim/']);"  onclick="_gaq.push(['_trackPageview', '/extlink/www.amazon.co.jp/exec/obidos/ASIN/4342010208/yebisublog-22/ref=nosim/']);"  href="http://www.amazon.co.jp/exec/obidos/ASIN/4342010208/yebisublog-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jp で詳細を見る</a></div></div><div class="amazlet-footer" style="clear: left"></div></div><br />
<br />
中学レベルから高校レベルまでの文法をザラっとすくっている内容。4色刷り。そして安い。各章が文法の形の解説で、基本→理解→応用のパターンがメイン。イラストをちょいちょい使ってるので、それも理解を助けてくれます。<br />
<br />
ただ、しょーもない例文が多い。変にカッチョよくしてるのよか分かり易くて良いのかも知れないけど、ちょっと不満。あと大学に入った直後に出てるのも許せない。これが受験時期にあったら手元の文法リファレンスにしてた。ロイヤル英文法使ってました。懐かしい。<br />
<br />
英文ブログとか読むには文法理解よりも語彙力が重要かなー。全然足りてない。<br />
たまに堅めのコラムスタイルなブログを読む時には文法と英文解釈は必要に思える。<br />
<br />
「英会話は単語だよ、単語！」みたいな事を言う人をみると「こやつめ、ははは」とか思ってたんですが、実際それは間違いなかった。<br />
<br />
日本に来て半年のアメリカ人ゲームプログラマとゴールデン街で飲んだ事があって<br />
<br />
俺「most Japanese が play する game は their friends が play してるヤツなんだよ」<br />
彼「ah...モンハン？」<br />
<br />
全然通じる。 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/213-PHP.html" rel="alternate" title="PHPフツウ" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2008-07-08T08:29:03Z</published>
        <updated>2008-07-08T08:46:18Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=213</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=213</wfw:commentRss>
    
            <category scheme="http://thug4dev.com/index.php?/categories/4-Blog" label="Blog" term="Blog" />
            <category scheme="http://thug4dev.com/index.php?/categories/2-PHP" label="PHP" term="PHP" />
    
        <id>http://thug4dev.com/index.php?/archives/213-guid.html</id>
        <title type="html">PHPフツウ</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <a onclick="_gaq.push(['_trackPageview', '/extlink/diary.eth.jp/?date=20080707#p01']);"  onclick="_gaq.push(['_trackPageview', '/extlink/diary.eth.jp/?date=20080707#p01']);"  href="http://diary.eth.jp/?date=20080707#p01">PHPサイキョウ</a><br />
<br />
「rocks」でやった結果。<br />
<ul><li>Results 1 - 10 of about 6,900 for "PHP rocks"</li></ul><br />
なるほど。<br />
他はどうか。<br />
<ul><li>Results 1 - 10 of about 36,900 for "Ruby rocks"</li>
<li>Results 1 - 10 of about 8,700 for "Python rocks"</li>
<li>Results 1 - 10 of about 1,580 for "Perl rocks"</li></ul><br />
Ruby 圧倒的過ぎるだろ。<br />
<br />
その他。<br />
<ul><li>Results 1 - 10 of about 10,100 for "C++ rocks"</li>
<li>Results 1 - 10 of about 9,540 for "Java rocks"</li>
<li>Results 1 - 10 of about 973 for "C# rocks"</li>
<li>Results 1 - 10 of about 496 for "JavaScript rocks"</li></ul><br />
C++ と Java が大体同じくらいで Python より多い。意外。<br />
<br />
ついでに「rules」でもやってみた。<br />
<ul><li>Results 1 - 10 of about 24,000 for "PHP rules"</li></ul><br />
すげえ！これは期待出来る！<br />
<ul><li>Results 1 - 10 of about 31,700 for "Ruby rules"</li>
<li>Results 1 - 10 of about 9,690 for "Python rules"</li>
<li>Results 1 - 10 of about 5,570 for "Perl rules"</li></ul><br />
Ruby 強すぎ。<br />
<br />
おまけ。<br />
<ul><li>Results 1 - 2 of 2 for "UnrealScript rocks"</li>
<li>Results 1 - 3 of 3 for "UnrealScript sucks"</li></ul> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/212-PHPMock.html" rel="alternate" title="PHPMock を触ってみた" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2008-06-24T03:37:00Z</published>
        <updated>2008-06-24T03:37:00Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=212</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=212</wfw:commentRss>
    
            <category scheme="http://thug4dev.com/index.php?/categories/4-Blog" label="Blog" term="Blog" />
            <category scheme="http://thug4dev.com/index.php?/categories/2-PHP" label="PHP" term="PHP" />
    
        <id>http://thug4dev.com/index.php?/archives/212-guid.html</id>
        <title type="html">PHPMock を触ってみた</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                『次世代 Mock Object フレームワークの雄』として一部から熱く注目されている（と思いたい） <a onclick="_gaq.push(['_trackPageview', '/extlink/code.google.com/p/phpmock/']);"  onclick="_gaq.push(['_trackPageview', '/extlink/code.google.com/p/phpmock/']);"  href="http://code.google.com/p/phpmock/">PHPMock</a> ですが、ちょろっとテストコード読んだくらいで触った事が無かったのでトライ。<br />
<br />
ちなみに PHPMock のテストコードは PHPSpec で書かれている。個人的には残念な書き味というか、読みやすくない。PHPUnit バンザイ。<br />
<br />
ただ PHPUnit の Mock はもうちょっと融通利かせてもらえると有難い。という所で PHPMock はどうか。<br />
<br />
Let’s do this.<br />
<br />
PHPMock にはまともなドキュメントが一切無い。tgz 玉もないので <a onclick="_gaq.push(['_trackPageview', '/extlink/code.google.com/p/phpmock/source/checkout']);"  onclick="_gaq.push(['_trackPageview', '/extlink/code.google.com/p/phpmock/source/checkout']);"  href="http://code.google.com/p/phpmock/source/checkout">Google Code からチェックアウト</a>するしかない。specs ディレクトリにテストコードがあるのでこいつを見れば大体の使い方はわかる。test as document を地で行く感じだ。メソッド名は RSpec の mock/stub に似ているというか似せてある。<br />
<br />
テストコードはこんな感じ。<a onclick="_gaq.push(['_trackPageview', '/download/src/phpmock_demo.zip']);"  onclick="_gaq.push(['_trackPageview', '/download/src/phpmock_demo.zip']);"  href="http://thug4dev.com/src/phpmock_demo.zip">ダウンロードはこちら。</a><br />
<br />
■ test/ProductServiceTest.php<br />
<pre class="textmate-source espresso_libre"><span class="source source_php source_php_s2php5"><span class="source source_php source_php_embedded source_php_embedded_block source_php_embedded_block_html"><span class="punctuation punctuation_section punctuation_section_embedded punctuation_section_embedded_begin punctuation_section_embedded_begin_php">&lt;?php</span>
<span class="support support_function support_function_builtin_functions support_function_builtin_functions_php">define</span>(<span class="constant constant_other constant_other_php">DEMO_ROOT</span>, <span class="support support_function support_function_string support_function_string_php">dirname</span>(<span class="support support_function support_function_string support_function_string_php">dirname</span>(<span class="constant constant_language constant_language_php"><u>_FILE_</u></span>)))<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
<span class="meta meta_include meta_include_php"><span class="keyword keyword_control keyword_control_import keyword_control_import_include keyword_control_import_include_php">require_once</span> <span class="constant constant_other constant_other_php">DEMO_ROOT</span></span> <span class="keyword keyword_operator keyword_operator_string keyword_operator_string_php">.</span> <span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">/phpmock/src/PHPMock.php</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
<span class="meta meta_include meta_include_php"><span class="keyword keyword_control keyword_control_import keyword_control_import_include keyword_control_import_include_php">require_once</span> <span class="constant constant_other constant_other_php">DEMO_ROOT</span></span> <span class="keyword keyword_operator keyword_operator_string keyword_operator_string_php">.</span> <span class="string string_quoted string_quoted_double string_quoted_double_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">"</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_double meta_string-contents_quoted_double_php">/lib/ProductService.php</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">"</span></span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
<span class="meta meta_include meta_include_php"><span class="keyword keyword_control keyword_control_import keyword_control_import_include keyword_control_import_include_php">require_once</span> <span class="constant constant_other constant_other_php">DEMO_ROOT</span></span> <span class="keyword keyword_operator keyword_operator_string keyword_operator_string_php">.</span> <span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">/lib/IDBConnection.php</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
<span class="meta meta_include meta_include_php"><span class="keyword keyword_control keyword_control_import keyword_control_import_include keyword_control_import_include_php">require_once</span> <span class="constant constant_other constant_other_php">DEMO_ROOT</span></span> <span class="keyword keyword_operator keyword_operator_string keyword_operator_string_php">.</span> <span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">/lib/Publisher.php</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>

<span class="meta meta_class meta_class_php"><span class="storage storage_type storage_type_class storage_type_class_php">class</span> <span class="entity entity_name entity_name_type entity_name_type_class entity_name_type_class_php">ProductServiceTest</span> <span class="storage storage_modifier storage_modifier_extends storage_modifier_extends_php">extends</span> <span class="entity entity_other entity_other_inherited-class entity_other_inherited-class_php">PHPUnit_Framework_TestCase</span>
{</span>
    <span class="storage storage_modifier storage_modifier_php">const</span> <span class="constant constant_other constant_other_php">PRODUCT_ID</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php">=</span> <span class="constant constant_numeric constant_numeric_php">1234</span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
    
    <span class="storage storage_modifier storage_modifier_php">public</span> <span class="storage storage_type storage_type_php">function</span> <span class="entity entity_name entity_name_function entity_name_function_php">test_プロダクトを全件取得する</span> ()
    {
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mockDb</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php">=</span> <span class="support support_class support_class_php">PHPMock</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">::</span><span class="meta meta_function-call meta_function-call_static meta_function-call_static_php">mock</span>(<span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">DBConnection</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>)<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mockDb</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">shouldReceive</span>(<span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">execute</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>)
               <span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">withAnyArgs</span>()
               <span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">once</span>()
               <span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">andReturn</span>(
                 <span class="meta meta_array meta_array_php"><span class="support support_function support_function_construct support_function_construct_php">array</span><span class="punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_begin punctuation_definition_array_begin_php">(</span><span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">name</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span> <span class="keyword keyword_operator keyword_operator_key keyword_operator_key_php">=&gt;</span> <span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">NINJA GAIDEN 2</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span><span class="punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_end punctuation_definition_array_end_php">)</span></span>
               )<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="variable variable_other variable_other_property variable_other_property_php">service</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">setDBConnection</span>(<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mockDb</span>)<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">assertNotNull</span>(<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="variable variable_other variable_other_property variable_other_property_php">service</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">getAll</span>())<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
    }

    <span class="storage storage_modifier storage_modifier_php">public</span> <span class="storage storage_type storage_type_php">function</span> <span class="entity entity_name entity_name_function entity_name_function_php">test_プロダクトIDからパブリッシャの名前を取得する</span>()
    {
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mockPublisher</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php">=</span> 
            <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">createPublisherMock</span>(<span class="storage storage_type storage_type_php">self</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">::</span><span class="constant constant_other constant_other_class constant_other_class_php">PRODUCT_ID</span>)<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="variable variable_other variable_other_property variable_other_property_php">service</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">setPublisher</span>(<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mockPublisher</span>)<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>publisher</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php">=</span> <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="variable variable_other variable_other_property variable_other_property_php">service</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span>
                <span class="meta meta_function-call meta_function-call_php">getPublisherByProductId</span>(<span class="storage storage_type storage_type_php">self</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">::</span><span class="constant constant_other constant_other_class constant_other_class_php">PRODUCT_ID</span>)<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">assertEquals</span>(<span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">Activision</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>, <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>publisher</span>[<span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">name</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>])<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
    }

    <span class="storage storage_modifier storage_modifier_php">public</span> <span class="storage storage_type storage_type_php">function</span> <span class="entity entity_name entity_name_function entity_name_function_php">test_クイックモックでfindAllしてみる</span>()
    {
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mockPublisher</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php">=</span> <span class="support support_class support_class_php">PHPMock</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">::</span><span class="meta meta_function-call meta_function-call_static meta_function-call_static_php">mock</span>(<span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">Publisher</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>, 
                            <span class="meta meta_array meta_array_php"><span class="support support_function support_function_construct support_function_construct_php">array</span><span class="punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_begin punctuation_definition_array_begin_php">(</span><span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">findAll</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span> <span class="keyword keyword_operator keyword_operator_key keyword_operator_key_php">=&gt;</span> <span class="meta meta_array meta_array_php"><span class="support support_function support_function_construct support_function_construct_php">array</span><span class="punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_begin punctuation_definition_array_begin_php">(</span><span class="punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_end punctuation_definition_array_end_php">)</span></span><span class="punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_end punctuation_definition_array_end_php">)</span></span>)<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mockPublisher</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">findAll</span>()<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">assertTrue</span>(<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mockPublisher</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">verify</span>())<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
    }

    <span class="storage storage_modifier storage_modifier_php">public</span> <span class="storage storage_type storage_type_php">function</span> <span class="entity entity_name entity_name_function entity_name_function_php">test_引数がマッチしなければ例外を投げる</span>()
    {
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mockPublisher</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php">=</span> 
            <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">createPublisherMock</span>(<span class="storage storage_type storage_type_php">self</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">::</span><span class="constant constant_other constant_other_class constant_other_class_php">PRODUCT_ID</span>)<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="keyword keyword_control keyword_control_exception keyword_control_exception_php">try</span> {
            <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mockPublisher</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">findByProductId</span>(<span class="constant constant_numeric constant_numeric_php">9999</span>)<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        } <span class="meta meta_catch meta_catch_php"><span class="keyword keyword_control keyword_control_exception keyword_control_exception_php">catch</span> (<span class="support support_class support_class_php">Exception</span> <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>e</span>)</span> {
            <span class="keyword keyword_control keyword_control_php">return</span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        }
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">fail</span>(<span class="string string_quoted string_quoted_double string_quoted_double_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">"</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_double meta_string-contents_quoted_double_php">An expected exception has not been raised.</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">"</span></span>)<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
    }

    <span class="storage storage_modifier storage_modifier_php">public</span> <span class="storage storage_type storage_type_php">function</span> <span class="entity entity_name entity_name_function entity_name_function_php">test_PHPUnitのMockObjectはこんな感じ</span>()
    {
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mock</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php">=</span> <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">getMock</span>(<span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">DBConnection</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>, 
                <span class="meta meta_array meta_array_php"><span class="support support_function support_function_construct support_function_construct_php">array</span><span class="punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_begin punctuation_definition_array_begin_php">(</span><span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">execute</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>, <span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">preparedStatement</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span><span class="punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_end punctuation_definition_array_end_php">)</span></span>)<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mock</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">expects</span>(<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">once</span>())
             <span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">method</span>(<span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">execute</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>)
             <span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">will</span>(<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">returnValue</span>(<span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">aaaa</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>))<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">assertEquals</span>(<span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">aaaa</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>, <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mock</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">execute</span>(<span class="string string_quoted string_quoted_double string_quoted_double_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">"</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_double meta_string-contents_quoted_double_php">sql statement</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">"</span></span>))<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
    }

<span class="meta meta_function meta_function_php">    <span class="storage storage_modifier storage_modifier_php">public </span><span class="storage storage_type storage_type_function storage_type_function_php">function</span> <span class="entity entity_name entity_name_function entity_name_function_php">createPublisherMock</span> <span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_php">(</span><span class="meta meta_function meta_function_arguments meta_function_arguments_php"><span class="meta meta_function meta_function_argument meta_function_argument_no-default meta_function_argument_no-default_php"><span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>productId</span></span></span>)</span>
    {
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mock</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php">=</span> <span class="support support_class support_class_php">PHPMock</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">::</span><span class="meta meta_function-call meta_function-call_static meta_function-call_static_php">mock</span>(<span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">Publisher</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>)<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mock</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">shouldReceive</span>(<span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">findByProductId</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span>)
             <span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">with</span>(<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>productId</span>)
             <span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="meta meta_function-call meta_function-call_object meta_function-call_object_php">andReturn</span>(
                 <span class="meta meta_array meta_array_php"><span class="support support_function support_function_construct support_function_construct_php">array</span><span class="punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_begin punctuation_definition_array_begin_php">(</span><span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">name</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span> <span class="keyword keyword_operator keyword_operator_key keyword_operator_key_php">=&gt;</span> <span class="string string_quoted string_quoted_single string_quoted_single_php"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_php">'</span><span class="meta meta_string-contents meta_string-contents_quoted meta_string-contents_quoted_single meta_string-contents_quoted_single_php">Activision</span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_php">'</span></span><span class="punctuation punctuation_definition punctuation_definition_array punctuation_definition_array_end punctuation_definition_array_end_php">)</span></span>
             )<span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>   
        <span class="keyword keyword_control keyword_control_php">return</span> <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>mock</span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
    }

<span class="meta meta_function meta_function_php">    <span class="storage storage_modifier storage_modifier_php">public </span><span class="storage storage_type storage_type_function storage_type_function_php">function</span> <span class="entity entity_name entity_name_function entity_name_function_php">setUp</span> <span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_php">(</span>)</span>
    {
        <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="variable variable_other variable_other_property variable_other_property_php">service</span> <span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_php">=</span> <span class="keyword keyword_other keyword_other_new keyword_other_new_php">new</span> <span class="support support_class support_class_php">ProductService</span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
    }

<span class="meta meta_function meta_function_php">    <span class="storage storage_modifier storage_modifier_php">public </span><span class="storage storage_type storage_type_function storage_type_function_php">function</span> <span class="entity entity_name entity_name_function entity_name_function_php">tearDown</span> <span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_php">(</span>)</span>
    {
    }
}</span></span></pre><br />
<br />
<br />
で、このコードは実行すると「test_引数がマッチしなければ例外を投げる」でコケる。<br />
PHPMock_Expectation#matchArgs に問題があって<br />
<br />
■ phpmock/src/PHPMock/Expectation/Expectation.php<br />
<pre class="textmate-source espresso_libre"><span class="meta meta_function meta_function_php">    <span class="storage storage_modifier storage_modifier_php">public </span><span class="storage storage_type storage_type_function storage_type_function_php">function</span> <span class="entity entity_name entity_name_function entity_name_function_php">matchArgs</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_begin punctuation_definition_parameters_begin_php">(</span><span class="meta meta_function meta_function_arguments meta_function_arguments_php"><span class="meta meta_function meta_function_argument meta_function_argument_array meta_function_argument_array_php"><span class="storage storage_type storage_type_php">array</span> <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>args</span></span></span>)</span>
    {
        <span class="keyword keyword_control keyword_control_php">if</span> (<span class="support support_function support_function_construct support_function_construct_php">empty</span>(<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>args</span>) <span class="keyword keyword_operator keyword_operator_logical keyword_operator_logical_php">&amp;&amp;</span> <span class="support support_function support_function_construct support_function_construct_php">empty</span>(<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="variable variable_other variable_other_property variable_other_property_php">_expectedArgs</span>) <span class="keyword keyword_operator keyword_operator_logical keyword_operator_logical_php">&amp;&amp;</span> <span class="support support_function support_function_type support_function_type_php">is_array</span>(<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="variable variable_other variable_other_property variable_other_property_php">_expectedArgs</span>)) {
            <span class="keyword keyword_control keyword_control_php">return</span> <span class="constant constant_language constant_language_php">true</span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        } <span class="keyword keyword_control keyword_control_php">elseif</span> (<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>args</span> <span class="keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_php">==</span> <span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="variable variable_other variable_other_property variable_other_property_php">_expectedArgs</span>) {
            <span class="keyword keyword_control keyword_control_php">return</span> <span class="constant constant_language constant_language_php">true</span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        } <span class="keyword keyword_control keyword_control_php">elseif</span> (<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="variable variable_other variable_other_property variable_other_property_php">_expectedArgs</span> <span class="keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_php">==</span> <span class="constant constant_language constant_language_php">true</span>) {
            <span class="keyword keyword_control keyword_control_php">return</span> <span class="constant constant_language constant_language_php">true</span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        } <span class="keyword keyword_control keyword_control_php">elseif</span> (<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>this</span><span class="keyword keyword_operator keyword_operator_class keyword_operator_class_php">-&gt;</span><span class="variable variable_other variable_other_property variable_other_property_php">_expectedArgs</span> <span class="keyword keyword_operator keyword_operator_comparison keyword_operator_comparison_php">==</span> <span class="constant constant_language constant_language_php">false</span> <span class="keyword keyword_operator keyword_operator_logical keyword_operator_logical_php">&amp;&amp;</span> <span class="support support_function support_function_construct support_function_construct_php">empty</span>(<span class="variable variable_other variable_other_php"><span class="punctuation punctuation_definition punctuation_definition_variable punctuation_definition_variable_php">$</span>args</span>)) {
            <span class="keyword keyword_control keyword_control_php">return</span> <span class="constant constant_language constant_language_php">true</span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
        }  
        <span class="keyword keyword_control keyword_control_php">return</span> <span class="constant constant_language constant_language_php">false</span><span class="punctuation punctuation_terminator punctuation_terminator_expression punctuation_terminator_expression_php">;</span>
    }</pre><br />
<br />
「$this->_expectedArgs <strong>==</strong> true」これだと $this->_expectedArgs に値が入ってれば true になっちゃうという良く話題になるアレです。正解は「$this->_expectedArgs <strong>===</strong> true」これですな。<br />
<br />
上のコードで使っている DBConnection はインターフェースで Publisher は空っぽのクラス。<br />
インターフェースに定義されているメソッドは PHPMock#_generateDefForMethods がよしなに実装してくれるので安心。PHPUnit の Mock Object だと定義したメソッドをイチイチ配列で全部ツッコまないといけない。<br />
<br />
いわゆるスタブは無くて shouldReceive 一本になると思われる。<br />
PHPMock#mock の第二引数に array($methodName => $returnValue) を与える事で簡単にモックが作れるのは好感。<br />
<br />
■ まとめ<br />
	<ul>
	<li>まだまだ挙動が怪しい点はある</li>
		<li>それでも <span class="caps">PHP</span>Unit の mock よりは楽できる</li>

		<li>テストコード内でザクザクモック作りたいなら MockInterceptor よりオススメ</li>
	</ul> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/211-Battlefield-Bad-Company.html" rel="alternate" title="Battlefield: Bad Company のミニトレイラーが面白すぎる" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2008-06-23T17:32:43Z</published>
        <updated>2008-06-23T17:32:43Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=211</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=211</wfw:commentRss>
    
            <category scheme="http://thug4dev.com/index.php?/categories/7-Games" label="Games" term="Games" />
    
        <id>http://thug4dev.com/index.php?/archives/211-guid.html</id>
        <title type="html">Battlefield: Bad Company のミニトレイラーが面白すぎる</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                今週発売される DICE のモダンコンバット FPS「Battlefield: Bad Company」のミニトレイラーが公開されていますが、これがパロディシリーズになっていて非常楽しめる！<br />
<br />
■ Snake Eyes（MGS4 パロディ）<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/7uRX6K-A_Xg&hl=ja"></param><embed src="http://www.youtube.com/v/7uRX6K-A_Xg&hl=ja" type="application/x-shockwave-flash" width="425" height="344"></embed></object><br />
「iPod 持ってるヤツがバレルの中に隠れてるんだよ！」「段ボールに隠れるくらいバカだろ」「ソリッド…メタル…良く判んないけど日本のムービーでそんなのが！」<br />
これは笑った。<br />
<br />
■ Bad World（Gears of War パロディ）<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/-LnmR1X3G9I&hl=ja"></param><embed src="http://www.youtube.com/v/-LnmR1X3G9I&hl=ja" type="application/x-shockwave-flash" width="425" height="344"></embed></object><br />
GoW の CM で使われていた「Mad World」をフィーチャー。「the dreams in which i'm dying are the best i've ever had ってどういう事だよ！」「これを歌え Mama's little baby loves Short'nin' bread」<br />
くだらねー。<br />
<br />
■ Rainbow Sprinkles（RainbowSix パロディ）<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/uK9wPfUB0ak&hl=ja"></param><embed src="http://www.youtube.com/v/uK9wPfUB0ak&hl=ja" type="application/x-shockwave-flash" width="425" height="344"></embed></object><br />
RainbowSix はステルスアクション FPS なので「これは隠密ミッションだ！」って感じ。「バックアップしろ」「ドアをブリーチしろ！」という風に仲間に指示して進めるのが R6 のゲームプレイ。B-Company なのでイチイチ言われた通りに行動しない所が良く表現出来てる。<br />
この3本では一番好き。<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/210-RSpec-xit.html" rel="alternate" title="[RSpec] xit を知らなかった俺涙目" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2008-06-20T06:03:52Z</published>
        <updated>2008-06-20T06:03:52Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=210</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=210</wfw:commentRss>
    
            <category scheme="http://thug4dev.com/index.php?/categories/4-Blog" label="Blog" term="Blog" />
    
        <id>http://thug4dev.com/index.php?/archives/210-guid.html</id>
        <title type="html">[RSpec] xit を知らなかった俺涙目</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                RSpec 使って開発してて、ちょっと一手戻りたい時に it 節というか example をバコっとコメントアウトしてたんですけど。<br />
<br />
■example_group_methods.rb<br />
<pre class="textmate-source espresso_libre"><span class="comment comment_line comment_line_number-sign comment_line_number-sign_ruby">      <span class="punctuation punctuation_definition punctuation_definition_comment punctuation_definition_comment_ruby">#</span> Use this to temporarily disable an example.
</span>      <span class="meta meta_function meta_function_method meta_function_method_with-arguments meta_function_method_with-arguments_ruby"><span class="keyword keyword_control keyword_control_def keyword_control_def_ruby">def</span> <span class="entity entity_name entity_name_function entity_name_function_ruby">xit</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_ruby">(</span><span class="variable variable_parameter variable_parameter_function variable_parameter_function_ruby">description<span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_ruby">=</span><span class="constant constant_language constant_language_ruby">nil</span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> opts<span class="keyword keyword_operator keyword_operator_assignment keyword_operator_assignment_ruby">=</span><span class="punctuation punctuation_section punctuation_section_scope punctuation_section_scope_ruby">{}</span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="keyword keyword_operator keyword_operator_arithmetic keyword_operator_arithmetic_ruby">&amp;</span>block</span><span class="punctuation punctuation_definition punctuation_definition_parameters punctuation_definition_parameters_ruby">)</span></span>
        <span class="support support_class support_class_ruby">Kernel</span><span class="punctuation punctuation_separator punctuation_separator_method punctuation_separator_method_ruby">.</span>warn<span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">(</span><span class="string string_quoted string_quoted_double string_quoted_double_ruby"><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_begin punctuation_definition_string_begin_ruby">"</span>Example disabled: <span class="source source_ruby source_ruby_embedded source_ruby_embedded_source"><span class="punctuation punctuation_section punctuation_section_embedded punctuation_section_embedded_ruby">#{</span>description<span class="punctuation punctuation_section punctuation_section_embedded punctuation_section_embedded_ruby">}</span></span><span class="punctuation punctuation_definition punctuation_definition_string punctuation_definition_string_end punctuation_definition_string_end_ruby">"</span></span><span class="punctuation punctuation_section punctuation_section_function punctuation_section_function_ruby">)</span>
      <span class="keyword keyword_control keyword_control_ruby">end</span>
      <span class="keyword keyword_control keyword_control_pseudo-method keyword_control_pseudo-method_ruby">alias_method</span> <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>xspecify</span><span class="punctuation punctuation_separator punctuation_separator_object punctuation_separator_object_ruby">,</span> <span class="constant constant_other constant_other_symbol constant_other_symbol_ruby"><span class="punctuation punctuation_definition punctuation_definition_constant punctuation_definition_constant_ruby">:</span>xit</span></pre><br />
<br />
とびてー。<br />
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://thug4dev.com/index.php?/archives/209-unknown.html" rel="alternate" title="炎上必至のフレームワーク" />
        <author>
            <name>kiyosick</name>
                    </author>
    
        <published>2008-05-07T00:03:17Z</published>
        <updated>2008-05-07T00:03:17Z</updated>
        <wfw:comment>http://thug4dev.com/wfwcomment.php?cid=209</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://thug4dev.com/rss.php?version=atom1.0&amp;type=comments&amp;cid=209</wfw:commentRss>
    
            <category scheme="http://thug4dev.com/index.php?/categories/4-Blog" label="Blog" term="Blog" />
            <category scheme="http://thug4dev.com/index.php?/categories/2-PHP" label="PHP" term="PHP" />
    
        <id>http://thug4dev.com/index.php?/archives/209-guid.html</id>
        <title type="html">炎上必至のフレームワーク</title>
        <content type="xhtml" xml:base="http://thug4dev.com/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <div class="thumbnail"><a onclick="_gaq.push(['_trackPageview', '/extlink/skitch.com/kiyoshiyoshida/khug/ts3a0012']);"  onclick="_gaq.push(['_trackPageview', '/extlink/skitch.com/kiyoshiyoshida/khug/ts3a0012']);"  href="http://skitch.com/kiyoshiyoshida/khug/ts3a0012"><img src="http://img.skitch.com/20080506-tgm1djku5d9np3kbre8ensdej5.preview.jpg" alt="TS3A0012" /></a><br /><span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080">Uploaded with <a onclick="_gaq.push(['_trackPageview', '/extlink/plasq.com/']);"  onclick="_gaq.push(['_trackPageview', '/extlink/plasq.com/']);"  href="http://plasq.com/">plasq</a>'s <a onclick="_gaq.push(['_trackPageview', '/extlink/skitch.com']);"  onclick="_gaq.push(['_trackPageview', '/extlink/skitch.com']);"  href="http://skitch.com">Skitch</a>!</span></div> 
            </div>
        </content>
        
    </entry>

</feed>