<?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>mohangk.org/blog &#187; computing</title>
	<atom:link href="http://mohangk.org/blog/category/computing/feed/" rel="self" type="application/rss+xml" />
	<link>http://mohangk.org/blog</link>
	<description>Thoughts, somewhat explained</description>
	<lastBuildDate>Sun, 22 Nov 2009 18:12:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>My foss.my 2009 talk &#8211; &#8220;Tomboy WebSync Explained&#8221;</title>
		<link>http://mohangk.org/blog/2009/11/my-foss-my-2009-talk-tomboy-websync-explained/</link>
		<comments>http://mohangk.org/blog/2009/11/my-foss-my-2009-talk-tomboy-websync-explained/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 18:07:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[computing]]></category>

		<guid isPermaLink="false">http://mohangk.org/blog/?p=430</guid>
		<description><![CDATA[Tomboy Web Sync Explained
View more documents from Mohanaraj Gopala Krishnan.

This was a talk that I gave during the foss.my 2009 conference. It covers a bit of background on Tomboy before focusing on the web based sync that shipped with Tomboy 1.0 and the accompanyin sync server implementation Snowy.
I managed to do a demo of 2 [...]]]></description>
			<content:encoded><![CDATA[<div id="__ss_2559376" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Tomboy Web Sync Explained" href="http://www.slideshare.net/mohangk/tomboy-web-sync-explained">Tomboy Web Sync Explained</a><object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" 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://static.slidesharecdn.com/swf/ssplayer2.swf?doc=tomboysync-091122115511-phpapp01&amp;stripped_title=tomboy-web-sync-explained" /><param name="allowfullscreen" value="true" /><embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=tomboysync-091122115511-phpapp01&amp;stripped_title=tomboy-web-sync-explained" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">documents</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/mohangk">Mohanaraj Gopala Krishnan</a>.</div>
</div>
<p>This was a talk that I gave during the foss.my 2009 conference. It covers a bit of background on Tomboy before focusing on the web based sync that shipped with Tomboy 1.0 and the accompanyin sync server implementation Snowy.</p>
<p>I managed to do a demo of 2 Tomboy notes instances (on running in a VM) syncing to a common Snowy instance.</p>
<p>The crowd was a bit thin as the other track had Brian Aker giving a talk on Gearman &#8211; but the talk sparked interest and I had a couple engaging hallway converstations on the subject.</p>
<p>On the whole I enjoyed myself at foss.my, meeting and chatting with people. The grassroots, community driven aspect of the conference always ensures that there is lot more signal then noise. I look forward to foss.my 2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://mohangk.org/blog/2009/11/my-foss-my-2009-talk-tomboy-websync-explained/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tomboy Addin &#8211; Developing with MonoDevelop</title>
		<link>http://mohangk.org/blog/2009/10/tomboy-addin-monodevelop/</link>
		<comments>http://mohangk.org/blog/2009/10/tomboy-addin-monodevelop/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 04:12:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[computing]]></category>

		<guid isPermaLink="false">http://mohangk.org/blog/?p=292</guid>
		<description><![CDATA[Introduction
The following guide is meant to be an addendum to Tomboy guide to creating addins on the Tomboy wiki. It shows how to create and compile the addin using MonoDevlop.  Although written based on MonoDevelop for the Mac,  I believe the steps should be the same for any other platform running MonoDevelop. I [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>The following guide is meant to be an addendum to Tomboy <a href="http://live.gnome.org/Tomboy/HowToCreateAddins">guide to creating addins on the Tomboy wiki</a>. It shows how to create and compile the addin using MonoDevlop.  Although written based on MonoDevelop for the Mac,  I believe the steps should be the same for any other platform running MonoDevelop. I also assume that you have already downloaded the Tomboy <a href="http://git.gnome.org/cgit/tomboy">source from its git repository</a>.</p>
<p><strong>Step 1: </strong> Load the tomboy solution into MonoDevelop. When checking out from git, in the root folder  there will be a file called Tomboy.sln (On the Mac use Tomboy-mac.sln).  Open this up in MonoDevelop. Upon doing that your navigator will have the list of projects that come with Tomboy.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step1_started_monodevelop.jpg"><img class="size-medium wp-image-294 alignnone" title="step1_started_monodevelop" src="http://mohangk.org/blog/wp-content/uploads/2009/09/step1_started_monodevelop.jpg" alt="step1_started_monodevelop" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 2:</strong> Adding the addin as a new prpject to the Tomboy solution. Right click on the Tomboy solution and select the &#8220;Add > Add New Project&#8221;.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step2_add_project.jpg"><img class="size-medium wp-image-294 alignnone" title="step2_add_project" src="http://mohangk.org/blog/wp-content/uploads/2009/09/step2_add_project.jpg" alt="step2_add_project.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 3: </strong> Select to create a C# Library project. Insert the name of the addin as the name of the project and the loacation of the parent folder of the project.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step3_project_settings.jpg"><img class="size-medium wp-image-294 aligncenter" title="step3_project_settings" src="http://mohangk.org/blog/wp-content/uploads/2009/09/step3_project_settings.jpg " alt="step3_project_settings.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 4: </strong> You should be able to see your new addin project within the navigator window. There will be some files auto generated that you can remove.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step4_delete_unnecessary_files.jpg"><img class="size-medium wp-image-294 aligncenter" title="step3_project_settings" src="http://mohangk.org/blog/wp-content/uploads/2009/09/step4_delete_unnecessary_files.jpg" alt="step4_delete_unnecessary_files.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 5: </strong> Create the two files InsertDateTimeAddin.cs and InsertDateTime.addin.xml as instructed by the tutorial and make sure they are contained within our newly created InsertDateTime project. You can either do this by right clicking the InsertDateTime project and selecting  &#8220;Add > New Files&#8221; or by copying the files into the project directory and then adding them to the project via &#8220;Add > Add Files&#8221;.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step5_add_or_new_files_into_project.jpg"><img class="size-medium wp-image-294 alignnone" title="step5_add_or_new_files_into_project.jpg" src="http://mohangk.org/blog/wp-content/uploads/2009/09/step5_add_or_new_files_into_project.jpg" alt="step5_add_or_new_files_into_project.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 6:</strong> Add the required references (dependencies) for the addin project. To do this, right click the &#8220;Reerences&#8221; folder in the project and select &#8220;Edit References&#8221;.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step6_edit_references.jpg"><img class="size-medium wp-image-294 alignnone" title="step6_edit_references.jpg" src="http://mohangk.org/blog/wp-content/uploads/2009/09/step6_edit_references.jpg" alt="step6_edit_references.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 7:</strong> When the dialog box pops up makes ure the relevant packages, project and assemblies are added as references. You can see the list of references I have added by looking at the screenshot below. I based the list of the other addin projects.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step7_add_references.jpg"><img class="size-medium wp-image-294 alignnone" title="step7_add_references.jpg" src="http://mohangk.org/blog/wp-content/uploads/2009/09/step7_add_references.jpg" alt="step7_add_references.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 8:</strong>  Once added all the references should be visible as children to the references folder in the navigator.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step8_references_list.jpg"><img class="size-medium wp-image-294 alignnone" title="step8_references_list.jpg" src="http://mohangk.org/blog/wp-content/uploads/2009/09/step8_references_list.jpg" alt="step8_references_list.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 9: </strong> Modify the options of the addin project by bringing up its &#8220;Options&#8221; dialog box by right clicking on the project and selecting &#8220;Options&#8221;.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step9_set_project_options.jpg"><img class="size-medium wp-image-294 aligncenter" title="step9_set_project_options.jpg" src="http://mohangk.org/blog/wp-content/uploads/2009/09/step9_set_project_options.jpg" alt="step9_set_project_options.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 10: </strong>When the &#8220;Options&#8221; dialog box appears, under &#8220;Build > General&#8221; ensure that the  &#8220;Compile Target&#8221; is set to &#8220;Library&#8221; and that the &#8220;Runtime version&#8221; is set to &#8220;Mono/ .NET 2.0.&#8221;<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step10_options_setting.jpg"><img class="size-medium wp-image-294 aligncenter" title="step10_options_setting.jpg" src="http://mohangk.org/blog/wp-content/uploads/2009/09/step10_options_setting.jpg" alt="step10_options_setting.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 11: </strong> Under &#8220;Build > Output&#8221; of the &#8221;Options&#8221; dialog box make sure that the output path is set to the appropriate path. To determine the right path I would suggest looking at the other addins setting as a guide of what this value should be.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step11_options_setting2.jpg "><img class="size-medium wp-image-294 alignnone" title="step11_options_setting2.jpg " src="http://mohangk.org/blog/wp-content/uploads/2009/09/step11_options_setting2.jpg " alt="step11_options_setting2.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 12: </strong>  The final configuration step is to ensuret that MonoDevelop know that the InsertDateTime.addin.xml is to be added as a resource with the built dll. To do this right click on InsertDateTime.addin.xml and select &#8220;Build Action > Embed as resource&#8221;.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/09/step12_set_xml_as_resource.jpg"><img class="size-medium wp-image-294 alignnone" title="step12_set_xml_as_resource.jpg" src="http://mohangk.org/blog/wp-content/uploads/2009/09/step12_set_xml_as_resource.jpg" alt="step12_set_xml_as_resource.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p><strong>Step 13: </strong> Finally &#8211; build the complete project via the main menu option &#8220;Build > Build All&#8221;.<br />
<a href="http://mohangk.org/blog/wp-content/uploads/2009/10/step13_build.jpg"><img class="size-medium wp-image-294 alignnone" title="step13_build.jpg" src="http://mohangk.org/blog/wp-content/uploads/2009/10/step13_build.jpg" alt="step13_build.jpg" width="273" height="182" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
]]></content:encoded>
			<wfw:commentRss>http://mohangk.org/blog/2009/10/tomboy-addin-monodevelop/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>2Way HTTP Compression Servlet Filter</title>
		<link>http://mohangk.org/blog/2009/09/2way-http-compression-servlet-filter/</link>
		<comments>http://mohangk.org/blog/2009/09/2way-http-compression-servlet-filter/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 19:40:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[computing]]></category>

		<guid isPermaLink="false">http://mohangk.org/blog/2009/09/2way-http-compression-servlet-filter/</guid>
		<description><![CDATA[2Way HTTP Compression Servlet Filter
A Java servlet that allows for both request and response compression
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.thomas-bayer.com/gzip-compression-filter.htm">2Way HTTP Compression Servlet Filter</a><br />
A Java servlet that allows for both request and response compression</p>
]]></content:encoded>
			<wfw:commentRss>http://mohangk.org/blog/2009/09/2way-http-compression-servlet-filter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>mod_deflate &#8211; Apache HTTP Server</title>
		<link>http://mohangk.org/blog/2009/09/mod_deflate-apache-http-server/</link>
		<comments>http://mohangk.org/blog/2009/09/mod_deflate-apache-http-server/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 19:40:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[computing]]></category>

		<guid isPermaLink="false">http://mohangk.org/blog/2009/09/mod_deflate-apache-http-server/</guid>
		<description><![CDATA[mod_deflate &#8211; Apache HTTP Server
&#8220;The mod_deflate module also provides a filter for decompressing a gzip compressed request body . In order to activate this feature you have to insert the DEFLATE filter into the input filter chain using SetInputFilter or AddInputFilter. Now if a request contains a Content-Encoding: gzip header, the body will be automatically [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://httpd.apache.org/docs/2.0/mod/mod_deflate.html">mod_deflate &#8211; Apache HTTP Server</a><br />
&#8220;The mod_deflate module also provides a filter for decompressing a gzip compressed request body . In order to activate this feature you have to insert the DEFLATE filter into the input filter chain using SetInputFilter or AddInputFilter. Now if a request contains a Content-Encoding: gzip header, the body will be automatically decompressed. Few browsers have the ability to gzip request bodies. However, some special applications actually do support request compression, for instance some WebDAV clients.&#8221; Implementing request compression support seems relatively straight forward. Whats needed is client support</p>
]]></content:encoded>
			<wfw:commentRss>http://mohangk.org/blog/2009/09/mod_deflate-apache-http-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up software RAID in Ubuntu Server &#124; Security Viewpoints</title>
		<link>http://mohangk.org/blog/2009/09/setting-up-software-raid-in-ubuntu-server-security-viewpoints/</link>
		<comments>http://mohangk.org/blog/2009/09/setting-up-software-raid-in-ubuntu-server-security-viewpoints/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 19:40:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[computing]]></category>

		<guid isPermaLink="false">http://mohangk.org/blog/2009/09/setting-up-software-raid-in-ubuntu-server-security-viewpoints/</guid>
		<description><![CDATA[Setting up software RAID in Ubuntu Server &#124; Security Viewpoints
A clearly written article on setting up s/ware raid for ubuntu 8.04. Covers enabling grub on both disks to allow booting up in degraded mode
]]></description>
			<content:encoded><![CDATA[<p><a href="http://advosys.ca/viewpoints/2007/04/setting-up-software-raid-in-ubuntu-server/">Setting up software RAID in Ubuntu Server | Security Viewpoints</a><br />
A clearly written article on setting up s/ware raid for ubuntu 8.04. Covers enabling grub on both disks to allow booting up in degraded mode</p>
]]></content:encoded>
			<wfw:commentRss>http://mohangk.org/blog/2009/09/setting-up-software-raid-in-ubuntu-server-security-viewpoints/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zemanta &#8211; Zemanta &#8211; contextual intelligence for everyone!</title>
		<link>http://mohangk.org/blog/2009/09/zemanta-zemanta-contextual-intelligence-for-everyone/</link>
		<comments>http://mohangk.org/blog/2009/09/zemanta-zemanta-contextual-intelligence-for-everyone/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 19:40:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[computing]]></category>

		<guid isPermaLink="false">http://mohangk.org/blog/2009/09/zemanta-zemanta-contextual-intelligence-for-everyone/</guid>
		<description><![CDATA[Zemanta &#8211; Zemanta &#8211; contextual intelligence for everyone!
Web based service for term extraction
]]></description>
			<content:encoded><![CDATA[<p><a href="http://developer.zemanta.com/">Zemanta &#8211; Zemanta &#8211; contextual intelligence for everyone!</a><br />
Web based service for term extraction</p>
]]></content:encoded>
			<wfw:commentRss>http://mohangk.org/blog/2009/09/zemanta-zemanta-contextual-intelligence-for-everyone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Python Package Index : topia.termextract 1.1.0</title>
		<link>http://mohangk.org/blog/2009/09/python-package-index-topia-termextract-1-1-0/</link>
		<comments>http://mohangk.org/blog/2009/09/python-package-index-topia-termextract-1-1-0/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 19:40:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[computing]]></category>

		<guid isPermaLink="false">http://mohangk.org/blog/2009/09/python-package-index-topia-termextract-1-1-0/</guid>
		<description><![CDATA[Python Package Index : topia.termextract 1.1.0
Python based term extraction library. Uses part of speech tagging algorithm
]]></description>
			<content:encoded><![CDATA[<p><a href="http://pypi.python.org/pypi/topia.termextract/">Python Package Index : topia.termextract 1.1.0</a><br />
Python based term extraction library. Uses part of speech tagging algorithm</p>
]]></content:encoded>
			<wfw:commentRss>http://mohangk.org/blog/2009/09/python-package-index-topia-termextract-1-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple londiste replication setup</title>
		<link>http://mohangk.org/blog/2009/09/simple-londiste-replication-setup/</link>
		<comments>http://mohangk.org/blog/2009/09/simple-londiste-replication-setup/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 17:08:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[computing]]></category>

		<guid isPermaLink="false">http://mohangk.org/blog/?p=262</guid>
		<description><![CDATA[Caveat 
This is a very simple and straightforward setup. It is a setup of londiste where I only install londiste on one machine, the provider (or master) and not the subscriber (or slave). I have checked that this setup is fine , but it would make less sense once you have more then one subscriber.  [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Caveat </strong></p>
<p>This is a very simple and straightforward setup. It is a setup of londiste where I only install londiste on one machine, the provider (or master) and not the subscriber (or slave). I have <a href="http://pgfoundry.org/pipermail/skytools-users/2009-July/001115.html">checked</a> that this setup is fine , but it would make less sense once you have more then one subscriber.  Most of the information here was obtained from the excellent <a href="http://wiki.postgresql.org/wiki/Londiste_Tutorial">Londiste tutorial</a> . Please read that tutorial as well. This is purely an elaboration.</p>
<p><strong>Assumptions</strong></p>
<p>1. Master server &#8211; with database &#8220;db&#8221;.</p>
<p>2. Slave server -  with database &#8220;db_slave&#8221;.</p>
<p>3. We will be installing Londiste/Skytools only on the master server.</p>
<p>4. The root londiste folder will be ~/londiste, where all config files will be stored in ~/londiste/etc , log files will be stored in ~/londiste/log and PID files will be stored in ~/londiste/pid. It is assumed that all these directories have already been created.</p>
<p><strong>Overview</strong></p>
<p>Londiste is actually a component of the Skytools package that contains some postgres module, a couple of python modules, and python based admin scripts.</p>
<p>With regards to Londiste there are 2 main components to be setup</p>
<p>1. Ticker &#8211; this is to be installed into the master &#8220;db&#8221;.</p>
<p>2. Londiste &#8211; replication engine &#8211; one instance run for every slave database.</p>
<p>It is recommended that the ticker be run on the master database and that one replication engine instance be run for every one slave database, on the slave database. But since this setup is a simple one master, one slave setup, I am only going to install everything on the master database.</p>
<p><strong>Installation &#8211; dependencies</strong></p>
<p>The following is based on Debian/Ubuntu &#8211; sorry Fedora/RedHat/Centos folk.</p>
<p>Apart from the build tools (which you should be able to install easily via a sudo apt-get install build-essential), the following dependencies are required as well:</p>
<blockquote><p>sudo apt-get install postgresql-server-dev-8.3</p>
<p>sudo apt-get install python-psycopg2</p>
<p>sudo apt-get install python-dev</p></blockquote>
<p>Download the skytools tar package from <a href="http://pgfoundry.org/projects/skytools/">http://pgfoundry.org/projects/skytools/</a></p>
<p><strong>Installation  &#8211; Installing from a package by creating the deb from the source package</p>
<p></strong></p>
<p>To build the deb install the following dependecies.</p>
<blockquote><p>sudo apt-get install yada pbuilder devscripts fakeroot</p></blockquote>
<p>Then, untar the skytools package and from within it do the following</p>
<blockquote><p>tar -xvzf  ./skytools-2.1.9.tar.gz</p>
<p>cd ./skytools-2.1.9</p>
<p>make deb83</p></blockquote>
<p>There is also a &#8220;make deb84&#8243; to build a deb for postgresql8.4</p>
<p>You will end up with 2 deb packages for your architecture in the same directory that your skytools directory resides (The skytools-2.1.9 parent dir). For example since my machine was a 64 bit machine the packages generated by the make process was</p>
<p>skytools_2.1.9_amd64.deb</p>
<p>skytools-modules-8.3_2.1.9_amd64.deb</p>
<p>Install both these packages</p>
<blockquote><p>sudo dpkg -i skytools-modules-8.3_2.1.9_amd64.deb ytools_2.1.9_amd64.deb</p></blockquote>
<p><strong>Installation -  From source</strong></p>
<blockquote><p>sudo make install</p>
<p>sudo python setup.py install</p></blockquote>
<p><strong>Setup of slave database</strong></p>
<p>Dump the master database schema only and get it loaded into the slave. You will need to load the schema (just the table structure without the data itself) of the master into the slave database. You can get this by doing the following. Load the result into an empty slave database</p>
<blockquote><p>pg_dump -Upostgres db -s &#8211;schema=public&gt; db_schema.sql</p></blockquote>
<p><strong>Configuration and installation of ticker on master</strong></p>
<p>The first component that we will be setting up is the ticker. From what I understand you will setup one ticker for every database that you plan to replicate.</p>
<p>Create a config file ~/londiste/etc/ticker.ini as follows. Edit and replace with your own settings as necessary.</p>
<blockquote><p>[pgqadm]</p>
<p>job_name = db_ticker</p>
<p>db = dbname=db user=postgres password=dbpass #this is your standard psycopg2 connection string</p>
<p># how often to run maintenance [seconds]</p>
<p>maint_delay = 600</p>
<p># how often to check for activity [seconds]</p>
<p>loop_delay = 0.1</p>
<p>logfile = ~/londiste/log/%(job_name)s.log</p>
<p>pidfile = ~/londiste/pid/%(job_name)s.pid</p></blockquote>
<p>After doing that run</p>
<blockquote><p>pgqadm.py ~/londiste/etc/ticker.ini install</p></blockquote>
<pre><em>Caveat for python-2.6 - You will need to change the name of the variable "as" on line 576 of the
file /usr/local/lib/python2.6/dist-packages/pgq/status.py - "as" is a reserved word in
Python2.6. I belive this has been rectified with version 2.1.10 that has just come out.</em></pre>
<p><strong>Configuration and installation of  londiste</strong></p>
<p>In the tutorial (http://wiki.postgresql.org/wiki/Londiste_Tutorial) it is recommended that the replication daemon be run on the subscriber. Hence you would normally be setting this bit up on the subscriber machine that would also have londiste installed. You would end up with one config file for every subscriber. However this guide assumes that everything is being run from one machine.</p>
<p>Create a config file ~/londiste/etc/p-to-s.ini as follows. Edit and replace with your own settings as necessary.</p>
<blockquote><p>[londiste]</p>
<p>job_name = p_to_s # this needs to be globally unique, multiple slaves &#8211; would requires different names</p>
<p>provider_db = host=localhost dbname=db user=postgres password=dbpass</p>
<p>subscriber_db = host=slavehost dbname=db_slave user=postgres password=dbpass #this would be different for every slave</p>
<p># it will be used as sql ident so no dots/spaces</p>
<p>pgq_queue_name = londiste.replica # common queue name for common provider &#8211; all subscriber for the same provider hence should use the same value</p>
<p>logfile = ~/londiste/log/%(job_name)s.log</p>
<p>pidfile = ~/londiste/pid/%(job_name)s.pid</p></blockquote>
<p>Upon doing this we install the londiste component to both the provider and subscriber databases as follows</p>
<blockquote><p>londiste.py ~/londiste/etc/p-to-s.ini provider install</p>
<p>londiste.py ~/londiste/etc/p-to-s.ini subscriber install</p></blockquote>
<p>Keep in mind that for our setup we only have one subscriber. If you have more then one you would need to repeat the installation for the rest of the subscribers.</p>
<p><strong>Launch replication</strong></p>
<p>Once the relevant londiste installation is complete we begin the database replication as follows:</p>
<blockquote><p>londiste.py ~/londiste/etc/p-to-s.ini replay -d</p></blockquote>
<p>You will need to ensure that the replication has started before proceeding to the next steps. Check the logs.  Again, if you had more then one subscriber you will run the replay for each subscriber.</p>
<p><strong>Adding tables for replication</strong></p>
<p>Once the replication is running, you will need to add the tables and sequences that you want replicated in the provider. When it comes to the subscriber you can pick and choose which tables and sequences you would like to replicate as well. For this example I am going to assume that you would want to replicate all the tables and sequences and instead of defining the list of tables individually I am going to do it for all tables and sequences right away.</p>
<p>To add all the tables and sequences  to be replicated on the provider, do the following</p>
<blockquote><p>londiste.py ~/londiste/etc/p-to-s.ini provider add &#8211;all</p>
<p>londiste.py ~/londiste/etc/p-to-s.ini provider add-seq &#8211;all</p></blockquote>
<p>To add all the tables and sequences  to be replicated on the subscriber, do the following</p>
<blockquote><p>londiste.py ~/londiste/etc/p-to-s.ini provider tables | xargs londiste.py ~/londiste/etc/p-to-s.ini subscriber add</p>
<p>londiste.py ~/londiste/etc/p-to-s.ini provider seqs | xargs londiste.py ~/londiste/etc/p-to-s.ini subscriber add-seq</p></blockquote>
<p>By this stage the replication process should start of started. In the londiste log fil, as you add tables you should see entries as follows:</p>
<blockquote><p>2009-07-28 17:45:37,914 22880 INFO Adding public.table1</p></blockquote>
<p>You should also see log entries such as</p>
<blockquote><p>2009-07-28 17:46:15,096 22886 INFO Starting full copy of public.table1</p></blockquote>
<p>that would indicate the initial data transfer has started.</p>
<p>To check that the replication is really running you can use the compare command that will compare the provider row count and subscriber row count for the replicated tables, as follows:</p>
<blockquote><p>londiste.py ~/londiste/etc/p-to-s.ini compare</p></blockquote>
<p><strong>Summary</strong></p>
<p>That&#8217;s it! Hope this was useful for someone. Londiste is bloody easy and to get started with and works like a charm. I have been using very much the configuration that I have described above for one of our large database that gets frequent inserts and updates and I have not had a single problem since installing it slightly over 2 months ago. The <a href="http://wiki.postgresql.org/wiki/Londiste_Tutorial#Adding_a_column_to_a_replicated_table">manual management of column changes</a> in the database can be a bit tedious, but I am looking to <a href="http://www.pgcon.org/2009/schedule/attachments/101_Londiste3.pdf">Londiste 3.0</a> to sort that out.</p>
<p><strong>References</strong></p>
<p>Londiste tutorial &#8211; <a href="http://wiki.postgresql.org/wiki/Londiste_Tutorial">http://wiki.postgresql.org/wiki/Londiste_Tutorial</a></p>
<p>Really helpul and frinedly mailing list &#8211; <a href="http://pgfoundry.org/mailman/listinfo/skytools-users">http://pgfoundry.org/mailman/listinfo/skytools-users</a></p>
<p>Londiste presentation from pgcon &#8211; Useful explanation and diagrams of both Londiste 2.0 and 3.0 &#8211; <a href="http://www.pgcon.org/2009/schedule/attachments/101_Londiste3.pdf">http://www.pgcon.org/2009/schedule/attachments/101_Londiste3.pdf</a></p>
<p><strong>Appendix</strong></p>
<p><a href="http://pgfoundry.org/pipermail/skytools-users/2009-August/001124.html"> How to correctly temporarily disable and resume replication in londiste 2.1</a></p>
<p><a href="http://pgfoundry.org/pipermail/skytools-users/2009-August/001125.html"> Proper way to rotate logs for replay and	ticker daemons?</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mohangk.org/blog/2009/09/simple-londiste-replication-setup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Web APIs Do&#8217;s and Don&#8217;ts &#8211; Presentation @ Geekcamp 2009</title>
		<link>http://mohangk.org/blog/2009/07/web-apis-dos-and-donts/</link>
		<comments>http://mohangk.org/blog/2009/07/web-apis-dos-and-donts/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 16:58:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[computing]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://mohangk.org/blog/?p=252</guid>
		<description><![CDATA[This was a presentation that I gave at the excellent geekcamp.my organised by the swell chap @kamal.
Web Apis Do&#8217;s and Don&#8217;ts
View more presentations from Mohanaraj Gopala krishnan.

It covers some of the learnings I have been gathering while using and  designing Web APIs. It also contains ideas that I have gathered as well as while reading [...]]]></description>
			<content:encoded><![CDATA[<p>This was a presentation that I gave at the excellent <a href="http://geekcamp.my">geekcamp.my</a> organised by the swell chap <a href="http://twitter.com/kamal">@kamal</a>.</p>
<div id="__ss_1582837" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Web Apis Do's and Don'ts" href="http://www.slideshare.net/mohangk/web-apis-dos-and-donts">Web Apis Do&#8217;s and Don&#8217;ts</a><object width="425" height="355" data="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=webapisdosdonts-090614190533-phpapp02&amp;stripped_title=web-apis-dos-and-donts" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=webapisdosdonts-090614190533-phpapp02&amp;stripped_title=web-apis-dos-and-donts" /><param name="allowfullscreen" value="true" /></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/mohangk">Mohanaraj Gopala krishnan</a>.</div>
</div>
<p>It covers some of the learnings I have been gathering while using and  designing Web APIs. It also contains ideas that I have gathered as well as while reading  <a href="http://www.crummy.com/writing/RESTful-Web-Services/">Restful Web Services</a>. It covered</p>
<ul>
<li>Authorization and authentication</li>
<li>Calling the API (Requests to Web APIs)</li>
<li>Representations</li>
<li>Caching</li>
<li>Error handling</li>
</ul>
<p>At the end of the day, what really the counts  is adoption. The hope is that by designing a Web API in a manner that is friendly will aid in facilitating adoption.</p>
]]></content:encoded>
			<wfw:commentRss>http://mohangk.org/blog/2009/07/web-apis-dos-and-donts/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>yoush.homelinux.org » Blog Archive » git-svn usage tips</title>
		<link>http://mohangk.org/blog/2009/06/youshhomelinuxorg-%c2%bb-blog-archive-%c2%bb-git-svn-usage-tips/</link>
		<comments>http://mohangk.org/blog/2009/06/youshhomelinuxorg-%c2%bb-blog-archive-%c2%bb-git-svn-usage-tips/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 07:30:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[computing]]></category>

		<guid isPermaLink="false">http://mohangk.org/blog/2009/06/youshhomelinuxorg-%c2%bb-blog-archive-%c2%bb-git-svn-usage-tips/</guid>
		<description><![CDATA[yoush.homelinux.org » Blog Archive » git-svn usage tips
I initially was doing a &#8220;git-svn clone http://svn.foo.org/project/trunk&#8221; but it kept dying after some time. The method described in the article allows for resuming halted syncs
]]></description>
			<content:encoded><![CDATA[<p><a href="http://yoush.homelinux.org:8079/tech/git-svn-usage-tips">yoush.homelinux.org » Blog Archive » git-svn usage tips</a><br />
I initially was doing a &#8220;git-svn clone http://svn.foo.org/project/trunk&#8221; but it kept dying after some time. The method described in the article allows for resuming halted syncs</p>
]]></content:encoded>
			<wfw:commentRss>http://mohangk.org/blog/2009/06/youshhomelinuxorg-%c2%bb-blog-archive-%c2%bb-git-svn-usage-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
