<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
   <channel>
      <title>CakePHP Super Feed</title>
      <description>Latest posts from blogosphere about CakePHP</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=UvxgjXa03BG245KdxQnzeQ</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run?_id=UvxgjXa03BG245KdxQnzeQ&amp;_render=rss&amp;page=2" />
      <pubDate>Thu, 09 Feb 2012 05:53:54 +0000</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/cakephp" /><feedburner:info uri="cakephp" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
         <title>View inheritance in CakePHP</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/f-BSYGrctyI/view-inheritance-in-cakephp</link>
         <description>One of the new features in CakePHP 2.1 I am excited about are view blocks and view inheritance.  Both are concepts borrowed from Jinja2 and other templating systems.  Template inheritance allows you to create skeleton views, and define blocks to populate that skeleton in a child template.</description>
         <guid isPermaLink="false">http://mark-story.com/posts/view/view-inheritance-in-cakephp?utm_source=rss</guid>
         <pubDate>Sun, 29 Jan 2012 04:28:26 +0000</pubDate>
      <feedburner:origLink>http://mark-story.com/posts/view/view-inheritance-in-cakephp?utm_source=rss</feedburner:origLink></item>
      <item>
         <title>Testing node.js modules with Travis CI</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/jmoVOcHTvpQ/testing-node-js-modules-with-travis-ci:4ec62298-aec4-4ee3-8b5a-2c96cbdd56cb</link>
         <description>&lt;p&gt;You have written a node.js module lately? It has a test suite? &lt;a rel="nofollow" target="_blank" href="http://www.youtube.com/watch?v=2Z4m4lnjxkY"&gt;Awesome&lt;/a&gt;! Time
to get yourself a nerd badge of honor:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://debuggable.com.s3.amazonaws.com/blog/2011/build-passing.png" alt="build passing"/&gt;&lt;/p&gt;

&lt;p&gt;But hang on nerdy warrior, this precious award has to be earned. So go ahead and
check out the sweetness that is &lt;a rel="nofollow" target="_blank" href="http://travis-ci.org"&gt;Travis CI&lt;/a&gt;. Travis is an open
source, free to use, continuous integration server. Initially it was just
building ruby stuff, but these days it supports a ton of other languages,
including node.js.&lt;/p&gt;

&lt;p&gt;And luckily, getting travis to run your tests on every GitHub push is really
easy as well:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Go to &lt;a rel="nofollow" target="_blank" href="http://travis-ci.org"&gt;Travis&lt;/a&gt; and login/connect with your GitHub account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Hover over your name on the top right, and select "Profile" from the
dropdown.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; You should see all your GitHub projects. Flip the "Off" switch to
"On" for a node.js project you want to use with travis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Add a .travis.yml file to your project with the following:&lt;/p&gt;

&lt;pre class="terminal"&gt;
language: node_js
node_js:
  - 0.4
  - 0.6
&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Make sure your package.json has something like this:&lt;/p&gt;

&lt;p&gt;&lt;div class="clear"&gt;&lt;/div&gt;&lt;div class="code debuggable_sh_js" style="white-space:nowrap;"&gt;
&lt;span class="st0"&gt;&amp;quot;scripts&amp;quot;&lt;/span&gt;: &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;test&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;make test&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Git push, and watch travis building your project on the home screen!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7:&lt;/strong&gt; Assuming your tests are passing, it is time to get your badge of
honor. Adding it to your GitHub Readme.md is as simple as:&lt;/p&gt;

&lt;pre class="terminal"&gt;
[![Build Status](https://secure.travis-ci.org/&amp;lt;GITHUB_USER&amp;gt;/&amp;lt;REPO_NAME&amp;gt;.png)](http://travis-ci.org/&amp;lt;GITHUB_USER&amp;gt;/&amp;lt;REPO_NAME&amp;gt;)
&lt;/pre&gt;

&lt;p&gt;If you want to see an example of what this looks like, and you also happen to
be in the market for some no-bullshit testing tools, check out my new libs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="https://github.com/felixge/node-utest"&gt;utest&lt;/a&gt;: The minimal unit testing library.&lt;/li&gt;
&lt;li&gt;&lt;a rel="nofollow" target="_blank" href="https://github.com/felixge/node-urun"&gt;urun&lt;/a&gt;: The minimal test runner.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's it. And in case you are not excited enough yet, go and check out the
&lt;a rel="nofollow" target="_blank" href="http://about.travis-ci.org/docs/"&gt;Travis Docs&lt;/a&gt; to discover additional goodies like how to work with
databases, etc.&lt;/p&gt;

&lt;p&gt;--fg&lt;/p&gt;

&lt;p&gt;&lt;img style="display:none;" src="http://www.debuggable.com/posts/tick/4ec62298-aec4-4ee3-8b5a-2c96cbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/5CCvK7dGmiU" height="1" width="1"/&gt;</description>
         <author>felix@debuggable.com</author>
         <guid isPermaLink="false">http://www.debuggable.com/posts/testing-node-js-modules-with-travis-ci:4ec62298-aec4-4ee3-8b5a-2c96cbdd56cb</guid>
         <pubDate>Fri, 18 Nov 2011 09:17:12 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/thinkingphp/~3/kNNjrYO-Kas/testing-node-js-modules-with-travis-ci:4ec62298-aec4-4ee3-8b5a-2c96cbdd56cb</feedburner:origLink></item>
      <item>
         <title>Installing multiple versions of PHP from source</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/svW_bSI_tQU/installing-multiple-versions-of-php-from-source</link>
         <description>With the recent release of PHP 5.4-RC1, I wanted to give it a spin and make sure there weren’t any upcoming issues for CakePHP.  I recently saw a great article from Derick Rethans on getting PHP setup from an SVN checkout.</description>
         <guid isPermaLink="false">http://mark-story.com/posts/view/installing-multiple-versions-of-php-from-source?utm_source=rss</guid>
         <pubDate>Mon, 14 Nov 2011 02:56:55 +0000</pubDate>
      <feedburner:origLink>http://mark-story.com/posts/view/installing-multiple-versions-of-php-from-source?utm_source=rss</feedburner:origLink></item>
      <item>
         <title>R.I.P. Cake-toppings blog</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/tKWU4BP-d_4/</link>
         <description>Hi all, It has been a long time&amp;#8230; As I am moving more and more from backend to frontend stuff and a lot of people/blogs are writing about Cake I thought my blog could be shutdown. If you want to take over the domain or just want to have the admin rights of this blog [...]</description>
         <guid isPermaLink="false">http://www.cake-toppings.com/?p=354</guid>
         <pubDate>Fri, 11 Nov 2011 10:37:13 +0000</pubDate>
         <category>Cake-Toppings</category>
      <feedburner:origLink>http://www.cake-toppings.com/2011/11/11/r-i-p-cake-toppings-blog/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=r-i-p-cake-toppings-blog</feedburner:origLink></item>
      <item>
         <title>Using bcrypt for passwords in CakePHP</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/J7mDzyC5Vjs/using-bcrypt-for-passwords-in-cakephp</link>
         <description>CakePHP uses salted sha1 hashes for passwords by default, and has for a while.  There has been some talk on the mailing list lately of switching the default hashing to something more secure, such as bcrypt.  I think this is a great idea, and will find its way into CakePHP in a future release. Providing a reasonanle upgrade experience is the biggest problem to solve, if the default hashing strategy was to change.</description>
         <guid isPermaLink="false">http://mark-story.com/posts/view/using-bcrypt-for-passwords-in-cakephp?utm_source=rss</guid>
         <pubDate>Mon, 26 Sep 2011 01:26:03 +0000</pubDate>
      <feedburner:origLink>http://mark-story.com/posts/view/using-bcrypt-for-passwords-in-cakephp?utm_source=rss</feedburner:origLink></item>
      <item>
         <title>CakeFest 2011 slides posted</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/WIklrS4GU5g/cakefest-2011-slides-posted</link>
         <description>In case you were not able to attend CakeFest 2011.  I’ve posted my slides up on slideshare.  The event was a great success.  Thanks to Graham for organizing the event and to all the attendees.  Its great to meet the community and put faces and names to irc handles and mailing list email addresses.</description>
         <guid isPermaLink="false">http://mark-story.com/posts/view/cakefest-2011-slides-posted?utm_source=rss</guid>
         <pubDate>Sun, 18 Sep 2011 15:26:04 +0000</pubDate>
      <feedburner:origLink>http://mark-story.com/posts/view/cakefest-2011-slides-posted?utm_source=rss</feedburner:origLink></item>
      <item>
         <title>Bridal Walima Dresses</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/Blj6nOb0ic4/bridal-walima-dresses.html</link>
         <description>Need an idea about your walima dress? Here are some pretty looking bridal walima dresses. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bridal Walima Dresses&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://4.bp.blogspot.com/-piMSVwbhG6s/TmzQ35xWueI/AAAAAAAAAZw/IaygNo0supo/s1600/bridal-walima-dresses-4.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:198px;height:320px;" src="http://4.bp.blogspot.com/-piMSVwbhG6s/TmzQ35xWueI/AAAAAAAAAZw/IaygNo0supo/s320/bridal-walima-dresses-4.jpg" alt="" id="BLOGGER_PHOTO_ID_5651121291262343650" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bridal Walima Dresses&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://2.bp.blogspot.com/-UjelZmOAVAI/TmzQ3myFIUI/AAAAAAAAAZo/Qp9AKZ0RHZk/s1600/bridal-walima-dresses-3.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:217px;height:320px;" src="http://2.bp.blogspot.com/-UjelZmOAVAI/TmzQ3myFIUI/AAAAAAAAAZo/Qp9AKZ0RHZk/s320/bridal-walima-dresses-3.jpg" alt="" id="BLOGGER_PHOTO_ID_5651121286165111106" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bridal Walima Dresses&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://2.bp.blogspot.com/-QGUX7nYJ_A0/TmzQ3ayuXdI/AAAAAAAAAZg/j3xN9knLoo0/s1600/bridal-walima-dresses-2.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:239px;height:320px;" src="http://2.bp.blogspot.com/-QGUX7nYJ_A0/TmzQ3ayuXdI/AAAAAAAAAZg/j3xN9knLoo0/s320/bridal-walima-dresses-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5651121282946588114" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bridal Walima Dresses&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://2.bp.blogspot.com/-n7FLdncYI_w/TmzQ3HgzHFI/AAAAAAAAAZY/t59JImmWW48/s1600/bridal-walima-dresses.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:320px;height:214px;" src="http://2.bp.blogspot.com/-n7FLdncYI_w/TmzQ3HgzHFI/AAAAAAAAAZY/t59JImmWW48/s320/bridal-walima-dresses.jpg" alt="" id="BLOGGER_PHOTO_ID_5651121277771127890" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bridal Walima Dresses&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://4.bp.blogspot.com/-_odaymqAJdU/TmzQ361y9FI/AAAAAAAAAZ4/i-i1xrNHfaE/s1600/bridal-walima-dresses-5.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:213px;height:320px;" src="http://4.bp.blogspot.com/-_odaymqAJdU/TmzQ361y9FI/AAAAAAAAAZ4/i-i1xrNHfaE/s320/bridal-walima-dresses-5.jpg" alt="" id="BLOGGER_PHOTO_ID_5651121291549406290" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bridal Walima Dresses&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7182042109583400841-7034512022466315931?l=movingtocake.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Hina Jalil)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7182042109583400841.post-7034512022466315931</guid>
         <pubDate>Sun, 11 Sep 2011 15:13:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://4.bp.blogspot.com/-piMSVwbhG6s/TmzQ35xWueI/AAAAAAAAAZw/IaygNo0supo/s72-c/bridal-walima-dresses-4.jpg" width="72" />
      <feedburner:origLink>http://movingtocake.blogspot.com/2011/09/bridal-walima-dresses.html</feedburner:origLink></item>
      <item>
         <title>Pakistani Walima Dresses</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/xTBn5HOzWN4/pakistani-walima-dresses.html</link>
         <description>Here are some more Pakistani Walima dresses. Do share with us your comments about these.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Pakistani Walima Dresses&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://4.bp.blogspot.com/-yYRTAabv7FA/TmzNRrhzWxI/AAAAAAAAAZI/Ht6tuKhOCmg/s1600/Pakistani-Walima-Dresses-4.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:208px;height:320px;" src="http://4.bp.blogspot.com/-yYRTAabv7FA/TmzNRrhzWxI/AAAAAAAAAZI/Ht6tuKhOCmg/s320/Pakistani-Walima-Dresses-4.jpg" alt="" id="BLOGGER_PHOTO_ID_5651117336069102354" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Pakistani Walima Dresses&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://2.bp.blogspot.com/-XSobLbaxVU0/TmzNRruZd5I/AAAAAAAAAZA/KWzfFH7_aRU/s1600/Pakistani-Walima-Dresses-3.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:203px;height:320px;" src="http://2.bp.blogspot.com/-XSobLbaxVU0/TmzNRruZd5I/AAAAAAAAAZA/KWzfFH7_aRU/s320/Pakistani-Walima-Dresses-3.jpg" alt="" id="BLOGGER_PHOTO_ID_5651117336121931666" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Pakistani Walima Dresses&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://3.bp.blogspot.com/-kJ-tNNc2_xI/TmzNRb77ZdI/AAAAAAAAAY4/yXmRAuZXQAI/s1600/Pakistani-Walima-Dresses-2.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:214px;height:320px;" src="http://3.bp.blogspot.com/-kJ-tNNc2_xI/TmzNRb77ZdI/AAAAAAAAAY4/yXmRAuZXQAI/s320/Pakistani-Walima-Dresses-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5651117331883714002" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Pakistani Walima Dresses&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://3.bp.blogspot.com/-NH4rHpGJcvE/TmzNRUZv_VI/AAAAAAAAAYw/URmxCL2SmUM/s1600/Pakistani-Walima-Dresses.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:168px;height:300px;" src="http://3.bp.blogspot.com/-NH4rHpGJcvE/TmzNRUZv_VI/AAAAAAAAAYw/URmxCL2SmUM/s320/Pakistani-Walima-Dresses.jpg" alt="" id="BLOGGER_PHOTO_ID_5651117329861311826" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Pakistani Walima Dresses&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://1.bp.blogspot.com/-VHLQxn40wBs/TmzNRx5PuGI/AAAAAAAAAZQ/OvzmPFA6ABo/s1600/Pakistani-Walima-Dresses-5.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:320px;height:223px;" src="http://1.bp.blogspot.com/-VHLQxn40wBs/TmzNRx5PuGI/AAAAAAAAAZQ/OvzmPFA6ABo/s320/Pakistani-Walima-Dresses-5.jpg" alt="" id="BLOGGER_PHOTO_ID_5651117337778042978" border="0"/&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7182042109583400841-8462581741013251288?l=movingtocake.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Hina Jalil)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7182042109583400841.post-8462581741013251288</guid>
         <pubDate>Sun, 11 Sep 2011 14:58:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://4.bp.blogspot.com/-yYRTAabv7FA/TmzNRrhzWxI/AAAAAAAAAZI/Ht6tuKhOCmg/s72-c/Pakistani-Walima-Dresses-4.jpg" width="72" />
      <feedburner:origLink>http://movingtocake.blogspot.com/2011/09/pakistani-walima-dresses.html</feedburner:origLink></item>
      <item>
         <title>Walima Dresses For Bride</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/DLnZ_euWjT0/walima-dresses-for-bride.html</link>
         <description>Looking for the bridal dresses for Walima? Here are some elegant and gorgeous Walima dresses for brides. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Walima Dresses For Bride&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://4.bp.blogspot.com/-O1d1cR_4mbw/TmzLJ1k6llI/AAAAAAAAAYg/Z2p5OQV5l_M/s1600/walima-dress-for-bride-3.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:220px;height:320px;" src="http://4.bp.blogspot.com/-O1d1cR_4mbw/TmzLJ1k6llI/AAAAAAAAAYg/Z2p5OQV5l_M/s320/walima-dress-for-bride-3.jpg" alt="" id="BLOGGER_PHOTO_ID_5651115002304304722" border="0"/&gt;&lt;/a&gt;&lt;span style="font-weight:bold;"&gt;Walima Dresses For Bride&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://2.bp.blogspot.com/-vhucCKLrZ-Q/TmzLKOrL9SI/AAAAAAAAAYo/UPCUlWI_6t4/s1600/walima-dress-for-bride-4.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:155px;height:320px;" src="http://2.bp.blogspot.com/-vhucCKLrZ-Q/TmzLKOrL9SI/AAAAAAAAAYo/UPCUlWI_6t4/s320/walima-dress-for-bride-4.jpg" alt="" id="BLOGGER_PHOTO_ID_5651115009041495330" border="0"/&gt;&lt;/a&gt;&lt;span style="font-weight:bold;"&gt;Walima Dresses For Bride&lt;/span&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://4.bp.blogspot.com/-4_aMjz6Plb4/TmzLDqiLTOI/AAAAAAAAAYY/gYXFNbW06So/s1600/walima-dress-for-bride-2.jpg"&gt;&lt;img style="display:block;margin:0px auto 10px;text-align:center;cursor:pointer;cursor:hand;width:144px;height:320px;" src="http://4.bp.blogspot.com/-4_aMjz6Plb4/TmzLDqiLTOI/AAAAAAAAAYY/gYXFNbW06So/s320/walima-dress-for-bride-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5651114896260812002" border="0"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We will share more bridal dresses on this blog. So stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7182042109583400841-1095111681160041984?l=movingtocake.blogspot.com' alt=''/&gt;&lt;/div&gt;</description>
         <author>noreply@blogger.com (Hina Jalil)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7182042109583400841.post-1095111681160041984</guid>
         <pubDate>Sun, 11 Sep 2011 11:40:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://4.bp.blogspot.com/-O1d1cR_4mbw/TmzLJ1k6llI/AAAAAAAAAYg/Z2p5OQV5l_M/s72-c/walima-dress-for-bride-3.jpg" width="72" />
      <feedburner:origLink>http://movingtocake.blogspot.com/2011/09/walima-dresses-for-bride.html</feedburner:origLink></item>
      <item>
         <title>Private npm modules</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/eC6cBAuXDh0/private-npm-modules:4e68cc7d-1ac4-42d9-995a-343dcbdd56cb</link>
         <description>&lt;p&gt;Thanks to &lt;a rel="nofollow" target="_blank" href="http://twitter.com/#!/izs"&gt;Isaac&lt;/a&gt;, npm is getting more and more awesome by the hour. One of the
coolest &lt;a rel="nofollow" target="_blank" href="https://github.com/isaacs/npm/issues/1272"&gt;recent additions&lt;/a&gt; (you need at least v1.0.26) is the ability to specify
private git repositories urls as a dependency in your package.json files.&lt;/p&gt;

&lt;p&gt;At transloadit, we are currently using the feature to move some of our
infrastructure code into separate packages, allowing for those to be tested
and developed in isolation making our core application easier to maintain and
work on.&lt;/p&gt;

&lt;p&gt;The syntax for referencing a git repository (and commit) is as follows:&lt;/p&gt;

&lt;p&gt;&lt;div class="clear"&gt;&lt;/div&gt;&lt;div class="code debuggable_sh_js" style="white-space:nowrap;"&gt;
&lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span class="st0"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;my-app&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &lt;span class="st0"&gt;&amp;quot;dependencies&amp;quot;&lt;/span&gt;: &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;private-repo&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;git+ssh://git@github.com:my-account/node-private-repo.git#v0.0.1&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;&lt;/div&gt;

&lt;p&gt;This will include a private npm module called &lt;code&gt;"private-repo"&lt;/code&gt; from GitHub. The
url also contains an optional refspec (&lt;code&gt;#v0.0.1&lt;/code&gt;) that tells npm which branch,
commit, or in this case tag you want to have checked out.&lt;/p&gt;

&lt;p&gt;Now of course this is not the only way to do private npm repositories, but it
is much simpler than running your &lt;a rel="nofollow" target="_blank" href="https://github.com/isaacs/npm/blob/master/doc/registry.md"&gt;own registry&lt;/a&gt;, so I would recommend it to
most people.&lt;/p&gt;

&lt;p&gt;Before you head of to play with this, here is a final tip that may safe you
some headaches. In all your private npm modules, add &lt;code&gt;"private": true&lt;/code&gt; to your
package.json. This will make sure npm will never let you accidentally publish
your secret sauce to the official npm registry.&lt;/p&gt;

&lt;p&gt;Happy hacking,
--fg&lt;/p&gt;

&lt;p&gt;PS: When deploying, don't forget that you need to authorize the servers ssh key for the GitHub repository you are depending on.&lt;/p&gt;

&lt;p&gt;&lt;img style="display:none;" src="http://www.debuggable.com/posts/tick/4e68cc7d-1ac4-42d9-995a-343dcbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/zQw9Brh9gW4" height="1" width="1"/&gt;</description>
         <author>felix@debuggable.com</author>
         <guid isPermaLink="false">http://www.debuggable.com/posts/private-npm-modules:4e68cc7d-1ac4-42d9-995a-343dcbdd56cb</guid>
         <pubDate>Thu, 08 Sep 2011 14:18:26 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/thinkingphp/~3/r3vstvUu2IA/private-npm-modules:4e68cc7d-1ac4-42d9-995a-343dcbdd56cb</feedburner:origLink></item>
      <item>
         <title>Setting up Nginx and CakePHP 2.0</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/1kbv4JNICaA/</link>
         <description>Nginx is a pretty awesome web server (fast, and easy to configure&amp;#8230; at least I prefer the syntax over some other popular web servers). I figured to share the installation process of both CakePHP 2.0 and Nginx on Ubuntu 11.04 (Natty). Let&amp;#8217;s fire up the terminal&amp;#8230; (I presume you have some basic knowledge of *nix [...]</description>
         <guid isPermaLink="false">http://nuts-and-bolts-of-cakephp.com/?p=1328</guid>
         <pubDate>Fri, 26 Aug 2011 22:50:59 +0000</pubDate>
         <content:encoded><![CDATA[<p>Nginx is a pretty awesome web server (<a rel="nofollow" target="_blank" href="http://nuts-and-bolts-of-cakephp.com/2011/08/26/quick-comparison-of-nginx-and-apache/">fast</a>, and easy to configure&#8230; at least I prefer the syntax over some other popular web servers).</p>
<p>I figured to share the installation process of both CakePHP 2.0 and Nginx on Ubuntu 11.04 (Natty).</p>
<p>Let&#8217;s fire up the terminal&#8230; </p>
<p>(I presume you have some basic knowledge of *nix so I won&#8217;t go into details about the commands, etc.)</p>
<pre>
sudo apt-get install git
</pre>
<p>Next, let&#8217;s get a fresh version of cake 2:</p>
<pre>
cd /cake
sudo git clone https://github.com/cakephp/cakephp.git
sudo git checkout 2.0
sudo git pull
</pre>
<p>Git should tell us that we are &#8220;up-to-date&#8221;.</p>
<p>Alright, now we have to setup our environment.<br />
The best way I found of going about it (after trying quite a few methods out there) is by the running the excellent set of scripts, which you can <a rel="nofollow" target="_blank" href="https://github.com/vladgh/VladGh.com-LEMP">find here</a>.<br />
Pull the scripts from the git repo, in the similar way as shown above, into some reasonable local destination. Once you have the files locally, simply run: </p>
<pre>sudo ./install.sh</pre>
<p>After answering a few questions&#8230; our LEMP environment is ready!</p>
<p>Let&#8217;s see if Nginx is working as expected&#8230;<br />
In the browser head over to localhost, at least at the time of this writing, you get a <code>phpinfo()</code> page served up by default.</p>
<p>So we are satisfied that Nginx is serving up PHP and now it&#8217;s time to setup a CakePHP 2.0 app.<br />
When we&#8217;ve pulled CakePHP in the very beginning, it came with a skeleton app, which we will use for growing our new one.</p>
<p>Let&#8217;s copy it someplace easily accessible (assuming we are in the root of cake&#8230; you should see &#8220;app&#8221;, &#8220;vendors&#8221;, &#8220;lib&#8221; directories):</p>
<pre>sudo cp -r app /web/</pre>
<p>In order not to move cake anywhere, we&#8217;ll create a symbolic link to our lib.<br />
(Presuming we are now in the &#8220;/web&#8221; directory):</p>
<pre>sudo ln -s /cake/cakephp/lib lib</pre>
<p>So at this point we have php, web server, cake core, skeleton app, mysql all ready to go.<br />
The only remaining part is to tell the web server about our cake app. Similarly to Apache we can setup virtual hosts and rewrite rules in Nginx. I don&#8217;t know many details about setting up Nginx and all the rewrite rule tricks available, but as mentioned before, from the examples the syntax looks quite simple and one should be able to decipher the directives relatively easily.</p>
<p>&#8230; Being lazy and not wanting to go through the docs, I googled around and thanks to <a rel="nofollow" target="_blank" href="http://blog.getintheloop.eu/2008/4/17/nginx-engine-x-rewrite-rules-for-cakephp/">this post</a> it was quite fast to setup a virtual host for the app.</p>
<p>After the installation Nginx will have a setting file in:<br />
<code>/etc/nginx/sites-available/default</code><br />
(This particular set of installation steps is applicable to Ubuntu, but hopefully you&#8217;ll know how to achieve the same procedure in your own OS).</p>
<p>If we review the file quickly it seems like a solid starting point, but we need to have some rewrite rules for cake to make pretty-urls work.<br />
Well, once again thanks to aforementioned post, all we have to do is add the snippet below to our default config (hey, at least it&#8217;s working for me):</p>
<pre>
# rewrite rules for cakephp
  location / {
    root   /web/app/webroot;
    index  index.php index.html;
    try_files $uri $uri/ index.php;

    # If the file exists as a static file serve it
    # directly without running all
    # the other rewite tests on it
    if (-f $request_filename) {
      break;
    }
    if (!-f $request_filename) {
      rewrite ^/(.+)$ /index.php?url=$1 last;
      break;
    }
 }
</pre>
<p>The <code>root</code> setting is pointing to our app&#8217;s webroot, of course&#8230; which in trun becomes the root of the virtual host (let&#8217;s just use localhost for now, otherwise you&#8217;d need to take a few additional steps, but that&#8217;s beyond the scope of this post).<br />
Hopefully the code of the setting is not too hard to figure out.</p>
<p>So at this point we have a virtual host pointing to our app and all the settings in place, let&#8217;s restart the web server:</p>
<pre>
sudo /etc/init.d/nginx restart
</pre>
<p>&#8230; and if all goes well, once you visit localhost in your browser, you should see the CakePHP 2.0 welcome page.</p>]]></content:encoded>
      <feedburner:origLink>http://nuts-and-bolts-of-cakephp.com/2011/08/26/setting-up-nginx-and-cakephp-2-0/</feedburner:origLink></item>
      <item>
         <title>Quick comparison of Nginx and Apache</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/NJbA6Nkz1Us/</link>
         <description>This was a quick test as I was playing around with Nginx and CakePHP 2.0. The numbers were interesting, however. What I did: - Setup a virtual box with Windows host - OS: Ubuntu (Natty) - PHP 5.3.8 - CakePHP 2.0-beta (freshly pulled) - apache2 (2.2.17) - nginx (1.0.5) Nothing was tweaked or tuned. I&amp;#8217;ve [...]</description>
         <guid isPermaLink="false">http://nuts-and-bolts-of-cakephp.com/?p=1319</guid>
         <pubDate>Fri, 26 Aug 2011 05:04:15 +0000</pubDate>
         <content:encoded><![CDATA[<p>This was a quick test as I was playing around with <a rel="nofollow" target="_blank" href="http://wiki.nginx.org/">Nginx</a> and CakePHP 2.0.</p>
<p>The numbers were interesting, however.<br />
What I did:<br />
- Setup a virtual box with Windows host<br />
- OS: Ubuntu (Natty)<br />
- PHP 5.3.8<br />
- CakePHP 2.0-beta (freshly pulled)<br />
- apache2 (2.2.17)<br />
- nginx (1.0.5)</p>
<p>Nothing was tweaked or tuned. I&#8217;ve setup both servers to use virtual hosts and simply load the default CakePHP page (i.e. fresh install).<br />
There is no app behind any of this, but we are touching pieces of the framework and some PHP logic.<br />
(Comparison is about the web servers anyway)&#8230;</p>
<p>Anyway, start apache and run:</p>
<pre>
ab -kc 10 -t 30 http://localhost/
</pre>
<p>So we&#8217;ll use <a rel="nofollow" target="_blank" href="http://httpd.apache.org/docs/2.0/programs/ab.html">apache benchmark</a> to beat the localhost a little (for 30 seconds) and get some numbers:</p>
<pre>
Benchmarking localhost (be patient)
Finished 839 requests

Server Software:        Apache/2.2.17
Server Hostname:        localhost
Server Port:            80

Document Path:          /
Document Length:        4481 bytes

Concurrency Level:      10
Time taken for tests:   30.009 seconds
Complete requests:      839
Failed requests:        0
Write errors:           0
Keep-Alive requests:    839
Total transferred:      4109432 bytes
HTML transferred:       3759559 bytes
Requests per second:    27.96 [#/sec] (mean)
Time per request:       357.679 [ms] (mean)
Time per request:       35.768 [ms] (mean, across all concurrent requests)
Transfer rate:          133.73 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.7      0       7
Processing:   203  355 121.7    352    2931
Waiting:      202  355 121.7    352    2931
Total:        203  355 122.0    352    2938

Percentage of the requests served within a certain time (ms)
  50%    352
  66%    360
  75%    365
  80%    368
  90%    377
  95%    385
  98%    393
  99%    404
 100%   2938 (longest request)
</pre>
<p>Now, shutdown apache, start nginx and repeat the above test:</p>
<pre>
Benchmarking localhost (be patient)
Finished 4451 requests

Server Software:        nginx/1.0.5
Server Hostname:        localhost
Server Port:            80

Document Path:          /
Document Length:        4481 bytes

Concurrency Level:      10
Time taken for tests:   30.001 seconds
Complete requests:      4451
Failed requests:        0
Write errors:           0
Keep-Alive requests:    0
Total transferred:      21367368 bytes
HTML transferred:       19972014 bytes
Requests per second:    148.36 [#/sec] (mean)
Time per request:       67.403 [ms] (mean)
Time per request:       6.740 [ms] (mean, across all concurrent requests)
Transfer rate:          695.53 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       7
Processing:    18   67  11.6     67     204
Waiting:        5   40  22.1     42     198
Total:         18   67  11.6     67     204

Percentage of the requests served within a certain time (ms)
  50%     67
  66%     71
  75%     73
  80%     75
  90%     80
  95%     85
  98%     93
  99%    102
 100%    204 (longest request)
</pre>
<p>OK, let&#8217;s see:<br />
Total requests served: Apache &#8211; 839, Nginx &#8211; <strong>4451</strong><br />
Requests per second: Apache &#8211; 27.96, Nginx &#8211; <strong>148.36</strong></p>
<p>The other numbers are quite unbelievable as well.</p>
<p>What&#8217;s the point of all this? Tutorial on CakePHP 2.0 + Nginx is <del datetime="2011-08-26T22:51:13+00:00">coming soon</del> <a rel="nofollow">here</a> ;)</p>]]></content:encoded>
      <feedburner:origLink>http://nuts-and-bolts-of-cakephp.com/2011/08/26/quick-comparison-of-nginx-and-apache/</feedburner:origLink></item>
      <item>
         <title>Under the hood of CakePHP 2.0</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/IEUpEpzjfuM/</link>
         <description>Thanks to excellent Mr. jrbasso for putting together this list for me. In case one wonders, yes he does know a few things about cake ;) So, without further ado here&amp;#8217;s a couple of things to enjoy in CakePHP 2.0&amp;#8230; __() now works like sprintf() There were a few complaints about this in the past, [...]</description>
         <guid isPermaLink="false">http://nuts-and-bolts-of-cakephp.com/?p=1290</guid>
         <pubDate>Sun, 14 Aug 2011 23:08:14 +0000</pubDate>
         <content:encoded><![CDATA[<p>Thanks to excellent Mr. <a rel="nofollow" target="_blank" href="http://blog.cakephp-brasil.org/">jrbasso</a> for putting together this list for me.<br />
In case one wonders, yes <a rel="nofollow" target="_blank" href="https://github.com/jrbasso">he does know a few things</a> about cake ;)</p>
<p>So, without further ado here&#8217;s a couple of things to enjoy in CakePHP 2.0&#8230;</p>
<p><strong><code>__()</code> now works like <code>sprintf()</code></strong></p>
<p>There were a few complaints about this in the past, as well as the fact that <code>__()</code> used to <code>echo</code> by default.</p>
<p>Now the problem is fixed and the default usage is as follows:</p>
<pre>
echo __(&quot;some %s var&quot;, $myVar);
</pre>
<p><strong>Improved file structure and lazy loading of files</strong></p>
<p>The naming convention is much better and simpler now. No more messing about with underscore&#8217;s, etc.<br />
Whatever you have for your class name is what you have for your file name (+&#8221;.php&#8221;).<br />
Misspelling of model file names ESPeciaALLY (e_s_pecia_a_l_l_y.php) in extreme cases was a common mistake for cake not being able to find the model.<br />
Therefore none of the model specific rules for validation, methods and other logic could be executed.<br />
(The simple debugging and good ol&#8217; copy/paste should be much easier now). </p>
<p><strong>New CakeRequest and CakeResponse</strong></p>
<p>First, <code>CakeRequest</code> gathers all information about the request (in a way like <code>$this-&gt;params</code> does, but with a lot more juice).<br />
For example, some responsibilities of the <code>RequestHandler</code> component have been shifted to <code>CakeRequest</code>.<br />
Mark Story has an <a rel="nofollow" target="_blank" href="http://mark-story.com/posts/view/the-cakerequest-object-in-cakephp-2-0">excellent write-up about this</a> if you wish to learn about<br />
the details.</p>
<p>The counterpart, of sorts, to <code>CakeRequest</code> is <code>CakeResponse</code>&#8230; which, as you&#8217;ve guessed, works to handle responding to requests.<br />
It consolidates the work, which was previously spread across various components of the system.<br />
Again, I will refer you to Mark Story&#8217;s blog to get <a rel="nofollow" target="_blank" href="http://mark-story.com/posts/view/cakeresponse-in-cakephp-2-0">detailed description about CakeResponse</a>. </p>
<p>The whole idea is to decouple and better organize related tasks from various places in the framework. Good organization helps with maintainability of the framework code, and, in turn, your own.</p>
<p><strong>CakeEmail is a Library now</strong></p>
<p>This change should stop 99% of the questions about how to send email from the model.<br />
Yaayy! You don&#8217;t have to break MVC anymore (in your <code>User</code> model):</p>
<pre>
App::uses('CakeEmail', 'Network/Email');
class User extends AppModel {
  public function afterSave($created) {
    if ($created) {
      $email = new CakeEmail();
      $email-&gt;from('me@example.com')-&gt;to('new.user@example.com')-&gt;subject('Welcome')-&gt;send('Hello! This is my message to the new user.');
    }
  }
}
</pre>
<p>You don&#8217;t have to chain the methods as above&#8230;</p>
<p><strong>HTML5 methods in Form/Html helper</strong></p>
<p>Even though HTML5 is still a bit infant more and more web applications are beginning to apply its elements. This is especially true in the mobile market.<br />
CakePHP 2.0 has a clever way for the HTML5 implementation, by using the <a rel="nofollow" target="_blank" href="http://php.net/manual/en/language.oop5.overloading.php">magic</a> <code>__call()</code> method,<br />
to create simple inputs.</p>
<p>Let&#8217;s look at the test case to better understand this:</p>
<pre>
/**
 * test that some html5 inputs + FormHelper::__call() work
 *
 * @return void
 */
	function testHtml5Inputs() {
		$result = $this-&gt;Form-&gt;email('User.email');
		$expected = array(
			'input' =&gt; array('type' =&gt; 'email', 'name' =&gt; 'data[User][email]', 'id' =&gt; 'UserEmail')
		);
		$this-&gt;assertTags($result, $expected);

		$result = $this-&gt;Form-&gt;search('User.query');
		$expected = array(
			'input' =&gt; array('type' =&gt; 'search', 'name' =&gt; 'data[User][query]', 'id' =&gt; 'UserQuery')
		);
		$this-&gt;assertTags($result, $expected);

		$result = $this-&gt;Form-&gt;search('User.query', array('value' =&gt; 'test'));
		$expected = array(
			'input' =&gt; array('type' =&gt; 'search', 'name' =&gt; 'data[User][query]', 'id' =&gt; 'UserQuery', 'value' =&gt; 'test')
		);
		$this-&gt;assertTags($result, $expected);
	}
</pre>
<p><strong>PDO and database access performance</strong></p>
<p>In 2.0 CakePHP is switching to the <a rel="nofollow" target="_blank" href="http://www.php.net/manual/en/intro.pdo.php">PDO</a>. PDO drivers are stable, native and well-supported. They obviously provide faster and better data access.</p>
<p><strong>Auth is more flexible and supports different authentication methods like &#8220;Digest&#8221;</strong></p>
<p>Authentication and Authorization are now properly decoupled from one another.<br />
In both cases an app developer has the ability to extend <code>BaseAuthenticate</code> or <code>BaseAuthorize</code> to add new authentication and authorization methods.<br />
CakePHP 2.0 comes with a few core methods (at least at the time of writing this): </p>
<ul>
<li>ActionsAuthorize &mdash; Provides the ability to authorize using the AclComponent</li>
<li>BasicAuthenticate &mdash; Provides Basic HTTP authentication support for AuthComponent</li>
<li>ControllerAuthorize &mdash; Provides the ability to authorize using a controller callback</li>
<li>CrudAuthorize &mdash; best explanation is taken from the code doc:<br />
<blockquote><p>
For example, taking `/posts/index` as the current request.  The default mapping for `index`, is a `read` permission check. The Acl check would then be for the `posts` controller with the `read` permission. This allows you to create permission systems that focus more on what is being done to resources, rather than the specific actions being visited.
</p></blockquote>
</li>
<li>DigestAuthenticate &mdash; Provides <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Digest_access_authentication">Digest HTTP authentication</a> support</li>
<li>FormAuthenticate &mdash; Authenticates the identity contained in a request (i.e. the good ol&#8217; login form)</li>
</ul>
<p>So much cleaner :)</p>
<p><strong>No more PHP4</strong></p>
<p>Nuff&#8217; said. This makes Cake 2.0 much faster (oh let&#8217;s say twice as fast), and no I don&#8217;t have evidence to support this claim, by removing a lot of uncessary code to support PHP 4 and 5, not to mention additional logic which would lead on one path or another depending what version of PHP you have installed.<br />
To be more specific, CakePHP 2.0 will support PHP 5.2+ (so it may not be utilizing some of the newer features of PHP 5.3).</p>
<p><strong>Using collections to load Helpers, Behaviors, Components</strong></p>
<p>From CakePHP <a rel="nofollow" target="_blank" href="http://cakephp.lighthouseapp.com/projects/42648/20-helper-behavior-component-and-task-refactor">lighthouse page</a>:</p>
<blockquote><p>
Helpers, behaviors, components, and tasks were restructured for 2.0. After examining the various things these objects did, there were some striking similarities. All the object types except Tasks provided callbacks and custom methods. However, the loading and usage of callbacks was slightly different in each case. For 2.0 these different loading/callback triggering API&#8217;s were simplified and made uniform. Using BehaviorCollection as the base of how things should work. Each object type now has a Collection object. This collection object is responsible for loading, unloading and triggering callbacks.<br />
&#8230;<br />
After examining the responsibilities of each class involved in the View layer, it became clear that View was handling much more than a single task. The responsibility of creating helpers, is not central to what View does, and was moved into HelperCollection. HelperCollection is responsible for loading and constructing helpers, as well as triggering callbacks on helpers. By default View creates a HelperCollection in its constructor, and uses it for subsequent operations. The HelperCollection for a view can be found at <code>$this-&gt;Helpers</code>.<br />
&#8230;<br />
Components were refactored in 2.0 to solve a number of inconsistencies and provide a more uniform API. In the past Component was the loader and manager of Components for a Controller. In 2.0 <code>ComponentCollection</code> takes over that responsibility and Component is now a base class for components. This unifies the API between Helpers and Components as a collection.<br />
Inside a controller <code>$this-&gt;Component</code> has been renamed to <code>$this-&gt;Components</code> this makes it more uniform with Behaviors and Helpers.
</p></blockquote>
<p><strong>Custom class names (aliasing) for your Helpers, Behaviors, Components</strong></p>
<pre>
pulic $helpers = array(
    &quot;Html&quot; =&gt; array(
        &quot;className&quot; =&gt; &quot;CustomHtml&quot;
    )
);
</pre>
<p><strong>Plugins are not auto-loaded</strong></p>
<p>You will need to load them in your class or bootstrap.</p>
<p><strong>Models are now lazy loaded</strong></p>
<p>With all this talk about <a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Lazy_loading">Lazy Loading</a>, this is probably the one that deserves a lot of attention.<br />
Besides, models will not attempt a DB connection until <code>find()</code> (or other DB-actionable) method is called.   </p>
<p>p.s. CakePHP 2.0 could be here sooner than people expect. I have a feeling we&#8217;ll have RC4 come CakeFest. So, if you have not started thinking about migrating your app to 2.0, now is a good time ;)</p>]]></content:encoded>
      <feedburner:origLink>http://nuts-and-bolts-of-cakephp.com/2011/08/14/under-the-hood-of-cakephp-2-0/</feedburner:origLink></item>
      <item>
         <title>How to fork &amp; patch npm modules</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/J8guXUVTfFw/how-to-fork-patch-npm-modules:4e2eb9f3-e584-44be-b1a9-3db7cbdd56cb</link>
         <description>&lt;p&gt;With now more than &lt;a rel="nofollow" target="_blank" href="http://twitter.com/#!/npmjs/status/95573155099324416"&gt;3000 modules&lt;/a&gt;, there are huge gaps in the quality of things you find in the &lt;a rel="nofollow" target="_blank" href="http://search.npmjs.org/"&gt;npm registry&lt;/a&gt;. But more often than not, it's easy to find a module that is really close to what you need, except if it wasn't for that one bug or missing feature.&lt;/p&gt;

&lt;p&gt;Now depending on who is maintaining this module, you may get the problem resolved by simply opening a GitHub issue and waiting for a few days. However, open source doesn't really work without community, nor do you always want to be at the mercy of someone else. So a much better approach is to actually roll up your sleeves, and fix the problem yourself.&lt;/p&gt;

&lt;p&gt;Here is the proper way to do this while using npm to manage your forked version of the module:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fork the project on GitHub&lt;/li&gt;
&lt;li&gt;Clone the fork to your machine&lt;/li&gt;
&lt;li&gt;Fix the bug or add the feature you want&lt;/li&gt;
&lt;li&gt;Push your commits up to your fork on GitHub&lt;/li&gt;
&lt;li&gt;Open your fork on GitHub, and click on the latest commit you made&lt;/li&gt;
&lt;li&gt;On the page of that commit, click on the "Downloads" button&lt;/li&gt;
&lt;li&gt;Right click on the "Download .tar.gz" button inside the popup, and copy the link ("Copy Link Address" in Chrome)&lt;/li&gt;
&lt;li&gt;Open up your package.json file, and replace the version number of the module with the url you just copied&lt;/li&gt;
&lt;li&gt;Send a pull request upstream (Optional, but this way you will avoid having to maintain that patch of yours against newer versions of the module you forked)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example: My new &lt;a rel="nofollow" target="_blank" href="https://github.com/felixge/node-airbrake"&gt;airbrake module&lt;/a&gt; uses a forked version of  &lt;a rel="nofollow" target="_blank" href="https://github.com/oozcitak/xmlbuilder-js"&gt;xmlbuilder&lt;/a&gt;. I submited my fix as a &lt;a rel="nofollow" target="_blank" href="https://github.com/oozcitak/xmlbuilder-js/pull/11"&gt;pull request&lt;/a&gt;, but it has not been merged yet. In order to pull in my changes via npm anyway, I simply pointed my &lt;a rel="nofollow" target="_blank" href="https://github.com/felixge/node-airbrake/blob/master/package.json"&gt;package.json&lt;/a&gt; to the download url of my fork on GitHub like so:&lt;/p&gt;

&lt;p&gt;&lt;div class="clear"&gt;&lt;/div&gt;&lt;div class="code debuggable_sh_js" style="white-space:nowrap;"&gt;
&lt;span class="st0"&gt;&amp;quot;dependencies&amp;quot;&lt;/span&gt;: &lt;span class="br0"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;request&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;1.9.8&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;xmlbuilder&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;https://github.com/felixge/xmlbuilder-js/tarball/4303eb2650a4b819a980b1dc9d2965862a1e9faf&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;stack-trace&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;0.0.5&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;traverse&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;0.4.4&amp;quot;&lt;/span&gt;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span class="st0"&gt;&amp;quot;hashish&amp;quot;&lt;/span&gt;: &lt;span class="st0"&gt;&amp;quot;0.0.4&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span class="br0"&gt;&amp;#125;&lt;/span&gt;,&lt;/div&gt;

&lt;p&gt;Alright, let me know if this is helping your node.js adventures, or if you have an alternative workflow you are using. Otherwise, happy hacking!&lt;/p&gt;

&lt;p&gt;--fg&lt;/p&gt;

&lt;p&gt;PS: You should upgrade to the latest npm version first, some older versions had problems with handling url dependencies properly.&lt;/p&gt;

&lt;p&gt;&lt;img style="display:none;" src="http://www.debuggable.com/posts/tick/4e2eb9f3-e584-44be-b1a9-3db7cbdd56cb"&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/debuggable/~4/pZZbs73svBE" height="1" width="1"/&gt;</description>
         <author>felix@debuggable.com</author>
         <guid isPermaLink="false">http://www.debuggable.com/posts/how-to-fork-patch-npm-modules:4e2eb9f3-e584-44be-b1a9-3db7cbdd56cb</guid>
         <pubDate>Tue, 26 Jul 2011 13:15:03 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/thinkingphp/~3/gAhojL5atgk/how-to-fork-patch-npm-modules:4e2eb9f3-e584-44be-b1a9-3db7cbdd56cb</feedburner:origLink></item>
      <item>
         <title>Setup debugging for Netbeans + CakePHP</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/qHxx8A_u2kk/</link>
         <description>Update (7/22/2011): dogmatic69 pointed out that you can do the same with Chrome by installing the xdebug extension. See his comment for details. For all the Netbeans users out there, if you don&amp;#8217;t have debugging enabled, this little &amp;#8220;how-to&amp;#8221; should get you stared pretty easily. First prerequisite is to make sure you have xdebug installed [...]</description>
         <guid isPermaLink="false">http://nuts-and-bolts-of-cakephp.com/?p=1272</guid>
         <pubDate>Thu, 21 Jul 2011 19:11:45 +0000</pubDate>
         <content:encoded><![CDATA[<p>Update (7/22/2011): dogmatic69 pointed out that you can do the same with Chrome by installing the xdebug extension. See his comment for details.</p>
<p>For all the <a rel="nofollow" target="_blank" href="http://netbeans.org/">Netbeans </a> users out there, if you don&#8217;t have debugging enabled, this little &#8220;how-to&#8221; should get you stared pretty easily.</p>
<p>First prerequisite is to make sure you have xdebug installed and enabled for PHP.</p>
<p>In the <strong>php.ini</strong> you should have the following settings:</p>
<pre>
xdebug.remote_enable=1
xdebug.remote_mode=&quot;req&quot;
xdebug.remote_handler=&quot;dbgp&quot;
xdebug.remote_host=&quot;localhost&quot; #or try 0.0.0.0
xdebug.remote_port=9000
</pre>
<p>Make sure that the xdebug extension is enabled, of course.<br />
(Under the [XDebug] section of <strong>php.ini</strong>, zend_extension=[path to your php_xdebug lib]).<br />
Don&#8217;t forget to restart your web server ;)</p>
<p>Next we&#8217;ll install the Netbeans Fire Fox add-on.<br />
It can be downloaded from here: <a rel="nofollow" target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/easy-xdebug/">https://addons.mozilla.org/en-US/firefox/addon/easy-xdebug/</a><br />
As you can guess this means that FF should be your default browser, because it will need to open up once you start running the debugger.</p>
<p>Let&#8217;s switch to Netbeans, right click on the app of interest and navigate to &#8220;Properties&#8221;.<br />
In the project properties window select &#8220;Run configuration&#8221;.<br />
Project URL: http://yourhost.example.local/ (the local host name from which your app is running).<br />
Index File: index.php (easy enough).</p>
<p>Double check some options in Netbeans&#8230;<br />
Tools -&gt; Options -&gt; PHP tab<br />
&#8220;PHP Interpreter&#8221; should point to the correct location of your PHP executable.<br />
&#8220;Debugger Port&#8221; should be the same as the setting in your <strong>php.ini</strong> (xdebug.remote_port=9000)<br />
You might want to &#8220;uncheck&#8221; the &#8220;Stop at First Line&#8221; box. </p>
<p>This should be it, as far as the setup goes&#8230;</p>
<p>You can now run a quick test:<br />
Open <strong>app/webroot/index.php</strong>.<br />
Add a breakpoint at some line.<br />
(You might want to add <code>xdebug_break();</code> at the bottom of the file, just to be sure).<br />
Hit Ctrl+F5 (or whatever is the command on your OS to debug the project).</p>
<p>If all goes well FF should open up and you should see the code execution stop at the line where you&#8217;ve set the breakpont with some debug info in the Netbeans console.<br />
Congrats!</p>
<p>p.s. Setting up other IDE&#8217;s should be similar in the overall approach&#8230; but, as always, your mileage may vary.</p>]]></content:encoded>
      <feedburner:origLink>http://nuts-and-bolts-of-cakephp.com/2011/07/21/setup-debugging-for-netbeans-cakephp/</feedburner:origLink></item>
      <item>
         <title>Book Review CakePHP 1.3 Application Development Cookbook</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/TU2JuNoaeXs/Book-Review-CakePHP-1.3-Application-Development-Cookbook.html</link>
         <description>Since the early days of CakePHP people have been looking for a reference book they could pick up and read under a tree in the middle of forest. There are a few CakePHP books out there - is this one better than it's predecessors? After diligently avoiding all other reviews for this book, this is my take.&lt;img src="http://feeds.feedburner.com/~r/ad7six/~4/bDYkDgGzzU8" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://ad7six.com/2011/07/12/Book-Review-CakePHP-1.3-Application-Development-Cookbook.html</guid>
         <pubDate>Mon, 11 Jul 2011 23:00:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/ad7six/~3/bDYkDgGzzU8/Book-Review-CakePHP-1.3-Application-Development-Cookbook.html</feedburner:origLink></item>
      <item>
         <title>Offload read queries to a replica DB for better performance</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/TOnDgXD5KBA/</link>
         <description>In most web application, which require a lot of find()'s especially if more than a couple of models are involved, you should probably consider offloading those operations to read-only replica of your DB. This is typically achieved by having a master/slave or master/master configuration. In high traffic application you might have a cluster of databases, [...]</description>
         <guid isPermaLink="false">http://nuts-and-bolts-of-cakephp.com/?p=1260</guid>
         <pubDate>Fri, 01 Jul 2011 15:27:59 +0000</pubDate>
         <content:encoded><![CDATA[<p>In most web application, which require a lot of <code>find()'s</code> especially if more than a couple of models are involved, you should probably consider offloading those operations to read-only replica of your DB. This is typically achieved by having a master/slave or master/master configuration. In high traffic application you might have a cluster of databases, but for the purpose of this example we&#8217;ll only use two data sources: &#8220;default&#8221; and &#8220;replica&#8221;.</p>
<p>Therefore our basic <strong>database.php</strong> will look something like this:</p>
<pre>
public $default = array(
		'driver' =&gt; 'mysql',
		'persistent' =&gt; false,
		'host' =&gt; 'production.example.com',
		'login' =&gt; 'user',
		'password' =&gt; 'password',
		'database' =&gt; 'production',
		'prefix' =&gt; '',
		'encoding' =&gt; 'utf8'
	);

	public $replica = array(
		'driver' =&gt; 'mysql',
		'persistent' =&gt; false,
		'host' =&gt; 'readonly.example.com',
		'login' =&gt; 'user',
		'password' =&gt; 'password',
		'database' =&gt; 'readonly',
		'prefix' =&gt; '',
		'encoding' =&gt; 'utf8'
	);
</pre>
<p>This prepares our application to use two data sources, as needed.</p>
<p>Next, let&#8217;s imagine we have a good ol&#8217; blog and need to grab various information to build a list of posts.<br />
In our <code>Posts Controller</code>, we&#8217;ll have some method that gets the required information:</p>
<pre>
$this-&gt;Post-&gt;getListofPosts();
</pre>
<p>The method above will have to involve additional models to get all of the needed info (Author, Tag, (PostsTag for the join table), PostRating&#8230; and maybe a few other models). The point is that this is enough operations already to consider offloading them to our read-only DB server.</p>
<p>The actual process is quite simple.<br />
First, we&#8217;ll create a generic method in our <code>App Model</code>:</p>
<pre>
protected function _switchDataSource($models, $datasource = 'default') {
		if (is_array($models)) {
			foreach ($models as $model) {
				ClassRegistry::init($model)-&gt;setDataSource($datasource);
			}
		}
	}
</pre>
<p>I hope this code is simple enough, but the implementation example is coming up&#8230;<br />
It&#8217;s worth to note that <code>ClassRegistry::init()</code> will cache your model information (object instance, to be more precise) in memory, therefore in a more complex case (where you might have multiple <code>find()'s</code>) the newly switched data source will persist until switched back. Therefore it is important to remember to &#8220;reset&#8221; your data source once you are done with the read operation(s).</p>
<p>Now, here&#8217;s the basic usage sample (this snippet would be inside of our <code>getListofPosts()</code> method):</p>
<pre>
//let's switch our DS to replica
$this-&gt;_switchDataSource(array(
  'Post', 'PostsTag', 'Author', 'PostRating'
), 'replica');

//now we can execute our find with all of the above
//model data coming from the read-only DB
$posts = $this-&gt;find('all', array(
  'contain' =&gt; array(
  //include our models here
  ),
  'limit' =&gt; 35
));

//don't forget to switch the DS back to default
$this-&gt;_switchDataSource(array(
  'Post', 'PostsTag', 'Author', 'PostRating'
));

return $posts;
</pre>
<p>As you see the implementation is pretty simple. The only thing to keep in mind is that if you are getting some SQL errors, chances are you have not included all of the required models for the operation, the most common case is forgetting the join table model. To troubleshoot and see the results the <a rel="nofollow" target="_blank" href="https://github.com/cakephp/debug_kit/">debug kit</a> is very helpful, because it will show you which data source is being used to run a particular set of queries.<br />
Another hint, if you use the same set of models over and over you might as well assign them to a property in your model, so that if you need to add or change something you&#8217;d only do it in one place.<br />
Using our example we can modify the code like so:</p>
<pre>
public $postQueryModels = array('Post', 'PostsTag', 'Author', 'PostRating');

....

$this-&gt;_switchDataSource($this-&gt;postQueryModels, 'replica');
</pre>]]></content:encoded>
      <feedburner:origLink>http://nuts-and-bolts-of-cakephp.com/2011/07/01/offload-read-queries-to-a-replica-db-for-better-performance/</feedburner:origLink></item>
      <item>
         <title>If you use UUID’s…</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/6DiUlpq72YY/</link>
         <description>Be extra careful to make sure that, according to convention, your &amp;#8216;id&amp;#8217; column (or primary key) is: char(36) and never varchar(36) CakePHP will work with both definitions, however you will be sacrificing about 50% of the performance of your DB (MySQL in particular). This will be most evident in more complicated SELECT&amp;#8217;s, which might require [...]</description>
         <guid isPermaLink="false">http://nuts-and-bolts-of-cakephp.com/?p=1256</guid>
         <pubDate>Wed, 22 Jun 2011 18:58:32 +0000</pubDate>
         <content:encoded><![CDATA[<p>Be extra careful to make sure that, according to convention, your &#8216;id&#8217; column (or primary key) is:</p>
<p><code>char(36)</code> and <strong>never</strong> <code>varchar(36)</code></p>
<p>CakePHP will work with both definitions, however you will be sacrificing about 50% of the performance of your DB (MySQL in particular). This will be most evident in more complicated SELECT&#8217;s, which might require some JOIN&#8217;s or calculations.</p>]]></content:encoded>
      <feedburner:origLink>http://nuts-and-bolts-of-cakephp.com/2011/06/22/if-you-use-uuids/</feedburner:origLink></item>
      <item>
         <title>Developing for SQLServer and IIS in a virtual machine</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/JF6sCy41gwA/developing-for-sqlserver-and-iis-in-a-virtual-machine</link>
         <description>This week I’ve been participating in the SQLServer Jump-in Camp.  My focus for the workshops have been building out better support for IIS and SQL Server in CakePHP.  As I generally develop on MacOS, I do development for other platforms through virtual machines.  This has worked well with linux servers in the past.</description>
         <guid isPermaLink="false">http://mark-story.com/posts/view/developing-for-sqlserver-and-iis-in-a-virtual-machine?utm_source=rss</guid>
         <pubDate>Wed, 22 Jun 2011 02:50:25 +0000</pubDate>
      <feedburner:origLink>http://mark-story.com/posts/view/developing-for-sqlserver-and-iis-in-a-virtual-machine?utm_source=rss</feedburner:origLink></item>
      <item>
         <title>Book Review – CakePHP 1.3 Application Development Cookbook</title>
         <link>http://feedproxy.google.com/~r/cakephp/~3/TpMUJbemJuM/</link>
         <description>&lt;p&gt;(Note: Packt Publishing provided me with a copy of this book in PDF
and MOBI formats for the purpose of me doing a review)&lt;/p&gt;

&lt;p&gt;Once again, the fine folks at
&lt;a rel="nofollow" target="_blank" href="http://packtpub.com"&gt;Packt Publishing&lt;/a&gt; have asked me to review a
book. I must confess that I had mixed feelings reviewing
&lt;a rel="nofollow" target="_blank" href="http://www.packtpub.com/cakephp-1-3-application-development-cookbook/book"&gt;CakePHP 1.3 Application Development Cookbook&lt;/a&gt;.
First, the only CakePHP work I do these days is maintaining an old,
old CakePHP web site (not even version 1.2) and it&amp;#8217;s being
re-written in Python + Django. Second, I know the author personally
and I like Mariano so I was worried about what would happen if I
read the book and didn&amp;#8217;t like it. So I took the approach that most
fit what my current status with CakePHP is: someone who has used it
in the past, but hasn&amp;#8217;t used it for a while and is looking for
practical examples of how to accomplish specific tasks with the
framework.&lt;/p&gt;

&lt;p&gt;I personally find the &amp;#8220;cookbook&amp;#8221; style of books to be the most
helpful. They enable me to quickly find answers to the problem
&amp;#8220;show me how to do something realistic using your tool&amp;#8221;. Hello
World doesn&amp;#8217;t cut it for the tools I need to use. A common workflow
for me is finding an example of how to do something, and then start
tweaking it to meet by particular needs. I certainly cannot be the
only one who learns how to do things this way. So Mariano can rest
easy since I found his book to be exactly the type of guide an
experienced programmer who is not familiar with a specific tool can
use.&lt;/p&gt;

&lt;p&gt;Like any well-thought-out book, they cover the main components of
CakePHP. One of the thing I liked was that you didn&amp;#8217;t have to
necessarily read the book from front-to-back in order to get
something from it. Within each chapter, you will find info on
accomplishing common generic tasks using framework-specific code. A
lot of it didn&amp;#8217;t look too foreign to me, so I&amp;#8217;m comfortable that
1.3 is not a huge leap forward in terms of compatibility. Of
course, your mileage may vary.&lt;/p&gt;

&lt;p&gt;I was also extremely happy to see a chapter dedicated to showing
people how to use the CLI shells available to you via CakePHP. Back
in the day I wrote a really crappy attempt to create a
read-eval-print loop for people choosing to use CakePHP. I called
it &amp;#8220;the testing shell&amp;#8221; and I did a really crappy job of promoting
it. It never got a lot of traction because of PHP&amp;#8217;s focus on the
web and lack of testing culture. Which dovetails nicely into a
chapter in this book on writing tests.&lt;/p&gt;

&lt;p&gt;While it&amp;#8217;s not great that CakePHP ended up not using PHPUnit to
begin with, but having SOME testing is better than NO testing.
Congrats to Mariano for sticking his neck out and making sure
people understand why testing is important and how easy it is to
add in tests. Honestly, it&amp;#8217;s good that you can also see the tests
written for the framework as well. If you tweak things and try to
extend CakePHP, you have a pretty comprehensive test suite to find
out if you&amp;#8217;ve broken anything else.&lt;/p&gt;

&lt;p&gt;So I will recommend &amp;#8220;CakePHP 1.3 Application Development Cookbook&amp;#8221;
for the intermediate to advanced programmer who is looking to learn
how to accomplish specific tasks using CakePHP 1.3. I think
beginning developers are much better off actually learning some PHP
before trying to use a book like this. YOu should not be just
cut-and-pasting code without being able to understand what the code
itself is doing.&lt;/p&gt;</description>
         <guid isPermaLink="false">http://www.littlehart.net/atthekeyboard/2011/05/30/book-review-cakephp-cookbook</guid>
         <pubDate>Mon, 30 May 2011 04:00:00 +0000</pubDate>
      <feedburner:origLink>http://www.littlehart.net/atthekeyboard/2011/05/30/book-review-cakephp-cookbook/</feedburner:origLink></item>
   </channel>
</rss><!-- fe3.yql.bf1.yahoo.com compressed/chunked Thu Feb  9 05:53:54 UTC 2012 -->

