<?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>My Learnings - Markish Personal Blog &#187; Technology</title>
	<atom:link href="http://markish.in/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://markish.in</link>
	<description>It&#039;s my Blog....!</description>
	<lastBuildDate>Thu, 10 Mar 2011 08:41:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Access Denied error in MAMP mysqlcheck</title>
		<link>http://markish.in/2011/03/access-denied-error-in-mamp-mysqlcheck/</link>
		<comments>http://markish.in/2011/03/access-denied-error-in-mamp-mysqlcheck/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 08:41:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[UNIX / MAC]]></category>
		<category><![CDATA[MAC]]></category>
		<category><![CDATA[MAMP]]></category>
		<category><![CDATA[mysqlcheck]]></category>

		<guid isPermaLink="false">http://markish.in/?p=221</guid>
		<description><![CDATA[<p>Ever since I moved to MAC, I&#8217;m using MAMP for local development. I&#8217;s  getting a annoying error message whenever I&#8217;d start MAMP in my machine something like &#8216;Unable to access Mysql for user root with password&#8217;. I decided to end this today. Here is the way to get rid of this.</p> <p></p> <p> Go [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since I moved to MAC, I&#8217;m using MAMP for local development. I&#8217;s  getting a annoying error message whenever I&#8217;d start MAMP in my machine something like &#8216;Unable to access Mysql for user root with password&#8217;. I decided to end this today. Here is the way to get rid of this.</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="Screen shot 2011-03-10 at 9.22.59 AM.png" src="http://markish.in/wp-content/uploads/2011/03/Screen-shot-2011-03-10-at-9.22.59-AM.png" border="0" alt="Screen shot 2011 03 10 at 9 22 59 AM" width="421" height="212" /></p>
<p><span id="more-221"></span>
<ul>
<li>Go to folder /Applications/MAMP/bin (in my case, change it accordingly) in finder</li>
<li>Edit the following files (<strong>All three</strong>)</li>
</ul>
<ol>
<li>
<ol>
<li>checkMysql.sh</li>
<li>quickCheckMysqlUpgrade.sh</li>
<li>repairMysql.sh</li>
</ol>
</li>
</ol>
<ul>
<li>All the files will have references to root user and password. ind something like -u root -proot</li>
<li>Replace -proot with -p&lt;password&gt; where &#8216;&lt;password&gt;&#8217; is your actual password.</li>
<li>Now quit MAMP and restart, you would see the problem solved.</li>
</ul>
<p>Hope this helps someone looking for this.</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://markish.in/2011/03/access-denied-error-in-mamp-mysqlcheck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Offline Blog Editors for Mac</title>
		<link>http://markish.in/2011/02/offline-blog-editors-for-mac/</link>
		<comments>http://markish.in/2011/02/offline-blog-editors-for-mac/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 04:05:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[UNIX / MAC]]></category>
		<category><![CDATA[blogging from mac]]></category>
		<category><![CDATA[ecto]]></category>
		<category><![CDATA[Editors]]></category>
		<category><![CDATA[marsedit]]></category>
		<category><![CDATA[offline blog ediotr]]></category>
		<category><![CDATA[qumano]]></category>

		<guid isPermaLink="false">http://markish.in/?p=212</guid>
		<description><![CDATA[<p>I&#8217;m so obsessed with offline blogging tools. I just for some reason can&#8217;t use the browser based editors. I&#8217;ve been trying to find some blogging editors for exclusively for Mac. I thought I&#8217;d share my thoughts and experience about that. Probably it may help someone to find one. Let me start with the free one.</p> [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m so obsessed with offline blogging tools. I just for some reason can&#8217;t use the browser based editors. I&#8217;ve been trying to find some blogging editors for exclusively for Mac. I thought I&#8217;d share my thoughts and experience about that. Probably it may help someone to find one. Let me start with the free one.</p>
<p><span id="more-212"></span>
<p style="font-size: 15px;"><strong><a href="http://www.qumana.com/download.php">Qumana</a>:</strong></p>
<p>It&#8217;s readily available for free download. They just ask for your email Id. No verification required even. Quamana comes with a unique feature of inbuilt integration for it&#8217;s own advertising network. It&#8217;s know as QAds. Have you heard about it..? I&#8217;ve not. QAds is now know as Adgenta. Neither I know about it. It has standard rich text editing features, store as draft option, categories, keywords tagging and many other features. It&#8217;s definitely worth a try as it&#8217;s free anyways !</p>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="qumana.png" src="http://markish.in/wp-content/uploads/2011/02/qumana.png" border="0" alt="Qumana" width="400" height="244" /></p>
<p>Forget to mention it&#8217;s localized in four languages.</p>
<p style="font-size: 15px;"><strong><a href="http://illuminex.com/ecto/">Ecto</a></strong></p>
<p>Next in the list is Ecto. It&#8217;s not a freeware. It comes with a price tag of $ 19.95. Is it worth the cost. Really not sure. I don&#8217;t find any compelling feature as compared with Qumana. Ecto has a big legacy. It&#8217;s is the successor of the wildly popular <span style="text-decoration: underline;">Kung-Log</span> which earned a <a href="http://blog.kung-foo.tv/archives/000511.php">4.5 mice</a> rating in the MacWorld July 2003 issue as well as high ratings at <a href="http://www.versiontracker.com/dyn/moreinfo/macosx/15723">VersionTracker.com</a> and <a href="http://www.macupdate.com/info.php/id/8918">MacUpdate.com</a>. [ Information source: ecto website]. Anyhow you have a one month free evaluation copy. Download and try it out&#8230;!</p>
<p style="font-size: 15px;"><span style="font-size: medium;"><img style="display: block; margin-left: auto; margin-right: auto;" title="ecto.png" src="http://markish.in/wp-content/uploads/2011/02/ecto1.png" border="0" alt="Ecto" width="400" height="244" /></span></p>
<p>Ecto also supports all standard features &#8211; Offline editing, RT Interface, spellcheck, multiple-accounts, support for most popular weblogs , Keyword tagging, Categorization. Few additional features would be syntax coloring of HTML, Quick access menu with HTML templates, Posting Summary, ability to change the posting date of entries &#8230; <img src='http://markish.in/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="font-size: 18px;"><span style="font-size: 15px;"><strong><a href="http://www.red-sweater.com/marsedit/">MarsEdit</a></strong></span></p>
<p>Next  in the list is the MarsEdit. It&#8217;s again a commercial software. It comes with a price tag of $ 39.95. Too high&#8230;! ah! It also has one month fully functional evaluation version. More than the standard features, It gives some nice features like</p>
<ul>
<li><strong>Live preview </strong>- Unlike other browsers, I needn&#8217;t click the preview button to check my layout and content often.</li>
<li><strong>Integrates with Other Editor</strong> &#8211; <span class="featureText">Integrates cleanly with BBEdit, SubEthaEdit, TextMate, TextWrangler, and any editor that supports that ODBEditor suite.</span></li>
<li><strong>Quick Access to Media</strong> &#8211; On Mac, it gives one click access to your iPhoto, Flicker, Aperture, Lightroom &#8230;etc</li>
<li><strong>Re-Blog It</strong> &#8211; It comes with a browser bookmarklet. Starting a new post from something you read is just a click away&#8230;!</li>
</ul>
<p><img style="display: block; margin-left: auto; margin-right: auto;" title="MarsEdit.png" src="http://markish.in/wp-content/uploads/2011/02/MarsEdit.png" border="0" alt="MarsEdit" width="400" height="242" /></p>
<p><span class="featureText">Somehow, I liked the MarsEdit User interface. I felt it&#8217;s more native to Mac as compared to others. For me It&#8217;s as easy as my Mail application. I&#8217;ve finally settled down with &#8216;MarsEdit&#8217;. Still I&#8217;ve to figure out if my spent of $ 39.95 is worth it&#8230;!</span></p>
<p><span class="featureText">It&#8217;s not an exhaustive list. Please do share your comments about your experience / view about this and other tools available.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://markish.in/2011/02/offline-blog-editors-for-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kill a list  of processes in unix in one go..!</title>
		<link>http://markish.in/2011/01/kill-a-list-of-processes-in-unix-in-one-go/</link>
		<comments>http://markish.in/2011/01/kill-a-list-of-processes-in-unix-in-one-go/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 04:56:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[UNIX / MAC]]></category>
		<category><![CDATA[kill multiple process]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://markish.in/?p=205</guid>
		<description><![CDATA[<p>Just thought would share it here. I just wanted to list of processes in unix in a single go. After trying some of the syntax I got it right. Here it is&#8230;</p> Source code&#160;&#160;&#160;ps -aux &#124; grep -i &#34;test&#34; &#124; awk '&#123;print $2&#125;' &#124; xargs kill -9 <p>Bit of explanation below :</p> <p>ps -aux [...]]]></description>
			<content:encoded><![CDATA[<p>Just thought would share it here. I just wanted to list of processes in unix in a single go. After trying some of the syntax I got it right. Here it is&#8230;</p>
<div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://markish.in/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="haskell" style="font-family:monospace;">ps <span class="sy0">-</span>aux <span class="sy0">|</span> grep <span class="sy0">-</span>i <span class="st0">&quot;test&quot;</span> <span class="sy0">|</span> awk '<span class="br0">&#123;</span><a href="http://haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#v:print"><span class="kw3">print</span></a> <span class="sy0">$</span>2<span class="br0">&#125;</span>' <span class="sy0">|</span> xargs kill <span class="sy0">-</span><span class="nu0">9</span></pre></div></div>
<p>Bit of explanation below :</p>
<p>ps -aux &#8211;&gt; Lists all the processes running in the machine in the below order.</p>
<p>USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND</p>
<p>grep -i &#8220;test&#8221; &#8211;&gt; filters all the row containing word &#8216;test&#8217; in this case. Here you can change anything you want to filter or kill..!</p>
<p>awk &#8216;{print $2}&#8217;  &#8211;&gt; Prints the second column i.e the PID (process ID)</p>
<p>xargs kill -9  &#8211;&gt;  Passes them as arguments to the kill command. -9 is the &#8216;force kill&#8217; signal.</p>
<p>Hope it helps someone looking for this. Do share if any better way of doing this.</p>
]]></content:encoded>
			<wfw:commentRss>http://markish.in/2011/01/kill-a-list-of-processes-in-unix-in-one-go/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Email Validation in PHP</title>
		<link>http://markish.in/2010/12/email-validation-in-php/</link>
		<comments>http://markish.in/2010/12/email-validation-in-php/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 05:10:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Internet Technology]]></category>
		<category><![CDATA[PHP & Mysql]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Dominic Sayer]]></category>
		<category><![CDATA[Email Validation]]></category>
		<category><![CDATA[Email Validation in PHP]]></category>
		<category><![CDATA[isemail]]></category>
		<category><![CDATA[is_email]]></category>

		<guid isPermaLink="false">http://markish.in/?p=196</guid>
		<description><![CDATA[<p>Many times, we need to validate an email, the end user enters in our web data forms. If you business operations depend heavily on email (atleast as mine does), verifying &#38; validating the customer data becomes a nightmare if you don&#8217;t validate the email input properly. Email validation can be done in many ways. [...]]]></description>
			<content:encoded><![CDATA[<p>Many times, we need to validate an email, the end user enters in our web data forms. If you business operations depend heavily on email (atleast as mine does), verifying &amp; validating the customer data becomes a nightmare if you don&#8217;t validate the email input properly. <span id="more-196"></span>Email validation can be done in many ways. One of the most popular being the regexp method. Almost all languages support regexp directly or indirectly. But is it completely fool proof..? Or does it comply with all standard definitions of an email. To understand or answer this, we need to know what is a valid email.</p>
<p>As of today, a valid email by definition is defined by these below RFCs</p>
<ul>
<li><a href="http://tools.ietf.org/html/rfc5321#section-4.1.2" target="_blank">RFC 5321</a>,</li>
<li><a href="http://tools.ietf.org/html/rfc5322#section-3.4.1" target="_blank">RFC 5322</a>,</li>
<li><a href="http://tools.ietf.org/html/rfc4291#section-2.2" target="_blank">RFC 4291</a>,</li>
<li><a href="http://tools.ietf.org/html/rfc5952" target="_blank">RFC 5952</a> <em>new</em>,</li>
<li><a href="http://tools.ietf.org/html/rfc1123#section-2.1" target="_blank">RFC1123</a>,</li>
<li><a href="http://tools.ietf.org/html/rfc3696" target="_blank">RFC3696</a> (<em>especially the errata</em>).</li>
<li>Let me also point out some RFCs that are <em>less</em> relevant,  even thought they are frequently cited: RFC 822 (obsoleted by RFC 5322),  RFC 2822 (obsoleted by RFC 5322) and RFC1035 (updated by RFC1123).</li>
</ul>
<p><em><strong>Few things I&#8217;ve noticed and would be interesting to note.</strong></em></p>
<ul>
<li>A Plus sign is perfectly valid in a email. Thus markishh+blogging@gmail.com is a perfectly valid email. Moreover, email clients like gmail use the second portion i.e next to plus as &#8216;label&#8217; for the incoming messages from them. I really have not tested what happens if it has two plus signs.</li>
<li>The maximum length of a valid email is 254 characters. It comes from the maximum length of a SMTP transaction is 256 characters including the two angled brackets</li>
<li>Regexp can&#8217;t be used to validate email 100 %. It can test the basics to an extend.</li>
<li>Special characters can be used in a valid email, it they are enclosed in double quotes. Thus <strong>&#8220;markish#@test&#8221;@markish.in</strong> is a valid email. But remember they can&#8217;t be escaped by a backslash like what most of us believe.</li>
</ul>
<p>Ok Now, let&#8217;s see how email can validated to a much better extend. Email validation can be done at client end as well as server side. Client side you can implement any regexp that would satisfy. Something like below would help</p>
<ul>
<li>^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$</li>
<li>^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$</li>
</ul>
<p>In the server side, I&#8217;d suggest is_email.php a parser / validator developed by Dominic Sayers as a perfect fit. You can download this from <a title="Download Here" href="http://code.google.com/p/isemail/downloads/list" target="_blank">here</a></p>
<p>Once you download the PHP version from here, just include the same in your project. Some thing like below code snippet would do the trick of validation. It&#8217;s the best known validator for email as per the existing RFC standards.</p>
<div id="wpshdo_5" class="wp-synhighlighter-outer"><div id="wpshdt_5" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_5"></a><a id="wpshat_5" class="wp-synhighlighter-title" href="#codesyntax_5"  onClick="javascript:wpsh_toggleBlock(5)" title="Click to show/hide code block">Simple Usage</a></td><td align="right"><a href="#codesyntax_5" onClick="javascript:wpsh_code(5)" title="Show code only"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_5" onClick="javascript:wpsh_print(5)" title="Print code"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://markish.in/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_5" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw1">require_once</span> <span class="st_h">'is_email.php'</span><span class="sy0">;</span>
<span class="re0">$email</span><span class="sy0">=</span><span class="st0">&quot;markishh@gmail.com&quot;</span><span class="sy0">;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span>is_email<span class="br0">&#40;</span><span class="re0">$email</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
	<span class="kw1">echo</span> <span class="st0">&quot;<span class="es4">$email</span> is a valid email address&quot;</span><span class="sy0">;</span>
 <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
 	<span class="kw1">echo</span> <span class="st0">&quot;<span class="es4">$email</span> is invalid&quot;</span><span class="sy0">;</span>
 <span class="br0">&#125;</span></pre></div></div>
<p>The above is very simple and straight forward usage of the script. is_email function returns a Boolean which can be validated against. The class also supports an extended result for the email we supply.</p>
<div id="wpshdo_6" class="wp-synhighlighter-outer"><div id="wpshdt_6" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_6"></a><a id="wpshat_6" class="wp-synhighlighter-title" href="#codesyntax_6"  onClick="javascript:wpsh_toggleBlock(6)" title="Click to show/hide code block">Extended Usage / Testing</a></td><td align="right"><a href="#codesyntax_6" onClick="javascript:wpsh_code(6)" title="Show code only"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_6" onClick="javascript:wpsh_print(6)" title="Print code"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://markish.in/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_6" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw1">require_once</span> <span class="st_h">'is_email.php'</span><span class="sy0">;</span>
<span class="re0">$email</span> <span class="sy0">=</span> <span class="st_h">'markishh@gmail.co'</span><span class="sy0">;</span>
<span class="re0">$result</span> <span class="sy0">=</span> is_email<span class="br0">&#40;</span><span class="re0">$email</span><span class="sy0">,</span> <span class="kw4">true</span><span class="sy0">,</span> <span class="kw4">E_WARNING</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$result</span> <span class="sy0">===</span> ISEMAIL_VALID<span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="kw1">echo</span> <span class="st0">&quot;<span class="es4">$email</span> is a valid email address&quot;</span><span class="sy0">;</span>
<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$result</span> <span class="sy0">&lt;</span> ISEMAIL_ERROR<span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="kw1">echo</span> <span class="st0">&quot;Warning! <span class="es4">$email</span> may not be a real email address (result code <span class="es4">$result</span>)&quot;</span><span class="sy0">;</span>
<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
	<span class="kw1">echo</span> <span class="st0">&quot;<span class="es4">$email</span> is not a valid email address (result code <span class="es4">$result</span>)&quot;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>The extended results gives you the SMTP level results as well. This is a very handy as well as simple script that can be added to your existing projects as well.  I hope someone would find it useful and interesting.</p>
<h6>@ Credits to Dominic Sayers for developing such a complete validator.</h6>
<p>Download link again : <a href=http://code.google.com/p/isemail/downloads/list>http://code.google.com/p/isemail/downloads/list</a></p>
]]></content:encoded>
			<wfw:commentRss>http://markish.in/2010/12/email-validation-in-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementing Output Caching in PHP &#8211; Solve Perfomance Issues</title>
		<link>http://markish.in/2010/12/implementing-output-caching-in-php-solve-perfomance-issues/</link>
		<comments>http://markish.in/2010/12/implementing-output-caching-in-php-solve-perfomance-issues/#comments</comments>
		<pubDate>Sat, 18 Dec 2010 09:26:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Internet Technology]]></category>
		<category><![CDATA[PHP & Mysql]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Caching with PHP]]></category>
		<category><![CDATA[Data Caching]]></category>
		<category><![CDATA[Output caching]]></category>
		<category><![CDATA[Record set Caching]]></category>
		<category><![CDATA[Tutorial for Caching in PHP]]></category>

		<guid isPermaLink="false">http://markish.in/?p=162</guid>
		<description><![CDATA[<p>Cache by definition is transparent storage where results can be stored, so that the future requests can be served faster. With the amount of data handled ever growing, and the necessity for caching has become unavoidable in any decent size web application. In this series, I&#8217;d try to bring out various alternatives available in [...]]]></description>
			<content:encoded><![CDATA[<p>Cache by definition is transparent storage where results can be stored, so that the future requests can be served faster. With the amount of data handled ever growing, and the necessity for caching has become unavoidable in any decent size web application. In this series, I&#8217;d try to bring out various alternatives available in PHP for efficient caching.<br />
<span id="more-162"></span><br />
Before going further, let me explain what is caching &amp; types of caching. Caching can be implemented in server-side as well as browser-side or the client-side. The server-side caching itself can be implemented using various techniques &#8211; viz. HTML caching, Data caching. Each method involves storing the whole or part of the resultant data generated at the web sever in some physical medium and accessing it again for the future requests.</p>
<p>The validity of the data present in the cache depends on the implementation logic and hugely depends on the nature of the application itself. For example, In an online store, the cache data containing the list of products available in the store can be valid for even 2 hours as there is very less chance of a product being added every 2 hours. But the cache data holding the availability (stock) of products can be valid for probably 2 minutes ( assuming , it&#8217;s a real online store where business happens) as the availability keeps changing.</p>
<p>Today we&#8217;d talk about one of the techniques in output caching &#8211; Record set caching. It&#8217;s one of the straight forward approach, that can be implemented. In layman terms, The record-set after a complicated query would be stored separately so that, the future requests can be served from the temporary storage instead of running the time consuming complicated query again every time.</p>
<p>To start with, Let us consider an example. A page delivering search results in JSON format from a product catalogue accepting a search query. Let us put down the algorithm to implement this</p>
<p>Step 1 : Check if a valid cache data exists in cache<br />
Step 2 : If Yes read, the cache data and serve it to the user / client<br />
Step 3 : If No, Read it from the DB and serve the user.<br />
Step 4 : Update / Create the valid cache data with the one got in step 3</p>
<p>Let&#8217;s get into coding rightaway..<br />
<div id="wpshdo_10" class="wp-synhighlighter-outer"><div id="wpshdt_10" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_10"></a><a id="wpshat_10" class="wp-synhighlighter-title" href="#codesyntax_10"  onClick="javascript:wpsh_toggleBlock(10)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_10" onClick="javascript:wpsh_code(10)" title="Show code only"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_10" onClick="javascript:wpsh_print(10)" title="Print code"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://markish.in/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_10" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="re0">$mcdir</span> <span class="sy0">=</span> <span class="st0">&quot;cache/&quot;</span><span class="sy0">;</span>
<span class="re0">$mcache_validity</span><span class="sy0">=</span><span class="nu0">10</span><span class="sy0">;</span>
<span class="re0">$mfnam</span> <span class="sy0">=</span> <span class="re0">$mcdir</span> <span class="sy0">.</span> <span class="st0">&quot;ch_&quot;</span> <span class="sy0">.</span> <span class="re0">$search_data</span> <span class="sy0">.</span><span class="st0">&quot;_file.txt&quot;</span><span class="sy0">;</span>
<span class="re0">$mread_from_cache</span> <span class="sy0">=</span> <span class="kw4">false</span><span class="sy0">;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/file_exists"><span class="kw3">file_exists</span></a><span class="br0">&#40;</span><span class="re0">$mfnam</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
	<span class="re0">$mctime</span> <span class="sy0">=</span> <span class="br0">&#40;</span><a href="http://www.php.net/filectime"><span class="kw3">filectime</span></a><span class="br0">&#40;</span><span class="re0">$mfnam</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
	<span class="re0">$mtime_offset</span> <span class="sy0">=</span> <a href="http://www.php.net/time"><span class="kw3">time</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">-</span> <span class="re0">$mctime</span><span class="sy0">;</span>
	<span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$mtime_offset</span> <span class="sy0">&lt;</span> <span class="re0">$mcache_validity</span> <span class="sy0">*</span> 60<span class="br0">&#41;</span> <span class="br0">&#123;</span>
		<span class="re0">$mread_from_cache</span> <span class="sy0">=</span> <span class="kw4">true</span><span class="sy0">;</span>
	<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></p>
<p>In the above code snippet , we just check if there is a valid cache data available. The logic behind is to have a separate file to store the result-set for individual search strings. I&#8217;ve set the validity of the cache data to 10 minutes. The next step would be based on the decision made in <strong>step-1</strong></p>
<div id="wpshdo_11" class="wp-synhighlighter-outer"><div id="wpshdt_11" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_11"></a><a id="wpshat_11" class="wp-synhighlighter-title" href="#codesyntax_11"  onClick="javascript:wpsh_toggleBlock(11)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_11" onClick="javascript:wpsh_code(11)" title="Show code only"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_11" onClick="javascript:wpsh_print(11)" title="Print code"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://markish.in/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_11" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">$mread_from_cache</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="re0">$msql</span> <span class="sy0">=</span> <span class="st0">&quot;select product_id,product_name,product_img,product_desc,product_rate
            from product_master where product_name like '%<span class="es4">$search_data</span>%'
            where flag_dele=0&quot;</span><span class="sy0">;</span>
    <span class="re0">$mres</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_query"><span class="kw3">mysql_query</span></a><span class="br0">&#40;</span><span class="re0">$msql</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="re0">$mresult</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">while</span> <span class="br0">&#40;</span><span class="re0">$mdata</span> <span class="sy0">=</span> <a href="http://www.php.net/mysql_fetch_object"><span class="kw3">mysql_fetch_object</span></a><span class="br0">&#40;</span><span class="re0">$mres</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="re0">$mresult</span><span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="re0">$mdata</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
    <span class="re0">$cacheData</span> <span class="sy0">=</span> readCache<span class="br0">&#40;</span><span class="re0">$mfnam</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#40;</span><a href="http://www.php.net/md5"><span class="kw3">md5</span></a><span class="br0">&#40;</span><a href="http://www.php.net/serialize"><span class="kw3">serialize</span></a><span class="br0">&#40;</span><span class="re0">$cacheData</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">==</span> <a href="http://www.php.net/md5"><span class="kw3">md5</span></a><span class="br0">&#40;</span><a href="http://www.php.net/serialize"><span class="kw3">serialize</span></a><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> ? <span class="re0">$data</span> <span class="sy0">=</span> <span class="re0">$cacheData</span> <span class="sy0">:</span> writeCache<span class="br0">&#40;</span><span class="re0">$data</span><span class="sy0">,</span> <span class="re0">$mfnam</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span>
    <span class="re0">$mresult</span> <span class="sy0">=</span> readCache<span class="br0">&#40;</span><span class="re0">$mfnam</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">echo</span> <a href="http://www.php.net/json_encode"><span class="kw3">json_encode</span></a><span class="br0">&#40;</span><span class="re0">$mresult</span><span class="br0">&#41;</span><span class="sy0">;</span>
<a href="http://www.php.net/flush"><span class="kw3">flush</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>
<p>In the above code, we based on the value of &#8216;<em>$mread_from_cache</em>&#8216; , either read from the database or from the cache data. I&#8217;ve got a simple query for illustration. It may not be the case in an application. Here we have used two user defined function, one to write and other to read from the cache. The below is the code for them.</p>
<div id="wpshdo_12" class="wp-synhighlighter-outer"><div id="wpshdt_12" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_12"></a><a id="wpshat_12" class="wp-synhighlighter-title" href="#codesyntax_12"  onClick="javascript:wpsh_toggleBlock(12)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_12" onClick="javascript:wpsh_code(12)" title="Show code only"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_12" onClick="javascript:wpsh_print(12)" title="Print code"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://markish.in/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://markish.in/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_12" class="wp-synhighlighter-inner" style="display: block;"><pre class="php" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">function</span> writeCache<span class="br0">&#40;</span><span class="re0">$data</span><span class="sy0">,</span> <span class="re0">$cacheFile</span><span class="sy0">=</span><span class="st_h">'default_cache.txt'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><span class="re0">$fp</span> <span class="sy0">=</span> <a href="http://www.php.net/fopen"><span class="kw3">fopen</span></a><span class="br0">&#40;</span><span class="re0">$cacheFile</span><span class="sy0">,</span> <span class="st_h">'w'</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <a href="http://www.php.net/trigger_error"><span class="kw3">trigger_error</span></a><span class="br0">&#40;</span><span class="st_h">'Error opening cache file'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <a href="http://www.php.net/exit"><span class="kw3">exit</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/flock"><span class="kw3">flock</span></a><span class="br0">&#40;</span><span class="re0">$fp</span><span class="sy0">,</span> LOCK_EX<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <a href="http://www.php.net/trigger_error"><span class="kw3">trigger_error</span></a><span class="br0">&#40;</span><span class="st_h">'Unable to lock file'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <a href="http://www.php.net/exit"><span class="kw3">exit</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li2"><div class="de2">    <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/fwrite"><span class="kw3">fwrite</span></a><span class="br0">&#40;</span><span class="re0">$fp</span><span class="sy0">,</span> <a href="http://www.php.net/serialize"><span class="kw3">serialize</span></a><span class="br0">&#40;</span><span class="re0">$data</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <a href="http://www.php.net/trigger_error"><span class="kw3">trigger_error</span></a><span class="br0">&#40;</span><span class="st_h">'Error writing to cache file'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        <a href="http://www.php.net/exit"><span class="kw3">exit</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">    <a href="http://www.php.net/flock"><span class="kw3">flock</span></a><span class="br0">&#40;</span><span class="re0">$fp</span><span class="sy0">,</span> LOCK_UN<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">    <a href="http://www.php.net/fclose"><span class="kw3">fclose</span></a><span class="br0">&#40;</span><span class="re0">$fp</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="kw2">function</span> readCache<span class="br0">&#40;</span><span class="re0">$cacheFile</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy0">!</span><a href="http://www.php.net/file_exists"><span class="kw3">file_exists</span></a><span class="br0">&#40;</span><span class="re0">$cacheFile</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">        <span class="kw1">return</span> <span class="st_h">''</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">    <span class="kw1">return</span> <a href="http://www.php.net/unserialize"><span class="kw3">unserialize</span></a><span class="br0">&#40;</span><a href="http://www.php.net/file_get_contents"><span class="kw3">file_get_contents</span></a><span class="br0">&#40;</span><span class="re0">$cacheFile</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div></div>
<p>This is a very basic implementation of record set caching. This can be improved based on the application demand and other load factors. We&#8217;ve taken a more procedural approach in this code. In the next article I&#8217;d talk about handling the same in a more object oriented approach.</p>
<p>Do share your comments and suggestions.</p>
]]></content:encoded>
			<wfw:commentRss>http://markish.in/2010/12/implementing-output-caching-in-php-solve-perfomance-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configure Airtel GPRS / Edge in HTC Hero in India</title>
		<link>http://markish.in/2010/12/configure-airtel-gprs-edge-in-htc-hero-in-india/</link>
		<comments>http://markish.in/2010/12/configure-airtel-gprs-edge-in-htc-hero-in-india/#comments</comments>
		<pubDate>Fri, 10 Dec 2010 04:35:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Airtel Edge GPRS Settings]]></category>
		<category><![CDATA[HTC Hero Edge Settings]]></category>
		<category><![CDATA[HTC Hero Mobile]]></category>

		<guid isPermaLink="false">http://markish.in/?p=156</guid>
		<description><![CDATA[<p>Couple of weeks back I reset my HTC hero to factory settings. When I restored the contacts &#38; applications, I forgot to set up my phone to use mobile network (edge). It completely missed out of mind as I&#8217;s always in a wifi zone! Today morning stuck in the traffic, not knowing what to [...]]]></description>
			<content:encoded><![CDATA[<p>Couple of weeks back I reset my HTC hero to factory settings. When I restored the contacts &amp; applications, I forgot to set up my phone to use mobile network (edge). It completely missed out of mind as I&#8217;s always in a wifi zone! <span id="more-156"></span>Today morning stuck in the traffic, not knowing what to do for more than 30 minutes, I thought of going through my  mails would help me kill time ! Then the reality hit me &#8211; I don&#8217;t have a connectivity in mid of the road ! It&#8217;s not a hotspot either&#8230;!</p>
<p>Moment I came in, I wanted to configure the edge and I realized I&#8217;ve continued to pay the extra rental to Airtel though I&#8217;s not using it. Finally after searching through the web, I&#8217;s able to connect / configure successfully. Thought of sharing it here, someone may find it useful</p>
<p>Step &#8211; 1 : In HTC Hero, open settings -&gt; Wireless Controls<br />
Step &#8211; 2 : Enable Mobile Network<br />
Step &#8211; 3 : Navigate to  Mobile Network Settings -&gt;Access Point Names<br />
Step &#8211; 4 : Press Menu and select &#8216;Add APN&#8217;<br />
Step &#8211; 5 : Configure it as below</p>
<table border="1" cellspacing="0" cellpadding="0" width="350" allign="center">
<col width="116"></col>
<col width="164"></col>
<tbody>
<tr style="background-color: #fc2a;" height="15">
<td width="116" height="15">Setting</td>
<td width="164">Value to be set</td>
</tr>
<tr height="15">
<td height="15">Name</td>
<td>www ( Anything of   your choice )</td>
</tr>
<tr height="15">
<td height="15">APN</td>
<td>airtelgprs.com</td>
</tr>
<tr height="15">
<td height="15">Proxy</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr height="15">
<td height="15">Port</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr height="15">
<td height="15">Username</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr height="15">
<td height="15">Password</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr height="15">
<td height="15">Server</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr height="15">
<td height="15">MMSC</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr height="15">
<td height="15">MMS proxy</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr height="15">
<td height="15">MMS port</td>
<td>&lt;Not Set&gt;</td>
</tr>
<tr height="15">
<td height="15">MMS protocol</td>
<td>WAP 2.0</td>
</tr>
<tr height="15">
<td height="15">MCC</td>
<td align="right">404</td>
</tr>
<tr height="15">
<td height="15">MNC</td>
<td align="right">45</td>
</tr>
<tr height="16">
<td height="16">APN Type</td>
<td>&lt;Not Set&gt;</td>
</tr>
</tbody>
</table>
<p>Hope this helps someone, someday. Even I may need it again&#8230;!</p>
]]></content:encoded>
			<wfw:commentRss>http://markish.in/2010/12/configure-airtel-gprs-edge-in-htc-hero-in-india/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Twitter new UI – What is there..</title>
		<link>http://markish.in/2010/09/twitter-new-ui-what-is-there-and-not/</link>
		<comments>http://markish.in/2010/09/twitter-new-ui-what-is-there-and-not/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 04:15:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Internet Technology]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Twitter New UI]]></category>

		<guid isPermaLink="false">http://markish.in/?p=151</guid>
		<description><![CDATA[<p>Finally It&#8217;s arrived, the new UI for twitter. It&#8217;s more than 2 years looking into the same UI with no life other than the ever moving tweets on the screen. On Tuesday, the CEO unveiled the new user interface. Twitter claims the new UI to be more advanced and improved in terms of usability. [...]]]></description>
			<content:encoded><![CDATA[<p>Finally It&#8217;s arrived, the new UI for twitter. It&#8217;s more than 2 years looking into the same UI with no life other than the ever moving tweets on the screen. On Tuesday, the CEO unveiled the new user interface. Twitter claims the new UI to be more advanced and improved in terms of usability. It also believes, this move would bring in lot of traffic / visitors to twitter.com.<span id="more-151"></span></p>
<p>Today morning, I had a look at the new UI finally. It looks new and fresh. Below are the few notable features.<strong> </strong></p>
<p><strong>Two column layout</strong></p>
<p><strong> </strong></p>
<div id="attachment_142" class="wp-caption aligncenter" style="width: 310px"><strong><strong><a href="http://markish.in/wp-content/uploads/2010/09/twitter_home.png"><img class="size-medium wp-image-142" title="Twitter Home page" src="http://markish.in/wp-content/uploads/2010/09/twitter_home-300x168.png" alt="Twitter Home page" width="300" height="168" /></a></strong></strong><p class="wp-caption-text">Twitter Home page</p></div>
<p><strong> </strong>The home page now has the two column layout. The left pane has the usual stuff &#8211; the chain of tweets. The right pane / details pane is the new one. Twitter also recognizes the type of content your tweet has. It&#8217;s pretty intelligent now! Click on a tweet in the left column, and the detail pane has lot of options for the same and it allows  interaction with the content of that tweet as well. What is displayed in the detail pane depends on the nature of the tweet:</p>
<ul>
<li><strong>Videos:</strong> If the tweet contains a link to a video from sites such as YouTube, Vimeo and USTREAM, that video plays in the detail pane. This is cool feature but never know how much load twitter can handle on this. Already we&#8217;re used to &#8220;Twitter over capacity&#8221; screen&#8230;</li>
<li><strong>Maps:</strong> If the tweet is a check-in via services such as foursquare, the detail pane displays a map.</li>
<li>Pictures:  If the tweet includes a link to a picture posted using services such as Flickr, DailyBooth, Twitpic  and DeviantArt, that image appears in the detail pane.</li>
<li><strong>Hashtags:</strong> If you click on a hashtag within a tweet, the detail pane conveys up-to-the-moment search results.</li>
<li><strong>Products:</strong> A tweet containing a link to a product on Etsy or other select eCommerce sites will cause a product image to display in the detail pane. I feel twitter is going to build some revenue model around this.</li>
<li><strong>Replies:</strong> A small icon appears in tweets whenever one Twitterer responds to another.  Click the arrow and the prior conversation is presented within the detail pane.</li>
</ul>
<div id="attachment_143" class="wp-caption aligncenter" style="width: 310px"><a href="http://markish.in/wp-content/uploads/2010/09/twitter_rpane.png"><img class="size-medium wp-image-143" title="Twitter Detail Pane" src="http://markish.in/wp-content/uploads/2010/09/twitter_rpane-300x168.png" alt="Twitter Detail Pane" width="300" height="168" /></a><p class="wp-caption-text">Twitter Detail Pane</p></div>
<p><strong> Better Profile Overview</strong></p>
<p>With lot of space on the right pane, Twitter has made use of it by putting images of your &#8216;followers&#8217; and &#8216;following&#8217; ( 7 each) and Listed and favorites. Still lot of space is available. Hopefully, they may come out with google like &#8216;ads&#8217; on the right pane in the near future&#8230;</p>
<p><strong>What is Missing</strong> ?</p>
<p>All said and done, I&#8217;s expecting bit more from Twitter this time. The following are missing or I missed noticing them.</p>
<ul>
<li><strong>Revenue Model</strong>: This is the major topic of debate from the day one Twitter become popular. I&#8217;s expecting something would be rolled out with this atleaset. But still it&#8217;s missing big time. The right pane / detail pane is the place which may be used as placeholder for sponsored ads in near future.</li>
</ul>
<ul>
<li><strong>Performance: </strong>Again I don&#8217;t see any great improvement in loading time and performance of the site as a whole.</li>
</ul>
<ul>
<li><strong>Priority:</strong> With Google introducing Priority Inbox, and twitter identifying the content of the tweet, I&#8217;s expecting something like priority in the tweets.</li>
</ul>
<ul>
<li><strong>More than Text:</strong> I&#8217;s expecting Twitter to allow image / video uploads directly from Twitter web Interface like Google Buzz and Yahoo MeMe. May be Twitter still wants to keep them simple and smart..!</li>
</ul>
<p><strong>Glitches</strong></p>
<p>The new user interface is still having lot of issues and cross browser compatibility issues. The background images / themes the users have been using would become void and need to be changed immediately.</p>
<div id="attachment_144" class="wp-caption aligncenter" style="width: 310px"><a href="http://markish.in/wp-content/uploads/2010/09/twitter_issue_wat.png"><img class="size-medium wp-image-144" title="What is happening behind the Embedded Video" src="http://markish.in/wp-content/uploads/2010/09/twitter_issue_wat-300x168.png" alt="What is happening behind the Embedded Video" width="300" height="168" /></a><p class="wp-caption-text">Happening behind the Embedded Video</p></div>
<p>Twitter new user interface promises &#8216;Easier Interaction&#8217; and  &#8216;More Discovery&#8217;. While any change in interface can cause complaints from long-time users, I believe the new Twitter will meet with strong user acceptance.  As the new design is rolled out, users have the opportunity to accept it or return to the original design, but I think many will embrace the intuitive new functionality. Share your views and comments on Twitter new UI here.</p>
]]></content:encoded>
			<wfw:commentRss>http://markish.in/2010/09/twitter-new-ui-what-is-there-and-not/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Offline Blog Editor for Ubuntu</title>
		<link>http://markish.in/2010/06/offline-blog-editor-for-ubuntu/</link>
		<comments>http://markish.in/2010/06/offline-blog-editor-for-ubuntu/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 19:29:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Internet Technology]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Bleezer]]></category>
		<category><![CDATA[Offline Blog Editor for Ubuntu]]></category>
		<category><![CDATA[Ubuntu Blogging]]></category>

		<guid isPermaLink="false">http://markish.in/2010/06/offline-blog-editor-for-ubuntu/</guid>
		<description><![CDATA[<p>I&#8217;s just struggling to get a good replacement for Word 2007 as my offline blog editor in Ubuntu. I googled and found several alternatives. Finally, I settled down with the Bleezer. I just thought let me write about the same here as the first post from Bleezer. </p> <p>Bleezer is developed in Java and [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;s just struggling to get a good replacement for Word 2007 as my offline blog editor in Ubuntu. I googled and found several alternatives. Finally, I settled down with the Bleezer. I just thought let me write about the same here as the first post from Bleezer. <span id="more-128"></span></p>
<p>Bleezer is developed in Java and hence is platform independent. It&#8217;s neat and pretty. Though not colourful like MS word xxx, It serves the purpose calmly. It&#8217;s available at <a title="Bleezer" href="http://alchemii.net/bleezer/" target="_blank">http://alchemii.net/bleezer/</a> It supports all the major blog engines &#8211; Blogger, WordPress (a special thanks from my side&#8230; <img src='http://markish.in/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ), typepad, drupal.</p>
<p>Once you download, you have to run the bleezer.jar in the archive. Make sure to change it&#8217;s permission to allow execution as a program. You should have Java already installed in your machine. Just launch it, you are in the new world of blogging in Ubuntu.</p>
<p>Just edit the preferences, add an account in the dialogue as shown below</p>
<p><img title="Preferences" src="http://markish.in/wp-content/uploads/2010/06/Screenshot-Preferences1.png" border="0" alt="Preferences" width="500" height="250" align="center" /></p>
<p>The features I like in this are</p>
<ul>
<li>Enabling me to save the Posts as drafts</li>
<li>Support for multiple accounts, so that it&#8217;s the one point of my blogging</li>
<li>Gives support for adding tags to the Posts</li>
<li>It provides a normal view along with the HTML view in tabs</li>
<li>It provides preview as well &#8211; quite easy to see what you post</li>
<li>Fairly decent WYSIWYG editor.</li>
<li>Supports editing of published Posts as well</li>
</ul>
<p>I&#8217;d say Bleezer worth a try. Comments welcome</p>
<div class="bleezer-tags:Offline Blog Editor, Blog in Ubuntu, Bleezer">
<p style="font-size: 10px; text-align: right;">Technorati: <a rel="tag" href="http://www.technorati.com/tag/Offline+Blog+Editor">Offline Blog Editor</a> <a rel="tag" href="http://www.technorati.com/tag/Blog+in+Ubuntu">Blog in Ubuntu</a> <a rel="tag" href="http://www.technorati.com/tag/Bleezer">Bleezer</a></p>
<p style="font-size: 10px; text-align: right;">Tags <a rel="tag" href="http://www.technorati.com/tag/Offline+Blog+Editor">Offline Blog Editor</a> <a rel="tag" href="http://www.technorati.com/tag/Blog+in+Ubuntu">Blog in Ubuntu</a> <a rel="tag" href="http://www.technorati.com/tag/Bleezer">Bleezer</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://markish.in/2010/06/offline-blog-editor-for-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>www.mconvey.com is live&#8230;.!</title>
		<link>http://markish.in/2009/02/wwwmconveycom-is-live/</link>
		<comments>http://markish.in/2009/02/wwwmconveycom-is-live/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 11:22:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Bulk SMS]]></category>
		<category><![CDATA[Free SMS]]></category>
		<category><![CDATA[Free SMS to India]]></category>
		<category><![CDATA[Markish]]></category>
		<category><![CDATA[Mconvey]]></category>

		<guid isPermaLink="false">http://markishonline.com/?p=117</guid>
		<description><![CDATA[<p class="MsoNormal" style="text-indent: 0.5in;">www.mconvey.com is live now. You can send free sms to any Indian mobile numbers. No annoying ads. No registration required. The site is simple and quite straight forward. The only restriction that is in place is it asks you to register once you send 5 sms to a particular number on [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="text-indent: 0.5in;"><a href="http://www.mconvey.com">www.mconvey.com</a> is live now. You can send free sms to any Indian mobile numbers. No annoying ads. No registration required. The site is simple and quite straight forward. The only restriction that is in place is it asks you to register once you send 5 sms to a particular number on the same day. <span id="more-117"></span> </p>
<p class="MsoNormal" style="text-indent: 0.5in;"><a href="http://mconvey.com"><img class="aligncenter size-medium wp-image-118" title="Mconvey Snapshot" src="http://markishonline.com/wp-content/uploads/2009/02/mconvey-300x216.gif" alt="Mconvey Snapshot" width="300" height="216" /></a> Once you register you have more credits for free and you can manage your contacts as well.The delivery is also quite fast. It hardly takes 5 seconds. This for a free service is quite ok I feel. The revenue model for this site is based on advertisements and building sms advertisement campaigns for business. </p>
<p class="MsoNormal" style="text-indent: 0.5in;">It also provides users the ability to send with their own sender ID. Probably this will fit the business group. It also aims at sending advertisements along with the messages sent for free. </p>
<p class="MsoNormal" style="text-indent: 0.5in;">
<p class="MsoNormal" style="text-indent: 0.5in;">It&#8217;s worth having a look and giving it  a try&#8230;!</p>
]]></content:encoded>
			<wfw:commentRss>http://markish.in/2009/02/wwwmconveycom-is-live/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>It is my IP.com&#8230;.!</title>
		<link>http://markish.in/2009/02/it-is-my-ipcom/</link>
		<comments>http://markish.in/2009/02/it-is-my-ipcom/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 09:45:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Internet Technology]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Find your IP]]></category>
		<category><![CDATA[IP Lookup]]></category>
		<category><![CDATA[It is my IP]]></category>
		<category><![CDATA[Markish]]></category>
		<category><![CDATA[Own IP address]]></category>

		<guid isPermaLink="false">http://markishonline.com/?p=101</guid>
		<description><![CDATA[<p>Again it&#8217;s been a long time&#8230;! Somehow I couldn&#8217;t manage to squeeze time to write&#8230; This weekend just surfing the net, I landed up in domain.com my favorite domain registrar. As usual I searched for all funny names. It&#8217;s been my practice or I&#8217;d say a way of killing time. Finally I searched for [...]]]></description>
			<content:encoded><![CDATA[<p>Again it&#8217;s been a long time&#8230;! Somehow I couldn&#8217;t manage to squeeze time to write&#8230; This weekend just surfing the net, I landed up in domain.com my favorite domain registrar. As usual I searched for all funny names. It&#8217;s been my practice or I&#8217;d say a way of killing time. Finally I searched for &#8216;itismyip&#8217; I got it&#8230;! it again made me poorer by another 10 USD. I just wrote a small script to give the IP of the visitor to this site&#8230; <span id="more-101"></span></p>
<p>I wanted this site ( single page) to load faster without any complications. I&#8217;ve just put the IP of the visitor and a small JS to copy the IP to your clipboard.</p>
<div id="attachment_102" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-102" title="itismyip.com" src="http://markishonline.com/wp-content/uploads/2009/02/itismyip-300x225.gif" alt="Snapshot of ItismyIP.com" width="300" height="225" /><p class="wp-caption-text">Snapshot of ItismyIP.com</p></div>
<p>I think,  I&#8217;m far better this time in choosing my domain name..I&#8217;ve seen around 100 hits already in a day without much doing from my side. So I added my adsense today to it.. Hope it gives me back the 10 USD within this year.</p>
<p>I know there are &#8216;n&#8217; number of popular sites giving this service. But I&#8217;m thinking of something different that would help me have my share of traffic. Any suggestions welcome in this regard&#8230;!</p>
<p>Have a <a href="http://itismyip.com" target="_blank">look here</a> and do share your comments..</p>
]]></content:encoded>
			<wfw:commentRss>http://markish.in/2009/02/it-is-my-ipcom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

