<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>CakePHP guide</title>
	<link>http://www.blueocean.bz/blog/cakephp</link>
	<description>株式会社ブルーオーシャンの技術担当が CakePHP の情報を発信します</description>
	<pubDate>Fri, 15 Jan 2010 09:24:18 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>ja</language>
			<item>
		<title>Controller::paginate() でアソシエーションを有効にする</title>
		<link>http://www.blueocean.bz/blog/cakephp/2008/08/25/controllerpaginate-%e3%81%a7%e3%82%a2%e3%82%bd%e3%82%b7%e3%82%a8%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e6%9c%89%e5%8a%b9%e3%81%ab%e3%81%99%e3%82%8b/</link>
		<comments>http://www.blueocean.bz/blog/cakephp/2008/08/25/controllerpaginate-%e3%81%a7%e3%82%a2%e3%82%bd%e3%82%b7%e3%82%a8%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e6%9c%89%e5%8a%b9%e3%81%ab%e3%81%99%e3%82%8b/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 02:47:53 +0000</pubDate>
		<dc:creator>Yoshinori Okada</dc:creator>
		
		<category><![CDATA[CakePHP トピック]]></category>

		<guid isPermaLink="false">http://www.blueocean.bz/blog/cakephp/2008/08/25/controllerpaginate-%e3%81%a7%e3%82%a2%e3%82%bd%e3%82%b7%e3%82%a8%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e6%9c%89%e5%8a%b9%e3%81%ab%e3%81%99%e3%82%8b/</guid>
		<description><![CDATA[Controller::paginate() でアソシエーションを有効にするためには、静的なアソシエーションを設定するか Model::bindModel() の第２引数に false を指定して設定をパーシストします。
どうやら Controller::paginate() は内部で何回か find しているようです。
]]></description>
			<content:encoded><![CDATA[<p>Controller::paginate() でアソシエーションを有効にするためには、静的なアソシエーションを設定するか Model::bindModel() の第２引数に false を指定して設定をパーシストします。</p>
<p>どうやら Controller::paginate() は内部で何回か find しているようです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueocean.bz/blog/cakephp/2008/08/25/controllerpaginate-%e3%81%a7%e3%82%a2%e3%82%bd%e3%82%b7%e3%82%a8%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3%e3%82%92%e6%9c%89%e5%8a%b9%e3%81%ab%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
		</item>
		<item>
		<title>assert() 関数には文字列を渡す</title>
		<link>http://www.blueocean.bz/blog/cakephp/2008/08/14/assert-%e9%96%a2%e6%95%b0%e3%81%ab%e3%81%af%e6%96%87%e5%ad%97%e5%88%97%e3%82%92%e6%b8%a1%e3%81%99/</link>
		<comments>http://www.blueocean.bz/blog/cakephp/2008/08/14/assert-%e9%96%a2%e6%95%b0%e3%81%ab%e3%81%af%e6%96%87%e5%ad%97%e5%88%97%e3%82%92%e6%b8%a1%e3%81%99/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 08:17:04 +0000</pubDate>
		<dc:creator>Yoshinori Okada</dc:creator>
		
		<category><![CDATA[CakePHP 周辺知識]]></category>

		<guid isPermaLink="false">http://www.blueocean.bz/blog/cakephp/2008/08/14/assert-%e9%96%a2%e6%95%b0%e3%81%ab%e3%81%af%e6%96%87%e5%ad%97%e5%88%97%e3%82%92%e6%b8%a1%e3%81%99/</guid>
		<description><![CDATA[第３回 CakePHP 勉強会で時間の都合から言えなかったことがありました。 assert() 関数には式を渡すのではなく文字列を渡して使うのが正解です。
assert($arg != 0);   // 誤り！
assert('$arg != 0'); // OK
どちらの記述も一見すると正しく動いているように見えるのですが、式が成立しないときのエラーメッセージが変わります。前者は失敗したことしかわかりませんが、後者はどの式に失敗したのかがわかります。
ながらく C/C++ のプリプロセッサという超法規的措置の assert を使っていた人は要注意です。
]]></description>
			<content:encoded><![CDATA[<p>第３回 CakePHP 勉強会で時間の都合から言えなかったことがありました。 assert() 関数には式を渡すのではなく文字列を渡して使うのが正解です。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-default">assert($arg != 0);   // 誤り！
assert('$arg != 0'); // OK</span></pre></div></div>
<p>どちらの記述も一見すると正しく動いているように見えるのですが、式が成立しないときのエラーメッセージが変わります。前者は失敗したことしかわかりませんが、後者はどの式に失敗したのかがわかります。</p>
<p>ながらく C/C++ のプリプロセッサという超法規的措置の assert を使っていた人は要注意です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueocean.bz/blog/cakephp/2008/08/14/assert-%e9%96%a2%e6%95%b0%e3%81%ab%e3%81%af%e6%96%87%e5%ad%97%e5%88%97%e3%82%92%e6%b8%a1%e3%81%99/feed/</wfw:commentRss>
		</item>
		<item>
		<title>IE で Ajax リクエストをキャッシュさせないようにする</title>
		<link>http://www.blueocean.bz/blog/cakephp/2008/08/08/ie-%e3%81%a7-ajax-%e3%83%aa%e3%82%af%e3%82%a8%e3%82%b9%e3%83%88%e3%82%92%e3%82%ad%e3%83%a3%e3%83%83%e3%82%b7%e3%83%a5%e3%81%95%e3%81%9b%e3%81%aa%e3%81%84%e3%82%88%e3%81%86%e3%81%ab%e3%81%99%e3%82%8b/</link>
		<comments>http://www.blueocean.bz/blog/cakephp/2008/08/08/ie-%e3%81%a7-ajax-%e3%83%aa%e3%82%af%e3%82%a8%e3%82%b9%e3%83%88%e3%82%92%e3%82%ad%e3%83%a3%e3%83%83%e3%82%b7%e3%83%a5%e3%81%95%e3%81%9b%e3%81%aa%e3%81%84%e3%82%88%e3%81%86%e3%81%ab%e3%81%99%e3%82%8b/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 05:12:46 +0000</pubDate>
		<dc:creator>Yoshinori Okada</dc:creator>
		
		<category><![CDATA[CakePHP 周辺知識]]></category>

		<guid isPermaLink="false">http://www.blueocean.bz/blog/cakephp/2008/08/08/ie-%e3%81%a7-ajax-%e3%83%aa%e3%82%af%e3%82%a8%e3%82%b9%e3%83%88%e3%82%92%e3%82%ad%e3%83%a3%e3%83%83%e3%82%b7%e3%83%a5%e3%81%95%e3%81%9b%e3%81%aa%e3%81%84%e3%82%88%e3%81%86%e3%81%ab%e3%81%99%e3%82%8b/</guid>
		<description><![CDATA[IE で Ajax リクエストをキャッシュさせないようにするためには、次のいずれかの手段をとります。

post 通信にする
リクエスト URL に一意なクエリストリングを付加する
If-Modified-Since ヘッダを送出する

個人的には２番目の手段が好きです。 new Date() で済みますので。
]]></description>
			<content:encoded><![CDATA[<p>IE で Ajax リクエストをキャッシュさせないようにするためには、次のいずれかの手段をとります。</p>
<ul>
<li>post 通信にする</li>
<li>リクエスト URL に一意なクエリストリングを付加する</li>
<li>If-Modified-Since ヘッダを送出する</li>
</ul>
<p>個人的には２番目の手段が好きです。 new Date() で済みますので。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueocean.bz/blog/cakephp/2008/08/08/ie-%e3%81%a7-ajax-%e3%83%aa%e3%82%af%e3%82%a8%e3%82%b9%e3%83%88%e3%82%92%e3%82%ad%e3%83%a3%e3%83%83%e3%82%b7%e3%83%a5%e3%81%95%e3%81%9b%e3%81%aa%e3%81%84%e3%82%88%e3%81%86%e3%81%ab%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
		</item>
		<item>
		<title>第３回 CakePHP 勉強会で宣言したテスト導入へ向けた動き</title>
		<link>http://www.blueocean.bz/blog/cakephp/2008/08/07/%e7%ac%ac%ef%bc%93%e5%9b%9e-cakephp-%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%a7%e5%ae%a3%e8%a8%80%e3%81%97%e3%81%9f%e3%83%86%e3%82%b9%e3%83%88%e5%b0%8e%e5%85%a5%e3%81%b8%e5%90%91%e3%81%91%e3%81%9f%e5%8b%95/</link>
		<comments>http://www.blueocean.bz/blog/cakephp/2008/08/07/%e7%ac%ac%ef%bc%93%e5%9b%9e-cakephp-%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%a7%e5%ae%a3%e8%a8%80%e3%81%97%e3%81%9f%e3%83%86%e3%82%b9%e3%83%88%e5%b0%8e%e5%85%a5%e3%81%b8%e5%90%91%e3%81%91%e3%81%9f%e5%8b%95/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 06:00:43 +0000</pubDate>
		<dc:creator>Yoshinori Okada</dc:creator>
		
		<category><![CDATA[レポート]]></category>

		<guid isPermaLink="false">http://www.blueocean.bz/blog/cakephp/2008/08/07/%e7%ac%ac%ef%bc%93%e5%9b%9e-cakephp-%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%a7%e5%ae%a3%e8%a8%80%e3%81%97%e3%81%9f%e3%83%86%e3%82%b9%e3%83%88%e5%b0%8e%e5%85%a5%e3%81%b8%e5%90%91%e3%81%91%e3%81%9f%e5%8b%95/</guid>
		<description><![CDATA[弊社もテストを導入しようといろいろと調査を進めてきたのですが、コントローラのアクションがテストしづらいという問題について次の手段を検討しています。

Controller::setAction() を使って手続きを細分化する
Component を使って手続きを細分化する

Component は言うに及ばず、 Controller::setAction() は苦心の末に思いつきました。
Controller::setAction() はアクションの途中から別のアクションを実行するためのメソッドです。 Controller::requestAction() との違いは Controller::setAction() でアクションを実行すると、フレームワークが「実行しているアクションが切り替わった」と認識する点です。一番わかりやすい違いが、 Controller::setAction() を使うとレンダリングされるビューが変わる点です。
たとえば次の場合…
function index()
{
  $this-&#62;setAction(&#34;ordered_index&#34;);
}
レンダリングされるビューは orderd_index になります。さながら index アクションがフロントコントローラのような役割を果たしていると考えれば理解が早いと思います。
本題はテストです。こうやってアクションの役割を絞りつつ細切れにしていけばテストもいくらかやりやすいのではと思っています。現在開発中のアプリケーションで検証してみたいと思います。
]]></description>
			<content:encoded><![CDATA[<p>弊社もテストを導入しようといろいろと調査を進めてきたのですが、コントローラのアクションがテストしづらいという問題について次の手段を検討しています。</p>
<ul>
<li>Controller::setAction() を使って手続きを細分化する</li>
<li>Component を使って手続きを細分化する</li>
</ul>
<p>Component は言うに及ばず、 Controller::setAction() は苦心の末に思いつきました。</p>
<p>Controller::setAction() はアクションの途中から別のアクションを実行するためのメソッドです。 Controller::requestAction() との違いは Controller::setAction() でアクションを実行すると、フレームワークが「実行しているアクションが切り替わった」と認識する点です。一番わかりやすい違いが、 Controller::setAction() を使うとレンダリングされるビューが変わる点です。</p>
<p>たとえば次の場合…</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-default">function index()
{
  $this-&gt;setAction(&quot;ordered_index&quot;);
}</span></pre></div></div>
<p>レンダリングされるビューは orderd_index になります。さながら index アクションがフロントコントローラのような役割を果たしていると考えれば理解が早いと思います。</p>
<p>本題はテストです。こうやってアクションの役割を絞りつつ細切れにしていけばテストもいくらかやりやすいのではと思っています。現在開発中のアプリケーションで検証してみたいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueocean.bz/blog/cakephp/2008/08/07/%e7%ac%ac%ef%bc%93%e5%9b%9e-cakephp-%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%a7%e5%ae%a3%e8%a8%80%e3%81%97%e3%81%9f%e3%83%86%e3%82%b9%e3%83%88%e5%b0%8e%e5%85%a5%e3%81%b8%e5%90%91%e3%81%91%e3%81%9f%e5%8b%95/feed/</wfw:commentRss>
		</item>
		<item>
		<title>メルセンヌツイスタを使った疑似乱数 - mt_rand()</title>
		<link>http://www.blueocean.bz/blog/cakephp/2008/08/05/%e3%83%a1%e3%83%ab%e3%82%bb%e3%83%b3%e3%83%8c%e3%83%84%e3%82%a4%e3%82%b9%e3%82%bf%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e7%96%91%e4%bc%bc%e4%b9%b1%e6%95%b0-mt_rand/</link>
		<comments>http://www.blueocean.bz/blog/cakephp/2008/08/05/%e3%83%a1%e3%83%ab%e3%82%bb%e3%83%b3%e3%83%8c%e3%83%84%e3%82%a4%e3%82%b9%e3%82%bf%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e7%96%91%e4%bc%bc%e4%b9%b1%e6%95%b0-mt_rand/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 05:29:41 +0000</pubDate>
		<dc:creator>Yoshinori Okada</dc:creator>
		
		<category><![CDATA[CakePHP 周辺知識]]></category>

		<guid isPermaLink="false">http://www.blueocean.bz/blog/cakephp/2008/08/05/%e3%83%a1%e3%83%ab%e3%82%bb%e3%83%b3%e3%83%8c%e3%83%84%e3%82%a4%e3%82%b9%e3%82%bf%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e7%96%91%e4%bc%bc%e4%b9%b1%e6%95%b0-mt_rand/</guid>
		<description><![CDATA[今日知ったのですが PHP の疑似乱数生成にはメルセンヌツイスタが使えるそうです。
その名も mt_rand() 。
マニュアルによると古いバージョンの PHP でも使えるようですが、本当でしょうか。というか、このあたりの心配を払拭するためにも PHP5 へ移行したい気持ちでいっぱいです。
ちなみにメルセンヌツイスタは普通の rand() と違って、再現する乱数にはなりません。
]]></description>
			<content:encoded><![CDATA[<p>今日知ったのですが PHP の疑似乱数生成にはメルセンヌツイスタが使えるそうです。</p>
<p>その名も mt_rand() 。</p>
<p><a href="http://jp2.php.net/manual/ja/function.mt-rand.php">マニュアル</a>によると古いバージョンの PHP でも使えるようですが、本当でしょうか。というか、このあたりの心配を払拭するためにも PHP5 へ移行したい気持ちでいっぱいです。</p>
<p>ちなみにメルセンヌツイスタは普通の rand() と違って、再現する乱数にはなりません。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueocean.bz/blog/cakephp/2008/08/05/%e3%83%a1%e3%83%ab%e3%82%bb%e3%83%b3%e3%83%8c%e3%83%84%e3%82%a4%e3%82%b9%e3%82%bf%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%9f%e7%96%91%e4%bc%bc%e4%b9%b1%e6%95%b0-mt_rand/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CakePHP 1.2 の正規表現問題に決着</title>
		<link>http://www.blueocean.bz/blog/cakephp/2008/07/22/cakephp-12-%e3%81%ae%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%be%e5%95%8f%e9%a1%8c%e3%81%ab%e6%b1%ba%e7%9d%80/</link>
		<comments>http://www.blueocean.bz/blog/cakephp/2008/07/22/cakephp-12-%e3%81%ae%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%be%e5%95%8f%e9%a1%8c%e3%81%ab%e6%b1%ba%e7%9d%80/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 09:20:13 +0000</pubDate>
		<dc:creator>Yoshinori Okada</dc:creator>
		
		<category><![CDATA[CakePHP トピック]]></category>

		<guid isPermaLink="false">http://www.blueocean.bz/blog/cakephp/2008/07/22/cakephp-12-%e3%81%ae%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%be%e5%95%8f%e9%a1%8c%e3%81%ab%e6%b1%ba%e7%9d%80/</guid>
		<description><![CDATA[以前のエントリーで正規表現が間違っているのではないかと予想しておりましたが、やっぱり \a2 が正しかったようです。
ちなみにソースには \{00a2} とあるのですが、上位バイトは０でないとまずいのでしょうか？
こういう書き方ができるとは知りませんでした。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.blueocean.bz/blog/cakephp/2008/02/13/cakephp-12-%e3%81%ae%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%be%e5%95%8f%e9%a1%8c/">以前のエントリー</a>で正規表現が間違っているのではないかと予想しておりましたが、やっぱり \a2 が正しかったようです。</p>
<p>ちなみにソースには \{00a2} とあるのですが、上位バイトは０でないとまずいのでしょうか？</p>
<p>こういう書き方ができるとは知りませんでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueocean.bz/blog/cakephp/2008/07/22/cakephp-12-%e3%81%ae%e6%ad%a3%e8%a6%8f%e8%a1%a8%e7%8f%be%e5%95%8f%e9%a1%8c%e3%81%ab%e6%b1%ba%e7%9d%80/feed/</wfw:commentRss>
		</item>
		<item>
		<title>第３回 CakePHP 勉強会で熱弁した内容がバグだった</title>
		<link>http://www.blueocean.bz/blog/cakephp/2008/07/17/%e7%ac%ac%ef%bc%93%e5%9b%9e-cakephp-%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%a7%e7%86%b1%e5%bc%81%e3%81%97%e3%81%9f%e5%86%85%e5%ae%b9%e3%81%8c%e3%83%90%e3%82%b0%e3%81%a0%e3%81%a3%e3%81%9f/</link>
		<comments>http://www.blueocean.bz/blog/cakephp/2008/07/17/%e7%ac%ac%ef%bc%93%e5%9b%9e-cakephp-%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%a7%e7%86%b1%e5%bc%81%e3%81%97%e3%81%9f%e5%86%85%e5%ae%b9%e3%81%8c%e3%83%90%e3%82%b0%e3%81%a0%e3%81%a3%e3%81%9f/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 04:17:50 +0000</pubDate>
		<dc:creator>Yoshinori Okada</dc:creator>
		
		<category><![CDATA[CakePHP トピック]]></category>

		<guid isPermaLink="false">http://www.blueocean.bz/blog/cakephp/2008/07/17/%e7%ac%ac%ef%bc%93%e5%9b%9e-cakephp-%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%a7%e7%86%b1%e5%bc%81%e3%81%97%e3%81%9f%e5%86%85%e5%ae%b9%e3%81%8c%e3%83%90%e3%82%b0%e3%81%a0%e3%81%a3%e3%81%9f/</guid>
		<description><![CDATA[https://trac.cakephp.org/ticket/4870
赤っ恥です。
どうやら PHP4 限定だったみたいです。…ということは PHP4 はオブジェクトを代入するとディープコピーになるのに対し、 PHP5 では普通の参照コピーになるということですよね。
弊社も PHP5 への移行時には総点検が必要のようです。
]]></description>
			<content:encoded><![CDATA[<p><a href="https://trac.cakephp.org/ticket/4870">https://trac.cakephp.org/ticket/4870</a></p>
<p>赤っ恥です。</p>
<p>どうやら PHP4 限定だったみたいです。…ということは PHP4 はオブジェクトを代入するとディープコピーになるのに対し、 PHP5 では普通の参照コピーになるということですよね。</p>
<p>弊社も PHP5 への移行時には総点検が必要のようです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueocean.bz/blog/cakephp/2008/07/17/%e7%ac%ac%ef%bc%93%e5%9b%9e-cakephp-%e5%8b%89%e5%bc%b7%e4%bc%9a%e3%81%a7%e7%86%b1%e5%bc%81%e3%81%97%e3%81%9f%e5%86%85%e5%ae%b9%e3%81%8c%e3%83%90%e3%82%b0%e3%81%a0%e3%81%a3%e3%81%9f/feed/</wfw:commentRss>
		</item>
		<item>
		<title>語学学習サイト BlueOWL をリリースしました</title>
		<link>http://www.blueocean.bz/blog/cakephp/2008/07/15/%e8%aa%9e%e5%ad%a6%e5%ad%a6%e7%bf%92%e3%82%b5%e3%82%a4%e3%83%88-blueowl-%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e3%81%97%e3%81%be%e3%81%97%e3%81%9f/</link>
		<comments>http://www.blueocean.bz/blog/cakephp/2008/07/15/%e8%aa%9e%e5%ad%a6%e5%ad%a6%e7%bf%92%e3%82%b5%e3%82%a4%e3%83%88-blueowl-%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e3%81%97%e3%81%be%e3%81%97%e3%81%9f/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 07:52:29 +0000</pubDate>
		<dc:creator>Yoshinori Okada</dc:creator>
		
		<category><![CDATA[お知らせ]]></category>

		<guid isPermaLink="false">http://www.blueocean.bz/blog/cakephp/2008/07/15/%e8%aa%9e%e5%ad%a6%e5%ad%a6%e7%bf%92%e3%82%b5%e3%82%a4%e3%83%88-blueowl-%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e3%81%97%e3%81%be%e3%81%97%e3%81%9f/</guid>
		<description><![CDATA[
CakePHP で構築した語学学習サービス BlueOWL をリリースいたしました。
BlueOWL は研究開発と実益のために構築された語学学習サービスです。現在、いくつかの CakePHP アプリケーションが社内にて温められているのですが、このたび、今後の見通しが明るく、コンセプトが固まっているこのアプリケーションをリリースする運びとなりました。
たとえばコンピュータ系の技術者の方々は、毎日なんらかの外国語ドキュメントに触れられていることと思いますが、自分も含め、すべての方が外国語に明るいわけではありません。このサービスではそういった方々のために、日常に溶け込む語学学習をコンセプトに開発が進められています。現在は、単語の意味を解答し、成績を保存するという機能にとどまっていますが、今後の展開として、モバイル対応やリッチクライアント対応を予定しております。
BlueOWL は Scaffolding による差分プログラミングや、 Web2.0 のタクソノミー、プラグイン・コンポーネント・ビヘイビアなどに代表されるソースコードの部品化など、数々のパラダイムを組み込んで CakePHP の可能性に挑戦しました。 内部が公開できないのが残念なほどプログラムらしいプログラムになっています。
今後の開発にご期待ください。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.blueocean.bz/blog/cakephp/wp-content/uploads/2008/07/blue_owl.jpg" title="blue_owl.jpg" rel="rightbox"><img src="http://www.blueocean.bz/blog/cakephp/wp-content/uploads/2008/07/blue_owl.thumbnail.jpg" alt="blue_owl.jpg" class="float_left" /></a></p>
<p>CakePHP で構築した<a href="http://www.blueocean.bz/owl/">語学学習サービス BlueOWL</a> をリリースいたしました。</p>
<p>BlueOWL は研究開発と実益のために構築された語学学習サービスです。現在、いくつかの CakePHP アプリケーションが社内にて温められているのですが、このたび、今後の見通しが明るく、コンセプトが固まっているこのアプリケーションをリリースする運びとなりました。</p>
<p>たとえばコンピュータ系の技術者の方々は、毎日なんらかの外国語ドキュメントに触れられていることと思いますが、自分も含め、すべての方が外国語に明るいわけではありません。このサービスではそういった方々のために、<strong>日常に溶け込む語学学習</strong>をコンセプトに開発が進められています。現在は、単語の意味を解答し、成績を保存するという機能にとどまっていますが、今後の展開として、モバイル対応やリッチクライアント対応を予定しております。</p>
<p>BlueOWL は Scaffolding による差分プログラミングや、 Web2.0 のタクソノミー、プラグイン・コンポーネント・ビヘイビアなどに代表されるソースコードの部品化など、数々のパラダイムを組み込んで CakePHP の可能性に挑戦しました。 内部が公開できないのが残念なほどプログラムらしいプログラムになっています。</p>
<p>今後の開発にご期待ください。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueocean.bz/blog/cakephp/2008/07/15/%e8%aa%9e%e5%ad%a6%e5%ad%a6%e7%bf%92%e3%82%b5%e3%82%a4%e3%83%88-blueowl-%e3%82%92%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9%e3%81%97%e3%81%be%e3%81%97%e3%81%9f/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CakePHP ポケットリファレンスの RC2 マイグレートシートを公開しました</title>
		<link>http://www.blueocean.bz/blog/cakephp/2008/07/09/cakephp-%e3%83%9d%e3%82%b1%e3%83%83%e3%83%88%e3%83%aa%e3%83%95%e3%82%a1%e3%83%ac%e3%83%b3%e3%82%b9%e3%81%ae-rc2-%e3%83%9e%e3%82%a4%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%88%e3%82%b7%e3%83%bc%e3%83%88/</link>
		<comments>http://www.blueocean.bz/blog/cakephp/2008/07/09/cakephp-%e3%83%9d%e3%82%b1%e3%83%83%e3%83%88%e3%83%aa%e3%83%95%e3%82%a1%e3%83%ac%e3%83%b3%e3%82%b9%e3%81%ae-rc2-%e3%83%9e%e3%82%a4%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%88%e3%82%b7%e3%83%bc%e3%83%88/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 06:24:41 +0000</pubDate>
		<dc:creator>Yoshinori Okada</dc:creator>
		
		<category><![CDATA[お知らせ]]></category>

		<guid isPermaLink="false">http://www.blueocean.bz/blog/cakephp/2008/07/09/cakephp-%e3%83%9d%e3%82%b1%e3%83%83%e3%83%88%e3%83%aa%e3%83%95%e3%82%a1%e3%83%ac%e3%83%b3%e3%82%b9%e3%81%ae-rc2-%e3%83%9e%e3%82%a4%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%88%e3%82%b7%e3%83%bc%e3%83%88/</guid>
		<description><![CDATA[CakePHP ポケットリファレンスは CakePHP 1.1 と 1.2 Beta を対象としておりますが、現在の最新バージョンは 1.2 RC2 となりました。
RC1 に引き続き RC2 へ移行する際に注意すべき点をまとめたマイグレートシートを作りましたので、書籍を購入された方はダウンロードください。
今回はモデルのコールバックメソッドに渡される情報が大幅に追加されました。
CakePHP ポケットリファレンス RC2 マイグレートシート
]]></description>
			<content:encoded><![CDATA[<p><a href="/blog/cakephp/products/cakephp_pctref">CakePHP ポケットリファレンス</a>は CakePHP 1.1 と 1.2 Beta を対象としておりますが、現在の最新バージョンは 1.2 RC2 となりました。</p>
<p>RC1 に引き続き RC2 へ移行する際に注意すべき点をまとめたマイグレートシートを作りましたので、書籍を購入された方はダウンロードください。</p>
<p>今回はモデルのコールバックメソッドに渡される情報が大幅に追加されました。</p>
<p><a href="/blog/cakephp/wp-content/uploads/manuals/RC2MigrateSheet.lzh">CakePHP ポケットリファレンス RC2 マイグレートシート</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueocean.bz/blog/cakephp/2008/07/09/cakephp-%e3%83%9d%e3%82%b1%e3%83%83%e3%83%88%e3%83%aa%e3%83%95%e3%82%a1%e3%83%ac%e3%83%b3%e3%82%b9%e3%81%ae-rc2-%e3%83%9e%e3%82%a4%e3%82%b0%e3%83%ac%e3%83%bc%e3%83%88%e3%82%b7%e3%83%bc%e3%83%88/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RC2 の JavascriptHelper::object() がデータ型を見るようになりました</title>
		<link>http://www.blueocean.bz/blog/cakephp/2008/07/08/rc2-%e3%81%ae-javascripthelperobject-%e3%81%8c%e3%83%87%e3%83%bc%e3%82%bf%e5%9e%8b%e3%82%92%e8%a6%8b%e3%82%8b%e3%82%88%e3%81%86%e3%81%ab%e3%81%aa%e3%82%8a%e3%81%be%e3%81%97%e3%81%9f/</link>
		<comments>http://www.blueocean.bz/blog/cakephp/2008/07/08/rc2-%e3%81%ae-javascripthelperobject-%e3%81%8c%e3%83%87%e3%83%bc%e3%82%bf%e5%9e%8b%e3%82%92%e8%a6%8b%e3%82%8b%e3%82%88%e3%81%86%e3%81%ab%e3%81%aa%e3%82%8a%e3%81%be%e3%81%97%e3%81%9f/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 05:51:56 +0000</pubDate>
		<dc:creator>Yoshinori Okada</dc:creator>
		
		<category><![CDATA[CakePHP トピック]]></category>

		<guid isPermaLink="false">http://www.blueocean.bz/blog/cakephp/2008/07/08/rc2-%e3%81%ae-javascripthelperobject-%e3%81%8c%e3%83%87%e3%83%bc%e3%82%bf%e5%9e%8b%e3%82%92%e8%a6%8b%e3%82%8b%e3%82%88%e3%81%86%e3%81%ab%e3%81%aa%e3%82%8a%e3%81%be%e3%81%97%e3%81%9f/</guid>
		<description><![CDATA[JavascriptHelper::object() といえば、配列を JSON 形式に変換してくれる便利なメソッドですが、どうやら RC2 から仕様が変わったようで、要素のデータ型を反映するようになりました。
つまり、以前は数値に見えるものは数値として出力していたところを、 is_string() などを参考にして、文字列型と判断された場合はダブルクォーテーションを付加して出力します。
たとえば以下のようなコードは正しく動作しなくなります。
// $complexData[&#34;visible&#34;] にデータベースから取得した boolean 値が入っている時…
var complex_data = eval(&#60;?php $javascript-&#62;object($complexData) ?&#62;);

if (complex_data[&#34;visible&#34;]) {
  // ↑たぶん 0 か 1 によって分岐したいのだろうが
  // 文字列は &#34;0&#34; でも真になるのでこの分岐の意味がなくなる
}
対策は JSON 化する前にデータ型を boolean に変換するか、 data == &#8220;1&#8243; のように文字列として比較するかのどちらかが簡単だと思います。
もしかしたら MySQL 以外なら問題なく動くかも。
]]></description>
			<content:encoded><![CDATA[<p>JavascriptHelper::object() といえば、配列を JSON 形式に変換してくれる便利なメソッドですが、どうやら RC2 から仕様が変わったようで、要素のデータ型を反映するようになりました。</p>
<p>つまり、以前は数値に見えるものは数値として出力していたところを、 is_string() などを参考にして、文字列型と判断された場合はダブルクォーテーションを付加して出力します。</p>
<p>たとえば以下のようなコードは正しく動作しなくなります。</p>
<div class="hl-surround" ><div class="hl-main"><pre><span class="hl-default">// $complexData[&quot;visible&quot;] にデータベースから取得した boolean 値が入っている時…
var complex_data = eval(</span><span class="hl-inlinetags">&lt;?php </span><span class="hl-var">$javascript</span><span class="hl-code">-&gt;</span><span class="hl-identifier">object</span><span class="hl-brackets">(</span><span class="hl-var">$complexData</span><span class="hl-brackets">) </span><span class="hl-inlinetags">?&gt;</span><span class="hl-default">);

if (complex_data[&quot;visible&quot;]) {
  // ↑たぶん 0 か 1 によって分岐したいのだろうが
  // 文字列は &quot;0&quot; でも真になるのでこの分岐の意味がなくなる
}</span></pre></div></div>
<p>対策は JSON 化する前にデータ型を boolean に変換するか、 data == &#8220;1&#8243; のように文字列として比較するかのどちらかが簡単だと思います。</p>
<p>もしかしたら MySQL 以外なら問題なく動くかも。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blueocean.bz/blog/cakephp/2008/07/08/rc2-%e3%81%ae-javascripthelperobject-%e3%81%8c%e3%83%87%e3%83%bc%e3%82%bf%e5%9e%8b%e3%82%92%e8%a6%8b%e3%82%8b%e3%82%88%e3%81%86%e3%81%ab%e3%81%aa%e3%82%8a%e3%81%be%e3%81%97%e3%81%9f/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
