<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>anupom.toString( );</title>
	<atom:link href="http://anupom.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://anupom.wordpress.com</link>
	<description>Web Development, Java, PHP, Ruby, Javascript and many more!</description>
	<lastBuildDate>Sat, 26 Nov 2011 10:39:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='anupom.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>anupom.toString( );</title>
		<link>http://anupom.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://anupom.wordpress.com/osd.xml" title="anupom.toString( );" />
	<atom:link rel='hub' href='http://anupom.wordpress.com/?pushpress=hub'/>
		<item>
		<title>This blog is deprecated! Use http://www.syamantics.com instead!</title>
		<link>http://anupom.wordpress.com/2008/11/02/this-blog-is-deprecated-use-httpwwwsyamanticscom-instead/</link>
		<comments>http://anupom.wordpress.com/2008/11/02/this-blog-is-deprecated-use-httpwwwsyamanticscom-instead/#comments</comments>
		<pubDate>Sun, 02 Nov 2008 16:57:05 +0000</pubDate>
		<dc:creator>anupom</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://anupom.wordpress.com/?p=58</guid>
		<description><![CDATA[Hello everyone, Thanks for visiting my blog. I have moved out this blog to a new place. She now has got her own domain, her own host! Please visit her at her new address http://www.syamantics.com ..and ofcourse don&#8217;t forget to add her to your favorite feed reader. I promise I will do blog regularly from [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=58&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hello everyone,</p>
<p>Thanks for visiting my blog. I have moved out this blog to a new place. She now has got her own domain, her own host! Please visit her at her new address <a href="http://www.syamantics.com">http://www.syamantics.com</a> ..and ofcourse don&#8217;t forget to add her to your favorite feed reader. I promise I will do blog regularly from now on <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Thanks!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/anupom.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/anupom.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/anupom.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/anupom.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/anupom.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/anupom.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/anupom.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/anupom.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/anupom.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/anupom.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/anupom.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/anupom.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/anupom.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/anupom.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=58&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://anupom.wordpress.com/2008/11/02/this-blog-is-deprecated-use-httpwwwsyamanticscom-instead/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/093e82f19edc6281344aa3b707c6e2b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">anupom</media:title>
		</media:content>
	</item>
		<item>
		<title>Web developers&#8217; ultimate challenge</title>
		<link>http://anupom.wordpress.com/2008/06/01/web-developers-ultimate-challenge/</link>
		<comments>http://anupom.wordpress.com/2008/06/01/web-developers-ultimate-challenge/#comments</comments>
		<pubDate>Sat, 31 May 2008 23:09:15 +0000</pubDate>
		<dc:creator>anupom</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[challenge]]></category>
		<category><![CDATA[code quality]]></category>
		<category><![CDATA[manageable code]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[scalability]]></category>

		<guid isPermaLink="false">http://anupom.wordpress.com/?p=55</guid>
		<description><![CDATA[It started with one simple question &#8211; what is the ultimate challenge in web development? Well, some of my fellows answered &#8211; ‘may be, it&#8217;s solving problems!’. But trust me, web development is not rocket science &#8211; it’s relatively much much easier than most other programming jobs. Problems that web developers face everyday are pretty [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=55&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It started with one simple question &#8211; what is the ultimate challenge in web development? </p>
<p>Well, some of my fellows answered &#8211; ‘may be, it&#8217;s solving problems!’. But trust me, web development is not rocket science &#8211; it’s relatively much much easier than most other programming jobs. Problems that web developers face everyday are pretty much less computational. We don’t usually have to invent new data structures or new algorithms to solve problems. In most cases, they are already solved – the challenge is here to find out the solution. Honestly, that’s not a real challenge at all, even people having no programming know-how can search that out using Google, given they know the right keywords. Well, may be for them, the challenge is rather to find out the most suitable and the best one. Bad news for those lamerz, Google will not always suggest them which one is better and why. They have to have the skill to judge the solutions or they have to depend on the community opinion.</p>
<p><del datetime="00">Anyway, it’s easy to find out a solution, but it’s tough to find the best one, it’s even tougher to modify that one to fit your need. Sadly that requires a minimal skill. It is very unfortunate for us that many no-brainers have started web development professionally. I saw them modifying the code in a horrible manner – seems like they have no idea of how the original code actually works. They follow a unique process that’s pretty much a trial and error approach. As like, they are trying to solve a Rubik puzzle. They move/modify the code here and there, back and forth, trusting their intuition and then test if the code works. Though the whole process is really pathetic, in most case they do succeed. No worries, it does not matter how the code looks, it works! I am unlucky enough to see such codes and the first thing that comes in my mind is yaak! these are real stinky pieces of shits!</p>
<p>Now we can make best use of Google, we can search out and modify the code and make it work but our code looks pathetic. Well, still it’s alright (If our boss/client is code-quality-ignorant)! But how much time did it take (our boss/client will count that for sure )? Did we try to think about the possible solutions before searching? Trust me, craps are all around and in most cases it’s better to write out our own rather than searching. Well, I am not trying to convince you to re-invent the wheel. My point is clear and loud &#8211; sometime it’s better to create a new wheel than taking an existing wheel and modify it in way so that it works with your vehicle seamlessly and overall it looks good and the design looks perfect as well. Also, I am not against ‘Google search’ and ‘DRY’, it’s absolutely alright to choose and use a particular solution as long as they meet our need or as long as we are smart enough to use that without making our system crappy. Also, it’s good to see how people have tackled the problem, it always helps us to judge and improve our knowledge. It’s a reusable object, a library or framework or anything, go use it but in the right way. Go with a solution, if and only if,<br />
1) It is the right solution to the problem it is addressing<br />
2) We can modify it easily and rapidly to fit our need or it is simply what we need.<br />
3) We are smart enough to plug-in the code without hampering the over all design.<br />
</del><br />
But still there are cases when we have to solve our problems on our own. They may be small, easy and simple problems relatively. But still we have to solve them. We can at most search and find helpful clues. “Problem solving capability” is a combination of 3 qualities – skill, knowledge and creativity. In most cases, we need a very minimal skill (good programming basics – that’ enough to start with). Learning new things and gaining knowledge is certainly one of the challenges. There are thousands of technologies out there. But the good thing is that those technologies are pretty simple to learn and to work with &#8211; given that we have got good basics. Gaining knowledge (in the domain of web development) does not require reading thousands of books; it does not require extensive mathematical background. It rather requires our interest and passion towards learning new things. Skill can be developed out of the knowledge -through hands on experience. Creativity – yes little bit of that is required as well but we don’t have to be a right brainer artist.</p>
<p>Well, solving problems efficiently is a challenge but it is not the ultimate one. It’s infact the easiest one. But the most efficient solution most of the time produces the most unmanageable code. We can certainly speed up the execution time by putting everything in a file, instead of using classes, object orientation that slows up the execution. But that results a crap – an unmanageable codebase – that’s hard to maintain, hard to extend and tough to debug.</p>
<p>All modern web apps are built for change. Changes are fast, frequent, necessary and inevitable. Well, that’s the fact right? So, prepare your code for change, design your app for change &#8211; that’s the ultimate mantra. Web apps are generally not mission critical. The overall process is most likely to be agile, and the project timeline is very short – that means it’s hard to be preemptive, it’s hard to challenge bugs to enter. Bugs will enter and when we will find one we have to fix that quickly – at the same time making sure that our new fix is not introducing any new bug. Our code must be such that it’s easy to extend, easy to modify, easy to reuse and easy to debug. That leads to one conclusion – write manageable code. But writing manageable code for web applications is pretty hard, tricky and non-intuitive. And hence that’s the ultimate challenge – no doubt.</p>
<p>But as I mentioned before, manageable codes are not necessarily the most efficient and most optimized one. Rather usually the contrary is true (just an irrelevant example, Ruby is &gt;100 times slower than native C++, if we want to write the most optimized and efficient one we would use C++ for web development). The fact is hardware is cheaper than development time. So, if manageable code makes our code slower but minimizes our development time, we should go for it. Of course there’s a balance, the ratio between the development cost and the hardware cost etc. etc. need to be considered. Unless we are writing too freaky routines that take unbelievable amount of time it is always recommended to lean towards the manageability, sacrificing the efficiency. There is always a trade-off anyway. In some rare cases (given that your app gets thousands of hits per hour), we should count performance seriously. But as I said it’s rare. And we all know what <a href="http://en.wikipedia.org/wiki/Optimization_(computer_science)#When_to_optimize">the root of all evil</a> is. So, manageability comes first and optimization/performance comes later. Even though gearing up performance is pretty easy &#8211; use caching and optimizing tools. These are simple techniques and having good programming basic is well enough to get acquainted with them. In some really exceptional and extraordinary cases, performance is pretty crucial and it’s pretty hard to scale our application even after using catchy caching mechanisms. Put in more hardware, use distributed system, is what to try out. But that’s not the domain of the web developers; it’s the job of the network engineers. Also we can try to find out hot spots and then try to use any non-scripting language to solve that particular problem (like in PHP building extensions using C++). But still web developers are not C++ experts, it is the job of the C++ guys. So, without mere caching and using some other simple tools web developers do not have any other weapon to face the performance challenge. And using those weapons are relatively easy, it can not be anyway the ultimate challenge.</p>
<p>So, to conclude, here is a list of challenges that are to be faced by the web developers, from hardest to simplest -<br />
1.	Writing manageable code<br />
2.	Learning new things<br />
3.	Improving performance<br />
4.	Writing efficient code<br />
5.	Solving problems</p>
<p>This post contains only my point of view. Anyone can oppose, anyone can find it ignorant, anyone can think it’s arrogant and rude &#8211; but still it’s my view. The point of writing this post is to document the facts that are responsible for igniting frustration inside me. Well, I am sorry if the content or the language hurts anyone.</p>
<p>Also, most of the facts are very much intended to PHP developers (which include me) and relevant to web development using PHP.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/anupom.wordpress.com/55/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/anupom.wordpress.com/55/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/anupom.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/anupom.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/anupom.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/anupom.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/anupom.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/anupom.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/anupom.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/anupom.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/anupom.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/anupom.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/anupom.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/anupom.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/anupom.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/anupom.wordpress.com/55/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=55&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://anupom.wordpress.com/2008/06/01/web-developers-ultimate-challenge/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/093e82f19edc6281344aa3b707c6e2b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">anupom</media:title>
		</media:content>
	</item>
		<item>
		<title>RSS in CakePHP 1.2</title>
		<link>http://anupom.wordpress.com/2008/03/12/rss-in-cakephp-12/</link>
		<comments>http://anupom.wordpress.com/2008/03/12/rss-in-cakephp-12/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 18:30:55 +0000</pubDate>
		<dc:creator>anupom</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Cake]]></category>
		<category><![CDATA[CakePHP 1.2]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[CakePHP RSS]]></category>

		<guid isPermaLink="false">http://anupom.wordpress.com/?p=53</guid>
		<description><![CDATA[We all know what is RSS and how it looks like, here goes simple sample – &#60;?xml version=&#34;1.0&#34;?&#62; &#60;rss version=&#34;2.0&#34;&#62; &#160; &#60;channel&#62; &#160;&#160;&#160; &#60;title&#62;Channel Title&#60;/title&#62; &#160;&#160;&#160; &#60;link&#62;http://www.example.com/&#60;/link&#62; &#160;&#160;&#160; &#60;description&#62;Channel Description&#60;/description &#62; &#160;&#160;&#160; &#60;item&#62; &#160;&#160;&#160;&#160;&#160; &#60;title&#62;title1&#60;/title&#62; &#160;&#160;&#160;&#160;&#160; &#60;link&#62;http://www.example.com/link1&#60;/link&#62; &#160;&#160;&#160;&#160;&#160; &#60;description&#62;description1&#60;/description&#62; &#160;&#160;&#160;&#160;&#160; &#60;pubDate&#62; &#60;/pubDate&#62; &#160;&#160;&#160;&#160;&#160; &#60;guid&#62;http://www.example.com/guid1&#60;/guid&#62; &#160;&#160;&#160; &#60;/item&#62; &#160;&#160;&#160;&#160; &#60;item&#62; &#160;&#160;&#160;&#160;&#160; &#60;title&#62;title2&#60;/title&#62; &#160;&#160;&#160;&#160;&#160; &#60;link&#62;http://www.example.com/link2&#60;/link&#62; &#160;&#160;&#160;&#160;&#160; &#60;description&#62; description2&#60;/description&#62; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=53&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We all know what is RSS and how it looks like, here goes simple sample –</p>
<p><code> </p>
<p>&lt;?xml version=&quot;1.0&quot;?&gt; <br />
  &lt;rss version=&quot;2.0&quot;&gt; <br />
  &nbsp; &lt;channel&gt;<br />
  &nbsp;&nbsp;&nbsp; &lt;title&gt;Channel Title&lt;/title&gt;<br />
  &nbsp;&nbsp;&nbsp; &lt;link&gt;http://www.example.com/&lt;/link&gt;<br />
  &nbsp;&nbsp;&nbsp;  &lt;description&gt;Channel Description&lt;/description &gt; <br />
  &nbsp;&nbsp;&nbsp; &lt;item&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;title1&lt;/title&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;link&gt;http://www.example.com/link1&lt;/link&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;description1&lt;/description&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pubDate&gt; &lt;/pubDate&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;guid&gt;http://www.example.com/guid1&lt;/guid&gt;<br />
  &nbsp;&nbsp;&nbsp; &lt;/item&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp; &lt;item&gt; <br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;title2&lt;/title&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;link&gt;http://www.example.com/link2&lt;/link&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt; description2&lt;/description&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pubDate&gt; &lt;/pubDate&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;guid&gt;http://www.example.com/guid2&lt;/guid&gt;<br />
  &nbsp;&nbsp;&nbsp; &lt;/item&gt;<br />
  &nbsp;&nbsp;&nbsp; &lt;item&gt; <br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;title3&lt;/title&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;link&gt;http://www.example.com/link3&lt;/link&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;description3&lt;/description&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pubDate&gt; &lt;/pubDate&gt;<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;guid&gt;http://www.example.com/guid3&lt;/guid&gt;<br />
  &nbsp;&nbsp;&nbsp; &lt;/item&gt;<br />
  &nbsp; &lt;/channel&gt;<br />
  &lt;/rss&gt; </p>
<p></code></p>
<p>Creating RSS feed like the above is petty easy with the CakePHP1.2’s RSSHelper. Using the RSSHelper and with the help of the RequestHandler component, we can serve both RSS and (X)HTML content from a single controller action. It is pretty easy to plug in RSS feeds to an already written controller action that serves (X)HTML.</p>
<p>Let’s assume we want to add RSS feeds for the following controller action (PostsController/index) –</p>
<p><code>function index() {<br />
       $this-&gt;Post-&gt;recursive = 1;<br />
      //get all posts<br />
      $posts = $this-&gt;Post-&gt;find(‘all’);<br />
      $this-&gt;set(‘posts’, $posts);<br />
     //set the title<br />
      $this-&gt;setTitleForLayout(‘All Posts’);<br />
}</code></p>
<p>Also, assume that $this-&gt;Post-&gt;find(‘all’) call return an array like the following,</p>
<p><code>$post[0]['Post']['id'] = 1;<br />
$post[0]['Post']['title'] = 'title1';<br />
$post[0]['Post']['body'] = 'description1';<br />
$data[0]['User']['name'] = 'author1';<br />
$post[0]['Post']['modified'] = '2008-1-1';<br />
$data[1]['Post']['id'] = 2;<br />
$data[1]['Post']['title'] = 'title2';<br />
$data[1]['Post']['body'] = ''description2;<br />
$data[1]['User']['name'] = 'author2';<br />
$data[1]['Post']['modified'] = '2008-1-21';<br />
$data[2]['Post']['id'] = 3;<br />
$data[2]['Post']['title'] = 'title3';<br />
$data[2]['Post']['body'] = ''description3';<br />
$data[2]['User']['name'] = 'author 3';<br />
$data[2]['Post']['modified'] = '2008-1-3';</code></p>
<p>Now to add RSS feed to this action, first add the ‘RequestHandler’ component in the controller’s $components attribute.</p>
<p><code>var $components = array('RequestHandler');</code></p>
<p>And then add the following line in the app/config/routes.php</p>
<p><code>Router::parseExtensions();</code></p>
<p>By adding these two lines you are telling Cake to auto-detect the requested content type and respond accordingly. As an example, when a request arrives at www.example.com/posts, Cake will render the corresponding view file and serve the normal XHTML. But if a request arrives at www.example.com/posts.rss, Cake will detect that a RSS feed is requested.</p>
<p>When Cake finds out the requested content type is RSS, it does two things -<br />
1.	Automatically adds the RSSHelper to the controller<br />
2.	Renders the RSS feed using the view file –app/views/controller_name/rss/action_name.ctp</p>
<p>So, you need to create separate view files for RSS feeds. For the posts/index action, create index.ctp file inside app/views/posts/rss folder with the following codes.<br />
<code><br />
items($posts, 'transformRSS');<br />
function transformRSS($post) {<br />
		return array(<br />
			'title' =&gt; $post ['Post']['title'],<br />
			'link'  =&gt; array('action' =&gt; 'view', $post['Post']['id']),<br />
			'guid'  =&gt; array('action' =&gt; 'view', $post ['Post']['id']),<br />
			'description' =&gt; $post ['Post']['body'],<br />
			'author' =&gt; $post ['User']['name'],<br />
			'pubDate' =&gt; $post['Post']['modified']<br />
		);<br />
}<br />
?&gt;</code></p>
<p>The items() method can have two parameters.</p>
<p><code>$rss-&gt;items($data, 'callbackFunction');</code></p>
<p>The first one is an array of data that we want to put in our RSS feed. The second parameter is the name of the callback function that maps each element of the $data array to RSS feed elements. In other words, the callback function is executed for each element of the $data array. Inside the callback function, child elements of the item tag of the RSS feed is mapped against each element of the data array.<br />
Look closely at the above code to have a better understanding of how a callback function maps elements of the $data array to the elements of the RSS.<br />
P.S. The ‘link’ and the ‘guid’ elements take data in regular Cake URL parameter format. Cake automatically reformats the timestamp provided for the &#8220;pubDate&#8221; element into the RSS standard. The $title_for_layout set in the action will automatically become the RSS feed’s channel title.<br />
If you find your callback function is mostly the same in several different controllers, you can write down a custom helper class with the callback method and (re)use that method in the view file like the following -</p>
<p><code>echo $rss-&gt;items($posts, array($theHelper, 'callbackFunction'));</code></p>
<p>Sometime instead of using a single controller action for serving both (X)HTML and RSS, you may want to have a separate controller action for serving RSS feed. You can do that too using the RSSHelper!  Let’s assume, you want to serve RSS feed from the index() action of the FeedsController.</p>
<p>First, add the RSSHelper in the controller’s $helpers array-</p>
<p><code>var $helpers = array('rss');</code></p>
<p>Inside the index() action, define an array of associative arrays for item tags and their child tags, like the following. </p>
<p><code>$items = array(<br />
array('title' =&gt; 'title1', 'guid' =&gt; 'http://www.example.com/guid1', 'link' =&gt; 'http://www.example.com/link1', 'description' =&gt; 'description1'),<br />
array('title' =&gt; 'title2', 'guid' =&gt; 'http://www.example.com/guid2', 'link' =&gt; 'http://www.example.com/link2', 'description' =&gt; 'description2'),<br />
array('title' =&gt; 'title3', 'guid' =&gt; 'http://www.example.com/guid3', 'link' =&gt; 'http://www.example.com/link3', 'description' =&gt; 'description3')<br />
);<br />
</code></p>
<p>And then pass the array to the view.</p>
<p><code>$this-&gt;set('items', $items);</code></p>
<p>Define another associative array to denote immediate children of the channel tag and pass that to the view.</p>
<p><code>$channel = array ('title' =&gt; 'Channel Title', 'link' =&gt; 'http://www.example.com/', 'description' =&gt; 'Channel Description');<br />
$this-&gt;set('channel', $channel);<br />
</code></p>
<p>Change the layout of the view to rss,</p>
<p><code>$this-&gt;layout = 'rss/default';</code></p>
<p>Create the view file &#8211; views/feeds/index.ctp, for this action. The view file in fact, will contain only one single line.</p>
<p><code>items($items); ?&gt;</code></p>
<p>And now the index() action of the FeedsController is ready to serve RSS feeds.<br />
Sometime, you may like to have customized title, link or description for the channel tag while you are using one single action for serving both (X)HTML and RSS ( usually, they are auto-generated – like title is the same as the page_title set for that action, link is the same as the site address). In that case, you may do something like the following – </p>
<p><code>if ($this-&gt;RequestHandler-&gt;isRss()) {<br />
           $channel = array (<br />
                                            'title'             =&gt; 'Channel Title',<br />
                                            'link'             =&gt; 'http://www.example.com/',<br />
                                            'description'  =&gt; 'Channel Description'<br />
           );<br />
           $this-&gt;set('channel', $channel);<br />
}<br />
</code></p>
<p>Hope it helps!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/anupom.wordpress.com/53/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/anupom.wordpress.com/53/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/anupom.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/anupom.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/anupom.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/anupom.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/anupom.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/anupom.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/anupom.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/anupom.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/anupom.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/anupom.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/anupom.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/anupom.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/anupom.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/anupom.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=53&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://anupom.wordpress.com/2008/03/12/rss-in-cakephp-12/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/093e82f19edc6281344aa3b707c6e2b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">anupom</media:title>
		</media:content>
	</item>
		<item>
		<title>Ten Minus Two Ways to Skip Cake Defaults</title>
		<link>http://anupom.wordpress.com/2007/10/27/eight-ways-to-skip-cake-defaults/</link>
		<comments>http://anupom.wordpress.com/2007/10/27/eight-ways-to-skip-cake-defaults/#comments</comments>
		<pubDate>Fri, 26 Oct 2007 20:30:02 +0000</pubDate>
		<dc:creator>anupom</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://anupom.wordpress.com/2007/10/27/ten-ways-to-skip-cake-defaults-part-i/</guid>
		<description><![CDATA[&#8220;Convention over Configuration&#8221; &#8211; a smart, elegant and clever approach that has made CakePHP different from other PHP frameworks. When it works, its automagic mesmerizes our mind. Bonus, adhering a particular convention always increases the quality and maintainability of the code. But still there are times when we can not stick to the convention. There [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=49&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8220;Convention over Configuration&#8221; &#8211; a smart, elegant and clever approach that has made CakePHP different from other PHP frameworks. When it works, its automagic mesmerizes our mind. Bonus, adhering a particular convention always increases the quality and maintainability of the code. </p>
<p>But still there are times when we can not stick to the convention. There are times when our minds want to fly higher; they don’t want to be caged by any rule! They want flexibility!</p>
<p>“Cake is too strict” / “Cake is not flexible at all” &#8211; I don’t know how may times I have heard complains like these about my beloved Cake. These are all rubbish; Cake is enough flexible to do almost anything you want. Here goes some ways to escape the convention.</p>
<p><em>Case #1. Database table names</em><br />
According to Cake Convention, table names should be English plural with underscores in between the words, like users, big_brothers etc. If we have a model class named Post then the related database table is posts. This is what Cake thinks by default, it understands it automatically; you don’t have to write it down explicitly.</p>
<p>Yes, it is too cool! But what if we want something else, we want to use artikel table to get related with the Post model. In some cases we may need it, especially when we are using a legacy table. It is too simple,</p>
<p><code>class Post extends AppModel<br />
{<br />
	var $useTable = 'artikel';<br />
}</code></p>
<p><em>Case #2. Database configuration</em><br />
We know by default Cake uses the ‘default’ configuration specified at /app/config/database.php. However, we may like to use a different database for only the Post model. Suppose, we have specified another database configuration named ‘anotherdb’ in the database.php and we want our Post model to use that configuration. That’s too as easy as drinking milk,</p>
<p><code>class Post extends AppModel<br />
{<br />
	var $useDbConfig = 'anotherdb';<br />
}</code></p>
<p><em>Case #3. Primary key</em><br />
By default, Cake thinks the primary_key of any table is id. Sometime it may not be the case. You may have some other name for the primary key. Too simple,</p>
<p><code>class Post extends AppModel<br />
{<br />
	var $primaryKey = 'tin_number';<br />
}</code></p>
<p><em>Case #4. Join table</em><br />
By convention, join table between books and categories should have the name books_categories. Suppose, in our case, the name of the join table is books2categories! It is also possible to fit in to the meticulous (!) framework CakePHP. Just change the value of the joinTable key to books2categories in $hasAndBelongsToMany array in respective Model, as an example in Book model,</p>
<p><code>var $hasAndBelongsToMany = array(<br />
        	'Category' =&gt;<br />
            		array('className'            =&gt; 'Category',<br />
                		          'joinTable'              =&gt; 'books2categories',<br />
				…..</code></p>
<p><em>Case #5. Using different model, more than one model or no model</em><br />
Assume, we want to use Book model from posts_controller.<br />
It&#8217;s plain and simple, just add/change the $uses variable in PostsController,</p>
<p><code>var $uses = array(‘Book’);</code></p>
<p>Let&#8217;s say, We are now getting more demanding, we want to use both Book model and Post model in PostsController, yeah right, just have to do the following,</p>
<p><code>var $uses = array(‘Post’ , ‘Book’);</code></p>
<p>You have surely guessed what should be done to use no model at all,</p>
<p><code>var $uses = array();</code><br />
 <img src='http://s2.wp.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><em>Case #6. Foreign Key not in pattern tablename_id</em><br />
By convention, foreign keys should have names like tablename_id. So, if our posts hasMany comments, the comments table should have a field named post_id that holds the id of the related record of the posts table. Assume, for the sake of the example that we don&#8217;t have any id field in the posts table and the primary of the posts table is &#8216;slug&#8217;.</p>
<p>Suppose, we added a foreign key named &#8216;post_slug&#8217; in the comments table. We can define it as the foreign key in Cake like this,</p>
<p>In Post model,<br />
	<code>var $hasMany = array(<br />
		'Comment' =&gt; array(<br />
			'className'   =&gt; 'Comment',<br />
			'foreignKey'  =&gt; 'post_slug'<br />
		)<br />
	);</code></p>
<p>And in the Comment model,<br />
       <code>var $belongsTo = array(<br />
		'Post' =&gt; array(<br />
			'className'   =&gt; 'Post',<br />
			'foreignKey'  =&gt; 'post_slug'<br />
		)<br />
	);</code></p>
<p>And it will work like a charm!</p>
<p><em>Case #7. Modifying URL</em><br />
Huh! Does Cake URLs should always be like <code>http://yourhost.com/controller_name[/action_name][/parameters]</code> ?<br />
Not at all! If you find your URL structure boring and add some spice in it <code>app/config/routes.php</code> is your friend. Let&#8217;s say, we want to change <code>http://yourhost.com/users/login</code> to <code>http://yourhost.com/signin</code>. To do that open the <code>app/config/routes.php </code>and add the following line,</p>
<p><code>Router::connect('/signin', array('controller' =&gt; 'users', 'action' =&gt; 'login'));</code></p>
<p>Now you have a much prettier and shorter URL!</p>
<p><em>Case #8. Overriding layout</em><br />
Every page that we create is by default comes inside the layout &#8211; &#8220;<code>default.ctp</code>&#8220;. Now, for some particular controller actions we may like to have a different layout. Doing that is pretty straightforward,<br />
First create a separate layout inside <code>app/views/layouts</code> named <code>another.ctp</code><br />
Then inside the controller actions add the following line<br />
<code>$this-&gt;layout('another');</code><br />
And you are done! The view for that action will be rendered inside the layout &#8220;another.ctp&#8221;</p>
<p>Thank you so much !</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/anupom.wordpress.com/49/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/anupom.wordpress.com/49/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/anupom.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/anupom.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/anupom.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/anupom.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/anupom.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/anupom.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/anupom.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/anupom.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/anupom.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/anupom.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/anupom.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/anupom.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/anupom.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/anupom.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=49&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://anupom.wordpress.com/2007/10/27/eight-ways-to-skip-cake-defaults/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/093e82f19edc6281344aa3b707c6e2b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">anupom</media:title>
		</media:content>
	</item>
		<item>
		<title>Get Set Bake / Cake1.2 Console in Win Environment</title>
		<link>http://anupom.wordpress.com/2007/10/01/get-set-bake-cake12-console-in-win-environment/</link>
		<comments>http://anupom.wordpress.com/2007/10/01/get-set-bake-cake12-console-in-win-environment/#comments</comments>
		<pubDate>Sun, 30 Sep 2007 18:57:42 +0000</pubDate>
		<dc:creator>anupom</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://anupom.wordpress.com/2007/10/01/get-set-bake-cake12-console-in-win-environment/</guid>
		<description><![CDATA[The first thing to do in most of the cake project is designing and creating the database and the next obvious step is usually Baking. Cake1.2 has a console script that handles the Baking stuff very smartly. You will find the console script cake.bat in CAKE_ROOT_DIRECTORY\cake\console\ directory. If your PHP_ROOT_DIRECTORY is already added to your [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=47&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The first thing to do in most of the cake project is designing and creating the database and the next obvious step is usually Baking. Cake1.2 has a console script that handles the Baking stuff very smartly. You will find the console script <em>cake.bat</em> in <em>CAKE_ROOT_DIRECTORY\cake\console\</em> directory.</p>
<p>If your <em>PHP_ROOT_DIRECTORY</em> is already added to your system path then you can run the script from the command prompt without any problem. Go to <em>CAKE_ROOT_DIRECTORY\cake\console</em> directory from command prompt and start baking your cake by entering the magic command <em>&#8216;cake bake&#8217;</em>. </p>
<p>If the <em>&#8216;cake bake&#8217;</em> command throws an error message like this -<br />
&#8220;<em>&#8216;php&#8217; is not recognized as an internal or external command, operable program or batch file</em>&#8220;, &#8211; it means the <em>PHP_ROOT_DIRECTORY</em> is not added to your system path. In that case, you have to add the <em>PHP_ROOT_DIRECTORY</em> to your system path first. Go to <em>CAKE_ROOT_DIRECTORY\cake\console</em> directory from the command prompt. If your <em>PHP_ROOT_DIRECTORY</em> is <em>C:\php</em> then enter the following command to set up the path,<br />
<em>set path=C:\php</em> (notice, there is no space before and after the &#8216;=&#8217;),<br />
Now the &#8216;cake bake&#8217; command should work fine.</p>
<p>If you did not configure the database settings in <em>CAKE_ROOT\app\config\database.php</em> yet then you will see something like the following after running the console script,<br />
<code><br />
Welcome to CakePHP v1.2.0.5427alpha Console<br />
---------------------------------------------------------------<br />
App : app<br />
Path: C:\www_root\one_point_two\app<br />
---------------------------------------------------------------<br />
Your database configuration was not found. Take a moment to create one.<br />
</code><code><br />
Database Configuration:<br />
Driver: (mysql/mysqli/mssql/sqlite/postgres/odbc/oracle/db2)<br />
[mysql] &gt;<br />
</code></p>
<p>The script will exit when the database configuration is done. Now it should again be executed to continue the baking process. Enter <em>cake bake</em> command again and you will be prompted with something like the following..</p>
<p><code>Welcome to CakePHP v1.2.0.5427alpha Console<br />
---------------------------------------------------------------<br />
App : app<br />
Path: C:\www_root\one_point_two\app<br />
---------------------------------------------------------------<br />
Interactive Bake Shell<br />
---------------------------------------------------------------<br />
[M]odel<br />
[V]iew<br />
[C]ontroller<br />
[Q]uit<br />
What would you like to Bake? (M/V/C/Q)</p>
<p></code></p>
<p>Follow the recipe, add ingredients, mix them as you want and after some few seconds you will get your first hot cake right out of the oven.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/anupom.wordpress.com/47/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/anupom.wordpress.com/47/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/anupom.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/anupom.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/anupom.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/anupom.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/anupom.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/anupom.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/anupom.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/anupom.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/anupom.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/anupom.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/anupom.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/anupom.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/anupom.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/anupom.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=47&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://anupom.wordpress.com/2007/10/01/get-set-bake-cake12-console-in-win-environment/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/093e82f19edc6281344aa3b707c6e2b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">anupom</media:title>
		</media:content>
	</item>
		<item>
		<title>Convert Google Calendar to Excel</title>
		<link>http://anupom.wordpress.com/2007/09/27/convert-google-calendar-to-excel/</link>
		<comments>http://anupom.wordpress.com/2007/09/27/convert-google-calendar-to-excel/#comments</comments>
		<pubDate>Thu, 27 Sep 2007 16:44:04 +0000</pubDate>
		<dc:creator>anupom</dc:creator>
				<category><![CDATA[google api]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[life optimization]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://anupom.wordpress.com/2007/09/27/convert-google-calendar-to-excel/</guid>
		<description><![CDATA[UPDATE: Now we have a web version of Gcal2Excel! It can be found here. No installation, no hassle! It converts description and location data as well I am not sure if someone other than me (and some of my fellows) needs this or not but last weekend I came up with a Google Calendar to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=45&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>UPDATE: Now we have a <a href="http://gcal2excel.syamantics.com">web version</a> of <a href="http://gcal2excel.syamantics.com">Gcal2Excel</a>! It can be found <a href="http://gcal2excel.syamantics.com">here</a>. No installation, no hassle! It converts description and location data as well</h2>
<hr />
<p>I am not sure if someone other than me (and some of my fellows) needs this or not but last weekend I came up with a Google Calendar to Excel Converter!</p>
<p>Yeah, of course there was a need behind this small innovation. I have to log my working hours in Google calendar everyday and after every fortnight have to provide an excel sheet containing my working hours to the authorities. Not surprisingly, some of my colleagues also have to do the same thing. After every fortnight, we have to go through our Google Calendars (which we maintain regularly) and then have to write down all the working hours and task titles and then by summing them up we have to find out our total working hours for that time period. It&#8217;s really a pain and we needed something to do this work for us automatically.</p>
<p><a href='http://anupom.files.wordpress.com/2007/09/gcal2excel.gif' title='gcal2excel.gif'><img src='http://anupom.files.wordpress.com/2007/09/gcal2excel.gif?w=600' alt='gcal2excel.gif' /></a></p>
<p>I was badly in need of such application and hence during the last weekend I coded a Java application that writes down all Google Calendar events of a specified time period to an Excel file. It&#8217;s really a life saver and hopefully it&#8217;s gonna help my fellow coders to save their lives to.</p>
<p>Thanks to Google Data API, JExcel, Ostermillerutils (for encryption) and JCalendar libraries without them it would not be possible to make it in such a short time. I have uploaded the (undocumented!) code in googlecodes, here is the u<a href="https://gcal2excel.googlecode.com/svn/trunk/">rl of the svn repository</a> (if you are interested). It may not help everyone out there but this code can be easily extended to a complete &#8216;Salary Automation System using Google Calendar&#8217;. You can also download the executable .jar file from <a href="http://gcal2excel.googlecode.com/files/Gcal2Excel.rar">here</a> and this app runs only on <strong>JRE5</strong>.</p>
<hr />
<h2 style="margin-top:12px;">UPDATE: Now we have a <a href="http://gcal2excel.syamantics.com">web version</a> of <a href="http://gcal2excel.syamantics.com">Gcal2Excel</a>! It can be found <a href="http://gcal2excel.syamantics.com">here</a>. No installation, no hassle! It converts description and location data as well</h2>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/anupom.wordpress.com/45/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/anupom.wordpress.com/45/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/anupom.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/anupom.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/anupom.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/anupom.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/anupom.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/anupom.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/anupom.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/anupom.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/anupom.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/anupom.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/anupom.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/anupom.wordpress.com/45/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/anupom.wordpress.com/45/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/anupom.wordpress.com/45/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=45&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://anupom.wordpress.com/2007/09/27/convert-google-calendar-to-excel/feed/</wfw:commentRss>
		<slash:comments>84</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/093e82f19edc6281344aa3b707c6e2b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">anupom</media:title>
		</media:content>

		<media:content url="http://anupom.files.wordpress.com/2007/09/gcal2excel.gif" medium="image">
			<media:title type="html">gcal2excel.gif</media:title>
		</media:content>
	</item>
		<item>
		<title>Need for Docs</title>
		<link>http://anupom.wordpress.com/2007/06/20/need-for-docs/</link>
		<comments>http://anupom.wordpress.com/2007/06/20/need-for-docs/#comments</comments>
		<pubDate>Tue, 19 Jun 2007 21:43:32 +0000</pubDate>
		<dc:creator>anupom</dc:creator>
				<category><![CDATA[documentation]]></category>
		<category><![CDATA[knowledge management]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://anupom.wordpress.com/2007/06/20/need-for-docs/</guid>
		<description><![CDATA[The title of this post is a bit mystifying and I am sure you all are wondering what this post is all about! He he.. Let me tell you a story.. But before that have a look at the following definitions (that are taken from wikipedia) … 1.Tacit Knowledge By definition, tacit knowledge is knowledge [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=41&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The title of this post is a bit mystifying and I am sure you all are wondering what this post is all about! He he.. Let me tell you a story..</p>
<p>But before that have a look at the following definitions (that are taken from <a href="http://www.en.wikipedia.org">wikipedia</a>) …</p>
<p>1.<a href="http://en.wikipedia.org/wiki/Tacit_knowledge">Tacit Knowledge</a></p>
<p>By definition, tacit knowledge is knowledge that people carry in their minds and is, therefore, difficult to access. Often, people are not aware of the knowledge they possess or how it can be valuable to others. Tacit knowledge is considered more valuable because it provides context for people, places, ideas, and experiences. Effective transfer of tacit knowledge generally requires extensive personal contact and trust. Tacit knowledge is not easily shared. One of Polanyi&#8217;s famous aphorisms is: &#8220;We know more than we can tell.&#8221; Tacit knowledge consists often of habits and culture that we do not recognize in ourselves. In the field of knowledge management the concept of tacit knowledge refers to a knowledge which is only known by an individual and that is difficult to communicate to the rest of an organization. Knowledge that is easy to communicate is called explicit knowledge. The process of transforming tacit knowledge into explicit knowledge is known as codification or articulation.</p>
<p>2. <a href="http://en.wikipedia.org/wiki/Explicit_knowledge">Codified / explicit Knowledge</a></p>
<p>Explicit knowledge is knowledge that has been articulated, documented, and stored in certain media. It can be readily transmitted to others. The most common forms of explicit knowledge are manuals, documents and procedures.</p>
<p>Now let&#8217;s start the story..<br />
<span id="more-41"></span><br />
Once upon a time there were two software firms (<em>A</em> and <em>B</em>). Both started at the same time and let’s say both have hired 10 fresh graduates and have project managers and other managerial people. Then soon after their starting, both of them got some cool projects on e-governance. Time passed by.. They got some other projects on e-governance and were busy with those projects. And in this way five years passed and in those five years <em>A</em> and <em>B</em> both worked only in the e-governance sector. Consequently they got some reputation in the industry as e-governance specialist. In due course, both of the companies have got new deals &#8211; new projects on e-governance. Both of the projects have quite same requirements.</p>
<p>For the sake of the story, let&#8217;s say <em>A</em> has all the experience in tacit form whereas <em>B</em> has it in coded form and <em>A</em> and <em>B</em> hired some new people for their new big projects. Now <em>A</em> will find it difficult to transmit its experience to the newcomers. Also in the last 5 years <em>A</em> did not form any kind of strict process or policies (on each and every part of the development cycle), people in <em>A</em> mostly rely on their personal abilities and experiences rather than a shared mechanism of doing and solving a particular problem. As well as, they did not build well documented reusable libraries. So, for the new project they have to give some more time to transfer their experiences to the new people. As a result, <em>A</em> will take a longer time to develop the new software and also the cost will be high.</p>
<p>On the other hand, <em>B</em> has developed..</p>
<ul>
<li>a large collection of well documented libraries and reusable objects, </li>
<li>
a well defined process of gathering the requirements (may be template that suits best for e-governance)</li>
<li>suitable architectures and design patterns (of course documented) for building e-governance applications.</li>
<li>
some other quite strict policies, processes and standards</li>
</ul>
<p>So for <em>B</em> ..</p>
<ul>
<li>it will take less time to build the new app.</li>
<li>It will take less time to transfer their experience to new people.</li>
<li>The quality of the software will be higher (as those reusable objects are well tested and etc)</li>
<li>The productivity and efficiency of the team will be higher.</li>
<li>Cost will decrease.</li>
<li>Rework will be less.</li>
<li>Customer satisfaction will be higher.</li>
<li>And most importantly now they can pay more!</li>
</ul>
<p><a href='http://anupom.files.wordpress.com/2007/06/km.png' title='km.png'><img src='http://anupom.files.wordpress.com/2007/06/km.png?w=600' alt='km.png' /></a><br />
So, we can see documentation and articulation has a role to play. Managers should encourage these things and team should practice knowledge management. And it is very likely that in the long run these things will pay off as the ability of making more profit of the company should go higher with the experience.</p>
<p>The story is not finished yet&#8230; now those 10 experience people of company <em>A</em> has left the team. Now what will happen? Things will be much worse; company <em>A</em> now has nothing but a disc full of codes of their previous projects, New people will not like to dig into those codes and even if they like it will take a quite a bit of time. And still company <em>A</em> will be fully hopeless losing all of its experiences that flew away with the brain of the older developers. This impact (because of the switching of developers) is known as turn over impact. When a developer of a company like <em>A</em>, leaves like that he is not only leaving with the knowledge but also leaving some liabilities to the company <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Now if the same thing happens to the company <em>B</em> (most unlikely though, as they are paying higher) the impact will be much less. The new people will be able to adopt things quickly and the company will survive and will still grow..</p>
<p>So writing documents..</p>
<ul>
<li>is not because of only understanding the problem (some problems are small enough and some people are smart enough to skip the documentation) </li>
<li>
it is because we want coded knowledge that can be shared amongst others </li>
<li>it is because it helps the company to grow and earn more revenue in the long run</li>
<li>it is because it is the capital of the company that it will gain over time </li>
<li>and it is because cash can be extracted from this intellectual capital. </li>
</ul>
<p>It is all about capturing, documenting and articulating tacit knowledge.</p>
<p>Still not convinced? Just think how a little code convention document helps to standardize the code and how every developer gets benefited from it.</p>
<p>To know more about knowledge management go to this link <a href="http://www.cio.com/article/40343">http://www.cio.com/article/40343</a></p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/anupom.wordpress.com/41/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/anupom.wordpress.com/41/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/anupom.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/anupom.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/anupom.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/anupom.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/anupom.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/anupom.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/anupom.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/anupom.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/anupom.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/anupom.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/anupom.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/anupom.wordpress.com/41/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/anupom.wordpress.com/41/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/anupom.wordpress.com/41/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=41&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://anupom.wordpress.com/2007/06/20/need-for-docs/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/093e82f19edc6281344aa3b707c6e2b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">anupom</media:title>
		</media:content>

		<media:content url="http://anupom.files.wordpress.com/2007/06/km.png" medium="image">
			<media:title type="html">km.png</media:title>
		</media:content>
	</item>
		<item>
		<title>Call Controller Functions or Access Controller Variables from Views</title>
		<link>http://anupom.wordpress.com/2007/01/08/call-controller-functions-or-access-controller-variables-from-views/</link>
		<comments>http://anupom.wordpress.com/2007/01/08/call-controller-functions-or-access-controller-variables-from-views/#comments</comments>
		<pubDate>Mon, 08 Jan 2007 11:27:53 +0000</pubDate>
		<dc:creator>anupom</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://anupom.wordpress.com/2007/01/08/call-controller-functions-or-access-controller-variables-from-views/</guid>
		<description><![CDATA[By the convention of the MVC design pattern, I think it may not be recommended, but it is sometime very useful for the sake of ease &#38; simplicity. If you have a controller variable var1 &#38; a controller function func1(), you can call them directly from your views like the following: &#60;?php $this-&#62;controller-&#62;func1(); echo $this-&#62;controller-&#62;var1; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=40&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>By the convention of the MVC design pattern, I think it may not be recommended, but it is sometime very useful for the sake of ease &amp; simplicity.</p>
<p>If you have a controller variable var1 &amp; a controller function func1(), you can call them directly from your views like the following:</p>
<p><code>&lt;?php<br />
$this-&gt;controller-&gt;func1();<br />
echo $this-&gt;controller-&gt;var1;<br />
?&gt;</code></p>
<p>Again, (over) referencing the controller from the view is not recommended. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/anupom.wordpress.com/40/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/anupom.wordpress.com/40/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/anupom.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/anupom.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/anupom.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/anupom.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/anupom.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/anupom.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/anupom.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/anupom.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/anupom.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/anupom.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/anupom.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/anupom.wordpress.com/40/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/anupom.wordpress.com/40/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/anupom.wordpress.com/40/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=40&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://anupom.wordpress.com/2007/01/08/call-controller-functions-or-access-controller-variables-from-views/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/093e82f19edc6281344aa3b707c6e2b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">anupom</media:title>
		</media:content>
	</item>
		<item>
		<title>Get Controller, Action, URL information from Views/Elements</title>
		<link>http://anupom.wordpress.com/2007/01/08/get-controller-action-url-information-from-viewselements/</link>
		<comments>http://anupom.wordpress.com/2007/01/08/get-controller-action-url-information-from-viewselements/#comments</comments>
		<pubDate>Mon, 08 Jan 2007 11:26:56 +0000</pubDate>
		<dc:creator>anupom</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://anupom.wordpress.com/2007/01/08/get-controller-action-url-information-from-viewselements/</guid>
		<description><![CDATA[It is sometime very useful to know the name of the controller/action that is calling the view/elements. Suppose you want to create a menubar/navigation element, where you want to highlight the menuitem which is now active. Now, it will be easier for you to highlight the menuitem accordingly if you can get the url or [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=39&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>It is sometime very useful to know the name of the controller/action that is calling the view/elements.</p>
<p>Suppose you want to create a menubar/navigation element, where you want to highlight the menuitem which is now active. Now, it will be easier for you to highlight the menuitem accordingly if you can get the url or controller/action name from the element&#8217;s code.</p>
<p>You can get this easily, every view or element gets a parameter by default in cakePHP called $params. The $params is an associative array that looks like-</p>
<p><code>Array (<br />
[controller] =&gt; controller_name<br />
[action] =&gt; action_name<br />
[url] =&gt; Array         (             [url] =&gt; cake_url )<br />
)</code></p>
<p>So, by calling <code>$params['url']['url']</code> from your views/elements you will get the current url. Thanks.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/anupom.wordpress.com/39/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/anupom.wordpress.com/39/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/anupom.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/anupom.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/anupom.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/anupom.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/anupom.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/anupom.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/anupom.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/anupom.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/anupom.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/anupom.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/anupom.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/anupom.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/anupom.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/anupom.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=39&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://anupom.wordpress.com/2007/01/08/get-controller-action-url-information-from-viewselements/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/093e82f19edc6281344aa3b707c6e2b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">anupom</media:title>
		</media:content>
	</item>
		<item>
		<title>Configuring Dreamweaver 8 for Editing .thtml</title>
		<link>http://anupom.wordpress.com/2007/01/08/configuring-dreamwaver-8-for-editing-thtml/</link>
		<comments>http://anupom.wordpress.com/2007/01/08/configuring-dreamwaver-8-for-editing-thtml/#comments</comments>
		<pubDate>Mon, 08 Jan 2007 11:26:10 +0000</pubDate>
		<dc:creator>anupom</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://anupom.wordpress.com/2007/01/08/configuring-dreamwaver-8-for-editing-thtml/</guid>
		<description><![CDATA[To configure Dreamweaver 8 for treating a .thtml file as a php file, open dreamweaver_installation_folder\Configuration\DocumentTypes\MMDocumentTypes.xml with any text editor and find out the line containing winfileextension="php,php3,php4,php5". Now add &#8216;,thtml&#8217; at the end of this string like this: winfileextension="php,php3,php4,php5,thtml". That&#8217;s all, Dreamweaver will now code-color .thtml files as it does for .php files. Thank you!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=38&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>To configure Dreamweaver 8 for treating a .thtml file as a php file, open dreamweaver_installation_folder\Configuration\DocumentTypes\MMDocumentTypes.xml  with any text editor and find out the line containing <code>winfileextension="php,php3,php4,php5"</code>.</p>
<p>Now add &#8216;,thtml&#8217; at the end of this string like  this: <code>winfileextension="php,php3,php4,php5,thtml"</code>.</p>
<p>That&#8217;s all, Dreamweaver will now code-color .thtml files as it does for .php files. Thank you!</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/anupom.wordpress.com/38/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/anupom.wordpress.com/38/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/anupom.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/anupom.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/anupom.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/anupom.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/anupom.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/anupom.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/anupom.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/anupom.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/anupom.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/anupom.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/anupom.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/anupom.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/anupom.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/anupom.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=anupom.wordpress.com&amp;blog=295932&amp;post=38&amp;subd=anupom&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://anupom.wordpress.com/2007/01/08/configuring-dreamwaver-8-for-editing-thtml/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/093e82f19edc6281344aa3b707c6e2b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">anupom</media:title>
		</media:content>
	</item>
	</channel>
</rss>
