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

<channel>
	<title>candycane development blog &#187; Lithium</title>
	<atom:link href="http://blog.candycane.jp/archives/tag/lithium/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.candycane.jp</link>
	<description></description>
	<lastBuildDate>Wed, 01 Feb 2012 04:16:55 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>PHPMatsuriの楽しさは参加者自身です</title>
		<link>http://blog.candycane.jp/archives/879</link>
		<comments>http://blog.candycane.jp/archives/879#comments</comments>
		<pubDate>Wed, 19 Oct 2011 14:29:01 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[candycane]]></category>
		<category><![CDATA[Lithium]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[イベント]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=879</guid>
		<description><![CDATA[参加者の写真やブログも公開されてきてまだまだ熱気が醒めやらない感じですが今年のPHP Matsuriが無事に終りました。あまりにも多くの事が頭を巡っているのですが、特に大きいものをいくつかまとめて書こうと思います。 Epic Sax Guy 参加された方で来日したGarrettの人柄とEpic Sax Guyが印象に残っていない人は皆無なのではないでしょうか。強烈に明るくオープンでひょうきんな彼のキャラクターはハッカソンの空気を支配していましたね。前回はLithiumの機能についての評判を多く耳にしましたが、今回は逆にLithiumをGarrettの人柄の話題が食っていた気がします。最新のフレームワークの機能やツールは確かに魅力的ですがそれ以上に魅力的なのはその人自身なのではと彼に会ってから感じています。そして毎日数時間はEpic Sax Guyを聞いてしまうわけです。 言葉では伝わらない体験 今年は昨年よりもさらに増えて総勢で90名を越える規模でのハッカソンになりました。初めての参加者の方も居ましたが多くの方から聞いたのが「どういうイベントなのかよくわからなかった」というものです。2年連続の参加となるSioさんも誤解していたようにハッカソンとはどういう雰囲気なのかを言葉で伝えるのは難しい所があります。 朝のあいさつでも話しましたがPHPMatsuriはヤフーが開催しているOpen Hack Day(現在は Hack Uに改名された模様)をコピーしたイベントです。画像やビデオ、文章などのさまざまな手段では伝わらない楽しさを伝える為に自分たちで開催してしまおうと思ったのがきっかけです。 実際にスタッフの１人である@shin1x1さんも「2日目のデモ発表の時間になってみてこういうイベントだったのかとわかった」と言っていました。参加者のレポートから漂う謎の熱気を理解したい方は実際に参加する事が唯一の方法なのだと思います。 参加者の力 豪華ゲストによる講演や忍者軍団、スイーツ、ワークショップと企画が目白押しですが、PHPMatsuriの本当の目玉コンテンツは参加者の皆さん自身です。参加した方それぞれが感じた楽しさは参加者が実際に開発した発表した体験そのものが中心になっていると思います。参加したけれど発表をしなかった方が「次回は発表する」と強く思う人が多いのも周囲を見ていてそれを感じているからではないでしょうか。 今年も@sizuhikoさんをはじめとしたスタッフの献身的な努力で無事にイベントを終える事ができました。まだ余韻に浸っている段階ですが今後も参加者自身の活動が中心となるハッカソン形式のイベントをさらに幅を広げて行って行きたいと思います。 参加者の皆さん、スタッフの皆さんお疲れさまでした！ ※写真は@koyhogeさんと@suzukiさんのFlickrから引用しています。素晴らしい写真をありがとうございます！]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/zatsu/6260016899/sizes/l/in/photostream/" title="Untitled by zatsu, on Flickr"><img src="http://farm7.static.flickr.com/6051/6260016899_9f10852909.jpg" width="500" height="333" alt=""></a></p>
<p><a href="http://2011.phpmatsuri.net/page/blog-and-picture-of-participants">参加者の写真やブログ</a>も公開されてきてまだまだ熱気が醒めやらない感じですが今年のPHP Matsuriが無事に終りました。あまりにも多くの事が頭を巡っているのですが、特に大きいものをいくつかまとめて書こうと思います。</p>
<h3>Epic Sax Guy</h3>
<p><a href="http://www.flickr.com/photos/koyhoge/6247892041/" title="DSC05794 by koyhoge, on Flickr"><img src="http://farm7.static.flickr.com/6235/6247892041_47ae89eff9.jpg" width="500" height="333" alt="DSC05794"></a><br />
参加された方で来日した<a href="http://twitter.com/#!/gwoo">Garrett</a>の人柄と<a href="http://www.youtube.com/watch?v=KHy7DGLTt8g">Epic Sax Guy</a>が印象に残っていない人は皆無なのではないでしょうか。強烈に明るくオープンでひょうきんな彼のキャラクターはハッカソンの空気を支配していましたね。前回はLithiumの機能についての評判を多く耳にしましたが、今回は逆にLithiumをGarrettの人柄の話題が食っていた気がします。最新のフレームワークの機能やツールは確かに魅力的ですがそれ以上に魅力的なのはその人自身なのではと彼に会ってから感じています。そして毎日数時間はEpic Sax Guyを聞いてしまうわけです。</p>
<h3>言葉では伝わらない体験</h3>
<p><a href="http://www.flickr.com/photos/koyhoge/6247047576/" title="DSC05647 by koyhoge, on Flickr"><img src="http://farm7.static.flickr.com/6034/6247047576_4ea6bbf91d.jpg" width="500" height="333" alt="DSC05647"></a><br />
今年は昨年よりもさらに増えて総勢で90名を越える規模でのハッカソンになりました。初めての参加者の方も居ましたが多くの方から聞いたのが<strong>「どういうイベントなのかよくわからなかった」</strong>というものです。2年連続の参加となるSioさんも<a href="http://tyouji.sakura.ne.jp/WordPress/?p=3709" target="_blank">誤解していた</a>ようにハッカソンとはどういう雰囲気なのかを言葉で伝えるのは難しい所があります。<br />
朝のあいさつでも話しましたがPHPMatsuriはヤフーが開催している<a href="http://www.flickr.com/photos/yodelanecdotal/sets/72157622549624826/">Open Hack Day</a>(現在は Hack Uに改名された模様)をコピーしたイベントです。画像やビデオ、文章などのさまざまな手段では伝わらない楽しさを伝える為に自分たちで開催してしまおうと思ったのがきっかけです。<br />
実際にスタッフの１人である<a href="http://twitter.com/#!/shin1x1">@shin1x1</a>さんも<strong>「2日目のデモ発表の時間になってみてこういうイベントだったのかとわかった」</strong>と言っていました。参加者のレポートから漂う謎の熱気を理解したい方は実際に参加する事が唯一の方法なのだと思います。</p>
<h3>参加者の力</h3>
<p><a href="http://www.flickr.com/photos/koyhoge/6245018507/" title="もくもくと作業するみなさん。 #phpmatsuri by koyhoge, on Flickr"><img src="http://farm7.static.flickr.com/6238/6245018507_d93935237f.jpg" width="500" height="375" alt="もくもくと作業するみなさん。 #phpmatsuri"></a><br />
豪華ゲストによる講演や忍者軍団、スイーツ、ワークショップと企画が目白押しですが、<strong>PHPMatsuriの本当の目玉コンテンツは参加者の皆さん自身です</strong>。参加した方それぞれが感じた楽しさは参加者が実際に開発した発表した体験そのものが中心になっていると思います。参加したけれど発表をしなかった方が「次回は発表する」と強く思う人が多いのも周囲を見ていてそれを感じているからではないでしょうか。</p>
<p>今年も<a href="http://twitter.com/#!/sizuhiko">@sizuhiko</a>さんをはじめとしたスタッフの献身的な努力で無事にイベントを終える事ができました。まだ余韻に浸っている段階ですが今後も参加者自身の活動が中心となるハッカソン形式のイベントをさらに幅を広げて行って行きたいと思います。</p>
<p>参加者の皆さん、スタッフの皆さんお疲れさまでした！</p>
<p>※写真は@koyhogeさんと@suzukiさんのFlickrから引用しています。素晴らしい写真をありがとうございます！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/879/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lithiumの開発がgithubに移行しそう</title>
		<link>http://blog.candycane.jp/archives/694</link>
		<comments>http://blog.candycane.jp/archives/694#comments</comments>
		<pubDate>Mon, 30 May 2011 14:26:39 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[Lithium]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=694</guid>
		<description><![CDATA[http://dev.lithify.me/lithium/tickets/view/374 独自のプロジェクト管理ツール上で開発が行われて来たLithiumですがここにきて開発をgithubに移すという提案がNateから出ています。理由としては下記の点が挙げられています。 Lithiumを露出するいい機会になる 新しいデベロッパが参加しやすい メンテナンスしなければいけないコードが減る CakePHPはかつては必要なプロジェクト管理やコード公開システムなどを自前で実装していましたが既存のオープンなツールに移行していっています。それと同じ流れの１つなのですが、おそらく実際にフレームワークを使って実装されたサイトの例などが増えて来たのでわざわざ例を示す必要が無くなって来たのかもしれませんね。先日のMongoDBのmeetupで発表されたようにLithiumとMongoDBを使ったサイトとしてrevjam.comやtotsy、gimmebarなど商用のものも出て来ています。 ちなみに最近は国際化とリレーションシップのブランチの開発が活発そうです。]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2011/05/li3.png"><img src="http://blog.candycane.jp/wp-content/uploads/2011/05/li3-300x158.png" alt="" title="li3" width="300" height="158" class="aligncenter size-medium wp-image-695" /></a></p>
<p><a href="http://dev.lithify.me/lithium/tickets/view/374">http://dev.lithify.me/lithium/tickets/view/374</a></p>
<p>独自のプロジェクト管理ツール上で開発が行われて来たLithiumですがここにきて開発をgithubに移すという提案がNateから出ています。理由としては下記の点が挙げられています。</p>
<ul>
<li>Lithiumを露出するいい機会になる</li>
<li>新しいデベロッパが参加しやすい</li>
<li>メンテナンスしなければいけないコードが減る</li>
</ul>
<p>CakePHPはかつては必要なプロジェクト管理やコード公開システムなどを自前で実装していましたが既存のオープンなツールに移行していっています。それと同じ流れの１つなのですが、おそらく実際にフレームワークを使って実装されたサイトの例などが増えて来たのでわざわざ例を示す必要が無くなって来たのかもしれませんね。<a href="http://tech.a-listers.jp/2011/05/24/how-not-to-code-the-mongodb-edition/">先日のMongoDBのmeetup</a>で発表されたようにLithiumとMongoDBを使ったサイトとして<a href="http://www.revjam.com/">revjam.com</a>や<a href="http://www.totsy.com/">totsy</a>、<a href="https://gimmebar.com/">gimmebar</a>など商用のものも出て来ています。</p>
<p><a href="http://blog.candycane.jp/wp-content/uploads/2011/05/revjam.png"><img src="http://blog.candycane.jp/wp-content/uploads/2011/05/revjam-300x207.png" alt="" title="revjam" width="300" height="207" class="aligncenter size-medium wp-image-698" /></a><br />
<a href="http://blog.candycane.jp/wp-content/uploads/2011/05/totsy.png"><img src="http://blog.candycane.jp/wp-content/uploads/2011/05/totsy-300x162.png" alt="" title="totsy" width="300" height="162" class="aligncenter size-medium wp-image-699" /></a><br />
<a href="http://blog.candycane.jp/wp-content/uploads/2011/05/bar.png"><img src="http://blog.candycane.jp/wp-content/uploads/2011/05/bar-300x108.png" alt="" title="bar" width="300" height="108" class="aligncenter size-medium wp-image-697" /></a></p>
<p>ちなみに最近は国際化とリレーションシップのブランチの開発が活発そうです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/694/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP新春勉強会を開催しました＆俳句コンテスト</title>
		<link>http://blog.candycane.jp/archives/507</link>
		<comments>http://blog.candycane.jp/archives/507#comments</comments>
		<pubDate>Tue, 25 Jan 2011 06:09:57 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Lithium]]></category>
		<category><![CDATA[イベント]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=507</guid>
		<description><![CDATA[去る2011年1月17日、渋谷のジンガジャパンさんのオフィスにてCakePHP新春勉強会を開催しました。告知から開催まで一週間弱というスケジュールでしたが50人以上の参加登録があり盛況のうちイベントを終える事が出来ました。会場を提供して頂いたジンガジャパン様に感謝したいと思います。また参加した方はご存知かと思いますが、CakePHPの勉強会は「黙ってイスに座っているだけなんてもったいない」という方針の元、会の途中から軽食＋ビールが入ってグダグダになってからが本番です。 すこし映像を撮ったのですが、みなさんパーティからとてもにぎやかです。発表者、参加者の皆さんお疲れさまでした。 動画 発表 オープニング CakePHP 2.0 Livlis From 福岡 LT 歌広場（カラオケ）での延長戦LT No1 No2 参加者の方のレポート等 裏方をやっていると実は勉強会の内容が全然頭に入らないのですが、参加者の皆さんのブログなどでかなりフォローされていますね。 Knockin&#8217;on TechLog » Blog Archive » 「CakePHP新春勉強会 東京」参加ログ 【CakePHP】「CakePHP新春勉強会」に行ってきました &#124; ECWorks Blog CakePHP新春勉強会に参加した #cakephpstudy &#8211; 130単位 CakePHP新春勉強会東京でLivlisの事例をプレゼンしました &#8230; [勉強会]CakePHP新春勉強会に参加してきました CakePHP 新春勉強会 東京 に参加した #cakephpstudy CakePHP新春勉強会で発表してきました &#8211; 24時間CakePHP 一日一歩 : CakePHP新春勉強会 東京に参加してきたよ！ CakePHP新春勉強会に参加してきた « hideichi.com 俳句コンテスト結果 また今回はジンガジャパンさんで開催ということでCityVilleでも使えるジンガゲームカードが当たる俳句コンテストも突発的に開催していました。俳句コンテストは以前、NYで開催されたBoxeeのイベントでやっていたのを見てパクって見ましたが、動画で見ている人も参加できてまたやってみたい企画ですね。 いくつか話題になっていた作品を紹介します。まずは@mon_satさんの作品。 もうプレゼンとかいいからビールを飲むのがメインの#cake_beerのハッシュタグが付いています。きっと近々開催されそうですね。次はビールを飲むのをがんばって我慢していた@ken_b4uさんの作品。 LTの発表も行った@ecworks_masapさんは若干やんちゃなネタ。 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2011/01/DSC00151.jpg"><img src="http://blog.candycane.jp/wp-content/uploads/2011/01/DSC00151-1024x576.jpg" alt="" title="DSC00151" width="512" height="288" class="aligncenter size-large wp-image-509" /></a><br />
去る2011年1月17日、渋谷のジンガジャパンさんのオフィスにて<a href="http://atnd.org/events/11810">CakePHP新春勉強会</a>を開催しました。告知から開催まで一週間弱というスケジュールでしたが50人以上の参加登録があり盛況のうちイベントを終える事が出来ました。会場を提供して頂いたジンガジャパン様に感謝したいと思います。また参加した方はご存知かと思いますが、CakePHPの勉強会は「黙ってイスに座っているだけなんてもったいない」という方針の元、会の途中から軽食＋ビールが入ってグダグダになってからが本番です。<br />
すこし映像を撮ったのですが、みなさんパーティからとてもにぎやかです。発表者、参加者の皆さんお疲れさまでした。</p>
<h3>動画</h3>
<p><iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/R7rXC25R72w?rel=0" frameborder="0" allowFullScreen></iframe></p>
<p>発表<br />
<a href="http://www.ustream.tv/recorded/12074138">オープニング</a><br />
<a href="http://www.ustream.tv/recorded/12074210">CakePHP 2.0</a><br />
<a href="http://www.ustream.tv/recorded/12074381">Livlis</a><br />
<a href="http://www.ustream.tv/recorded/12074805">From 福岡</a><br />
<a href="http://www.ustream.tv/recorded/12075075">LT</a></p>
<p>歌広場（カラオケ）での延長戦LT<br />
<a href="http://www.ustream.tv/recorded/12075843">No1</a><br />
<a href="http://www.ustream.tv/recorded/12075939">No2</a></p>
<h3>参加者の方のレポート等</h3>
<p>裏方をやっていると実は勉強会の内容が全然頭に入らないのですが、参加者の皆さんのブログなどでかなりフォローされていますね。</p>
<p><a href="http://techlog.knocking.co.jp/archives/190">Knockin&#8217;on TechLog » Blog Archive » 「CakePHP新春勉強会 東京」参加ログ</a><br />
<a href="http://blog.ecworks.jp/archives/1389"> 【CakePHP】「CakePHP新春勉強会」に行ってきました | ECWorks Blog </a><br />
<a href="http://d.hatena.ne.jp/deeeki/20110118/cakephp_newyear_study">CakePHP新春勉強会に参加した #cakephpstudy &#8211; 130単位</a><br />
<a href="http://d.hatena.ne.jp/camelmasa/20110117/1295277848">CakePHP新春勉強会東京でLivlisの事例をプレゼンしました &#8230;</a><br />
<a href="http://labs.uechoco.com/blog/2011/01/workshop-joined-cakephp-spring-workshop.html">[勉強会]CakePHP新春勉強会に参加してきました</a><br />
<a href="http://www.ogaoga.org/?p=452">CakePHP 新春勉強会 東京 に参加した #cakephpstudy</a><br />
<a href="http://d.hatena.ne.jp/hiromi2424/20110120/1295474493">CakePHP新春勉強会で発表してきました &#8211; 24時間CakePHP</a><br />
<a href="http://blog.livedoor.jp/hamichamp/archives/51564338.html">一日一歩 : CakePHP新春勉強会 東京に参加してきたよ！</a><br />
<a href="http://hideichi.com/archives/106">CakePHP新春勉強会に参加してきた « hideichi.com</a></p>
<h3>俳句コンテスト結果</h3>
<p>また今回はジンガジャパンさんで開催ということでCityVilleでも使えるジンガゲームカードが当たる俳句コンテストも突発的に開催していました。俳句コンテストは以前、NYで開催されたBoxeeのイベントでやっていたのを見てパクって見ましたが、動画で見ている人も参加できてまたやってみたい企画ですね。<br />
<!-- tweet id : 26947157588189184 --><style type='text/css'>#bbpBox_26947157588189184 a { text-decoration:none; color:#FF3300; }#bbpBox_26947157588189184 a:hover { text-decoration:underline; }</style><div id='bbpBox_26947157588189184' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#709397; background-image:url(http://a1.twimg.com/a/1301071706/images/themes/theme6/bg.gif); background-repeat:no-repeat'><div style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span style='width:100%; font-size:18px; line-height:22px;'>&#26032;&#26149;&#21193;&#24375;&#20250;&#35352;&#24565; CakePHP&#12434;&#12493;&#12479;&#12395;&#12375;&#12383;&#20467;&#21477;&#12434; <a href="http://twitter.com/search?q=%23cakephpstudy" title="#cakephpstudy">#cakephpstudy</a> &#12395;&#12484;&#12452;&#12540;&#12488;&#12375;&#12390;&#12367;&#12384;&#12373;&#12356;&#12290;&#20778;&#31168;&#20316;&#12395;&#12399;&#12472;&#12531;&#12460;&#12398;&#12466;&#12540;&#12512;&#12459;&#12540;&#12489;20&#12489;&#12523;&#20998;&#12434;&#36914;&#21576;&#12375;&#12414;&#12377;&#65281;(CityVille&#12391;&#12418;&#20351;&#12360;&#12427;) &#29694;&#22580;&#12395;&#23621;&#12394;&#12356;&#26041;&#12364;&#21213;&#32773;&#12398;&#22580;&#21512;&#12399;&#12467;&#12540;&#12489;&#12434;&#12513;&#12540;&#12523;&#12391;&#36865;&#12426;&#12414;&#12377;&#12290;</span><div class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img align='middle' src='http://blog.candycane.jp/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a title='tweeted on 2011年1月17日 7:21 PM' href='http://twitter.com/#!/yando/status/26947157588189184' target='_blank'>2011年1月17日 7:21 PM</a> via <a href="http://www.echofon.com/" rel="nofollow" target="blank">Echofon</a><a href='https://twitter.com/intent/tweet?in_reply_to=26947157588189184' class='bbp-action bbp-reply-action' title='Reply'><span><em style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a href='https://twitter.com/intent/retweet?tweet_id=26947157588189184' class='bbp-action bbp-retweet-action' title='Retweet'><span><em style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a href='https://twitter.com/intent/favorite?tweet_id=26947157588189184' class='bbp-action bbp-favorite-action' title='Favorite'><span><em style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div style='float:left; padding:0; margin:0'><a href='http://twitter.com/intent/user?screen_name=yando'><img style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a2.twimg.com/profile_images/568371868/twitterProfilePhoto_normal.jpg' /></a></div><div style='float:left; padding:0; margin:0'><a style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=yando'>@yando</a><div style='margin:0; padding-top:2px'>Yusuke Ando</div></div><div style='clear:both'></div></div></div><!-- end of tweet --></p>
<p>いくつか話題になっていた作品を紹介します。まずは@mon_satさんの作品。<br />
<!-- tweet id : 26958414433222656 --><style type='text/css'>#bbpBox_26958414433222656 a { text-decoration:none; color:#FF0000; }#bbpBox_26958414433222656 a:hover { text-decoration:underline; }</style><div id='bbpBox_26958414433222656' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#BADFCD; background-image:url(http://a0.twimg.com/a/1301951652/images/themes/theme12/bg.gif); background-repeat:no-repeat'><div style='background:#fff; padding:10px; margin:0; min-height:48px; color:#0C3E53; -moz-border-radius:5px; -webkit-border-radius:5px;'><span style='width:100%; font-size:18px; line-height:22px;'>&#26412;&#24403;&#12399; Cake&#12376;&#12419;&#12394;&#12367;&#12390; &#12499;&#12540;&#12523;&#22909;&#12365;  <a href="http://twitter.com/search?q=%23cake_beer" title="#cake_beer">#cake_beer</a> <a href="http://twitter.com/search?q=%23cakephpstudy" title="#cakephpstudy">#cakephpstudy</a></span><div class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img align='middle' src='http://blog.candycane.jp/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a title='tweeted on 2011年1月17日 8:06 PM' href='http://twitter.com/#!/mon_sat/status/26958414433222656' target='_blank'>2011年1月17日 8:06 PM</a> via <a href="http://www.hootsuite.com" rel="nofollow" target="blank">HootSuite</a><a href='https://twitter.com/intent/tweet?in_reply_to=26958414433222656' class='bbp-action bbp-reply-action' title='Reply'><span><em style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a href='https://twitter.com/intent/retweet?tweet_id=26958414433222656' class='bbp-action bbp-retweet-action' title='Retweet'><span><em style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a href='https://twitter.com/intent/favorite?tweet_id=26958414433222656' class='bbp-action bbp-favorite-action' title='Favorite'><span><em style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div style='float:left; padding:0; margin:0'><a href='http://twitter.com/intent/user?screen_name=mon_sat'><img style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a1.twimg.com/profile_images/498294953/avt_suit_100_normal.gif' /></a></div><div style='float:left; padding:0; margin:0'><a style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=mon_sat'>@mon_sat</a><div style='margin:0; padding-top:2px'>mon_sat</div></div><div style='clear:both'></div></div></div><!-- end of tweet --><br />
もうプレゼンとかいいからビールを飲むのがメインの#cake_beerのハッシュタグが付いています。きっと近々開催されそうですね。次はビールを飲むのをがんばって我慢していた@ken_b4uさんの作品。<br />
<!-- tweet id : 26949194052804608 --><style type='text/css'>#bbpBox_26949194052804608 a { text-decoration:none; color:#2205ff; }#bbpBox_26949194052804608 a:hover { text-decoration:underline; }</style><div id='bbpBox_26949194052804608' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#1A1B1F; background-image:url(http://a1.twimg.com/profile_background_images/100669331/W20100512113236932.jpg);'><div style='background:#fff; padding:10px; margin:0; min-height:48px; color:#3b3838; -moz-border-radius:5px; -webkit-border-radius:5px;'><span style='width:100%; font-size:18px; line-height:22px;'>&#12381;&#12398;&#36039;&#26009;&#24460;&#12391;&#35501;&#12415;&#12383;&#12356;&#12358;&#65360;&#23452;&#12375;&#12367;(&#23383;&#20313;&#12426;)<a href="http://twitter.com/search?q=%23cakephpstudy" title="#cakephpstudy">#cakephpstudy</a></span><div class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img align='middle' src='http://blog.candycane.jp/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a title='tweeted on 2011年1月17日 7:29 PM' href='http://twitter.com/#!/ken_b4u/status/26949194052804608' target='_blank'>2011年1月17日 7:29 PM</a> via <a href="https://chrome.google.com/extensions/detail/encaiiljifbdbjlphpgpiimidegddhic" rel="nofollow" target="blank">Chromed Bird</a><a href='https://twitter.com/intent/tweet?in_reply_to=26949194052804608' class='bbp-action bbp-reply-action' title='Reply'><span><em style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a href='https://twitter.com/intent/retweet?tweet_id=26949194052804608' class='bbp-action bbp-retweet-action' title='Retweet'><span><em style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a href='https://twitter.com/intent/favorite?tweet_id=26949194052804608' class='bbp-action bbp-favorite-action' title='Favorite'><span><em style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div style='float:left; padding:0; margin:0'><a href='http://twitter.com/intent/user?screen_name=ken_b4u'><img style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a1.twimg.com/profile_images/991078923/____1__normal.jpg' /></a></div><div style='float:left; padding:0; margin:0'><a style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=ken_b4u'>@ken_b4u</a><div style='margin:0; padding-top:2px'>&#26449;&#26494;&#20581;&#22826;&#37070;</div></div><div style='clear:both'></div></div></div><!-- end of tweet --><br />
LTの発表も行った@ecworks_masapさんは若干やんちゃなネタ。<br />
<!-- tweet id : 26958357466193920 --><style type='text/css'>#bbpBox_26958357466193920 a { text-decoration:none; color:#FF3300; }#bbpBox_26958357466193920 a:hover { text-decoration:underline; }</style><div id='bbpBox_26958357466193920' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#709397; background-image:url(http://a1.twimg.com/a/1301438647/images/themes/theme6/bg.gif); background-repeat:no-repeat'><div style='background:#fff; padding:10px; margin:0; min-height:48px; color:#333333; -moz-border-radius:5px; -webkit-border-radius:5px;'><span style='width:100%; font-size:18px; line-height:22px;'>&#12300;&#20055;&#12426;&#12371;&#12394;&#12379;&#65281; &#12415;&#12435;&#12394;&#12399;Cake &#12458;&#12524;&#21843;&#23376;&#12301;(&#22040; <a href="http://twitter.com/search?q=%23cakephpstudy" title="#cakephpstudy">#cakephpstudy</a></span><div class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img align='middle' src='http://blog.candycane.jp/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a title='tweeted on 2011年1月17日 8:05 PM' href='http://twitter.com/#!/ecworks_masap/status/26958357466193920' target='_blank'>2011年1月17日 8:05 PM</a> via <a href="http://www.tweetdeck.com" rel="nofollow" target="blank">TweetDeck</a><a href='https://twitter.com/intent/tweet?in_reply_to=26958357466193920' class='bbp-action bbp-reply-action' title='Reply'><span><em style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a href='https://twitter.com/intent/retweet?tweet_id=26958357466193920' class='bbp-action bbp-retweet-action' title='Retweet'><span><em style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a href='https://twitter.com/intent/favorite?tweet_id=26958357466193920' class='bbp-action bbp-favorite-action' title='Favorite'><span><em style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div style='float:left; padding:0; margin:0'><a href='http://twitter.com/intent/user?screen_name=ecworks_masap'><img style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a1.twimg.com/profile_images/1275661772/MASA-P_jiga_tw_normal.jpg' /></a></div><div style='float:left; padding:0; margin:0'><a style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=ecworks_masap'>@ecworks_masap</a><div style='margin:0; padding-top:2px'>Masaharu Takishita</div></div><div style='clear:both'></div></div></div><!-- end of tweet --><br />
しかしながら圧倒的な支持を得たのはハイペースでネタを投下し続けたジェダイアイコンでおなじみの@slywalkerさんです。<br />
<!-- tweet id : 26948498419089408 --><style type='text/css'>#bbpBox_26948498419089408 a { text-decoration:none; color:#003cff; }#bbpBox_26948498419089408 a:hover { text-decoration:underline; }</style><div id='bbpBox_26948498419089408' class='bbpBox' style='padding:20px; margin:5px 0; background-color:#ffffff; background-image:url(http://a2.twimg.com/profile_background_images/191323344/rasta_flag-wallpaper_1280x1024.jpg); background-repeat:no-repeat'><div style='background:#fff; padding:10px; margin:0; min-height:48px; color:#595454; -moz-border-radius:5px; -webkit-border-radius:5px;'><span style='width:100%; font-size:18px; line-height:22px;'>&#28988;&#12369;&#12383;&#12363;&#12394;&#65311; &#35223;&#12356;&#12390;&#12415;&#12427;&#12392; &#28814;&#19978;&#20013; <a href="http://twitter.com/search?q=%23cakephpstudy" title="#cakephpstudy">#cakephpstudy</a></span><div class='bbp-actions' style='font-size:12px; width:100%; padding:5px 0; margin:0 0 10px 0; border-bottom:1px solid #e6e6e6;'><img align='middle' src='http://blog.candycane.jp/wp-content/plugins/twitter-blackbird-pie//images/bird.png' /><a title='tweeted on 2011年1月17日 7:26 PM' href='http://twitter.com/#!/slywalker/status/26948498419089408' target='_blank'>2011年1月17日 7:26 PM</a> via <a href="http://sites.google.com/site/yorufukurou/" rel="nofollow" target="blank">YoruFukurou</a><a href='https://twitter.com/intent/tweet?in_reply_to=26948498419089408' class='bbp-action bbp-reply-action' title='Reply'><span><em style='margin-left: 1em;'></em><strong>Reply</strong></span></a><a href='https://twitter.com/intent/retweet?tweet_id=26948498419089408' class='bbp-action bbp-retweet-action' title='Retweet'><span><em style='margin-left: 1em;'></em><strong>Retweet</strong></span></a><a href='https://twitter.com/intent/favorite?tweet_id=26948498419089408' class='bbp-action bbp-favorite-action' title='Favorite'><span><em style='margin-left: 1em;'></em><strong>Favorite</strong></span></a></div><div style='float:left; padding:0; margin:0'><a href='http://twitter.com/intent/user?screen_name=slywalker'><img style='width:48px; height:48px; padding-right:7px; border:none; background:none; margin:0' src='http://a0.twimg.com/profile_images/1143996235/slywalker_with_icon_r_normal.jpg' /></a></div><div style='float:left; padding:0; margin:0'><a style='font-weight:bold' href='http://twitter.com/intent/user?screen_name=slywalker'>@slywalker</a><div style='margin:0; padding-top:2px'>Yasuo Harada</div></div><div style='clear:both'></div></div></div><!-- end of tweet --><br />
公式RT、非公式RTを多数獲得していた@slywalkerさんにはジンガのゲームカード20ドル分を進呈します。おめでとうございます！</p>
<p>このエントリ内でのツイートの引用は<a href="http://themergency.com/twitter-blackbird-pie-wordpress-plugin/">Twitter Blackbird Pie WordPress Plugin</a>を使ってみました。凄く便利なのでツイートを引用するブログを書く時にはおすすめです！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/507/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[和訳]Lithium0.9.9リリースノート</title>
		<link>http://blog.candycane.jp/archives/410</link>
		<comments>http://blog.candycane.jp/archives/410#comments</comments>
		<pubDate>Mon, 08 Nov 2010 05:25:38 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[Lithium]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=410</guid>
		<description><![CDATA[PHP Matsuri以降、実は一度ブログの更新がありましたが、自分の事が書いてあったので照れくさくて翻訳していません。そして立て続けにLithiumの新しいリリースの知らせがありましたので和訳を作成しました。文中に出てくるスタートアップにはセキュリティの権威、Chris ShiflettさんやPHPのUnicode実装に奮戦していたAndrei Zmievskiさんが在籍し、さらにはSean Coatesさんが。またTostyのCTOのMitch Pirtleさんは有名CMS Joomlaの作者です。PHP界のビッグネームがこぞってLithiumを実際に使い始めているというエキサイティングな様子が見て取れます。ではどうぞ。 原文 http://dev.lithify.me/lithium/wiki/blog/Lithium-0-9-9-99-Problems-But-a-Framework-Aint-One Lithium 0.9.9: 99 Problems But a Framework Ain&#8217;t One ワオ、しばらくこのブログを不在にしてました。僕の時間は何処に行ったんだろう？夏の間はしようとしていた事が全て減速していました。僕自身や他のチームメンバーは新しい仕事やスタートアップの立ち上げで多忙でした。我らがプロジェクトマネージャー、GarretはSourceForge内でプロダクトリーダーにポジションに就きました。我々もこれをとても嬉しく思います。これについては近いうちにもう少しわかると思います。 また前回触れたようにいくつかのイベントを開催したり、参加してきたのでここ数ヶ月は忙しかったです。なんにせよはっきり言うと長いリリースをしないで時間が過ぎてしまいました。こういった事はもう起こしたくないとはっきり思っています。ええ、本当に済みませんでした。 それはさておき、今日は思いがけないリリース日です。ちょうど二日前にプロジェクト公開の記念日を迎えました。（以前からアナウンスはしていましたがコードとサイトが公開されたのは11月３日でした）また今日はRemember Rememberの日です。（訳注 映画Vフォーバンデッタの台詞 &#8220;Remember Remeber The 5th of November&#8221; ） また色々な事がありましたが特に前回のリリース以降、将来的には高品質なアプリケーションの為のデファクトフレームワークになる為にがんばってきました。こんな事や、こんな事やヤクの毛狩りが無いように。 立ち上げ この８月にMongoDBを利用したトラフィックの多いプライベートセールEコマースサイト、Tosty.comが開始しました。そしてこのサイトはLithiumで構築されています。Tosty.comのCTOによるこのケーススタディの発表のビデオを見る事もできます。 また個人的に喜ばしい事として今から2週間にBrooklyn Betaというカンファレンスに参加しました。多くの人がこれについて既に記事を書いています。ここでカンファレンスについてはまとめない事にします。このイベントはAnalogとFictive Kinのジョイントベンチャーで、彼ら一人一人を個人に敬意を持っています。なのでかれらが立ち上げたいくつかのベータ版のプロダクトMapalongとGimme Barにはわくわくしました。しかも彼らは両方ともLithiumを使っているんです！ 彼らのフレームワーク上での実践と優れたアプリケーションを見るのはエキサイティングでした。そしてついに完成したわけです。これらのチームからのフィードバックは今のLithiumには不可欠でした。みなさんありがとうございました。 リリースハイライト 今回のリリースは予定したものではありませんでしたが、クオリティをさらに向上させています。約400のコミットが12人の有志によって行われました。これは過去２回のリリースの3倍以上です。また過去4回のリリースの合計に匹敵するくらいの大きさです。 全ての変更を説明しても実用的ではないでしょう。ここに変更のハイライトをリストします。特にコアアーキテクチャとのやり取りに注目してみます。 Filters::apply(): Filters クラスはLithiumでメソッドに対してレイジーにフィルタ処理を行う為の新しい機構です。この新しいメソッドはまだ読み込まれていないスタティックなクラスへフィルタを適用します。例としてPOSTモデルがあり、クエリのログを取る場合はこうなります。: use app\models\Posts; use lithium\analysis\Logger; &#160; Posts::applyFilter&#40;&#34;find&#34;, function&#40;$self, $params, $chain&#41; &#123; Logger::info&#40;json_encode&#40;array&#40;&#34;posts&#34; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_.png"><img src="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_.png" alt="" title="designall.dll" width="500" height="150" class="alignleft size-full wp-image-188" /></a></p>
<p>PHP Matsuri以降、実は一度ブログの更新がありましたが、自分の事が書いてあったので照れくさくて翻訳していません。そして立て続けにLithiumの新しいリリースの知らせがありましたので和訳を作成しました。文中に出てくるスタートアップにはセキュリティの権威、<a href="http://twitter.com/#!/shiflett">Chris Shiflett</a>さんやPHPのUnicode実装に奮戦していた<a href="http://twitter.com/#!/a">Andrei Zmievski</a>さんが在籍し、さらには<a href="http://twitter.com/#!/coates">Sean Coates</a>さんが。またTostyのCTOの<a href="https://twitter.com/#!/mitchitized">Mitch Pirtle</a>さんは有名CMS Joomlaの作者です。PHP界のビッグネームがこぞってLithiumを実際に使い始めているというエキサイティングな様子が見て取れます。ではどうぞ。</p>
<h4>原文</h4>
<p><a href="http://dev.lithify.me/lithium/wiki/blog/Lithium-0-9-9-99-Problems-But-a-Framework-Aint-One">http://dev.lithify.me/lithium/wiki/blog/Lithium-0-9-9-99-Problems-But-a-Framework-Aint-One</a></p>
<h3>Lithium 0.9.9: 99 Problems But a Framework Ain&#8217;t One</h3>
<p>ワオ、しばらくこのブログを不在にしてました。僕の時間は何処に行ったんだろう？夏の間はしようとしていた事が全て減速していました。僕自身や他のチームメンバーは新しい仕事やスタートアップの立ち上げで多忙でした。我らがプロジェクトマネージャー、<a href="http://twitter.com/#!/gwoo">Garret</a>は<a href="http://sourceforge.net/">SourceForge</a>内でプロダクトリーダーにポジションに就きました。我々もこれをとても嬉しく思います。これについては近いうちにもう少しわかると思います。</p>
<p>また<a href="http://dev.lithify.me/lithium/wiki/blog/workshops-meetups-conferences">前回触れたよう</a>にいくつかのイベントを開催したり、参加してきたのでここ数ヶ月は忙しかったです。なんにせよはっきり言うと長いリリースをしないで時間が過ぎてしまいました。こういった事はもう起こしたくないとはっきり思っています。ええ、本当に済みませんでした。<br />
それはさておき、今日は思いがけないリリース日です。ちょうど二日前にプロジェクト公開の記念日を迎えました。（以前からアナウンスはしていましたがコードとサイトが公開されたのは11月３日でした）また今日は<a href="http://vforvendetta.warnerbros.com/">Remember Remember</a>の日です。（訳注 映画Vフォーバンデッタの台詞 &#8220;Remember Remeber The 5th of November&#8221; ）<br />
また色々な事がありましたが特に前回のリリース以降、将来的には高品質なアプリケーションの為のデファクトフレームワークになる為にがんばってきました。<a href="http://twitter.com/#!/bobthecow/status/29493213516">こんな事や</a>、<a href="http://twitter.com/#!/bobthecow/status/29494928076">こんな事</a>や<a href="http://sethgodin.typepad.com/seths_blog/2005/03/dont_shave_that.html">ヤクの毛狩り</a>が無いように。</p>
<h3>立ち上げ</h3>
<p>この８月にMongoDBを利用したトラフィックの多いプライベートセールEコマースサイト、<a href="http://www.totsy.com/">Tosty.com</a>が開始しました。そしてこのサイトはLithiumで構築されています。<a href="https://twitter.com/#!/mitchitized">Tosty.comのCTO</a>によるこのケーススタディの発表の<a href="http://www.10gen.com/video/mongoboston2010/totsy">ビデオ</a>を見る事もできます。<br />
また個人的に喜ばしい事として今から2週間に<a href="http://brooklynbeta.org/">Brooklyn Beta</a>というカンファレンスに参加しました。多くの人がこれについて<a href="http://www.google.com/search?q=Brooklyn+Beta">既に記事を書いています</a>。ここでカンファレンスについてはまとめない事にします。このイベントは<a href="http://analog.coop/">Analog</a>と<a href="http://fictivekin.com/">Fictive Kin</a>のジョイントベンチャーで、彼ら一人一人を個人に敬意を持っています。なのでかれらが立ち上げたいくつかのベータ版のプロダクト<a href="https://mapalong.com/hello">Mapalong</a>と<a href="https://gimmebar.com/">Gimme Bar</a>にはわくわくしました。しかも彼らは両方ともLithiumを使っているんです！<br />
彼らのフレームワーク上での実践と優れたアプリケーションを見るのはエキサイティングでした。そしてついに完成したわけです。これらのチームからのフィードバックは今のLithiumには不可欠でした。みなさんありがとうございました。</p>
<h3>リリースハイライト</h3>
<p>今回のリリースは予定したものではありませんでしたが、クオリティをさらに向上させています。約400のコミットが12人の有志によって行われました。これは過去２回のリリースの3倍以上です。また過去4回のリリースの合計に匹敵するくらいの大きさです。</p>
<p>全ての変更を説明しても実用的ではないでしょう。ここに変更のハイライトをリストします。特にコアアーキテクチャとのやり取りに注目してみます。</p>
<p><strong>Filters::apply():</strong>  Filters クラスはLithiumでメソッドに対してレイジーにフィルタ処理を行う為の新しい機構です。この新しいメソッドはまだ読み込まれていないスタティックなクラスへフィルタを適用します。例としてPOSTモデルがあり、クエリのログを取る場合はこうなります。:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">use</span> app\models\Posts<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> lithium\analysis\Logger<span style="color: #339933;">;</span>
&nbsp;
Posts<span style="color: #339933;">::</span><span style="color: #004000;">applyFilter</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;find&quot;</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$self</span><span style="color: #339933;">,</span> <span style="color: #000088;">$params</span><span style="color: #339933;">,</span> <span style="color: #000088;">$chain</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
Logger<span style="color: #339933;">::</span><span style="color: #004000;">info</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;posts&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span><span style="color: #000088;">$chain</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">next</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$self</span><span style="color: #339933;">,</span> <span style="color: #000088;">$params</span><span style="color: #339933;">,</span> <span style="color: #000088;">$chain</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>このフィルタはブートストラップ処理の中で適用されています。よってPOSTクラスはリクエスト中で使われているかどうかに関わらず常にロードされます。このフィルターをレイジーに適用すると以下のようになります。:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">use</span> lithium\analysis\Logger<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> lithium\util\collection\Filters<span style="color: #339933;">;</span>
&nbsp;
Filters<span style="color: #339933;">::</span><span style="color: #004000;">apply</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'app\models\Posts'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'find'</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$self</span><span style="color: #339933;">,</span> <span style="color: #000088;">$params</span><span style="color: #339933;">,</span> <span style="color: #000088;">$chain</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
Logger<span style="color: #339933;">::</span><span style="color: #004000;">info</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">json_encode</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;posts&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$params</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span><span style="color: #000088;">$chain</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">next</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$self</span><span style="color: #339933;">,</span> <span style="color: #000088;">$params</span><span style="color: #339933;">,</span> <span style="color: #000088;">$chain</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #339933;">&lt;/</span>code<span style="color: #339933;">&gt;</span></pre></div></div>

<p>このフィルタの効果は１つ上の例と同じです。ですが、Filtersクラスを通しているため、このフィルタはPostクラスが既に読み込まれていない場合はすぐには適用されません。この場合はPostsクラスのFindメソッドが呼びだされるまではフィルタは適用されません。</p>
<p><strong>Object::_instance() と Libraries::instance():</strong> Lithiumは当初からクラス間の依存を定義する際に$_classes属性を使う規約を持っています。これらの依存関係を個別にコンストラクタで上書きする事ができます。<br />
しかしこのインスタンス化のプロセスは少々ぎこちないものでした。クラスの名前を$_classes配列から取得し、 new $class() としていました。現在はObjectとStaticObjectをワンライナーでそれぞれの依存のキーに設定できます。また好きなパラメータも下記のように指定できます。:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Foo <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">protected</span><span style="color: #000088;">$_classes</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;renderer&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;app\extensions<span style="color: #000099; font-weight: bold;">\t</span>emplate\Custom&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
publicfunction render<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$renderer</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_instance<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;renderer&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;path&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;views/&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// ...</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Libraries::instance() もよく似た動きをします。クラス型か Libraries::locate()のような名前を受け取り、見つかったクラスを指定されたパラメーターでインスタンス化します。</p>
<p><strong>Request::accepts()によるコンテンツ認証 :</strong>  Request オブジェクトはコンテンツ認証をサポートしました。認証にはHTTP Acceptedパラメーターを使います。アプリケーションの中で使われるコンテンツのタイプをMedia クラスで設定された設定をもとに返します。.<br />
<strong>Model::update() と Model::remove():</strong>  Model クラスに２つのメソッドが追加されました。これは複数のドキュメントやレコードを一度に操作できます。<br />
<strong>MongoDBスキーマサポート:</strong> このリリースではMongoDBのスキーマサポートが改良されました。Mongoオブジェクトを簡単に記録するだけではなく、 $_schema プロパティを使ってLithiumに期待するフィールドの情報を伝えることできます。MongoIDを文字列で渡す事で自動的にMongoIDオブジェクトを生成し問い合わせや更新に使います。<br />
<strong>APIドキュメンテーション:</strong> その他の機能の為にこのリリースには多くのAPIドキュメントがf組まれます。これらは間もなく <a href="http://lithify.me/docs">docs page</a>で公開されます。(訳注、反映済み)さらにドキュメントは新しい<a href="http://dev.lithify.me/li3_docs">li3_docs</a>で提供されます。<br />
<strong>HTTPメタデータによるルーティング:</strong> これまではルーティングはURL内のパターンでのみマッチしていました。現在は全てのRequestオブジェクトのプロパティに拡大されました。これはおなじみのRouter APIで指定します:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Only allow POST requests to FooController::create():</span>
Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/create&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Foo::create&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;http:method&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;POST&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Allow POST or PUT::</span>
Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/update&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Foo::update&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;http:method&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;POST&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;PUT&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Only match if on the dev server:</span>
Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/secret&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Secret::index&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;http:host&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;dev.application.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Only match if request is over HTTPS:</span>
Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/admin&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Foo::index&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;env:https&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>次のリリースのいくつかの変更もハイライトしようと思います。UUIDジェネレーターを再実装したDenis de Bernardy,に感謝します。これにより複雑なコードを明らかに減らす事ができました。これによりパスワードのセキュリティに使われるコアの暗号化を改良できます。また透過的なCSRF対策もフレームワーク上に間もなく実装されます。<br />
さらに彼と何人かの才能ある日本の開発者がそれぞれPostgreSQLのサポートを実装しました。これも次回のリリースでデビューします。<br />
最期に <a href="http://dev.lithify.me/lithium_textmate">TextMate plugin</a>に小さな改良がありました。アプリケーションで使いテストを実行した後、エラーが発生した場所にTextMate上でジャンプできます。Macユーザなら試してみてください。</p>
<h3>API changes</h3>
<p>大きなリリースなのでいくつかの後方互換性の無い変更があります。幸いにも小さな変更なので簡単に修正できます。</p>
<ul>
<li>$this-&gt;render(&#8216;foo&#8217;) の呼び出しはコントローラー内で動かなくなります。代わりにこの呼び出しは$this-&gt;render(array(&#8216;template&#8217; =&gt; &#8216;foo&#8217;))に変更してください。</li>
<li>Inflector::camelize() は &#8220;_&#8221; と &#8220;-&#8221; を置換します。 (以前は &#8220;_&#8221;　だけを置換していました).</li>
<li>データベース設定にカスタムポートを使う場合、 &#8220;port&#8221; キーはサポートしなくなります。その代わりに &#8220;host&#8221; キーのフォーマットを &#8220;host:port&#8221;としてください。</li>
<li>Model::_connection() をバックエンドを直接呼び出すのに使っている場合、このメソッドが廃止予定である事に注意してください。かわりに新しい実装である Model::connection()を利用できます。</li>
<li>LithiumのG11n機構を使っている場合、CatalogAPIの２つの変更に注意してください。:  read() と write() メソッドの最初のパラメータは反映したい設定の名前です。 read() の場合、 true をいつでも指定できます。こうすれば以前の実装と同じです。</li>
<p>簡単に移行する場合は全ての read() の呼び出しをCatalog::read(&#8230;) から Catalog::read(true, &#8230;)としてください。<br />
write() を置き換える場合は動揺ですがやや自動的ではありません。 以前の呼び出しが: Catalog::write(&#8216;message&#8217;, &#8216;en&#8217;, $data, array(&#8216;name&#8217; => &#8216;runtime&#8217;)), の場合、現在は:Catalog::write(&#8216;runtime&#8217;, &#8216;message&#8217;, &#8216;en&#8217;, $data)となります。</p>
<h3>What&#8217;s next?</h3>
<p>このリリースが表に出ると、チームは次のリリースに向けて動く事に興奮しています。僕らはあと２つの大きな機能を安定版のリリース前に実装します。またいくつかの優れたプラグインがリリースの準備ができています。メーリングリストやフォーラムで沢山の質問を受けているのが、Lithiumの全てが集まっている所を探すことの難しさです。ブログやポッドキャスト、ビデオにプレゼンテーションです。僕らはちゃんと聞いています。来週のアナウンスを楽しみにしてください。<br />
それじゃ、&#8221;remember, remember the 5th of November!&#8221; (訳注：台詞です。)<br />
~ nate ~</p>
<p><a href="http://dev.lithify.me/lithium/versions">リリースのダウンロード</a><br />
<a href="http://dev.lithify.me/lithium/wiki/releases/0_9_9">全ての変更履歴</a></p>
<p>-訳ここまで</p>
<p>久々のリリースという事で情報量が多く、３時間強も掛かってしまいました。十分に集中していたとは言えないのですが。個人的にはNateの持っている交友関係の広さや彼がPHPのコミュニティでアクティブな様子が伺えます。また彼のポストには洋楽や洋画の引用がよくありますので、理解を深めるにはこういったものも嗜むと良さそうですね。近日中の次のアナウンスを楽しみにしましょう。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/410/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lithium0.9.5リリースノート(和訳)</title>
		<link>http://blog.candycane.jp/archives/344</link>
		<comments>http://blog.candycane.jp/archives/344#comments</comments>
		<pubDate>Sun, 23 May 2010 01:17:23 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[Lithium]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=344</guid>
		<description><![CDATA[順調に進化を続けるLithiumから例外的に0.9.5がリリースされました。今回も多くの新機能がアナウンスされています。 原文 http://rad-dev.org/lithium/wiki/blog/Lithium-0-9-5-Dont-Stop-Till-You-Get-Enough Lithium0.9.5:止まるにはまだ早い 0.9から1週間半が経ち、Lithiumチームはバージョン0.9.5をアナウンスします。本来のリリーススケジュールに予定されていませんが、今週非常に多くの事を達成したので中間のリリースを行うことにしました。これによりコミュニティの開発者は以下の優れた機能を試す事ができます。 HTTP Auth Adapter：HTTP認証を検証できるようにする`Auth`アダプタが追加されました。`Form`アダプタと同時に利用する事もできます。標準的なログインによる同一の資格情報を持ったWEBサービスへのリクエストを認証できます。（Twitterのクライアントのような例を想定してください) 再設計されたロガーAPI：我々の最初の（そしておそらく最後の）メジャーな後方互換性の無い変更です。より直感的なインターフェースを提供する為にロガーAPIを再設計しました。設定名の代わりに優先度を指定し、それぞれの優先度に対して一つのアダプタを指定します。それぞれの設定は任意の名前を付ける事ができ、priorityキーでどの優先度にアダプタが応答するかを指定します。この柔軟性により重要度の高いメッセージを複数のログに残せます。[Logger APIドキュメント]をご覧ください。 Growlロガーアダプタ：再設計されたロガーAPIともにMax OSXでポピュラーな通知システム、Growlへのアダプタもリリースされました。(オリジナルの実装者はSean Coates)。リリースされたバージョンは、最初から外部に依存関係が無いように書き直され、高速開発に大きな助けになります。 モデル初期化処理のリファクタリング：モデルクラスの初期化処理がリファクタリングされ、大幅に合理化されました。これによりモデルクラスは`lithium\data\Model`を継承したいくつかの基底クラスを継承できます。またクラスは任意のプロパティを継承します。 リードスルーキャッシュ:通常のキャッシュ処理は２つのステップで行われます。指定されたキーを元にキャッシュが存在するかを確認し、存在しない場合はキャッシュする為の処理を行い結果をキャッシュに書き込みます。リードスルーキャッシュはこのプロセスをより直感的にします。次のコードを例を考えます： 1 2 3 4 $id = $this-&#62;request-&#62;id; $user = Cache::read&#40;&#34;storage&#34;, &#34;user.{$id}&#34;, array&#40;'write' =&#62; function&#40;&#41; use &#40;$id&#41; &#123; return array&#40;'+2 days' =&#62; serialize&#40;User::find&#40;$id&#41;-&#62;data&#40;&#41;&#41;&#41;; &#125;&#41;&#41;; キャッシュキーが存在しない場合は、渡された関数が呼び出され返されたデータは、キーに保存され、返す値のarrayのキーキャッシュの有効期限として使用します。このインターフェイスを使用して、キャッシュのチェックとセットを１度の処理で行えます。 ベンダライブラリのための新しいソース管理：我々は、デフォルト配布用に2つのディレクトリを追加しました：`libraries/ _source`と`app/libraries/_source`です。これらのディレクトリはあなたが外部のライブラリをコピーするかチェックアウトし、より簡単にアプリケーションと同期させる為に作られました。外部ライブラリを`_source`ディレクトリに配置した後、実際にソースコードを含むディレクトリを`libraries`ディレクトリとしてsymlinkできます。 たとえば、私はアプリケーション内でいくつかのPEARクラスを利用しています。私の現在の設定は次のようになります： 1 2 3 4 5 6 Libraries::add&#40;&#34;PEAR&#34;, array&#40; &#34;prefix&#34; =&#62; false, &#34;includePath&#34; =&#62; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_.png"><img src="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_.png" alt="designall.dll" title="designall.dll" width="500" height="150" class="aligncenter size-full wp-image-188" /></a></p>
<p>順調に進化を続けるLithiumから例外的に0.9.5がリリースされました。今回も多くの新機能がアナウンスされています。</p>
<h3>原文</h3>
<p><a href="http://rad-dev.org/lithium/wiki/blog/Lithium-0-9-5-Dont-Stop-Till-You-Get-Enough">http://rad-dev.org/lithium/wiki/blog/Lithium-0-9-5-Dont-Stop-Till-You-Get-Enough</a></p>
<h3>Lithium0.9.5:止まるにはまだ早い</h3>
<p>0.9から1週間半が経ち、Lithiumチームはバージョン0.9.5をアナウンスします。本来のリリーススケジュールに予定されていませんが、今週非常に多くの事を達成したので中間のリリースを行うことにしました。これによりコミュニティの開発者は以下の優れた機能を試す事ができます。</p>
<p><strong>HTTP Auth Adapter：</strong>HTTP認証を検証できるようにする`Auth`アダプタが追加されました。`Form`アダプタと同時に利用する事もできます。標準的なログインによる同一の資格情報を持ったWEBサービスへのリクエストを認証できます。（Twitterのクライアントのような例を想定してください)</p>
<p><strong>再設計されたロガーAPI：</strong>我々の最初の（そしておそらく最後の）メジャーな後方互換性の無い変更です。より直感的なインターフェースを提供する為にロガーAPIを再設計しました。設定名の代わりに優先度を指定し、それぞれの優先度に対して一つのアダプタを指定します。それぞれの設定は任意の名前を付ける事ができ、priorityキーでどの優先度にアダプタが応答するかを指定します。この柔軟性により重要度の高いメッセージを複数のログに残せます。<a href="http://lithify.me/docs/lithium/analysis/Logger">[Logger APIドキュメント]</a>をご覧ください。</p>
<p><strong>Growlロガーアダプタ：</strong>再設計されたロガーAPIともにMax OSXでポピュラーな通知システム、Growlへのアダプタもリリースされました。(オリジナルの実装者は<a href="http://twitter.com/coates">Sean Coates</a>)。リリースされたバージョンは、最初から外部に依存関係が無いように書き直され、高速開発に大きな助けになります。</p>
<p><strong>モデル初期化処理のリファクタリング：</strong>モデルクラスの初期化処理がリファクタリングされ、大幅に合理化されました。これによりモデルクラスは`lithium\data\Model`を継承したいくつかの基底クラスを継承できます。またクラスは任意のプロパティを継承します。</p>
<p><strong>リードスルーキャッシュ:</strong>通常のキャッシュ処理は２つのステップで行われます。指定されたキーを元にキャッシュが存在するかを確認し、存在しない場合はキャッシュする為の処理を行い結果をキャッシュに書き込みます。リードスルーキャッシュはこのプロセスをより直感的にします。次のコードを例を考えます：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">request</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">id</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$user</span> <span style="color: #339933;">=</span> Cache<span style="color: #339933;">::</span><span style="color: #004000;">read</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;storage&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;user.<span style="color: #006699; font-weight: bold;">{$id}</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'write'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">use</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'+2 days'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">serialize</span><span style="color: #009900;">&#40;</span>User<span style="color: #339933;">::</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>キャッシュキーが存在しない場合は、渡された関数が呼び出され返されたデータは、キーに保存され、返す値のarrayのキーキャッシュの有効期限として使用します。このインターフェイスを使用して、キャッシュのチェックとセットを１度の処理で行えます。</p>
<p><strong>ベンダライブラリのための新しいソース管理：</strong>我々は、デフォルト配布用に2つのディレクトリを追加しました：`libraries/ _source`と`app/libraries/_source`です。これらのディレクトリはあなたが外部のライブラリをコピーするかチェックアウトし、より簡単にアプリケーションと同期させる為に作られました。外部ライブラリを`_source`ディレクトリに配置した後、実際にソースコードを含むディレクトリを`libraries`ディレクトリとしてsymlinkできます。<br />
たとえば、私はアプリケーション内でいくつかのPEARクラスを利用しています。私の現在の設定は次のようになります：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">Libraries<span style="color: #339933;">::</span><span style="color: #004000;">add</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;PEAR&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">&quot;prefix&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;includePath&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'path'</span> <span style="color: #339933;">=&gt;</span> LITHIUM_LIBRARY_PATH <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;/PEAR/pear/php&quot;</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;transform&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$class</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">return</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;_&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;/&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$class</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;.php&quot;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>実際のPEARのソースコードは`PEAR/pear/php`内にネストされています。これは醜いです。その代わりに、`PEAR`ディレクトリを`app/libraries/_source`の中に移動し、`app/libraries/_source/PEAR/pear/php`から`app/libraries/PEAR`へのsymlinkを追加しました。これで設定を下記のようにシンプルに変更できます：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">Libraries<span style="color: #339933;">::</span><span style="color: #004000;">add</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;PEAR&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">&quot;prefix&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;includePath&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">&quot;transform&quot;</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$class</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #b1b100;">return</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;_&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;/&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$class</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;.php&quot;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>PHP 5.3の標準的なネーミングに従っているライブラリの場合は、その差はさらに歴然です。例えば、PEAR2の場合はシンプルに</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">Libraries<span style="color: #339933;">::</span><span style="color: #004000;">add</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'PEAR2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>とするだけでインポートできます。<br />
この規約によって複数のバージョンのライブラリをsymlinkの切り替えだけで透過的に変更できるというメリットもあります。この規約は、<a href="http://twitter.com/pmjones">Paul M. Jones</a>の<a href="http://solarphp.com/">SolarPHPプロジェクト</a>に触発されました。</p>
<p><strong>MongoDB条件演算子：</strong>我々はMongoDBのネイティブなクエリ演算子を常にサポートしてきました。さらにSQLスタイルのクエリ演算子のサポートを追加しました。標準クエリの構文を使用する例：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">Article<span style="color: #339933;">::</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'all'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'conditions'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'expires'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'&gt;'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">time</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>これは自動的にネイティブなMongoDBのクエリ演算子に変換されます。これはMongoの(素晴らしい)構文を単に置き換えるものではなく、プラグインの開発者に対して様々なデータソースで動く抽象的なクエリを書く手段を提供する事と新たに非リレーショナルデータベースに興味を持つ開発者や既存のアプリケーションの移植へのバリアフリーも目的にしています。<br />
最後に全てのチームメンバーに感謝しています。特に<a href="http://twitter.com/raisinbread">ジョンアンダーソン</a>に、我々のドキュメントリードは、我々は、新しいAPIドキュメントを大量に追加してAPIを100%カバーするという目標の目前にまで来ています。<a href="http://rad-dev.org/lithium/wiki/releases/0_9_5">変更履歴</a>、または<a href="http://lithify.me/docs/lithium">新しいAPIドキュメントを閲覧</a>するか、<a href="http://rad-dev.org/lithium/versions">新しいリリースをダウンロード</a>してお楽しみください！<br />
~Nate~</p>
<p>&#8211;翻訳ここまで</p>
<p>1週間半で大きな進展が会ったことが伺えます。特にNoSQLなデータベースを透過的に扱う技術は多くの人にとって有益ですし、キャッシュの実装をクロージャを使って簡単にする例などは示唆に富んでいますね。ログをGrowlにながすというアイデアも秀逸です！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/344/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lithium0.9リリースノート（和訳）</title>
		<link>http://blog.candycane.jp/archives/331</link>
		<comments>http://blog.candycane.jp/archives/331#comments</comments>
		<pubDate>Sat, 22 May 2010 20:24:11 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[Lithium]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=331</guid>
		<description><![CDATA[ちょっと作業時間が取れなかったので大幅に遅れてしまいましたが、Lithiumの0.9のリリースノートの和訳です。すでに0.9.5が出ていますのでそちらも追って和訳している所です。また末尾で触れられているTekXでのセッションも見てきました。同じ内容のセッションを近日中にustreamで中継する事を相談しているので近々お目にかけられるかもしれません。 原文 http://rad-dev.org/lithium/wiki/blog/Lithium-0-9-The-Lambdas-are-awesome-Edition Lithium0.9 ラムダは素晴らしいエディション 私はLithium0.9を迅速にリリースできた事にとても興奮しています。[今すぐダウンロード！]。0.8からの3週間で、私たちに1.0にかなり近いところまで来ました。いくつかの新機能が含まれます： ErrorHandler：`ErrorHandler`クラスは、アプリケーション全体のPHPのエラーと例外をキャプチャして処理するための高度な設定を提供します。その革新的なデザインは、エラーを型（エラーまたは例外）を含む様々なパラメータ/例外を捕捉することができます。エラーコード、例外クラス名（継承関係を含む）、エラー発生元のクラス名メソッド名のバックトレースも含まれます。 あなたは0.9にアプリケーションを更新する場合は、今すぐ次の例を試すことができます： アプリケーション内に新しい設定ファイルを作成します。`config/bootstrap/error.php`をブートストラップからincludeしてから以下を追加します： 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_.png"><img src="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_.png" alt="designall.dll" title="designall.dll" width="500" height="150" class="aligncenter size-full wp-image-188" /></a></p>
<p>ちょっと作業時間が取れなかったので大幅に遅れてしまいましたが、Lithiumの0.9のリリースノートの和訳です。すでに0.9.5が出ていますのでそちらも追って和訳している所です。また末尾で触れられているTekXでのセッションも見てきました。同じ内容のセッションを近日中にustreamで中継する事を相談しているので近々お目にかけられるかもしれません。</p>
<h3>原文</h3>
<p><a href="http://rad-dev.org/lithium/wiki/blog/Lithium-0-9-The-Lambdas-are-awesome-Edition">http://rad-dev.org/lithium/wiki/blog/Lithium-0-9-The-Lambdas-are-awesome-Edition</a></p>
<h3>Lithium0.9 ラムダは素晴らしいエディション</h3>
<p>私はLithium0.9を迅速にリリースできた事にとても興奮しています。[<a href="http://rad-dev.org/lithium/versions">今すぐダウンロード！</a>]。0.8からの3週間で、私たちに1.0にかなり近いところまで来ました。いくつかの新機能が含まれます：</p>
<p><strong>ErrorHandler：</strong>`ErrorHandler`クラスは、アプリケーション全体のPHPのエラーと例外をキャプチャして処理するための高度な設定を提供します。その革新的なデザインは、エラーを型（エラーまたは例外）を含む様々なパラメータ/例外を捕捉することができます。エラーコード、例外クラス名（継承関係を含む）、エラー発生元のクラス名メソッド名のバックトレースも含まれます。<br />
あなたは0.9にアプリケーションを更新する場合は、今すぐ次の例を試すことができます：<br />
アプリケーション内に新しい設定ファイルを作成します。`config/bootstrap/error.php`をブートストラップからincludeしてから以下を追加します：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
 * First, import the relevant Lithium core classes.
 */</span>
<span style="color: #000000; font-weight: bold;">use</span> \lithium\core\ErrorHandler<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> \lithium\analysis\Logger<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> \lithium\template\View<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * Then, set up a basic logging configuration that will write to a file.
 */</span>
Logger<span style="color: #339933;">::</span><span style="color: #004000;">config</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'error'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'adapter'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'File'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * Configure an error page renderer function that we can use to render 404 and 500 error pages (for
 * this part to work, you need to create errors/404.html.php and errors/500.html.php in your views/
 * directory).
 */</span>
<span style="color: #000088;">$render</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$template</span><span style="color: #339933;">,</span> <span style="color: #000088;">$content</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$view</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> View<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">'paths'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
            <span style="color: #0000ff;">'template'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'{:library}/views/{:controller}/{:template}.{:type}.php'</span><span style="color: #339933;">,</span>
            <span style="color: #0000ff;">'layout'</span>   <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'{:library}/views/layouts/{:layout}.{:type}.php'</span><span style="color: #339933;">,</span>
        <span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$view</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">render</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'all'</span><span style="color: #339933;">,</span> <span style="color: #990000;">compact</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'content'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">compact</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'template'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">'controller'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'errors'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'layout'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'default'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'html'</span>
    <span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * Finally, wire up the error configuration. The first rule captures any exceptions where the
 * message matches one of the given regular expressions: eitheer a template or controller wasn't
 * found. In either case, render a 404.
 *
 * For all other exceptions, log them to the error log, and show the user a 500 error.
 */</span>
ErrorHandler<span style="color: #339933;">::</span><span style="color: #004000;">config</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">'type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Exception'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'message'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'/(^Template not found|^Controller \w+ not found)/'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'handler'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$info</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">use</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$render</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$render</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'404'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$info</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">'type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Exception'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'handler'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$info</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">use</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$render</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            Logger<span style="color: #339933;">::</span><span style="color: #004000;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'error'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">{$info['file']}</span> : <span style="color: #006699; font-weight: bold;">{$info['line']}</span> : <span style="color: #006699; font-weight: bold;">{$info['message']}</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000088;">$render</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'500'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$info</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * Last but not least, tell the ErrorHandler to start capturing errors.
 */</span>
ErrorHandler<span style="color: #339933;">::</span><span style="color: #004000;">run</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>これで、あなたは完全にカスタマイズ可能なエラー管理ソリューションを即座に利用できます。ハンドラはエラーに対して独自に対応を行えるようにします。通常これは、それらをロギングしエラーページをレンダリングするという事になるでしょう。</p>
<p><strong>永続的パラメータ：</strong>多くの拡張機能の中で永続的なパラメータを追加しルーティングします。新しいルートを設置すると、あなたはルートがマッチした際の引数のリストを指定することができ、このリクエストの間は永続的に利用され後続のリンクでも使用されます。これらの2つのルートを考えてみましょう：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/admin/{:controller}/{:action}'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'admin'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'persist'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'admin'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'controller'</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/{:controller}/{:action}'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>さて、サイトのadminセクションを参照すると、生成された全てのリンクが永続化したプロパティを継承しています：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?=</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">html</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">link</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Add post'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'controller'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'posts'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'action'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'add'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// links to /admin/posts/add ?&gt;</span></pre></td></tr></table></div>

<p>パラメータを無効するには、単に`null`を対応するキーの値に渡す：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?=</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">html</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">link</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'Add post'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'controller'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'posts'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'action'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'add'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'admin'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">null</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// links to /posts/add ?&gt;</span></pre></td></tr></table></div>

<p><strong>ルートハンドラ：</strong>最も重要な新機能、ルートハンドラを使用すると、アプリケーションから直接のルートにコントローラロジックを実装することができます。これにより、いくつかのクールな実装や、小型で高速マイクロアプリケーションを実現できます。以前このプラグインはフレームワークの外部でしたが、この機能はコアに移動されているアプリケーションから直接利用できるようになりました。この単純な例を考えてみましょう：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">use</span> lithium\action\Response<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">use</span> \lithium\net\http\Router<span style="color: #339933;">;</span>
&nbsp;
Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/hello/{:name}'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$request</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> ?<span style="color: #339933;">:</span> <span style="color: #0000ff;">'World'</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">new</span> Response<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'body'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;Hello <span style="color: #006699; font-weight: bold;">{$name}</span>!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
Router<span style="color: #339933;">::</span><span style="color: #004000;">connect</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/redirect'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$request</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">new</span> Response<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'location'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'/'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>このルーティングでまず注意する点はルートハンドラーは全てのフレームワークの処理をバイパスして直接、Responseオブジェクトを返してレンダリングする事です。またハンドラは$requestパラメータを返し、処理を通常どおり継続することもできます。最初の例では /hello にアクセスした際に誰かわからないユーザへのあいさつ、&#8221;Hello World!&#8221; を画面に書いています。または`/hello/Nate`にアクセスし `{:name}`パラメータがURLで指定されたな会いは&#8221;Hello Nate!&#8221;と表示します。<br />
2番目の例では`/redirect`へのリクエストをキャプチャし、ハンドラはブラウザを別ページへリダイレクトするResponseオブジェクトを返しています。Responseオブジェクト（また、コントローラのプロパティとしても使用可能なオブジェクトです）では、レスポンスがブラウザに返される方法を直接コントロールします。</p>
<p><strong>テンプレート変数展開：</strong>コミュニティの一部の開発者が明示のテンプレートを作成したいので、テンプレート変数をアクセスするための代替構文を実装しました。また $titleというテンプレート変数は $this['title']としてアクセスすることも出来るようになりました。<br />
また、このテンプレート変数の展開を無効にするオプションもあります。設定に`extract`パラメータを追加することによって、我々は簡単に通常のテンプレート変数を無効にすることができます：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">Media<span style="color: #339933;">::</span><span style="color: #004000;">type</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'html'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'text/html'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
    <span style="color: #0000ff;">'view'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'\lithium\template\View'</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'extract'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span>
    <span style="color: #0000ff;">'paths'</span>   <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">'template'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'{:library}/views/{:controller}/{:template}.{:type}.php'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'layout'</span>   <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'{:library}/views/layouts/{:layout}.{:type}.php'</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>この設定を適用すると、 $this['title']は引き続き動きますが、 $titleは動かなくなります。<br />
最後に、<a href="http://twitter.com/jperras">Joel</a>と私は一カ月後の<a href="http://tek.phparch.com/">TEK・X</a>のカンファレンスで講演する予定です。我々はLithiumについての合同セッションと、それぞれコードの品質やソーシャルグラフについての講演をする予定です。今すぐ登録して、会場で会ったら声をかけてください。シカゴでお会いしましょう。</p>
<p>~nate~</p>
<p>&#8211;翻訳ここまで</p>
<p>機能の断片を紹介しているのでちょっとピンと来にくいかもしれません。セッションでも語られていましたが、Lithiumはアスペクト指向を実装に取り入れている部分があり、従来のスタイルのフレームワークの知識を前提にして考えると分かりづらい所があります。これらの例は全体の継承関係や処理のフローを考慮することなく、断片的な修正をクロージャなどを使って実現できるという点がすごい所と言えるでしょう。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/331/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>安定版まであと２つ Lithium0.8リリース(和訳)</title>
		<link>http://blog.candycane.jp/archives/315</link>
		<comments>http://blog.candycane.jp/archives/315#comments</comments>
		<pubDate>Thu, 01 Apr 2010 06:08:55 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[Lithium]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=315</guid>
		<description><![CDATA[安定版のリリースに向けて着実に歩を進めているLithiumのバージョン0.8がリリースされました。 Nateから出ているリリースノートを訳してみました。 原文 http://rad-dev.org/lithium/wiki/blog/Lithium-0-8-And-then-there-were-2 Lithium 0.8 &#8211; And then there were 2 我々は最終的な安定版APIのLithiumフレームワークまで残すところ2つのリリースという所に差し掛かりました。まもなく、企業が開発に自信を持って利用できる固定されたAPIが提供されます。 しかし、我々はすでに非常に高度なアーリーアダプターを見て興奮している。リチウムの最初の（未発表の）プロジェクトを開発している由緒ある[アナログ]がそうだ。我々は彼らのインプットと専門知識の受益者であることを誇りに思う。 このリリースには多くの新機能が含まれます： 完全にリファクタリングされたテストスイート。テストスイートは、より柔軟な自動化ツールのサポートを改善しています。 `Adaptable` ストラテジの完全な再実装`。ストラテジのシステムは非常に強力であり、すべての入力およびアプリケーションの出力などを広範囲に制御できます。 新たな戦略システムによってデータの最も安全なストレージメカニズムHMACのセッションとクッキーのデータ格納をサポートします。 `Form`ヘルパーのHTML5のフォーム要素のサポート。 他の多くの小規模な機能とパフォーマンスの最適化。 API の変更 `lithium\storage\cache::write()`のパラメータのリストは変更されました。詳細については、APIをご参照ください。 より良い内部APIの整合性、`lithium\data\model::__init()`はパラメータを受け付けなくなります。同じ挙動をさせるには `config()`を使用するようにコードを変更してください。 現在、我々は開発者が強力なツールセットについてみることに興味を持っています。私たちは、APIを現在から1.0の間で変更しないと約束することはできませんが、我々は自信を持っているAPIのコアのほとんどは現在かなり安定して利用の準備ができています。以前のポイントリリースでは、全ての互換性の無い変更と関連するすべての移行手順と同様に完全にリリースノートに記載されます。 wikiの完全な変更のリストをチェックしたら、次にそれをダウンロードして試してみてください！ ~nate &#8211;訳ここまで 大きな変更が少なくなり、安定版のリリースが近付いている事が感じられます。またデバッグを容易にするためのツールなどの機能の実装が行われるとのことで挙動が分かりやすくなりさらに利用しやすい形になっていきそうです。今後も注目ですね。]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_.png"><img src="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_-300x90.png" alt="designall.dll" title="designall.dll" width="300" height="90" class="alignnone size-medium wp-image-188" /></a></p>
<p>安定版のリリースに向けて着実に歩を進めているLithiumのバージョン0.8がリリースされました。<br />
Nateから出ているリリースノートを訳してみました。</p>
<h3>原文</h3>
<p><a href="http://rad-dev.org/lithium/wiki/blog/Lithium-0-8-And-then-there-were-2">http://rad-dev.org/lithium/wiki/blog/Lithium-0-8-And-then-there-were-2</a></p>
<h3>Lithium 0.8 &#8211; And then there were 2</h3>
<p>我々は最終的な安定版APIのLithiumフレームワークまで残すところ2つのリリースという所に差し掛かりました。まもなく、企業が開発に自信を持って利用できる固定されたAPIが提供されます。<br />
しかし、我々はすでに非常に高度なアーリーアダプターを見て興奮している。リチウムの最初の（未発表の）プロジェクトを開発している由緒ある[<a href="http://analog.coop">アナログ</a>]がそうだ。我々は彼らのインプットと専門知識の受益者であることを誇りに思う。<br />
このリリースには多くの新機能が含まれます：</p>
<ul>
<li>完全にリファクタリングされたテストスイート。テストスイートは、より柔軟な自動化ツールのサポートを改善しています。</li>
<li>`Adaptable` ストラテジの完全な再実装`。ストラテジのシステムは非常に強力であり、すべての入力およびアプリケーションの出力などを広範囲に制御できます。</li>
<li>新たな戦略システムによってデータの最も安全なストレージメカニズムHMACのセッションとクッキーのデータ格納をサポートします。</li>
<li>`Form`ヘルパーのHTML5のフォーム要素のサポート。</li>
<li>他の多くの小規模な機能とパフォーマンスの最適化。</li>
</ul>
<p><strong>API の変更</strong></p>
<ul>
<li>`lithium\storage\cache::write()`のパラメータのリストは変更されました。詳細については、APIをご参照ください。</li>
<li>より良い内部APIの整合性、`lithium\data\model::__init()`はパラメータを受け付けなくなります。同じ挙動をさせるには `config()`を使用するようにコードを変更してください。</li>
</ul>
<p>現在、我々は開発者が強力なツールセットについてみることに興味を持っています。私たちは、APIを現在から1.0の間で変更しないと約束することはできませんが、我々は自信を持っているAPIのコアのほとんどは現在かなり安定して利用の準備ができています。以前のポイントリリースでは、全ての互換性の無い変更と関連するすべての移行手順と同様に完全にリリースノートに記載されます。<br />
wikiの<a href="http://rad-dev.org/lithium/wiki/releases/0_8">完全な変更のリスト</a>をチェックしたら、次に<a href="http://rad-dev.org/lithium/versions">それをダウンロード</a>して試してみてください！</p>
<p>~nate</p>
<p>&#8211;訳ここまで</p>
<p>大きな変更が少なくなり、安定版のリリースが近付いている事が感じられます。またデバッグを容易にするためのツールなどの機能の実装が行われるとのことで挙動が分かりやすくなりさらに利用しやすい形になっていきそうです。今後も注目ですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/315/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lithium0.7がリリースされました(和訳)</title>
		<link>http://blog.candycane.jp/archives/309</link>
		<comments>http://blog.candycane.jp/archives/309#comments</comments>
		<pubDate>Wed, 10 Mar 2010 03:22:27 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[Lithium]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=309</guid>
		<description><![CDATA[PHP5.3専用のもっとも革新的なフレームワークLithiumの最新版である0.7が2010年3月8日にリリースされました。今回はMySQLサポートの正式対応が追加され従来型のアプリケーションの開発が飛躍的に向上しました。またコードの再利用を進める為の内部の最適化も引き続き行われています。詳細はいつものようにリリースノートの和訳を作りましたのでそちらをご覧ください。 またGwooがOrange Countyで行ったプレゼンテーションの資料と音声も公開されているので要チェックです。 Li3 ocphp View more presentations from G W. 原文 http://rad-dev.org/lithium/wiki/blog/Lithium-0-7-luck-of-the-irish Lithium0.7 Luck-of-the-irish 私たちは近づいてきたセントパトリックデーのお祝いに夢中になる前に、最新版のLithiumのリリースを準備できました。Lithium0.7は170のコミットを6人の開発者から受け取り、私たちはまた一歩の安定版のリリースに近づきました。 当初よりLithiumはドキュメント指向のデータベースをサポートし、高い比重を置いていました。私たちは依然として高速にパフォーマンスに配慮し、かつ柔軟なアプリケーションの構築と柔軟なアプリケーションの開発にはデータストレージに新しいアプローチを使用する事が大きな利益になると考えています。しかし、我々はまだ従来のリレーショナルデータベースが多くのアプリケーションに有益な事もわかっています。この目的のために、これらの機能を統合しリレーショナルデータベースを使用するために必要な大規模なサブセットをLithium0.7に実装しました。現時点ではMySQLがテストに合格した唯一のデータベース（`SourceTest`）ですが、基盤部分はSQLite3、PostgreSQLなどのその他のデータベースにも適用できます。すでにMSSQLの作業は進行中で、[li3_mssqlプラグインとして進行中]（http://rad-dev.org/li3_mssql/wiki）、もちろんこのデータベースや他のデータベース実装へのコントリビューションは大歓迎です。 また、SQLをサポートする為に`Adaptable`クラスに計画的な実装をLithium0.7で追加しました。計画はどのようにデータが転送され、アダプタに適用される変更を抽象化して提供します。たとえば、あなたが`Cache::write()`を使用してデータを保存し、`Cache::read()`てデータを取り出したいとします。この機能は、コアに含まれている`Serializer`という計画を通じて簡単に実現できます。`Cache`アダプタに対するインターフェイスは`Base64`、`Json`、`Serializer`が実装済みです。また`Adaptable`のそのほかのサブクラスに対するストラテジーは実装中です。 ChangeLogを見てもらえれば（http://rad-dev.org/lithium/wiki/releases/0_7）、g11nのいくつかの大きな改善とテストのカバレッジの向上がした事がわかるでしょう。 いくつかの名前空間とブートストラップのプロセスは、アプリケーションのコア機能を委任しやすいように改良されました。いくつかの変更は、以前のリリースとの互換性がありません： Dispatcher::run() `Request`オブジェクトが最初のパラメータとして必要になりました。`webroot/index.php`を見てください。 プラグインをすぐに他のライブラリと同じようにできます。app/libraries内の&#8221;plugins&#8221;ディレクトリが削除されています。現在はプラグインの追加はライブラリの追加と同じように行います。例 `Libraries::add(&#8216;li3=docs&#8217;);` 新しいBootstrapファイルと`bootstrap/action.php`の代替の`switchboard.php`の除去。 bootstrap/libraries.php内の `Libraries::Add(&#8216;app&#8217;, array(&#8216;default&#8217; => true));` はあなたのアプリケーションを &#8216;default&#8217; ライブラリとして提供します。 `Connections` はconnections.phpを読み込まなくなりました。有効にするには`config/bootstrap.php`で設定してください。 `Connections::add()の`は現在2つのパラメータを受け取ります。`config/bootstrap/connections.php`を参照してください。 PHP 5.3およびLithiumに関する2時間のプレゼンテーションをここで読めます。（音声あり）：http://lithify.me/presents 我々は、高速開発のスケジュールをイテレーションフライデーと共に進めてきました。私たちは減速するつもりはありません。予定どおり安定版は2010の初夏にリリースできるでしょう。 うまくいけば、このプロジェクトの成功はプロジェクトに関わる全ての人にとってエキサイティングなニュースになるでしょう。いつものように、われわれはどんな形のコントリビューションも大歓迎で待っています。 〜gwoo &#8211;翻訳ここまで MySQLなどの従来型のデータベースがサポートされましたが、ドキュメント指向データベースこそが高速で柔軟なアプリケーション開発をもたらすという強い意志が伝わってきます。かつてCakePHPなどが流行り始めた際はDRYなフレームワークこそが高速開発を実現する事を世の中に示したと言えますが、時代は次のステップに向かっていますね。Lithiumは単なる新しいフレームワークではなく、こういったパラダイムシフトを提唱しようとしている事が特に大事な点だと個人的には考えています。 またCakeやsymfonyなどの近代的なフレームワークではプラグインなどを利用した拡張が提供されていますが、なかなか共通部分をプラグインに切り出せないという問題にはまりがちです。その点を考慮してか次世代のフレームワークでは実装そのものとプラグインの境界線が薄くなる方向へと進んでいます。アプリケーション自体をプラグインとして実装するとイメージすると近いかもしれません。 なんにせよこのパラダイムを体感するには実際に試してみるのが一番でしょう！]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_.png"><img src="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_-300x90.png" alt="designall.dll" title="designall.dll" width="300" height="90" class="alignnone size-medium wp-image-188" /></a></p>
<p>PHP5.3専用のもっとも革新的なフレームワークLithiumの最新版である0.7が2010年3月8日にリリースされました。今回はMySQLサポートの正式対応が追加され従来型のアプリケーションの開発が飛躍的に向上しました。またコードの再利用を進める為の内部の最適化も引き続き行われています。詳細はいつものようにリリースノートの和訳を作りましたのでそちらをご覧ください。<br />
またGwooがOrange Countyで行ったプレゼンテーションの資料と音声も公開されているので要チェックです。</p>
<p><img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNjgxOTEyNDg2MDAmcHQ9MTI2ODE5MTI2MjYxMyZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJm89MTdhZDkyNGQwMGU5/NDdiMWI2MzdmMDc*NDI5YTMwM2Emb2Y9MA==.gif" />
<div style="width:425px" id="__ss_3271175"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/gwoo/li3-ocphp" title="Li3 ocphp">Li3 ocphp</a></strong><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=li3-ocphp-100225013014-phpapp02&#038;stripped_title=li3-ocphp" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=li3-ocphp-100225013014-phpapp02&#038;stripped_title=li3-ocphp" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/gwoo">G W</a>.</div>
</div>
<p><embed type="application/x-shockwave-flash" width="350" height="24" allowfullscreen="true" allowscriptaccess="always" 	src="http://www.archive.org/flow/flowplayer.commercial-3.0.5.swf" 	w3c="true" 	flashvars='config={"key":"#$b6eb72a0f2f1e29f3d4","playlist":[{"url":"http://www.archive.org/download/lithium-ocphp/gwoo.mp3","autoPlay":false}],"clip":{"autoPlay":true},"canvas":{"backgroundColor":"0x000000","backgroundGradient":"none"},"plugins":{"audio":{"url":"http://www.archive.org/flow/flowplayer.audio-3.0.3-dev.swf"},"controls":{"playlist":false,"fullscreen":false,"gloss":"high","backgroundColor":"0x000000","backgroundGradient":"medium","sliderColor":"0x777777","progressColor":"0x777777","timeColor":"0xeeeeee","durationColor":"0x01DAFF","buttonColor":"0x333333","buttonOverColor":"0x505050"}},"contextMenu":[{"Listen+to+lithium-ocphp+at+archive.org":"function()"},"-","Flowplayer 3.0.5"]}'></embed><h3>原文</h3>
<p><a href="http://rad-dev.org/lithium/wiki/blog/Lithium-0-7-luck-of-the-irish">http://rad-dev.org/lithium/wiki/blog/Lithium-0-7-luck-of-the-irish</a></p>
<h3>Lithium0.7 Luck-of-the-irish</h3>
<p>私たちは近づいてきたセントパトリックデーのお祝いに夢中になる前に、最新版のLithiumのリリースを準備できました。Lithium0.7は170のコミットを6人の開発者から受け取り、私たちはまた一歩の安定版のリリースに近づきました。<br />
当初よりLithiumはドキュメント指向のデータベースをサポートし、高い比重を置いていました。私たちは依然として高速にパフォーマンスに配慮し、かつ柔軟なアプリケーションの構築と柔軟なアプリケーションの開発にはデータストレージに新しいアプローチを使用する事が大きな利益になると考えています。しかし、我々はまだ従来のリレーショナルデータベースが多くのアプリケーションに有益な事もわかっています。この目的のために、これらの機能を統合しリレーショナルデータベースを使用するために必要な大規模なサブセットをLithium0.7に実装しました。現時点ではMySQLがテストに合格した唯一のデータベース（`SourceTest`）ですが、基盤部分はSQLite3、PostgreSQLなどのその他のデータベースにも適用できます。すでにMSSQLの作業は進行中で、[<a href="http://rad-dev.org/li3_mssql/wiki">li3_mssql</a>プラグインとして進行中]（http://rad-dev.org/li3_mssql/wiki）、もちろんこのデータベースや他のデータベース実装へのコントリビューションは大歓迎です。<br />
また、SQLをサポートする為に`Adaptable`クラスに計画的な実装をLithium0.7で追加しました。計画はどのようにデータが転送され、アダプタに適用される変更を抽象化して提供します。たとえば、あなたが`Cache::write()`を使用してデータを保存し、`Cache::read()`てデータを取り出したいとします。この機能は、コアに含まれている`Serializer`という計画を通じて簡単に実現できます。`Cache`アダプタに対するインターフェイスは`Base64`、`Json`、`Serializer`が実装済みです。また`Adaptable`のそのほかのサブクラスに対するストラテジーは実装中です。<br />
<a href="http://rad-dev.org/lithium/wiki/releases/0_7">ChangeLog</a>を見てもらえれば（http://rad-dev.org/lithium/wiki/releases/0_7）、g11nのいくつかの大きな改善とテストのカバレッジの向上がした事がわかるでしょう。<br />
いくつかの名前空間とブートストラップのプロセスは、アプリケーションのコア機能を委任しやすいように改良されました。いくつかの変更は、以前のリリースとの互換性がありません：</p>
<ul>
<li>Dispatcher::run() `Request`オブジェクトが最初のパラメータとして必要になりました。`webroot/index.php`を見てください。</li>
<li>プラグインをすぐに他のライブラリと同じようにできます。app/libraries内の&#8221;plugins&#8221;ディレクトリが削除されています。現在はプラグインの追加はライブラリの追加と同じように行います。例 `Libraries::add(&#8216;li3=docs&#8217;);`</li>
<li>新しいBootstrapファイルと`bootstrap/action.php`の代替の`switchboard.php`の除去。</li>
<li>bootstrap/libraries.php内の `Libraries::Add(&#8216;app&#8217;, array(&#8216;default&#8217; => true));` はあなたのアプリケーションを &#8216;default&#8217; ライブラリとして提供します。</li>
<li>`Connections` はconnections.phpを読み込まなくなりました。有効にするには`config/bootstrap.php`で設定してください。</li>
<li>`Connections::add()の`は現在2つのパラメータを受け取ります。`config/bootstrap/connections.php`を参照してください。</li>
</ul>
<p>PHP 5.3およびLithiumに関する2時間のプレゼンテーションをここで読めます。（音声あり）：<a href="http://lithify.me/presents">http://lithify.me/presents</a><br />
我々は、高速開発のスケジュールをイテレーションフライデーと共に進めてきました。私たちは減速するつもりはありません。予定どおり安定版は2010の初夏にリリースできるでしょう。<br />
うまくいけば、このプロジェクトの成功はプロジェクトに関わる全ての人にとってエキサイティングなニュースになるでしょう。いつものように、われわれはどんな形のコントリビューションも大歓迎で待っています。<br />
〜gwoo</p>
<p>&#8211;翻訳ここまで</p>
<p>MySQLなどの従来型のデータベースがサポートされましたが、ドキュメント指向データベースこそが高速で柔軟なアプリケーション開発をもたらすという強い意志が伝わってきます。かつてCakePHPなどが流行り始めた際はDRYなフレームワークこそが高速開発を実現する事を世の中に示したと言えますが、時代は次のステップに向かっていますね。Lithiumは単なる新しいフレームワークではなく、こういったパラダイムシフトを提唱しようとしている事が特に大事な点だと個人的には考えています。<br />
またCakeやsymfonyなどの近代的なフレームワークではプラグインなどを利用した拡張が提供されていますが、なかなか共通部分をプラグインに切り出せないという問題にはまりがちです。その点を考慮してか次世代のフレームワークでは実装そのものとプラグインの境界線が薄くなる方向へと進んでいます。アプリケーション自体をプラグインとして実装するとイメージすると近いかもしれません。</p>
<p>なんにせよこのパラダイムを体感するには実際に試してみるのが一番でしょう！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/309/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.archive.org/download/lithium-ocphp/gwoo.mp3" length="103567386" type="audio/mpeg" />
		</item>
		<item>
		<title>Lithium0.6リリースノート 和訳</title>
		<link>http://blog.candycane.jp/archives/285</link>
		<comments>http://blog.candycane.jp/archives/285#comments</comments>
		<pubDate>Wed, 17 Feb 2010 05:23:55 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[Lithium]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=285</guid>
		<description><![CDATA[PHP5.3以降専用の先進的フレームワーク、Lithiumの0.6がリリースされました。(Lithiumの基本情報はこちらの記事をどうぞ) 良好な開発体制に支えられて安定版のリリースに向けて着実にプロジェクトが進行しているようです。 いつものようにリリースノートを和訳しました。 今回は2009年10月に来日したJoelがリリースノートを記述していますね。 原文 http://rad-dev.org/lithium/wiki/blog/Lithium_0_6_Big_Improvements_A_Brewin Lithium0.6：大きな改良の醸造 過去3週間のタイムラインをご覧になっていたのであれば、安定版にむけたLithiumの活動が押し寄せている事にお気付きでしょう。 Lithium-0.6 では後方互換性のないいくつかの変更があります。： 新しい最上位レベルの名前空間、`\lithium\net` が作成され、`\lithium\util\Socket`、`\lithium\util\Socket\*`、`\lithium\http` がこの新しい名前空間の下に移動しました。 アプリケーションレベルのブートストラップ設定ディレクトリを `\app\ config\bootstrap` に作成。これはあなたにあなたのブートストラップシーケンスをより小さく、論理的な塊に分割することができます。そしてこれらはすべて、自動的にロードされます。 すべてのプラットフォーム用のコンソール出力にカラー表示をサポート。POSIX互換性のあるエスケープ文字をサポートします。 ほとんどの`li3`コマンド（`test` コマンドも含まれ、、テスト結果を緑赤で表現）で重要な情報をハイライトされカラーで出力されます。 テンプレート層の完全な見直しを行いました。カスタムストリームクラスは今後はレンダリングに使用されません。APCとうまく動作するテンプレート層の為です。ビューテンプレートはコンパイルされて `app/resources/tmp/cache/templates/`に格納されるようになりました。古いバージョンからアップデートを行う場合は、このフォルダパスが存在している事を確認してください。 マイナーなキャッシュの愛をLibrariesを `app/config/bootstrap\cache.php`。(ロスのないフィルタとして) 適切なロケールをアクション、コンソールへのリクエストから検出する機能の追加 G11nの環境設定を一元的および世界的に有効なロケールの切り替えの導入。 g11nのいくつかの名前とメソッドのシグネチャを、より合理的なAPIに変更しました。 `Cache`アダプタのほとんどのAPIの変更： MemcaceとAPCキャッシュアダプタでのマルチキーのサポート(どのメソッドがこの機能をサポートするかはドキュメントを見てください)。 `Cache::write()`からのキー生成時の不要な&#8217;\_expires&#8217;キーの削除。今後はキャッシュキーを汚染しません。 改善されたドキュメントとテストなど。 Lithiumのハッキングから離れて、我々はいくつかの非常に有用なフィルタシステムのユースケースを管理しました： [プロファイリング]（http://pastium.org/view/cc7b5d11ced0c4e2ad8cf25227b0bd96用） [xhprof]（http://pecl.php.net/package/xhprof）を使用する。 コンテンツの配信（http://pastium.org/view/e6d0c0cc88010822cb58a7fc4b7a6014） （画像、スタイルシートなど）のプラグインからなど。 上記のような基本的な変更がありましたが、Lithiumのコア部分は確かな状態です。さらに新たな機能は毎日のように追加されています。われわれはフィニッシュライン中間地点より先を通過し、勢いはさらに増しています。 *[変更履歴]（http://rad-dev.org/lithium/wiki/releases/0_6） *[ダウンロード 0.6]（http://rad-dev.org/lithium/versions） 最新の開発状況は[Rad-Dev]（http://rad-dev.org/lithium）をご覧ください。[APIドキュメント]（http://lithify.me/docs）、IRCチャンネルは`irc.freenode.net`上の`＃li3`と`＃li3-core`です。 〜jperras &#8212;訳ここまで 国際化対応やビュー、コンソールのカラー表示など出力系の変更が多く入っているようですね。ビュー層の変更がどのようにＡＰＣを考慮しているかなどは実際に動かしてみながらみるのがよいでしょうか。次回のリリース(3/8)ではMySQLやキュー、初期画面などが追加・改良されるようです。ますます楽しみですね。 Lithiumに関する過去の記事]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_.png"><img src="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_-300x90.png" alt="designall.dll" title="designall.dll" width="300" height="90" class="alignnone size-medium wp-image-188" /></a></p>
<p>PHP5.3以降専用の先進的フレームワーク、Lithiumの0.6がリリースされました。(Lithiumの基本情報は<a href="http://blog.candycane.jp/archives/261">こちらの記事</a>をどうぞ)<br />
良好な開発体制に支えられて安定版のリリースに向けて着実にプロジェクトが進行しているようです。</p>
<p>いつものようにリリースノートを和訳しました。<br />
今回は2009年10月に来日したJoelがリリースノートを記述していますね。</p>
<h3>原文</h3>
<p><a href="http://rad-dev.org/lithium/wiki/blog/Lithium_0_6_Big_Improvements_A_Brewin">http://rad-dev.org/lithium/wiki/blog/Lithium_0_6_Big_Improvements_A_Brewin</a></p>
<h3>Lithium0.6：大きな改良の醸造</h3>
<p>過去3週間のタイムラインをご覧になっていたのであれば、安定版にむけたLithiumの活動が押し寄せている事にお気付きでしょう。<br />
Lithium-0.6 では後方互換性のないいくつかの変更があります。：</p>
<ul>
<li>新しい最上位レベルの名前空間、`\lithium\net` が作成され、`\lithium\util\Socket`、`\lithium\util\Socket\*`、`\lithium\http` がこの新しい名前空間の下に移動しました。</li>
<li>アプリケーションレベルのブートストラップ設定ディレクトリを `\app\ config\bootstrap` に作成。これはあなたにあなたのブートストラップシーケンスをより小さく、論理的な塊に分割することができます。そしてこれらはすべて、自動的にロードされます。</li>
<li>すべてのプラットフォーム用のコンソール出力にカラー表示をサポート。POSIX互換性のあるエスケープ文字をサポートします。</li>
<li>ほとんどの`li3`コマンド（`test` コマンドも含まれ、、テスト結果を緑赤で表現）で重要な情報をハイライトされカラーで出力されます。</li>
<li>テンプレート層の完全な見直しを行いました。カスタムストリームクラスは今後はレンダリングに使用されません。APCとうまく動作するテンプレート層の為です。ビューテンプレートはコンパイルされて `app/resources/tmp/cache/templates/`に格納されるようになりました。古いバージョンからアップデートを行う場合は、このフォルダパスが存在している事を確認してください。</li>
<li>マイナーなキャッシュの愛をLibrariesを `app/config/bootstrap\cache.php`。(ロスのないフィルタとして)</li>
<li>適切なロケールをアクション、コンソールへのリクエストから検出する機能の追加</li>
<li>G11nの環境設定を一元的および世界的に有効なロケールの切り替えの導入。</li>
<li>g11nのいくつかの名前とメソッドのシグネチャを、より合理的なAPIに変更しました。
<li>
<li>`Cache`アダプタのほとんどのAPIの変更：
<ul>
<li>MemcaceとAPCキャッシュアダプタでのマルチキーのサポート(どのメソッドがこの機能をサポートするかはドキュメントを見てください)。</li>
<li>`Cache::write()`からのキー生成時の不要な&#8217;\_expires&#8217;キーの削除。今後はキャッシュキーを汚染しません。</li>
</ul>
</li>
<li>改善されたドキュメントとテストなど。</li>
</ul>
<p>Lithiumのハッキングから離れて、我々はいくつかの非常に有用なフィルタシステムのユースケースを管理しました：<br />
<uｌ></p>
<li>[プロファイリング]（http://pastium.org/view/cc7b5d11ced0c4e2ad8cf25227b0bd96用） [xhprof]（http://pecl.php.net/package/xhprof）を使用する。</li>
<li>コンテンツの配信（http://pastium.org/view/e6d0c0cc88010822cb58a7fc4b7a6014） （画像、スタイルシートなど）のプラグインからなど。</li>
</ul>
<p>上記のような基本的な変更がありましたが、Lithiumのコア部分は確かな状態です。さらに新たな機能は毎日のように追加されています。われわれはフィニッシュライン中間地点より先を通過し、勢いはさらに増しています。<br />
*[変更履歴]（http://rad-dev.org/lithium/wiki/releases/0_6）<br />
*[ダウンロード 0.6]（http://rad-dev.org/lithium/versions）<br />
最新の開発状況は[Rad-Dev]（http://rad-dev.org/lithium）をご覧ください。[APIドキュメント]（http://lithify.me/docs）、IRCチャンネルは`irc.freenode.net`上の`＃li3`と`＃li3-core`です。</p>
<p>〜jperras</p>
<p>&#8212;訳ここまで</p>
<p>国際化対応やビュー、コンソールのカラー表示など出力系の変更が多く入っているようですね。ビュー層の変更がどのようにＡＰＣを考慮しているかなどは実際に動かしてみながらみるのがよいでしょうか。次回のリリース(3/8)ではMySQLやキュー、初期画面などが追加・改良されるようです。ますます楽しみですね。</p>
<p><a href="http://blog.candycane.jp/archives/tag/lithium">Lithiumに関する過去の記事</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/285/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lithium0.5がリリースされました！(和訳)</title>
		<link>http://blog.candycane.jp/archives/269</link>
		<comments>http://blog.candycane.jp/archives/269#comments</comments>
		<pubDate>Mon, 01 Feb 2010 02:48:14 +0000</pubDate>
		<dc:creator>yandod</dc:creator>
				<category><![CDATA[ブログ]]></category>
		<category><![CDATA[Lithium]]></category>
		<category><![CDATA[和訳]]></category>

		<guid isPermaLink="false">http://blog.candycane.jp/?p=269</guid>
		<description><![CDATA[最も軽量で拡張性に優れたフレームワーク、Lithiumのバージョン0.5がリリースされました。1.0リリースに向けて折り返し地点と言った所ですね。リリースの速度が速すぎて翻訳する方もちょっと大変ですが、喜ばしいニュースですのでお伝えしたいと思います。 原文 http://rad-dev.org/lithium/wiki/blog/Lithium_0_5_half_way_there Lithium 0.5, half way there. Lithiumチームはバージョン0.5のリリースを喜んでお知らせします バージョン番号から見ると、我々はLithiumの最初の安定版に向けた折り返し地点にいます。Lithiumチームは着実な3週間毎のリリースを続けます。またイテレーション・フライデーが助けになるでしょう。 このリリースにはいくつかの新機能が含まれます: apps/plugins/extensions を管理するライブラリコマンド モデル、コントローラー、テストをコード生成する為のコマンド 一般的な利用の為の国際化されたバリデータ 柔軟性とメンテナンス性向上の為のブートストラップの整理 アダプタ化可能な認証API ビューエレメントのレンダリング 更なるドキュメント 更なるテスト Lithiumは実際のところかなり安定していていくつかのエキサイティングな機能を含んでいます。MongoDBかCouchDBを使ってアプリケーションを開発する準備は出来ています。しかしあなたがORマッパを必要としているなら、Doctrine用のプラグインがあります。あるいはLithium上で実装されるリリースまで待たなければいけません。エクステンションやヘルパーの作成は本当にシンプルで他のフレームワークからの移植すらも簡単にできます。createコマンドを使ってコード生成をすれば開発を素早く立ち上げられるでしょう。 Lithiumチームは0.5と合わせてその他の更新をお知らせします 私たちは新居を見つけました: http://lithify.me lab.lithify.meのプレリリース。LaboratoryとLibraryコマンドはLithiumをプラグインを通じて拡張するという目的の一部です。 li3_lab プラグインによってサーバーから提供されるプラグイン・エクステンションを統合し、アプリケーション間でのコードの再利用と共有を容易にします。Libraryコマンドはアプリケーションやプラグインを圧縮・展開出来ます。またプロジェクトを始める為の基本となるアーカイブも添付しました。詳細は li3 help Library でご覧ください。 Lithiumワールドの動きは速く、さらに力強くなっていきます。お見逃しなく！ ~gwoo &#8212;訳ここまで Lithiumのリリースが3週間毎であることが明言されました。これは前回紹介したイテレーション・フライデーで開発が着実に進んでいるとみてよいでしょう。RDBを利用するのであればDoctrineを利用するのが良いですが、MongoDBやCouchDBを使ってアプリケーションを開発するのであれば問題はないようです。実際に開発チームが運用しているアプリケーションはMongoDBやCouchDBばかりなので安定度が高まるのも当然と言えます。コードの圧縮展開などを実現するコマンドラインの進歩も目覚ましいですね。 次回のリリースは2/15ということで、試すのであればお早目に！]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_.png"><img src="http://blog.candycane.jp/wp-content/uploads/2009/12/designall.dll_-300x90.png" alt="designall.dll" title="designall.dll" width="300" height="90" class="alignnone size-medium wp-image-188" /></a></p>
<p>最も軽量で拡張性に優れたフレームワーク、Lithiumのバージョン0.5がリリースされました。1.0リリースに向けて折り返し地点と言った所ですね。リリースの速度が速すぎて翻訳する方もちょっと大変ですが、喜ばしいニュースですのでお伝えしたいと思います。</p>
<h3>原文</h3>
<p><a href="http://rad-dev.org/lithium/wiki/blog/Lithium_0_5_half_way_there">http://rad-dev.org/lithium/wiki/blog/Lithium_0_5_half_way_there</a></p>
<h3>Lithium 0.5, half way there.</h3>
<h4><strong>Lithiumチームはバージョン0.5のリリースを喜んでお知らせします</strong></h4>
<p>バージョン番号から見ると、我々はLithiumの最初の安定版に向けた折り返し地点にいます。Lithiumチームは着実な3週間毎のリリースを続けます。またイテレーション・フライデーが助けになるでしょう。</p>
<p>このリリースにはいくつかの新機能が含まれます:</p>
<ul>
<li>apps/plugins/extensions を管理するライブラリコマンド</li>
<li>モデル、コントローラー、テストをコード生成する為のコマンド</li>
<li>一般的な利用の為の国際化されたバリデータ</li>
<li>柔軟性とメンテナンス性向上の為のブートストラップの整理</li>
<li>アダプタ化可能な認証API</li>
<li>ビューエレメントのレンダリング</li>
<li>更なるドキュメント</li>
<li>更なるテスト
<li>
</ul>
<p>Lithiumは実際のところかなり安定していていくつかのエキサイティングな機能を含んでいます。MongoDBかCouchDBを使ってアプリケーションを開発する準備は出来ています。しかしあなたがORマッパを必要としているなら、Doctrine用のプラグインがあります。あるいはLithium上で実装されるリリースまで待たなければいけません。エクステンションやヘルパーの作成は本当にシンプルで他のフレームワークからの移植すらも簡単にできます。createコマンドを使ってコード生成をすれば開発を素早く立ち上げられるでしょう。</p>
<h4><strong>Lithiumチームは0.5と合わせてその他の更新をお知らせします</strong></h4>
<ul>
<li>私たちは新居を見つけました: <a href="http://lithify.me">http://lithify.me</a></li>
<li><a href="http://lab.lithify.me">lab.lithify.me</a>のプレリリース。LaboratoryとLibraryコマンドはLithiumをプラグインを通じて拡張するという目的の一部です。 <a href="http://rad-dev.org/li3_lab">li3_lab プラグイン</a>によってサーバーから提供されるプラグイン・エクステンションを統合し、アプリケーション間でのコードの再利用と共有を容易にします。Libraryコマンドはアプリケーションやプラグインを圧縮・展開出来ます。またプロジェクトを始める為の基本となるアーカイブも添付しました。詳細は <em>li3 help Library</em> でご覧ください。
<li>
</ul>
<p>Lithiumワールドの動きは速く、さらに力強くなっていきます。お見逃しなく！<br />
~gwoo</p>
<p>&#8212;訳ここまで</p>
<p>Lithiumのリリースが3週間毎であることが明言されました。これは前回紹介したイテレーション・フライデーで開発が着実に進んでいるとみてよいでしょう。RDBを利用するのであればDoctrineを利用するのが良いですが、MongoDBやCouchDBを使ってアプリケーションを開発するのであれば問題はないようです。実際に開発チームが運用しているアプリケーションはMongoDBやCouchDBばかりなので安定度が高まるのも当然と言えます。コードの圧縮展開などを実現するコマンドラインの進歩も目覚ましいですね。</p>
<p>次回のリリースは2/15ということで、試すのであればお早目に！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.candycane.jp/archives/269/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

