<?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>Public MindNitin</title>
	<atom:link href="http://publicmind.in/blog/author/publicmindin/feed/" rel="self" type="application/rss+xml" />
	<link>http://publicmind.in/blog</link>
	<description>Simple and Sophisticated</description>
	<lastBuildDate>Thu, 13 May 2010 23:32:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>PHP: Encoding a URL before accessing it</title>
		<link>http://publicmind.in/blog/url-encoding/</link>
		<comments>http://publicmind.in/blog/url-encoding/#comments</comments>
		<pubDate>Sat, 08 May 2010 16:56:34 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[URL]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=605</guid>
		<description><![CDATA[I discussed a little about URL encoding in my recent post Facebook: Bug with URL encoding, although it seems like the bug still exists. In this post I will discuss &#8220;how to encode a given URL before accessing it using CURL or fsockopen&#8221;. The problem with URLs is that they might contain certain disallowed characters [...]]]></description>
			<content:encoded><![CDATA[<p>I discussed a little about URL encoding in my recent post <a title="Facebook: Bug with URL encoding" href="http://publicmind.in/blog/facebook-bug-with-url-encoding/">Facebook: Bug with URL encoding</a>, although it seems like the bug still exists. In this post I will discuss &#8220;how to encode a given URL before accessing it using CURL or fsockopen&#8221;. The problem with URLs is that they might contain certain disallowed characters like spaces, according to RFC 3986. Our aim is to convert these invalid characters to their <a href="http://en.wikipedia.org/wiki/Percent-encoding" target="_blank">percentage encoded values</a> in a given URL , so that we can access the URL using our regular HTTP request methods. For example the URL [http://example.com/space space] should be converted to [http://example.com/space%20space] before we can access it using CURL. However, the URL [http://example.com/percents%25percent] is perfectly valid as it doesn&#8217;t contains any of the disallowed characters.<br />
<span id="more-605"></span><br />
The given URL can only contain characters which are allowed by RFC 3986 which includes alpha-numeric characters along with reserved characters and delimiters  (<strong>:</strong> | <strong>/</strong> | <strong>?</strong> | <strong>#</strong> | <strong>[</strong> | <strong>]</strong> | <strong>@ </strong>| <strong>!</strong> | <strong>$</strong> | <strong>&amp;</strong> | <strong>&#8216; </strong>| <strong>(</strong> | <strong>)</strong> | <strong>*</strong> | <strong>+</strong> | <strong>,</strong> | <strong>;</strong> | <strong>=</strong> | <strong>%</strong>).  The following piece of code changes the disallowed characters in the URL to their corresponding percentage encoded values. The characters and delimiters which are allowed are left untouched.</p>
<div class="codecolorer-container php default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:700px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br /></div></td><td><div class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #009933; font-style: italic;">/**<br />
* @param $url<br />
* &nbsp; &nbsp; The URL to encode<br />
*<br />
* @return<br />
* &nbsp; &nbsp; A string containing the encoded URL with disallowed<br />
* &nbsp; &nbsp; characters converted to their percentage encodings.<br />
*/</span><br />
<span style="color: #000000; font-weight: bold;">function</span> encode_url<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<span style="color: #000088;">$reserved</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><br />
<span style="color: #0000ff;">&quot;:&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%3A!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;/&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%2F!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;?&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%3F!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;#&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%23!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;[&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%5B!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;]&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%5D!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;@&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%40!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;!&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%21!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;$&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%24!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;&amp;amp;&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%26!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;'&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%27!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;(&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%28!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;)&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%29!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;*&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%2A!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;+&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%2B!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;,&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%2C!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;;&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%3B!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;=&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%3D!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #0000ff;">&quot;%&quot;</span> <span style="color: #339933;">=&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000ff;">'!%25!ui'</span><span style="color: #339933;">,</span><br />
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/rawurlencode"><span style="color: #990000;">rawurlencode</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000088;">$url</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/preg_replace"><span style="color: #990000;">preg_replace</span></a><span style="color: #009900;">&#40;</span><a href="http://www.php.net/array_values"><span style="color: #990000;">array_values</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$reserved</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array_keys"><span style="color: #990000;">array_keys</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$reserved</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$url</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>One thing to notice here is that the &#8216;%&#8217; character must be the last in the <em>$reserved</em> array. This makes sure that the already encoded values are not lost or encoded again.</p>
<p><strong>Note</strong>: This might not be the best solution but well, it works. If you are using something better, let me know in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/url-encoding/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Firefox extensions to improve history tools</title>
		<link>http://publicmind.in/blog/firefox-extensions-to-improve-history-tools/</link>
		<comments>http://publicmind.in/blog/firefox-extensions-to-improve-history-tools/#comments</comments>
		<pubDate>Sun, 02 May 2010 21:05:20 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[addons]]></category>
		<category><![CDATA[extensions]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[history]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=593</guid>
		<description><![CDATA[We visit and revisit web pages. You will find that more than 60% of your web visits are actually revisits of some sort. But web browsers support for such revisitations is limited to bookmarks, history list, URL auto-completion and back button. Here are a few history tools which can greatly improve your experience during web [...]]]></description>
			<content:encoded><![CDATA[<p>We visit and revisit web pages. You will find that more than 60% of your web visits are actually revisits of some sort. But web browsers support for such revisitations is limited to bookmarks, history list, URL auto-completion and <strong>back</strong> button. Here are a few history tools which can greatly improve your experience during web browsing.</p>
<ul>
<li><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/1859" target="_blank"> Tab History</a></strong>: It is the simplest yet very useful extension. Usually when we open a link in a new tab, the back button history for the new tab is empty. This extensions adds the session history from the parent tab to this new tab, so that you are not lost with the question &#8220;where do i come from?&#8221;.</li>
<li><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/5890" target="_blank">Tree Style Tab:</a> </strong>This extension arranges your tabs in a tree structure, like a folder tree of Windows explorer. So whenever you open a new tab from a link, this tab is added as &#8216;child&#8217; node in the tab tree of the parent node.
<div id="attachment_595" class="wp-caption aligncenter" style="width: 210px"><img class="size-full wp-image-595  " title="Tree style tab" src="http://publicmind.in/blog/wp-content/uploads/2010/05/1192921260.png" alt="Tree style tab" width="200" height="134" /><p class="wp-caption-text">Tree style tab</p></div>
<p>You can conveniently arrange these tabs in the tree using the simple drap and drop feature. You can go through  an extensive list of features on the official site. One thing I would like to mention is that if you close a tab, its children are orphaned. As the father is gone, no way children would know about their grandparents <img src='http://publicmind.in/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</li>
</ul>
<p><span id="more-593"></span></p>
<ul>
<li><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/13316" target="_blank">History Tree:</a> </strong>History tree visualizes your history as a tree of tabs with thumbnails of web pages which makes it pretty easier for you to recognize what you are looking for. It is a very easy to use extension and provides four different visualizations for your history. It also shows the part of the history which is lost by back and forward buttons due to their LIFO implementation. For example, if you visit &lt;A&gt;, &lt;B&gt;, &lt;C&gt;, &lt;D&gt;, &lt;BACK to D&gt;, &lt;BACK to C&gt; , E. This sequence will loose &lt;C&gt; and &lt;D&gt; from the back button&#8217;s history but History tree will not. <img src='http://publicmind.in/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
<p><div id="attachment_599" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-599" title="History Tree" src="http://publicmind.in/blog/wp-content/uploads/2010/05/IntroTV-300x187.png" alt="History Tree" width="300" height="187" /><p class="wp-caption-text">History Tree</p></div></li>
<li><strong><a href="/en-US/firefox/images/t/35086/1248779093" target="_blank">Infoaxe:</a> </strong>Infoaxe belongs to a family of history tools which provide a lot of cool features but ask you to register on their website so your history can be uploaded and processed on their servers. With Infoaxe, you can browse through all of your history in your browser or online. It also supports IE, so it doesn&#8217;t matter if you were browsing a page on which computer or browser, it will all be recorded by Infoaxe and made available to you &#8220;exactly when you need it&#8221;. It supports full text search on the web pages you browse and not just titles or keywords like your history list, which makes it pretty impressive.<br />
It provides a Google widget which adds result for your queries on Google search results page (SERP) with results from your local history. Read more about it here: http://infoaxe.wordpress.com/2008/12/23/the-infoaxe-vs-google-challenge-be-lazy-while-searching/</p>
<p><div id="attachment_597" class="wp-caption aligncenter" style="width: 514px"><img class="size-full wp-image-597   " title="infoaxe-lazy1" src="http://publicmind.in/blog/wp-content/uploads/2010/05/infoaxe-lazy1.jpg" alt="Infoaxe Google widget" width="504" height="315" /><p class="wp-caption-text">Infoaxe Google Widget</p></div></li>
<li><strong><a href="https://addons.mozilla.org/en-US/firefox/addon/5847" target="_blank">Hooeey</a></strong>: Hooeey is quite similar to Infoaxe in the way that it is also an online web browser history management tool. But it gives you full control over what part of your history is uploaded to their servers. I also like the analytics they provide about my browsing behavior.</li>
</ul>
<p>There are several more to explore like <a href="https://addons.mozilla.org/en-US/firefox/addon/5045">Thumbstribs</a> which provide a filmstrip from your browsing history or <a href="http://www.webmynd.com/html/index.html" target="_blank">Webmynd</a> which provides integration with Twitter, Wikipedia, Youtube and provides top results from these websites whenever you search with Google. But I leave them up to you to find out and report.</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/firefox-extensions-to-improve-history-tools/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>&#8220;Hey Chef&#8221;, South Park</title>
		<link>http://publicmind.in/blog/hey-chef-south-park/</link>
		<comments>http://publicmind.in/blog/hey-chef-south-park/#comments</comments>
		<pubDate>Sun, 25 Apr 2010 17:42:45 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[chef]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[south park]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=578</guid>
		<description><![CDATA[Some of the &#8220;quotes&#8221; I like from South Park, by Chef. Disclaimer: The following contains coarse language and due to its content it should not be viewed by anyone. Episode 401 Chef: Well look at you cute little crackers with your money and your fancy clothes and your cell phones. It&#8217;s almost like you were&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p><!-- Digg Digg Disabled -->Some of the &#8220;quotes&#8221; I like from South Park, by Chef.<br />
<strong>Disclaimer</strong>: The following contains coarse language and due to its content it should not be viewed by anyone.<div id="attachment_585" class="wp-caption alignright" style="width: 160px"><a href="http://publicmind.in/blog/wp-content/uploads/2010/04/chef.jpg"><img src="http://publicmind.in/blog/wp-content/uploads/2010/04/chef-150x150.jpg" alt="" title="Chef with Boys" width="150" height="150" class="size-thumbnail wp-image-585" /></a><p class="wp-caption-text">Chef with Boys</p></div></p>
<h3>Episode 401</h3>
<p><strong>Chef</strong>: Well look at you cute little crackers with your money and your fancy clothes and your cell phones. It&#8217;s almost like you were&#8230; Oh my God! Children, what have I told you about drugs<br />
<strong>Stan, Kyle, Cartman, and Kenny</strong>: There&#8217;s a time and a place for everything and it&#8217;s called college.<br />
<span id="more-578"></span></p>
<h3>Episode 405</h3>
<p><strong>Stan</strong>: Chef, what&#8217;s a prostitute?<strong><br />
Chef sings</strong>: But a prostitute is someone who would love you,<br />
No matter who you are, or what you look like.<br />
Yes, it&#8217;s true, children.<br />
That&#8217;s not why you pay a prostitute,<br />
No, you don&#8217;t pay her to stay;<br />
you pay her to leave afterwards<br />
That&#8217;s why I pay&#8217;s a lot for prostitutes!<br />
Ladies and Gentlemen, Mr. James Taylor<br />
<strong>James Taylor</strong>: A prostitute is like any other woman,<br />
They all trade something for sex and they do it well.<strong><br />
Chef</strong>: And that&#8217;s why I say-<br />
<strong>Chef and James Taylor</strong>: Prostitutes! Prostitutes!</p>
<h3>Episode 204</h3>
<p><strong>Chef</strong>: Hello there, children!<br />
<strong>Boys</strong>: Hey, Chef!<br />
<strong>Kyle</strong>: How&#8217;s it going?<br />
<strong>Chef</strong>: Bad<br />
<strong>Kyle</strong>: Why bad?<strong><br />
Chef</strong>: Children, I heard about what happened at school today! Now none of you tooked that nasty marijuana, did you?<strong><br />
Stan</strong>: No, dude! We never even saw it!<strong><br />
Chef</strong>: Okay, because I just want to tell you that drugs are bad.<br />
<strong>Stan</strong>: We know, we know, that&#8217;s what everybody says!<br />
<strong>Chef</strong>: Right. But do you know WHY they&#8217;re bad?<strong><br />
Kyle</strong>: Because they&#8217;re an addictive solution to a greater problem, causing disease of both body and mind, the consequences far outweighing their supposed benefits.<strong><br />
Chef</strong>: And do you have ANY idea what that means?<strong><br />
Kyle</strong>: No.<br />
<strong>Cartman</strong>: I know! Drugs are bad, because if you do drugs, you&#8217;re a hippie; and hippies suck!</p>
<p>P.S.: It was damn hard to write this post, given that my mouse has gone crazy with clicks.</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/hey-chef-south-park/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Facebook: Bug with URL encoding</title>
		<link>http://publicmind.in/blog/facebook-bug-with-url-encoding/</link>
		<comments>http://publicmind.in/blog/facebook-bug-with-url-encoding/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 05:33:48 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[fbsl]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=548</guid>
		<description><![CDATA[Today, while I was working on the URL encoding for the recently released Facebook-style Links module, I realized a bug with Link Attachments feature on Facebook. Before I explain, let us reproduce it: Try to attach the following link on Facebook: http://google.com/search?q=blenders%26pride. This URL actually queries Google for &#8216;blenders&#038;pride&#8217;. Facebook converts/encodes the above URL to [...]]]></description>
			<content:encoded><![CDATA[<p>Today, while I was working on the URL encoding for the recently released <a href="http://publicmind.in/blog/drupal-facebook-link">Facebook-style Links</a> module, I realized a bug with Link Attachments feature on Facebook. Before I explain, let us reproduce it:</p>
<p>Try to attach the following link on Facebook: <a href="http://google.com/search?q=blenders%26pride">http://google.com/search?q=blenders%26pride</a>. This URL actually queries Google for &#8216;blenders&#038;pride&#8217;. Facebook converts/encodes the above URL to <a href="http://google.com/search?q=blenders&#038;pride">http://google.com/search?q=blenders&#038;pride </a> which is not the same as above and queries Google for just &#8216;blenders&#8217;.</p>
<p>So, why Facebook does this? Probably Facebook tries to encode the URL to remove the characters which are not allowed by RFC 3986 and replaces them with their percent encoding. But there are certain characters which should not be encoded, such as &#8216;/&#8217;, &#8216;?&#8217;, &#8216;#&#8217;, &#8216;@&#8217; which are the reserved characters and used as delimiters in the URL. So, it decodes these characters and converts their encoding to the original character which gives rise to the problem. Let us see an example:<br />
<span id="more-548"></span><br />
&#8216;<a href="http://google.com/search?q= %2B">http://google.com/search?q= %2B</a>&#8216; is first encoded to replace unwanted character with their percent encoding, turns into &#8216;http%3A%2F%2Fgoogle.com%2Fsearch%3Fq%3D%20%2B&#8217;. (Note: I assume that already encoded characters are not encoded again in order to reproduce the bug, i.e.%2B does not gets converted to %252B). Then, the reserved characters (/,:,?,=,@,+) must be decoded again, therefore it gets converted to &#8216;<a href="http://google.com/search?q=%20+">http://google.com/search?q=%20+</a>&#8216; which as we see is not the same. It ideally should have been &#8216;http://google.com/search?q=%20%2B&#8217;.</p>
<p>I have already reported it in the bugs on Facebook. I will like to hear your views on URL encoding. Do you consider this as bug? Why does such URLs are not properly formatted at source making lives of developers difficult? Why does URLs with spaces and other disallowed characters exists?</p>
<p>Enjoy.</p>
<p><strong>Related Resources:</strong></p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Percent-encoding">http://en.wikipedia.org/wiki/Percent-encoding</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/facebook-bug-with-url-encoding/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Drupal: Tutorial for Feeds Image Grabber</title>
		<link>http://publicmind.in/blog/tutorial-for-feeds-image-grabber/</link>
		<comments>http://publicmind.in/blog/tutorial-for-feeds-image-grabber/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 04:45:43 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[feeds]]></category>
		<category><![CDATA[fig]]></category>
		<category><![CDATA[imagegrabber]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=529</guid>
		<description><![CDATA[Feeds Image Grabber (FIG) was released on 3rd March, and currently supports the following features: Automatically downloads and attaches image to the node created by Feeds module. Configurable XPath of the desired image location on the webpage of the feed item on per feed basis (using element&#8217;s id or CSS class). Support for FileField Paths module. [...]]]></description>
			<content:encoded><![CDATA[<p><!-- Digg Digg Disabled --><a href="http://drupal.org/project/feeds_imagegrabber">Feeds Image Grabber</a> (FIG) was released on 3rd March, and currently supports the following features:</p>
<ol>
<li>Automatically downloads and attaches image to the node created by Feeds module.</li>
<li>Configurable XPath of the desired image location on the webpage of the feed item on per feed basis (using element&#8217;s id or CSS class).</li>
<li>Support for <a href="http://drupal.org/project/filefield_paths">FileField Paths</a> module.</li>
<li>Configurable maximum image size.</li>
<li>Configurable minimum and maximum image resolutions.</li>
</ol>
<p>In this post, I will briefly demonstrate how to configure the settings for FIG to efficiently grab images for feed items.<br />
<span id="more-529"></span><br />
<strong>Image Field Settings:</strong></p>
<p>Feeds module will create nodes from feed-items of content type as chosen in the FeedsNodeProcessor settings. FIG will store the image grabbed in an image field attached to the node of this content type. Therefore, you must add an image field to this content type. For example, if the content type of feed-items is <em>story</em>, you need to go to <em>admin &gt; content types &gt; story &gt; manage fields</em> and add a field of type <em>File</em> and widget <em>Image</em>. (<a href="http://drupal.org/node/609628">http://drupal.org/node/609628</a>)</p>
<p>Configure the settings of the image field, such as extensions, minimum and maximum resolution, maximum size, etc. While grabbing the image, FIG will automatically take into consideration the settings of the image field to which the downloaded image will be mapped.</p>
<p><strong>Mapping Settings:</strong></p>
<p>Now, you must go to the mapping settings for the <em>Node Processor</em> of the <em>Feed Importer </em>and map <em>Item URL (Link) </em>to one of the available imagefields which are appended by &#8220;<em>(FIG)</em>&#8220;.</p>
<div id="attachment_530" class="wp-caption aligncenter" style="width: 692px"><a href="http://publicmind.in/blog/wp-content/uploads/2010/03/target-mappings.jpg"><img class="size-full wp-image-530" title="target-mappings" src="http://publicmind.in/blog/wp-content/uploads/2010/03/target-mappings.jpg" alt="Mapping Settings" width="682" height="427" /></a><p class="wp-caption-text">Mapping for Node Processor</p></div>
<p><strong>Feeds Image Grabber Settings:</strong></p>
<p>After enabling FIG and configuring the above settings, you will see the following additional form whenever you create or edit a feed.</p>
<div id="attachment_532" class="wp-caption aligncenter" style="width: 762px"><a href="http://publicmind.in/blog/wp-content/uploads/2010/03/fig-form.jpg"><img class="size-full wp-image-532 " title="fig-form" src="http://publicmind.in/blog/wp-content/uploads/2010/03/fig-form.jpg" alt="fig-form" width="752" height="453" /></a><p class="wp-caption-text">FIG config form</p></div>
<p>Here is a brief explanation of the available fields:</p>
<ol>
<li>Enable Feeds Image Grabber: As the description says, check this box if you want FIG to download images of the feed items created by this feed.</li>
<li>Search for an image between the tag identified by: It has been explained before <a href="http://publicmind.in/blog/tutorial-for-feedapi-imagegrabber/#tag-options" target="_blank">here</a>.</li>
<li>Feeling Lucky: FIG will select the first image between the tag if the &#8220;yes&#8221; is selected, else will search for all the images to find the largest image between the tag.</li>
<li>Execution time: FIG will take the selected percentage of maximum PHP execution time to grab image for each feed item. If images are not grabbed for some feed, try increasing this percentage to decrease errors due to network timeouts.</li>
</ol>
<p>That is all. Once you click on import, you will get the feed item nodes along with the images. If images are not grabbed, here is a list of possible reasons,</p>
<ol>
<li>Timeout, try increasing the Execution time.</li>
<li>Malformed HTML source.</li>
<li>Validation failures (due to maximum size, minimum resolution, etc).</li>
</ol>
<p>I am working on better error logging and reporting, so that you can know the reasons for sure.</p>
<p>Enjoy.</p>
<p><strong>Related Posts:</strong></p>
<ul>
<li>Feeds Image Grabber:  <a href="http://publicmind.in/blog/drupal-feeds-image-grabber" target="_blank">http://publicmind.in/blog/drupal-feeds-image-grabber</a></li>
<li>FIG project page (Download): <a href="http://drupal.org/project/feeds_imagegrabber" target="_blank">http://drupal.org/project/feeds_imagegrabber</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/tutorial-for-feeds-image-grabber/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Drupal: Facebook-style Links</title>
		<link>http://publicmind.in/blog/drupal-facebook-link/</link>
		<comments>http://publicmind.in/blog/drupal-facebook-link/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 13:43:52 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[fbsl]]></category>
		<category><![CDATA[fbss]]></category>
		<category><![CDATA[module]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=475</guid>
		<description><![CDATA[Facebook-style Links (FBSL) provides the ability for users to attach and submit links along with their Facebook-style Statuses. Combined with Facebook-style Statuses (FBSS), the FBSL module provides an attach link form that loads via AHAH. Users can then attach a link with an (optional) thumbnail, title and description to their status. In the nutshell, it [...]]]></description>
			<content:encoded><![CDATA[<p><!-- Digg Digg Disabled --><a href="http://drupal.org/project/facebook_link">Facebook-style Links</a> (FBSL) provides the ability for users to attach and submit links along with their Facebook-style Statuses. Combined with <a href="http://drupal.org/project/facebook_status">Facebook-style Statuses</a> (FBSS), the FBSL module provides an attach link form that loads via <a href="http://en.wikipedia.org/wiki/AHAH">AHAH</a>. Users can then <em>attach</em> a link with an (optional) thumbnail, title and description to their status. In the nutshell, it imitates the link attachment feature on Facebook.</p>
<div id="attachment_484" class="wp-caption aligncenter" style="width: 617px"><a href="http://publicmind.in/blog/wp-content/uploads/2010/02/Screen-shot-2010-02-25-at-1.54.50-PM.png"><img class="size-full wp-image-484" title="Screenshot of FBSL on LondonFuse.ca" src="http://publicmind.in/blog/wp-content/uploads/2010/02/Screen-shot-2010-02-25-at-1.54.50-PM.png" alt="screenshot-londonfuse" width="607" height="284" /></a><p class="wp-caption-text">Screenshot of FBSL on LondonFuse.ca</p></div><br />
<span id="more-475"></span><br />
FBSL also provides token support for modules such as <a href="http://drupal.org/project/activity">Activity 2.x</a>. The themed image, title, description and status among other tokens are offered. The FBSS statuses which have a attached link, have their own separate Activity Publisher Templates.</p>
<p>FBSL is designed to be used quite intuitively, this screenshot shows the FBSL status form as themed by Thomas Cermak on <a href="http://londonfuse.ca">LondonFuse</a>.</p>
<p><div id="attachment_491" class="wp-caption aligncenter" style="width: 637px"><a href="http://publicmind.in/blog/wp-content/uploads/2010/02/sreenshot2.png"><img class="size-full wp-image-491" title="screenshot2" src="http://publicmind.in/blog/wp-content/uploads/2010/02/sreenshot2.png" alt="screenshot-facebook-link" width="627" height="76" /></a><p class="wp-caption-text">FBSL status update form</p></div>
<p>FBSL can be used out of the box, though you can customize it from the settings page. All other information (installation, usage, and changelog) can be found inside the packaged module which is available for download <a href="http://drupal.org/project/facebook_link">here</a>.</p>
<p>This module has been sponsored by Thomas Cermak of <a href="http://londonfuse.ca">LondonFuse</a>.</p>
<p><strong>Resources:</strong></p>
<ul>
<li>Project Page (Download): <a href="http://drupal.org/project/facebook_link">http://drupal.org/project/facebook_link</a></li>
</ul>
<p><strong>Note</strong>: Feature and Support requests should be made through the <a href="http://drupal.org/project/facebook_link">Facebook-style Links</a> Forum. I may not be able to answer them here.</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/drupal-facebook-link/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Drupal: Feeds Image Grabber</title>
		<link>http://publicmind.in/blog/drupal-feeds-image-grabber/</link>
		<comments>http://publicmind.in/blog/drupal-feeds-image-grabber/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 09:50:13 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[feeds]]></category>
		<category><![CDATA[imagegrabber]]></category>
		<category><![CDATA[module]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=474</guid>
		<description><![CDATA[Feeds Image Grabber (FIG) is the successor project for FeedAPI ImageGrabber to support the Feeds module. FIG parses the Item URL of each feed-item, downloads the appropriate image from the post and maps it to an image field in the node created by Feeds module for that feed-item. [Google Reader (with thumbnails) can be imitated [...]]]></description>
			<content:encoded><![CDATA[<p><!-- Digg Digg Disabled --><a href="http://drupal.org/project/feeds_imagegrabber">Feeds Image Grabber</a> (FIG) is the successor project for <a href="http://publicmind.in/blog/feedapi-imagegrabber">FeedAPI ImageGrabber</a> to support the <a href="http://drupal.org/project/feeds">Feeds</a> module. FIG parses the Item URL of each feed-item, downloads the appropriate image from the post and maps it to an image field in the node created by Feeds module for that feed-item.</p>
<p>[Google Reader (with thumbnails) can be imitated on a Drupal site by using Feeds, Feeds Image Grabber, FileField, ImageField, ImageCache, ImageAPI and Views module].</p>
<p><span id="more-474"></span> <strong>How it works</strong><br />
A classic method of mimicking the behavior of Feeds Image Grabber would be to do the same thing manually. Let us go through the procedure if you were to do it manually:</p>
<ol>
<li>Refresh the feed to create nodes for feed items (using FeedsNodeProcessor).</li>
<li>For each feed-item, go to their respective webpage and save the image to display.</li>
<li>Upload the image to CCK image field for each feed item.</li>
</ol>
<p>Feeds Image Grabber automates the last 2 steps of the three step process described. <a href="http://drupal.org/project/imagecache">Imagecache</a> module can be used to create thumbnail of the image retrieved which can be attached to the node.</p>
<p><strong>What&#8217;s in the box</strong><br />
On 3rd March, first version of FIG was released. As of today, FIG supports following features:</p>
<ol>
<li>Automatically downloads and attaches image to the node created by Feeds module.</li>
<li>Configurable XPath of the desired image location on the webpage of the feed item on per feed basis (using element&#8217;s id or CSS class).</li>
<li>Support for <a href="http://drupal.org/project/filefield_paths">FileField Paths</a> module.</li>
<li>Configurable maximum image size.</li>
<li>Configurable minimum and maximum image resolutions.</li>
</ol>
<p><strong>Get involved</strong><br />
You can get involved by doing any of the following:</p>
<ol>
<li>write about this module, so that other folks can find it.</li>
<li>report bugs in the <a href="http://drupal.org/node/add/project-issue/feeds_imagegrabber">issue queue</a>.</li>
<li>help in the <a href="http://drupal.org/project/issues/search/feeds_imagegrabber?categories[]=support">support forums</a> of the module.</li>
<li>buy me a Beer <img src='http://publicmind.in/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ol>
<p><strong>Resources: </strong></p>
<ul>
<li>Project Page (Download): <a href="http://drupal.org/project/feeds_imagegrabber">http://drupal.org/project/feeds_imagegrabber</a></li>
<li>Tutorials: <a href="http://publicmind.in/blog/tutorial-for-feeds-image-grabber">http://publicmind.in/blog/tutorial-for-feeds-image-grabber</a></li>
</ul>
<p><strong>Note</strong>: Feature and Support requests should be made through the <a href="http://drupal.org/project/feeds_imagegrabber" target="_blank">Feeds Image Grabber</a> Forum. I may not be able to answer them here.</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/drupal-feeds-image-grabber/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>&#8220;What is Drupal?&#8221;, for newbies</title>
		<link>http://publicmind.in/blog/what-is-drupal-for-newbies/</link>
		<comments>http://publicmind.in/blog/what-is-drupal-for-newbies/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 22:55:16 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Drupal]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=432</guid>
		<description><![CDATA[I often come across this question from my friends and peers and most of the time I deflect it by saying &#8220;it lets you create your website easily, why don&#8217;t you look up on Wikipedia?&#8221;. Few days ago, one of my friends pointed me that most of the articles start with &#8220;Drupal is a Content Management [...]]]></description>
			<content:encoded><![CDATA[<p>I often come across this question from my friends and peers and most of the time I deflect it by saying &#8220;it lets you create your website easily, why don&#8217;t you look up on Wikipedia?&#8221;. Few days ago, one of my friends pointed me that most of the articles start with &#8220;Drupal is a Content Management System(CMS) &#8230;&#8221; which becomes pretty much confusing when one has no idea about what a CMS is. In this post, I have tried to explain what a CMS is and why we need it and how Drupal stands out among various other available CMSs.</p>
<p>Let us say you need to create a webpage for your website. Ideally, it would mean you create HTML content that will be delivered to someone who requests it through their web browser. Eventually you grow big and decide to add 100 more pages to your website and therefore create 100 more HTML pages. But then you realize that there is a lot of duplicate content. The footer which contains the copyright information is essentially the same on all pages, therefore if you ever need to edit it then it would mean to edit these 101 pages. This will be a lot of redundant work.<br />
<span id="more-432"></span><br />
The main problem with the HTML pages is that they are static, they can not be changed based on what user requests. Thats why we need to have two different pages, even if they are almost similar and just differ by a single line. But then we also need to send the HTML content to the web browsers. That is where scripting languages such as PHP, ASP, JSP come as a savior. These languages are capable of creating dynamic content. The data is usually stored in the database and whenever a request comes for a page, HTML content will be created from this data on-the-fly and will be sent back to the requesting user. Now, you just need to store that copyright information just once, hence changing it becomes much easier.</p>
<p>Now, you also want to control which users have permission to access certain portion of the website and you create a login page for that part of the website, store cookies and write other code to maintain the session for the user. You might also want to publish a webpage on the fly, i.e.  save content to the database right from the user browser. You need some kind of access control mechanism and believe me it will be a hell lot of work to do.</p>
<p>That is where web-based Content Management System come into picture. They take out all the programming part from the publishing part of your website. You just need to write the content that has to be published on your website, make some settings on how it will be displayed, whether anyone or only authenticated users can see that content and you are done (of course, this is overly simplified but believe me once you know this everything will look so obvious to you).</p>
<p>With a CMS, one can easily create a website which :</p>
<ol>
<li>allows large number of people to contribute and share data.</li>
<li>easily manages user access control lists.</li>
<li>have reduced duplicate content.</li>
</ol>
<p>Drupal is one of the several available CMS is the market which is written in PHP and uses MySQL or PostgreSQL as database to store the website content. Drupal is released under GNU General Public License.</p>
<p><strong>What can you achieve with Drupal?</strong></p>
<p>You can easily create and manage,</p>
<ul>
<li>personal homepage</li>
<li>company website</li>
<li>blog</li>
<li>shopping websites (just like Ebay or Amazon)</li>
<li>Social networking sites like Twitter or Facebook</li>
</ul>
<p>With Drupal, you can create any kind of website, Imagination is the limit. Just FYI, White House uses Drupal to manage its official website: <a href="http://whitehouse.gov">whitehouse.gov</a></p>
<p>As with every other product, there are several other alternatives to Drupal such as Joomla, TYPO3, Nucleus, WordPress, etc. You can find the whole list of available CMS here: <a href="http://en.wikipedia.org/wiki/List_of_content_management_systems" target="_blank">List of Content Management Systems</a>. But what makes Drupal stand out is :</p>
<ol>
<li>its ease of use</li>
<li>a large community of developers which keeps everything secure and up to date.</li>
<li>a large pool of modules and themes. A module in Drupal lets you do things which aren&#8217;t supported by default in Drupal.</li>
</ol>
<p>Here is a small 1 minute video on &#8220;What is Drupal&#8221;, this video has already won six Telly awards:</p>
<p><object width="425" height="349"><param name="movie" value="http://www.youtube.com/v/rF1X12PE6PY&#038;rel=0&#038;border=1&#038;color1=0x3a3a3a&#038;color2=0x999999&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/rF1X12PE6PY&#038;rel=0&#038;border=1&#038;color1=0x3a3a3a&#038;color2=0x999999&#038;hl=en_US&#038;feature=player_embedded&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="349"></embed></object></p>
<p><strong>Drupal Website Hosting</strong></p>
<p><strong></strong>There are a lot of web hosting providers in the market and I know you will research well before buying anything. Most of them provide a one-click Drupal installation which saves you a lot of trouble while installing Drupal. I recommend you to look for such a web host, well all is up to you anyway.</p>
<p>You are now ready to eat up the Wikipedia article on Drupal. You can visit official Drupal website to look for great tutorials and downloads. Here are a few important links:</p>
<p>Official Drupal website: <a href="http://drupal.org">http://drupal.org</a><br />
Modules Resource: <a href="http://drupal.org/project/modules">http://drupal.org/project/modules</a><br />
Themes Resource: <a href="http://drupal.org/project/themes">http://drupal.org/project/themes</a><br />
Wikipedia article: <a href="http://en.wikipedia.org/wiki/Drupal">http://en.wikipedia.org/wiki/Drupal</a></p>
<p>Do not forget to vote for this post on DZone or Digg if you liked it, or you can leave a comment or two.</p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/what-is-drupal-for-newbies/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Dumping a remote SVN repository without admin access</title>
		<link>http://publicmind.in/blog/dumping-a-remote-svn-repository-without-admin-access/</link>
		<comments>http://publicmind.in/blog/dumping-a-remote-svn-repository-without-admin-access/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 20:49:47 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[cvsdude]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=415</guid>
		<description><![CDATA[When you need to dump a SVN repository, all you have to do is 1svnadmin dump REPOS_PATH But wait, then you need to have access to the server on which your SVN repository is hosted. Often, that is not the case and you have to contact the company which hosts your repository to do it [...]]]></description>
			<content:encoded><![CDATA[<p>When you need to dump a SVN repository, all you have to do is</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">svnadmin dump REPOS_PATH</div></td></tr></tbody></table></div>
<p>But wait, then you need to have access to the server on which your SVN repository is hosted. Often, that is not the case and you have to contact the company which hosts your repository to do it for you. I have a repository hosted at <a href="http://cvsdude.com">CVSdude</a> and I needed to dump it. As I am on the Developer Edition plan, I do not enjoy the privileges to backup my repositories from my admin panel. I could have mailed the guys at cvsdude, who according to me are quite supportive and quick to respond, but that would have taken longer than what I am going to describe next.</p>
<p>SVN provides a unique utility, <strong>svnsync</strong> which is a Subversion remote repository mirroring tool. Put simply, it allows you to replay the revisions of one repository into another one. Now, we can create an empty repository on our local system, synchronize it with the remote repository and then dump the local repository. Follow the following 4 step process to have a dump of your repository:<br />
<span id="more-415"></span></p>
<ol>
<li><strong>Create a local repository</strong>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">svnadmin create c:/repos</div></td></tr></tbody></table></div>
<p>It will create an empty repository on your local system.</li>
<li><strong>Add “pre-revprop-change” hook to your local repository</strong><br />
You need to add an empty file into the hooks folder of your repository. This file should be named <strong>pre-revprop-change.cmd</strong> on Windows and <strong>pre-revprop-change</strong> on Linux systems.<br />
For Linux users:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">echo ‘#!/bin/sh’ &gt; repos/hooks/pre-revprop-change<br />
chmod +x repos/hooks/pre-revprop-change</div></td></tr></tbody></table></div>
<p>This allows <strong><em>svnsync</em></strong> to make revision changes to your local repository. Note that your remote repository is never modified during this process, in fact we just need read access to the remote repository.</li>
<li><strong>Synchronize your local repository with the remote repository</strong>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">svnsync init file:///c:/repos https://test.cvsdude.com/fbl<br />
svnsync sync file:///c:/repos</div></td></tr></tbody></table></div>
</li>
<li><strong>Dump your local repository</strong>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">svnadmin dump file:///c:/repos &gt; repos.dmp</div></td></tr></tbody></table></div>
</li>
</ol>
<p>That would be all, you can now have a cup of coffee. <img src='http://publicmind.in/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/dumping-a-remote-svn-repository-without-admin-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GoogleSharing: Remain Anonymous from Google</title>
		<link>http://publicmind.in/blog/googlesharing-anonymizer/</link>
		<comments>http://publicmind.in/blog/googlesharing-anonymizer/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 17:25:22 +0000</pubDate>
		<dc:creator>Nitin</dc:creator>
				<category><![CDATA[Nitin's Blog]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[http]]></category>

		<guid isPermaLink="false">http://publicmind.in/blog/?p=404</guid>
		<description><![CDATA[Who knows more about the citizens in their own country, Kim Jong-Il or Google? Google tracks everything, your searches, web movement which arises from your search, what places you went last summer (or are planning to go, thanks to Google maps). Google not only knows about you but also understands you much better than your [...]]]></description>
			<content:encoded><![CDATA[<p>Who knows more about the citizens in their own country, Kim Jong-Il or Google?</p>
<p>Google tracks everything, your searches, web movement which arises from your search, what places you went last summer (or are planning to go, thanks to Google maps). Google not only knows about you but also understands you much better than your own girlfriend. If that freaks you out, I&#8217;d say you are in your right mind. But now you can avoid it to a certain extent by using GoogleSharing.</p>
<p>GoogleSharing is an extension for Firefox, which will anonymize your requests to Google products which do not require you to log in but where your activities can be tracked by Google. Google keep tracks of you through cookies. If you attempt to strip off your cookies from your HTTP request, Google might tag you as spam bot and will force you to type in a CAPTCHA for your every request.<br />
<span id="more-404"></span><br />
GoogleSharing strips off your personal information (IP, OS, browser agent, etc) from your requests to Google products (which do not require you to log-in) and your request is sent to Google Sharing Proxy Server which adds any required information to your requests and forward them to Google. All your requests made to other websites or google products which require log in, are left &#8220;completely untouched, unredirected, and unaffected&#8221; and they go directly to their destination.</p>
<div class="wp-caption aligncenter" style="width: 202px"><img title="GoogleSharing" src="http://www.googlesharing.net/images/diagram2.png" alt="GoogleSharing" width="192" height="268" /><p class="wp-caption-text">How GoogleSharing works. Source:googlesharing.net</p></div>
<p>Any of your log-in information is never sent to Google Sharing servers, it is stripped off by the firefox addon that you will install. So you never have to compromise with security and you can still enjoy the services like Gmail, Reader, other non-Google websites without any proxy in between. Wherever required GoogleSharing will dive in between you and Google to protect you from Google.</p>
<p>GoogleSharing logs none of your requests on their servers and even better, they provide you with the source code they run on their servers so that if you have proper resources you can set up your own &#8220;Google Sharing Proxy Server&#8221; which will have nothing to do with GoogleSharing. You can find more about it on their official website.</p>
<p>Link to official website: <a href="http://www.googlesharing.net">GoogleSharing</a><br />
Link to Mozilla Firefox addon site: <a href="https://addons.mozilla.org/en-US/firefox/addon/60333/">GoogleSharing</a></p>
<p>Let me know through your comments what you think about this firefox addon.</p>
<p>Here is funny video on Google invading your privacy:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/hrontojPWEE&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/hrontojPWEE&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://publicmind.in/blog/googlesharing-anonymizer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
