<?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>ZEE4 &#187; programming</title>
	<atom:link href="http://zee4.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://zee4.com</link>
	<description>Zoltan Hunt, web-designer and developer in Toronto, Canada</description>
	<lastBuildDate>Sun, 09 Oct 2011 21:06:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>CakePHP Expandable Behaviour Tip</title>
		<link>http://zee4.com/2011/01/cakephp-expandable-behaviour-tip/</link>
		<comments>http://zee4.com/2011/01/cakephp-expandable-behaviour-tip/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 00:23:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[YYZtech]]></category>
		<category><![CDATA[behaviours]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[debuggable.com]]></category>

		<guid isPermaLink="false">http://zee4.com/?p=166</guid>
		<description><![CDATA[When YYZtech was being updated to use the VSS (Venue Storage System) from the previous system, it became clear that VSS needed to be updated as well. One of the original goals of VSS was that it could be a &#8230; <a href="http://zee4.com/2011/01/cakephp-expandable-behaviour-tip/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When  YYZtech was being updated to use the VSS (Venue Storage System) from  the previous system, it became clear that VSS needed to be updated as  well. One of the original goals of VSS was that it could be a directory  system for different kinds of things as long as they where physical  venues of some kind and so they had certain properties like an actual  address, hours they open to the public, etc.</p>
<p>As  part of that, a way of storing “meta” information was needed, that is  information that was unique to a venue or type of venue that not all  would have, much like WordPress lets additional information about a post  be stored in a separate table which makes, say, adding an ISBN number  field to book reviews easy.</p>
<p>After rolling our own for several projects, <a href="http://www.debuggable.com/posts/unlimited-model-fields-expandable-behavior:48428c2e-9a88-47ec-ae8e-77a64834cda3" target="_blank">Felix Geisendörfer’s Expandable behaviour</a> was chosen because it was simple to set-up and use and it just worked.  Hopefully CakePHP at some point includes a similar functionality as an  &#8220;official&#8221; add on much like virtual fields was added in CakePHP 1.3</p>
<p>Which leads to a “gotcha”&#8230;.<br />
One  issue combining virtual fields and the Expandable behaviour is that  virtual fields can end up being interpreted as new fields by Expandable  and Expandable then saving them. What’s worse, is that when the table  entry is loaded, the virtual field and field from Expandable are  combined with one overwriting the other.</p>
<p>This  particular behaviour happened when we added a way of cloning venues,  removing and replacing certain information along the way. The reason for  this would be adding a chain store location; the address and phone  number would change but the description or products sold probably  wouldn’t. Now the table that stored the venues had a virtual field,  full_name, that contained the name and sub-name of a venue (e.g. “Joe’s  Bar”, “and Delicatessen” as “Joe’s Bar and Delicatessen”) which  Expandable saw as a new field and saved the virtual field to its table  and led to about 20 minutes trying to figure out if there was some kind  of weird caching issue going on.</p>
<p>Anyways, the fix was to turn off the virtual fields like so:<br />
$this-&gt;Venue-&gt;virtualFields = false;</p>
<p>&#8230;and that was the end of that problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://zee4.com/2011/01/cakephp-expandable-behaviour-tip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP database config quick-tip</title>
		<link>http://zee4.com/2010/01/cakephp-database-config-quick-tip/</link>
		<comments>http://zee4.com/2010/01/cakephp-database-config-quick-tip/#comments</comments>
		<pubDate>Sun, 10 Jan 2010 16:53:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://zee4.com/?p=121</guid>
		<description><![CDATA[Most CakePHP programmers have seen this simple way of storing the development and production database settings in one file: class DATABASE_CONFIG &#123; &#160; &#160; var $prod = array&#40; &#160; &#160; &#160; &#160; &#8230; &#160; &#160; &#160; &#160; &#39;database&#39; =&#62; &#39;live_mysite&#39; &#8230; <a href="http://zee4.com/2010/01/cakephp-database-config-quick-tip/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Most CakePHP programmers have seen this simple way of storing the development and production database settings in one file:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">class</span> DATABASE_CONFIG <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> <span class="re1">$prod</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">&#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#39;database&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;live_mysite&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> <span class="re1">$test</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">&#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#39;database&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;local_mysite&#39;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="co1">// the construct function is called automatically, and chooses prod or dev.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//check to see if server name is set (thanks Frank)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="kw3">isset</span><span class="br0">&#40;</span><span class="re1">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#39;SERVER_NAME&#39;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">switch</span><span class="br0">&#40;</span><span class="re1">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#39;SERVER_NAME&#39;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">case</span> <span class="st0">&#39;127.0.0.1&#39;</span><span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">default</span> <span class="sy0">=</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">test</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">default</span><span class="sy0">:</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">default</span> <span class="sy0">=</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">prod</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span> <span class="co1">// we are likely baking, use our local db</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">default</span> <span class="sy0">=</span> <span class="re1">$this</span><span class="sy0">-&gt;</span><span class="me1">test</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>If you haven&#8217;t, check out <a href="http://edwardawebb.com/programming/php-programming/cakephp/automatically-choose-database-connections-cakephp">Edward A. Webb&#8217;s original post from <del datetime="2010-01-11T20:45:57+00:00">1998</del> 2008</a>.</p>
<p>This same technique can be used in the bootstrap.php file for other settings that change based on the server, for instance GoogleMap keys:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span> <span class="kw3">strpos</span><span class="br0">&#40;</span> <span class="re1">$_SERVER</span><span class="br0">&#91;</span><span class="st0">&#39;HTTP_HOST&#39;</span><span class="br0">&#93;</span><span class="sy0">,</span><span class="st0">&#39;MySite.com&#39;</span><span class="br0">&#41;</span> <span class="sy0">!==</span> <span class="kw2">false</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Configure<span class="sy0">::</span><span class="me2">write</span><span class="br0">&#40;</span><span class="st0">&#39;GMAP_KEY&#39;</span><span class="sy0">,</span> <span class="st0">&#39;ABQIAA&#8230;qcPrtZgKHQ&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; Configure<span class="sy0">::</span><span class="me2">write</span><span class="br0">&#40;</span><span class="st0">&#39;GMAP_KEY&#39;</span><span class="sy0">,</span> <span class="st0">&#39;ABQIAB&#8230;e6qfWeeY8Q&#39;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>However, when baking a model, the database file only defines two types: <strong>prog</strong> and <strong>test</strong> so you pick one and end up with a model file with a line like: </p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re1">$useDbConfig</span> <span class="sy0">=</span> <span class="st0">&#39;test&#39;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>in your baked model that doesn&#8217;t cause any problems right up until upload it to your live server late one night and start getting errors about being unable to make a connection- guess who did that?</p>
<p>The solution is simple: just define a default</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> <span class="re1">$default</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>somewhere in the file, now when you bake cake will give you the option of using the default connection which won&#8217;t add any problem-causing $useDbConfig to your model. </p>
<p>Hope this saves someone 20 minutes <img src='http://zee4.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://zee4.com/2010/01/cakephp-database-config-quick-tip/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adding robots meta-tag to a CakePHP view</title>
		<link>http://zee4.com/2009/11/adding-robots-meta-tag-to-cakephp-view/</link>
		<comments>http://zee4.com/2009/11/adding-robots-meta-tag-to-cakephp-view/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 19:51:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[cakephp]]></category>
		<category><![CDATA[simcoedining]]></category>

		<guid isPermaLink="false">http://zee4.com/2009/11/adding-robots-meta-tag-to-cakephp-view/</guid>
		<description><![CDATA[Here&#8217;s a little how-to I discovered a few months ago while I was working on SimcoeDining.com and realized that Google was indexing a whole lot of mostly blank pages. To solve this, I figured I&#8217;d better put a no-index on &#8230; <a href="http://zee4.com/2009/11/adding-robots-meta-tag-to-cakephp-view/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a little how-to I discovered a few months ago while I was working on SimcoeDining.com and realized that Google was indexing a whole lot of mostly blank pages.</p>
<p>To solve this, I figured I&#8217;d better put a no-index on those pages fast; after mucking around with CakePHP&#8217;s html->meta handler (because I wanted the meta tag in the header where it belonged) and not finding anything, I came up with:</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="re1">$html</span><span class="sy0">-&gt;</span><span class="me1">meta</span><span class="br0">&#40;</span><span class="st0">&#39;robots&#39;</span><span class="sy0">,</span> <span class="kw2">null</span><span class="sy0">,</span> <span class="kw3">array</span><span class="br0">&#40;</span><span class="st0">&#39;name&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;robots&#39;</span><span class="sy0">,</span> <span class="st0">&#39;content&#39;</span> <span class="sy0">=&gt;</span> <span class="st0">&#39;noindex&#39;</span><span class="br0">&#41;</span> <span class="sy0">,</span><span class="kw2">false</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p>BTW: The pages where empty at the time because there wasn&#8217;t a lot of data in the system, so a lot of searches where coming up empty- that&#8217;s been &#8220;fixed&#8221; now too.</p>
<p>Hopefully this saves someone else 20 minutes <img src='http://zee4.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://zee4.com/2009/11/adding-robots-meta-tag-to-cakephp-view/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL&#8217;s Order By Field &#8211; this time we do it the easy way!</title>
		<link>http://zee4.com/2009/11/mysqls-order-by-field-this-time-we-do-it-the-easy-way/</link>
		<comments>http://zee4.com/2009/11/mysqls-order-by-field-this-time-we-do-it-the-easy-way/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 20:46:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://zee4.com/?p=99</guid>
		<description><![CDATA[A few years back my company was writing a search engine for a Toronto restaurant directory. The search used tag-words to search for venues. Every time a search was done, venues where assigned a score based on how relevant there &#8230; <a href="http://zee4.com/2009/11/mysqls-order-by-field-this-time-we-do-it-the-easy-way/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A few years back my company was writing a search engine for a Toronto restaurant directory. The search used tag-words to search for venues. Every time a search was done, venues where assigned a score based on how relevant there where to the tags being searched for. Now after the score was calculated, I ended up with a list of venues ordered by their score. </p>
<p><strong>Now the messy part&#8230;</strong><br />
In oder to display these in a list, the venues had to be pulled out and listed in that order; as well, if there was more than 40 venues, they had to be split and displayed on two or more pages. In the end, it turned out the quickest way to write it was to query MySQL for each venue one at a time. Needless-to-say not an optimum solution. </p>
<p><strong>&#8230;and the right way- 4 years later</strong><br />
When this came up last summer during the re-write of SimcoeDining.com, I figured there there had to be a proper way of solving that problem, and I found one in <a href="http://imthi.com/blog/programming/mysql-order-by-field-custom-field-sorting.php">Imthiaz&#8217;s blog entry</a>:</p>
<div class="geshi no sql">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">ORDER</span> <span class="kw1">BY</span> <span class="kw1">FIELD</span><span class="br0">&#40;</span>Venues,<span class="nu0">13</span>,<span class="nu0">22</span>,<span class="nu0">42</span>,<span class="nu0">1</span>,<span class="nu0">11</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>See with MySQL (at least since v5) lets you specify a field and values to sort them by which nicely fits into CakePHP&#8217;s Paginator too.</p>
]]></content:encoded>
			<wfw:commentRss>http://zee4.com/2009/11/mysqls-order-by-field-this-time-we-do-it-the-easy-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Halifax-Restaurants attracts Nova Scotians</title>
		<link>http://zee4.com/2007/11/halifax-restaurants-attracts-nova-scotians/</link>
		<comments>http://zee4.com/2007/11/halifax-restaurants-attracts-nova-scotians/#comments</comments>
		<pubDate>Sat, 17 Nov 2007 16:49:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.zee4.com/newblog/2007/11/17/halifax-restaurants-attracts-nova-scotians/</guid>
		<description><![CDATA[Well this summer&#8217;s project, Halifax-Restaurants.com was a bit of a disappointment (stillborn would be a bit cruel), mostly due to my unfamiliarity with the CakePHP framework I used as the underlying framework, I was surprised to see that it was &#8230; <a href="http://zee4.com/2007/11/halifax-restaurants-attracts-nova-scotians/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Well this summer&#8217;s project, <a href="http://www.Halifax-Restaurants.com" target="_blank">Halifax-Restaurants.com</a> was a bit of a disappointment (stillborn would be a bit cruel), mostly due to my unfamiliarity with the <a href="http://www.cakephp.org" target="_blank">CakePHP </a>framework I used as the underlying framework, I was surprised to see that it was actually starting to attract visitors from the Halifax area, according to Google Analytics.</p>
<p><img src="http://www.zee4.com/newblog/wp-content/uploads/2007/11/halifax-restaurants_com.jpg" title="Halifax-Restaurants screenshot" alt="Halifax-Restaurants screenshot" align="right" border="0" hspace="2" vspace="2" width="300" />That&#8217;s the good news. The bad is the time I have to work on it. Ideally, I&#8217;d like to re-write nearly everything about it, then fix up the layout, which is too ad-heavy, as opposed to content for me right now. I have a few ideas about how that can be improved, but the fact is, adding content is the biggest task right now.</p>
]]></content:encoded>
			<wfw:commentRss>http://zee4.com/2007/11/halifax-restaurants-attracts-nova-scotians/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Saved by the book</title>
		<link>http://zee4.com/2007/09/saved-by-the-book/</link>
		<comments>http://zee4.com/2007/09/saved-by-the-book/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 05:44:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[commentary]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.zee4.com/newblog/?p=10</guid>
		<description><![CDATA[The last few weeks I&#8217;ve been selling off a bunch of older titles I had laying around (instead of working on this blog), one of them that almost went off to the local BMV was PHP 5 In Practise; Fortunately, &#8230; <a href="http://zee4.com/2007/09/saved-by-the-book/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The last few weeks I&#8217;ve been selling off a bunch of older titles I had laying around (instead of working on this blog), one of them that almost went off to the local <a href="http://www.abebooks.com/home/BMV/" target="_blank">BMV </a>was <a href="http://www.yyztech.ca/articles/view/review_php_5_in_practice" target="_blank">PHP 5 In Practise</a>; Fortunately, I passed on that one and tonight, while trying to finish off a tag-generator for <a href="http://Halifax-Restaurants.com" target="_blank">Halifax-Restaurants.com</a>,  it saved my tail at least once. When I originally reviewed it, I was impressed with the amount of material in it- it&#8217;s still one of the best books out there when you&#8217;re looking for something like- &#8220;how do I remove white-spaces from a string&#8221; and such basic but necessary things.</p>
]]></content:encoded>
			<wfw:commentRss>http://zee4.com/2007/09/saved-by-the-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

