<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5265739055575131649</id><updated>2011-11-28T05:29:53.833+05:30</updated><category term='apache'/><category term='abdul kalam'/><category term='2048'/><category term='cisco-udp'/><category term='collabnet'/><category term='proxy'/><category term='multi-site'/><category term='hudson'/><category term='perforce'/><category term='wordpress'/><category term='motivation'/><category term='mod_ssl'/><category term='twiki'/><category term='job'/><category term='agile'/><category term='plugin'/><category term='apj'/><category term='dataone'/><category term='ci'/><category term='swift vdi'/><category term='vpn'/><category term='macro'/><category term='network'/><category term='vim'/><category term='ubuntu'/><category term='bsnl'/><category term='server certificate'/><category term='subversion'/><category term='svn'/><category term='car'/><title type='text'>Livecipher</title><subtitle type='html'>Infrequent Ramblings. Topics ranging from Open source, Technology, Trekking and misc experiences are recorded here.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-683390105669240042</id><published>2011-10-09T17:37:00.002+05:30</published><updated>2011-10-19T14:39:13.199+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='swift vdi'/><title type='text'>Car for Sale, Maruti Swift VDI</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="color: red;"&gt;&lt;b&gt;Update: The car has been sold out!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I'm selling my car. Details as follows:&lt;br /&gt;&lt;br /&gt;&lt;table border="1" bordercolor="#0000FF" cellpadding="2" cellspacing="2"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan="4"&gt;&lt;b&gt;&lt;i&gt;Vehicle Information&lt;/i&gt;&lt;/b&gt;&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Make&lt;/td&gt;&lt;td&gt;&lt;i&gt;Maruti Swift&lt;/i&gt;&lt;/td&gt; &lt;td&gt;Model&lt;/td&gt;&lt;td&gt;&lt;i&gt;VDI (Diesel)&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Color&lt;/td&gt;&lt;td&gt;&lt;i&gt;Silky silver&lt;/i&gt;&lt;/td&gt; &lt;td&gt;Year&lt;/td&gt;&lt;td&gt;&lt;i&gt;Oct 2008&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Kilometers&lt;/td&gt;&lt;td&gt;&lt;i&gt;52500&lt;/i&gt;&lt;/td&gt; &lt;td&gt;Asking Rate&lt;/td&gt;&lt;td&gt;-------&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4"&gt;&lt;b&gt;&lt;i&gt;Fuel Economy&lt;/i&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Mileage in Highway&lt;/td&gt;&lt;td&gt;&lt;i&gt;22 kmpl&lt;/i&gt;&lt;/td&gt; &lt;td&gt;Mileage in City&lt;/td&gt;&lt;td&gt;&lt;i&gt;17 kmpl&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4"&gt;&lt;b&gt;&lt;i&gt;Features&lt;/i&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Air conditioner&lt;/td&gt;&lt;td&gt;&lt;i&gt;Yes&lt;/i&gt;&lt;/td&gt; &lt;td&gt;Leather Seat&lt;/td&gt;&lt;td&gt;&lt;i&gt;Yes&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Power Window&lt;/td&gt;&lt;td&gt;&lt;i&gt;Yes&lt;/i&gt;&lt;/td&gt; &lt;td&gt;Central Locking&lt;/td&gt;&lt;td&gt;&lt;i&gt;Yes&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Child safety lock&lt;/td&gt;&lt;td&gt;&lt;i&gt;Yes&lt;/i&gt;&lt;/td&gt; &lt;td&gt;Audio. USB/CD/AUX/FM (Sony)&lt;/td&gt;&lt;td&gt;&lt;i&gt;Yes&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Car cover&lt;/td&gt;&lt;td&gt;&lt;i&gt;Yes&lt;/i&gt;&lt;/td&gt; &lt;td&gt;Anti Braking system (ABS)&lt;/td&gt;&lt;td&gt;&lt;i&gt;No&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Driver airbag&lt;/td&gt;&lt;td&gt;&lt;i&gt;No&lt;/i&gt;&lt;/td&gt; &lt;td&gt;Alloy wheel&lt;/td&gt;&lt;td&gt;&lt;i&gt;No&lt;/i&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;embed flashvars="host=picasaweb.google.com&amp;amp;hl=en_US&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fbhuvaneswaran%2Falbumid%2F5661452483958974209%3Falt%3Drss%26kind%3Dphoto%26authkey%3DGv1sRgCLO7vPa2wdz1JA%26hl%3Den_US" height="267" pluginspage="http://www.macromedia.com/go/getflashplayer" src="https://picasaweb.google.com/s/c/bin/slideshow.swf" type="application/x-shockwave-flash" width="400"&gt;&lt;/embed&gt;&lt;/center&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;Update: The car has been sold out!&lt;i&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-683390105669240042?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/683390105669240042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2011/10/car-for-sale-maruti-swift-vdi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/683390105669240042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/683390105669240042'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2011/10/car-for-sale-maruti-swift-vdi.html' title='Car for Sale, Maruti Swift VDI'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-4576712773583031804</id><published>2011-09-24T18:23:00.006+05:30</published><updated>2011-09-26T09:25:41.658+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='perforce'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Newto Perforce Guide for Subversion users</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;table align="center"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://2.bp.blogspot.com/-hdhK0oWsUxk/Tn3Xv7cfA-I/AAAAAAAABo4/8o8Ik2ScPmc/s1600/p4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-hdhK0oWsUxk/Tn3Xv7cfA-I/AAAAAAAABo4/8o8Ik2ScPmc/s1600/p4.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;  &lt;td&gt;&lt;span style="font-size: x-large;"&gt;vs.&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QLCGoinQvOM/Tn3Yt8VaSOI/AAAAAAAABpA/dK6-fX2HXSs/s1600/svn-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-QLCGoinQvOM/Tn3Yt8VaSOI/AAAAAAAABpA/dK6-fX2HXSs/s1600/svn-2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;This blog is intended for developers who are new to Perforce version control system, but used Subversion in the past. It gives an hint of &lt;/span&gt;&lt;/span&gt;frequently used Perforce commands and equivalent Subversion commands. As you used Subversion in the past, you could understand the Perforce commands quickly and become comfortable with this version control system.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;The blog also talks about few features which don't exist in Subversion version control system, yet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Perforce and Subversion mapping&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;In following table, we list frequently used Perforce commands and equivalent commands in Subversion.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;table border="1" bordercolor="#0000FF" cellpadding="3" cellspacing="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th&gt;Perforce Command(s)&lt;/th&gt; &lt;th&gt;Subversion Command&lt;/th&gt; &lt;th&gt;Description&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;p4 sync&lt;/i&gt;&lt;/td&gt; &lt;td&gt;&lt;i&gt;svn checkout&lt;/i&gt;&lt;/td&gt; &lt;td style="text-align: justify;"&gt;Download the code from the Depot. In Perforce, we call it depot whereas in Subversion we call it repository. In Perforce, we call it workspace, whereas in Subversion we call it working copy.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;i&gt;p4 sync&lt;/i&gt;&lt;/td&gt;&lt;td&gt;&lt;i&gt;svn update&lt;/i&gt;&lt;/td&gt;&lt;td style="text-align: justify;"&gt;Yes! We use the same command &lt;i&gt;p4 sync &lt;/i&gt;to upload the workspace. In other words, we use the same command to update the delta, periodically.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;p4 edit&lt;/i&gt;&lt;br /&gt;&lt;i&gt;p4 submit&lt;/i&gt;&lt;/td&gt; &lt;td&gt;&lt;i&gt;svn commit&lt;/i&gt;&lt;/td&gt; &lt;td style="text-align: justify;"&gt;By default, all files in the workspace is read-only. To modify a file, we should mark it for editing. Once it's opened for editing, the write permission is granted. We can modify the file using our favorite editor. Once we are ready to submit, we can use &lt;i&gt;p4 submit&lt;/i&gt; command. The changes will be submitted in the Depot and the revision will be generated. We can refer to the change using global revision or running revisions specific to the file.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;p4 label&lt;/i&gt;&lt;br /&gt;&lt;i&gt;p4 tag&lt;/i&gt;&lt;/td&gt; &lt;td&gt;&lt;i&gt;svn cp&lt;/i&gt;&lt;/td&gt; &lt;td style="text-align: justify;"&gt;Creating a branch or tag in Perforce is not cheap! We should create the label using &lt;i&gt;p4 label&lt;/i&gt; command. Then, we should associate directories or files to the label. The label thus created will contain the associated entries. When the code is sync'ed using this label, those directories and files will be downloaded or updated, accordingly.&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;User Authentication&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Unlike Subversion, the user authentication is not done during the operation. We can not specify the username and password while doing the changes. Instead, we should login in advance to the depot using &lt;i&gt;p4 login&lt;/i&gt; command. The expiry time is configurable at the server side. We should login again if authentication is expired.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;GUI Interface&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;It's a huge boost for Perforce. It has pretty cool user interface for managing the workspace. &lt;i&gt;p4v&lt;/i&gt; is popular GUI desktop interface to manage the workspace. It is available in all platforms, Windows, Linux, Unix &amp;amp; Mac. Installation is simple. It's a single executable. We should download it and launch to use it. Simple!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Perforce also has a web based GUI interface, &lt;i&gt;p4web&lt;/i&gt;. Using this tool, we could manage the workspace using any web browser. It is used to host a multi-user access to Perforce Depot. Installation is again simple. It's a single executable. It also include a in-built web server. When we launch it, it listens on specific port number, &lt;i&gt;6000&lt;/i&gt;, &lt;strike&gt;I think&lt;/strike&gt;. We could access the Depot files by pointing the web browse to this port number. Important aspect of this tool is, it's used for both read &amp;amp; write operations. We could use it to submit changes the Depot, create labels in the Depot, etc.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Client Configuration&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;The &lt;i&gt;p4 client &lt;/i&gt;is a unique interface in Perforce. Using this command, we could configure the mapping for depot and workspace(s). In Subversion, we should get into the working copy directory which we want to update. In Perforce, we could sync the delta using &lt;i&gt;p4 sync&lt;/i&gt; command, from any directory. The mapping is read from the setting we do using &lt;i&gt;p4 client&lt;/i&gt; command.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Commit Emails&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;This is another feature I like the most in Perforce. To receive email notifications for any change in depot, we could configure the list of directories using&amp;nbsp; &lt;i&gt;p4 user&lt;/i&gt; command. Once it's configured, email notification is sent for any change in the configured directories.&lt;/span&gt; &lt;/span&gt;In other words, the commit email notification is configured by the user. Unlike Subversion, we don't configure the pre-commit hook script to configure the email addresses.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I'm still a newbie for Perforce. Once I figure out the use case for reintegrate and merge commands, I may record it here. Stay tuned!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-4576712773583031804?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/4576712773583031804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2011/09/newto-perforce-guide-for-subversion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/4576712773583031804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/4576712773583031804'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2011/09/newto-perforce-guide-for-subversion.html' title='Newto Perforce Guide for Subversion users'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-hdhK0oWsUxk/Tn3Xv7cfA-I/AAAAAAAABo4/8o8Ik2ScPmc/s72-c/p4.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-7757296373931487106</id><published>2011-09-21T11:16:00.004+05:30</published><updated>2011-09-21T11:26:04.755+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='twiki'/><title type='text'>Twiki application - 2 cool features</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span style="font-size: x-large;"&gt;Twiki application&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;I have used several wiki applications in the past. It include, &lt;a href="http://www.mediawiki.org/wiki/MediaWiki"&gt;Mediawiki&lt;/a&gt;, &lt;a href="http://moinmo.in/"&gt;Moinmoin&lt;/a&gt; &amp;amp; &lt;a href="http://www.jspwiki.org/"&gt;Jspwiki&lt;/a&gt;. Recently I'm using the &lt;a href="http://twiki.org/"&gt;Twiki&lt;/a&gt; application. This post is about 2 cool features in Twiki, I like the most. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;Sub-pages&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: small;"&gt;We could embed a wiki page within another wiki page. For instance, we could have a release dashboard. The release may consist of several &lt;/span&gt;components. Different team may own each component. Each team may maintain a wiki page to track updates specific to the component. The component page may be embedded in release dashboard page.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;This feature is available in-built with Twiki application. Assuming the release name is&lt;i&gt; spartans &lt;/i&gt;and you belong to &lt;i&gt;DeploymentAutomation &lt;/i&gt;team. You could include the following code snippet in the &lt;i&gt;spartans&lt;/i&gt; page.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;%INCLUDE{"Spartans.DeploymentAutomation"}% &lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Thats it! The changes we do in &lt;i&gt;DeploymentAutomation &lt;/i&gt;page will appear in the release page, &lt;i&gt;Spartans.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;Calender extension&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;It's available as&amp;nbsp;&lt;a href="http://twiki.org/cgi-bin/view/Plugins/CalendarPlugin"&gt;a plugin.&lt;/a&gt;&lt;/span&gt; &lt;span style="font-size: small;"&gt;With this plugin, we could add a calendar within wiki page easily. This is highly helpful to integrate Outlook calendar and Team vacation plans in a wiki page. Real collaboration!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;The following code snippet is used to add current month and next month.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;---++Current Month&lt;br /&gt;%CALENDAR{topic="IndiaCalender" showweekdayheaders="1" todaycolor="aqua" %cellalignment="left" width="80%"}%&lt;br /&gt;---++Next Month&lt;br /&gt;%CALENDAR{topic="IndiaCalender" month="+1" showweekdayheaders="1" %cellalignment="left" width="80%"}%&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;The nature of the attribute is self explanatory. For instance, The attribute &lt;i&gt;topic&lt;/i&gt; specifies the page in which the page the team calendar is available. It could be pointing to the same page. The attribute &lt;i&gt;todaycolor&lt;/i&gt; is to specify the background color for today. The above code snippet would display the calendar as follows. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-mL5CKR-4lUc/Tnl8O20-bDI/AAAAAAAABo0/33_NKhc2pzs/s1600/calender-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="276" src="http://1.bp.blogspot.com/-mL5CKR-4lUc/Tnl8O20-bDI/AAAAAAAABo0/33_NKhc2pzs/s640/calender-2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;To add a vacation for specific individual, we would specify the dates in the page referenced by &lt;i&gt;topic &lt;/i&gt;attribute. The dates can be specified in following format.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;* dd Mon YYYY - dd Mon YYYY - Engineer Name&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;* 22 Sep 2011 - 23 Sep 2011 - Bhuvan Arumugam&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;The engineer name(s) are displayed against the corresponding day in the calendar. &lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;These features don't seem to exist in other wiki application. If they exist, please let me know.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-7757296373931487106?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/7757296373931487106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2011/09/twiki-application-2-cool-features.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/7757296373931487106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/7757296373931487106'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2011/09/twiki-application-2-cool-features.html' title='Twiki application - 2 cool features'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-mL5CKR-4lUc/Tnl8O20-bDI/AAAAAAAABo0/33_NKhc2pzs/s72-c/calender-2.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-3411214544128828426</id><published>2011-06-25T22:25:00.001+05:30</published><updated>2011-06-25T22:29:51.686+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='cisco-udp'/><category scheme='http://www.blogger.com/atom/ns#' term='vpn'/><category scheme='http://www.blogger.com/atom/ns#' term='bsnl'/><category scheme='http://www.blogger.com/atom/ns#' term='dataone'/><title type='text'>VPN connectivity using BSNL Dataone</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wy_2iJ6oUgs/TgYQyo-ug6I/AAAAAAAABmU/om74euL4UDA/s1600/Dataone.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-wy_2iJ6oUgs/TgYQyo-ug6I/AAAAAAAABmU/om74euL4UDA/s1600/Dataone.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;I'm using BSNL dataone brandband connection. I've been facing issue with accessing websites with VPN. If I do not use VPN, all websites are working fine. I can post/get data from all websites. If I use VPN, I'm unable to post data to any websites. For instance, I'm unable to login to GMail. I'm facing this issue in last one month. I have not faced this issue earlier.&lt;br /&gt;&lt;br /&gt;This blog specifies an option to use in your VPN client to get rid of this problem. With this setting, you can post/submit data to all websites.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;Operating System&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Name: &lt;i&gt;Ubuntu Linux&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;Version: &lt;i&gt;Maverick 10.04&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In Linux, we use the command &lt;i&gt;vpnc &lt;/i&gt;to browse websites using VPN. The settings are specified in &lt;i&gt;/etc/vpnc/default.conf&lt;/i&gt; file.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;bhuvan@rightchoice:/etc$ sudo cat /etc/vpnc/default.conf&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IPSec gateway vpn.server.com&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IPSec ID vpn&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IPSec secret common_password&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Xauth username username&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;Natt Traversal mode&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;In &lt;i&gt;vpnc,&lt;/i&gt; the default natt mode is &lt;i&gt;natt.&lt;/i&gt; To fix this issue, we should specify the mode as &lt;i&gt;cisco-udp&lt;/i&gt;. We can specify this setting using the following option when we invoke &lt;i&gt;vpnc&lt;/i&gt; command.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sudo vpnc --natt-mode cisco-udp&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;Alternatively, we can specify this setting in&amp;nbsp; &lt;i&gt;/etc/vpnc/default.conf &lt;/i&gt;file, as follows:&lt;br /&gt;&lt;blockquote&gt; &lt;i style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;NAT Traversal Mode cisco-udp&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;With this setting, we are able to post/submit data to any websites, successfully! &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-3411214544128828426?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/3411214544128828426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2011/06/vpn-connectivity-using-bsnl-dataone.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/3411214544128828426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/3411214544128828426'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2011/06/vpn-connectivity-using-bsnl-dataone.html' title='VPN connectivity using BSNL Dataone'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-wy_2iJ6oUgs/TgYQyo-ug6I/AAAAAAAABmU/om74euL4UDA/s72-c/Dataone.PNG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-6272938924243306080</id><published>2010-10-28T12:31:00.001+05:30</published><updated>2010-10-28T14:15:53.842+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='macro'/><title type='text'>Using Macro with Vim Editor</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_dWL7A18AuFA/TMket22kkNI/AAAAAAAABiQ/z0KvEUjWloo/s1600/Vim_logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_dWL7A18AuFA/TMket22kkNI/AAAAAAAABiQ/z0KvEUjWloo/s1600/Vim_logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_dWL7A18AuFA/TMket22kkNI/AAAAAAAABiQ/z0KvEUjWloo/s200/Vim_logo.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&amp;nbsp;This blog talks about howto use macros in Vim editor. The macros in Vim are useful to record series of keystrokes and replay it in other files. The same operation can be performed by writing a shell or perl script. Doing the same with Vim macro is faster.&lt;br /&gt;&lt;br /&gt;Let us assume you have around 100 html source file. In all these files, you should replace the following code snippet:&lt;br /&gt;&lt;blockquote&gt;&amp;lt;script&amp;nbsp;language='JavaScript'&amp;nbsp;type='text/javascript'&amp;nbsp;src='http://www.website.com/adserver/adx.js'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script&amp;nbsp;language='JavaScript'&amp;nbsp;type='text/javascript'&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!document.phpAds_used)&amp;nbsp;document.phpAds_used&amp;nbsp;=&amp;nbsp;',';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;phpAds_random&amp;nbsp;=&amp;nbsp;new&amp;nbsp;String&amp;nbsp;(Math.random());&amp;nbsp;phpAds_random&amp;nbsp;=&amp;nbsp;phpAds_random.substring(2,11);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.write&amp;nbsp;("&amp;lt;"&amp;nbsp;+&amp;nbsp;"script&amp;nbsp;language='JavaScript'&amp;nbsp;type='text/javascript'&amp;nbsp;src='");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.write&amp;nbsp;("http://www.website.com/adserver/adjs.php?n="&amp;nbsp;+&amp;nbsp;phpAds_random);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.write&amp;nbsp;("&amp;amp;what=zone:9&amp;amp;target=blank");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.write&amp;nbsp;("&amp;amp;exclude="&amp;nbsp;+&amp;nbsp;document.phpAds_used);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(document.referrer)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.write&amp;nbsp;("&amp;amp;referer="&amp;nbsp;+&amp;nbsp;escape(document.referrer));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.write&amp;nbsp;("'&amp;gt;&amp;lt;"&amp;nbsp;+&amp;nbsp;"/script&amp;gt;");&lt;br /&gt;//--&amp;gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&amp;lt;noscript&amp;gt;&amp;lt;a&amp;nbsp;href='http://www.website.com/adserver/adclick.php?n=a60cde47'&amp;nbsp;target='blank'&amp;gt;&amp;lt;img&amp;nbsp;src='http://www.website.com/adserver/adview.php?what=zone:9&amp;amp;n=a60cde47'&amp;nbsp;border='0'&amp;nbsp;alt=''&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/noscript&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;... with the following line.&lt;br /&gt;&lt;blockquote&gt;&amp;lt;a&amp;nbsp;href='http://www.website.com'&amp;nbsp;target='blank'&amp;gt;&amp;lt;img&amp;nbsp;src='http://www.website.com/logo.gif'&amp;nbsp;border='0'&amp;nbsp;alt=''&amp;gt;&amp;lt;/a&amp;gt;&lt;/blockquote&gt;With Vim, you can do this change in all files in &amp;gt;30mins. The time taken is proportional to number of files. If you have over 100 files and if you have less than 30 mins, you should write a script to do this change.&lt;br /&gt;&lt;br /&gt;The logic to do the replacement is, to search for the word &lt;i&gt;adserver&lt;/i&gt;, select the line in the visual block, repeat the search for the same word, twice. The 3rd occurrence is the end of the block. Delete the selected visual block. Paste the line to be replaced from a register. To know how to use registers for copying, refer to this &lt;a href="http://vimdoc.sourceforge.net/htmldoc/usr_24.html#24.6"&gt;link in vim manual&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pre-requisite&lt;/b&gt;: You should have copied the new line, or block of lines in a register. In our example, we use register &lt;i&gt;&lt;u&gt;b&lt;/u&gt;&lt;/i&gt;. The keystrokes to do this change and record it in a macro is as follows:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;qanVnnd"bpqq&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The above commands does the desired replacement and record the keystrokes in macro named &lt;u&gt;&lt;i&gt;a&lt;/i&gt;&lt;/u&gt;.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;u&gt;&lt;i&gt;qa&lt;/i&gt;&lt;/u&gt; -- Start to record the keystroke. You will see &lt;u&gt;&lt;i&gt;recording&lt;/i&gt;&lt;/u&gt; text appear in the last line.&lt;/li&gt;&lt;li&gt;&lt;u&gt;&lt;i&gt;n&lt;/i&gt;&lt;/u&gt; -- Search for the pattern that was previously searched. In this case, it is &lt;u&gt;&lt;i&gt;adserver&lt;/i&gt;&lt;/u&gt;.&lt;/li&gt;&lt;li&gt;&lt;u&gt;&lt;i&gt;V&lt;/i&gt;&lt;/u&gt; -- Start the visual selection.&lt;/li&gt;&lt;li&gt;&lt;u&gt;&lt;i&gt;n&lt;/i&gt;&lt;/u&gt; -- Continue the search. This is the 2nd occurance of the word &lt;i&gt;&lt;u&gt;adserver&lt;/u&gt;&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;&lt;u&gt;&lt;i&gt;n&lt;/i&gt;&lt;/u&gt; -- Continue the search. This is the 3rd occurance of the word &lt;i&gt;&lt;u&gt;adserver&lt;/u&gt;&lt;/i&gt;. This is the end of the selection as well.&lt;/li&gt;&lt;li&gt;&lt;u&gt;&lt;i&gt;d&lt;/i&gt;&lt;/u&gt; -- Delete the selected visual block. This should delete all the lines mentioned in our example.&lt;/li&gt;&lt;li&gt;&lt;u&gt;&lt;i&gt;"bp&lt;/i&gt;&lt;/u&gt; -- Paste the content from the vim register &lt;i&gt;&lt;u&gt;b&lt;/u&gt;&lt;/i&gt;. It is assumed that the line to be pasted is copied in this register before the recording was started. You may use any character as a register.&lt;/li&gt;&lt;li&gt;&lt;u&gt;&lt;i&gt;qq&lt;/i&gt;&lt;/u&gt; -- End of recording.&lt;/li&gt;&lt;/ol&gt;Now to replay the macro, you should type the command &lt;u&gt;&lt;i&gt;@a&lt;/i&gt;&lt;/u&gt; in the file in&amp;nbsp;which you want to do the replacement. Ideally, you may want to open all files in Vim, navigate to all files one by one and type the command &lt;u&gt;&lt;i&gt;@a&lt;/i&gt;&lt;/u&gt; to execute the macro.&lt;br /&gt;If you are new to Vim, this may sound horrible. But believe me, once you get used to Vim you will find ways to do complex tasks, cheaply!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-6272938924243306080?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/6272938924243306080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2010/10/using-macro-with-vim-editor.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/6272938924243306080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/6272938924243306080'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2010/10/using-macro-with-vim-editor.html' title='Using Macro with Vim Editor'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_dWL7A18AuFA/TMket22kkNI/AAAAAAAABiQ/z0KvEUjWloo/s72-c/Vim_logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-285151543301457485</id><published>2010-10-19T17:28:00.000+05:30</published><updated>2010-10-19T17:28:17.000+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='collabnet'/><category scheme='http://www.blogger.com/atom/ns#' term='job'/><title type='text'>Release Engineer Opening at CollabNet</title><content type='html'>&lt;i&gt;Company&lt;/i&gt;: &lt;a href="http://www.collab.net/"&gt;CollabNet&lt;/a&gt;&lt;br /&gt;&lt;i&gt;Location&lt;/i&gt;: Chennai&lt;br /&gt;&lt;i&gt;Team&lt;/i&gt;: Release Engineering&lt;br /&gt;&lt;br /&gt;We are looking for a highly talented Release Engineer. The release engineer is responsible to manage the build infrastruture at CollabNet. He will have to deal with build infrastruture for several products/releases on different architecture at a time. He should also manage the installer system for the application on different platform, including RHEL, SUSE, CentOS and MS Windows.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;u&gt;Responsibilities&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;write scripts to automate build/install process for different products &lt;/li&gt;&lt;li&gt;setup and manage the CI engine (Hudson, Cruise control)&lt;/li&gt;&lt;li&gt;troubleshoot issues with install &amp;amp; build processes &lt;/li&gt;&lt;li&gt;work closely with developers to fix build failures, or propose patches&lt;/li&gt;&lt;li&gt;work closely with QA team to test installer automation process&lt;/li&gt;&lt;li&gt;review the source code committed by your buddies &lt;/li&gt;&lt;li&gt;enhance/fix issues in package manager&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Requirements&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;6+ years of experience. It doesn't really matter if you have strong exposure to the following tools.&lt;/li&gt;&lt;li&gt;proficiency in atleast one scripting languages: Shell/Perl/Python/Ruby&lt;/li&gt;&lt;li&gt;awareness to CI engine: Hudson/Cruisecontrol&lt;/li&gt;&lt;li&gt;awareness to Agile/Scrum/XP software development practices&lt;/li&gt;&lt;li&gt;ability to understand the Java code&lt;/li&gt;&lt;li&gt;awareness to build tools like ant/maven&lt;/li&gt;&lt;li&gt;ability to configure application services like tomcat/jboss&lt;/li&gt;&lt;li&gt;exposure to managing packages using tools like yum/apt-get&lt;/li&gt;&lt;li&gt;well versed in using version control system like Subversion/Git&lt;/li&gt;&lt;ul&gt;&lt;li&gt;awareness to advanced topics like merge tracking, would be a plus&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;ability to prepare rpm spec file and create rpms&lt;/li&gt;&lt;ul&gt;&lt;li&gt;if you own a website and/or blog, that would be a plus. &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;If you believe you are a right fit, please forward your resume to me. Please mention &lt;u&gt;&lt;i&gt;&lt;b&gt;Ref: Livecipher Blog&lt;/b&gt;&lt;/i&gt;&lt;/u&gt; in the email subject.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-285151543301457485?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/285151543301457485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2010/10/release-engineer-opening-at-collabnet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/285151543301457485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/285151543301457485'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2010/10/release-engineer-opening-at-collabnet.html' title='Release Engineer Opening at CollabNet'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-9160125796148784483</id><published>2010-10-14T17:42:00.000+05:30</published><updated>2010-10-14T17:42:05.534+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='wordpress'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='multi-site'/><title type='text'>Wordpress plugin development with multi-site</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_dWL7A18AuFA/TLbt3Z5JicI/AAAAAAAABiA/rKvMKavJgFw/s1600/wordpress-logo-stacked-rgb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="123" src="http://2.bp.blogspot.com/_dWL7A18AuFA/TLbt3Z5JicI/AAAAAAAABiA/rKvMKavJgFw/s200/wordpress-logo-stacked-rgb.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If you are familiar with Wordpress, you would know that it supports Multi-site option starting version 3.0. The multi-site is a option to manage multiple websites using single Wordpress instance. The websites may be different from each other by sub domain name or the path.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;Activate plugin for all websites&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The plugins can be installed at the main website. The plugins can be activated for the main site alone, or for all the websites using &lt;i&gt;&lt;b&gt;Network Activate&lt;/b&gt;&lt;/i&gt; option in the plugins page.&lt;br /&gt;&lt;br /&gt;This article talks about wordpress plugin development with multi-site. Primarily it talks about the issue I came across while attempting to update the plugin setting in the database.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;Problem&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;I had a input form to collect plugin specific options and store in database. The options are stored in &lt;b&gt;&lt;i&gt;wp_blog_&lt;/i&gt;options&lt;/b&gt; table, where &lt;i&gt;&lt;b&gt;wp_blog_&lt;/b&gt;&lt;/i&gt; is the prefix we use for the Wordpress database. For every additional site, this table will be created with blog id prefix. Ex: &lt;i&gt;&lt;b&gt;wp_blog_2_&lt;/b&gt;&lt;/i&gt;&lt;b&gt;options&lt;/b&gt;. When the plugin settings are entered for a particular site, it should add records in this table. But it doesn't happen so.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;Solution&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;I was using the path based setting to access each site. That said, the plugin setting page is different for each site. I was using the following action in the form:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;form method="post" action="&amp;lt;?php echo $_SERVER['PHP_SELF'] . '?page=' . basename(__FILE__); ?&amp;gt;&amp;amp;updated=true"&amp;gt;&lt;/i&gt; &lt;/span&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/u&gt;&lt;/blockquote&gt;With this action, the form is submitted to the main site, always. The main site is the one that ends with &lt;i&gt;&lt;b&gt;'/'&lt;/b&gt;&lt;/i&gt;. This is irrespective of the site I was configuring the plugin for. I figured out the problem is not with the wordpress multi-site setup, but with a bug in my plugin code. I had to rewrite my form with default action.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&amp;lt;form method="post"&amp;gt;&lt;/i&gt;&lt;/blockquote&gt;With this, the form is submitted to the site specific page and records are inserted in site specific table&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-9160125796148784483?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/9160125796148784483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2010/10/wordpress-plugin-development-with-multi.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/9160125796148784483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/9160125796148784483'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2010/10/wordpress-plugin-development-with-multi.html' title='Wordpress plugin development with multi-site'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_dWL7A18AuFA/TLbt3Z5JicI/AAAAAAAABiA/rKvMKavJgFw/s72-c/wordpress-logo-stacked-rgb.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-4815699690501891107</id><published>2010-09-21T13:00:00.001+05:30</published><updated>2010-09-21T15:09:52.161+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='2048'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='server certificate'/><title type='text'>Use 2048bit server certificate with Apache</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_dWL7A18AuFA/TJhe4pARNpI/AAAAAAAABho/Aiq1Mg9kx7A/s1600/ssl_cover_logo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="91" src="http://2.bp.blogspot.com/_dWL7A18AuFA/TJhe4pARNpI/AAAAAAAABho/Aiq1Mg9kx7A/s200/ssl_cover_logo.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Lately, I happen to work with Apache most of my time. Here's another finding on using 2048 bit &lt;a href="http://en.wikipedia.org/wiki/Certificate_server"&gt;server certificate&lt;/a&gt; with Apache. If you refer to Apache &lt;a href="http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html#keysize"&gt;FAQ item&lt;/a&gt;, it claims that you can't use it:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;h3&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=5265739055575131649&amp;amp;postID=4815699690501891107" id="keysize" name="keysize"&gt;Why does my 2048-bit private key not work?&lt;/a&gt;&lt;/h3&gt;The private key sizes for SSL must be either 512 or 1024 bits, for compatibility     with certain web browsers. A keysize of 1024 bits is recommended because     keys larger than 1024 bits are incompatible with some versions of Netscape     Navigator and Microsoft Internet Explorer, and with other browsers that     use RSA's BSAFE cryptography toolkit.&lt;/blockquote&gt;&amp;nbsp;It is indeed inaccurate. One of our client wanted to use 2048 bit server certificate. We were doing an R&amp;amp;D on whether it's supported, and if it is not supported, how to bring in the support. When we noticed this FAQ item, we believed that it's not supported. However, when we configured a 2048 bit &lt;a href="http://www.akadia.com/services/ssh_test_certificate.html"&gt;self signed certificate&lt;/a&gt; with Apache 2.2.11, we found it to be working, out-of-box.&lt;br /&gt;&lt;br /&gt;The Apache documentation team apparently fixed it in &lt;a href="http://www.gossamer-threads.com/lists/apache/cvs/388882"&gt;r999259&lt;/a&gt;. Refer to the &lt;a href="http://marc.info/?l=apache-docs&amp;amp;m=128498031025908&amp;amp;w=2"&gt;mailing list thread&lt;/a&gt; for details.&lt;br /&gt;&lt;blockquote&gt;Tip: If the browser name, &lt;i&gt;Netscape Navigator&lt;/i&gt; is mentioned in any Apache documentation page, it is evident that the document is not updated for over 5 years. You may not want to buy the fact, unless you try it yourself.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-4815699690501891107?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/4815699690501891107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2010/09/use-2048bit-server-certificate-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/4815699690501891107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/4815699690501891107'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2010/09/use-2048bit-server-certificate-with.html' title='Use 2048bit server certificate with Apache'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_dWL7A18AuFA/TJhe4pARNpI/AAAAAAAABho/Aiq1Mg9kx7A/s72-c/ssl_cover_logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-7190719479167814754</id><published>2010-09-08T16:47:00.003+05:30</published><updated>2010-09-21T15:11:27.552+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='mod_ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Proxy to an HTTPS website from a HTTP website</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://apache.org/images/feather.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="96" src="http://apache.org/images/feather.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In my last blog, we covered howto setup proxy to a HTTP website on Debian/Ubuntu systems. Now, we'll cover howto setup proxy to a HTTPS website.&lt;br /&gt;&lt;br /&gt;To setup proxy to a HTTPS website, we should enable &lt;i&gt;ssl &lt;/i&gt;apache module. This is required even if ssl is not required to render pages in the main site. Execute the following command to enable ssl in Debian/Ubuntu systems.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo a2enmod ssl&lt;/span&gt;&lt;/blockquote&gt;To setup the proxy from &lt;i&gt;http://bestmate.maa.corp.collab.net/release &lt;/i&gt;to &lt;i&gt;https://coolmate.maa.corp.collab.net/release&lt;/i&gt;, you should add following rules in &lt;i&gt;/etc/apache2/sites-enabled/000-default &lt;/i&gt;file in &lt;i&gt;bestmate&lt;/i&gt; server:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;SSLProxyEngine on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ProxyPass /release https://coolmate.maa.corp.collab.net/release&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ProxyPassReverse /release https://coolmate.maa.corp.collab.net/release&lt;/span&gt;&lt;/blockquote&gt;Make sure the remote server &lt;i&gt;coolmate &lt;/i&gt;is listening on port 443 (https). If your application use any css, js, images you should setup proxy for rendering those pages. You should copy the last 2 lines and replace &lt;i&gt;release &lt;/i&gt;with appropriate directory name. For example, to setup proxy for javascripts, assuming they are stored in &lt;i&gt;/js &lt;/i&gt;directory, you should add following lines in the same file.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ProxyPass /js https://coolmate.maa.corp.collab.net/js&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ProxyPassReverse /js https://coolmate.maa.corp.collab.net/js&lt;/span&gt;&lt;/blockquote&gt;Finally, don't forget to restart your httpd server, atleast a graceful restart is required. Wish it saves another few hours for you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-7190719479167814754?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/7190719479167814754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2010/09/proxying-https-website.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/7190719479167814754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/7190719479167814754'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2010/09/proxying-https-website.html' title='Proxy to an HTTPS website from a HTTP website'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-8481997999809537263</id><published>2010-09-07T18:14:00.001+05:30</published><updated>2010-09-21T15:11:09.512+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='mod_ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Using mod_proxy on Debian/Ubuntu system</title><content type='html'>I came across this unique behavior while setting up mod_proxy in my Ubuntu machine. This behavior is found in Debian systems as well.&lt;br /&gt;&lt;br /&gt;We use&lt;i&gt; mod_proxy &lt;/i&gt;apache module to redirect requests from one machine to another, without affecting the url in the browser address bar. Consider this use case, a PHP application running in a server named &lt;i&gt;rainbow.maa.corp.collab.net, &lt;/i&gt;behind the firewall. The PHP application should be made accessible to the users over internet. For corporate security reasons, the Administrator can not expose the server to the public. This issue can be solved by setting up an Apache server, say &lt;i&gt;drizzle.maa.corp.collab.net,&lt;/i&gt; that is accessible over the internet. In this machine, we can setup proxy to server &lt;i&gt;rainbow&lt;/i&gt; that is running PHP application. The user may access the PHP application through &lt;i&gt;drizzle, &lt;/i&gt;without knowing that it is being rendered from a machine named &lt;i&gt;rainbow.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;To make this proxy setup, we should modify the apache configuration in the server, &lt;i&gt;drizzle.&lt;/i&gt; No change is required in the server, &lt;i&gt;rainbow. &lt;/i&gt;The apache module &lt;i&gt;mod_proxy&lt;/i&gt; should be enabled in the server, &lt;i&gt;drizzle. &lt;/i&gt;On Debian and Ubuntu systems, you may use &lt;i&gt;a2enmod &lt;/i&gt;command to enable the module.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ sudo a2enmod proxy&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;This will add following files in &lt;i&gt;/etc/apache2/mods-enabled/ &lt;/i&gt;directory.&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;proxy.conf&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;proxy.load&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;The following 2 lines can be added in &lt;i&gt;/etc/apache2/sites-enabled/000-default&lt;/i&gt; file to setup the above described proxy system.&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ProxyPass /app http://rainbow.maa.corp.collab.net/app&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ProxyPassReverse /app http://rainbow.maa.corp.collab.net/app&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;The &lt;i&gt;ProxyPass &lt;/i&gt;directive allows remote server &lt;i&gt;rainbow &lt;/i&gt;to be mapped to local server &lt;i&gt;drizzle. &lt;/i&gt;It includes all requests sent to remote server &lt;i&gt;rainbow &lt;/i&gt;and also the responses sent from it. The &lt;i&gt;ProxyPassReverse&lt;/i&gt; directive allows the follow through the redirects, if any.&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;This setup will be functional only if following line has been added to the apache configuration file, either in the main one, &lt;i&gt;/etc/apache2/apache2.conf&lt;/i&gt; or the module specific configuration file, &lt;i&gt;/etc/apache2/mods-enabled/proxy.conf.&lt;/i&gt; By default, it's added in file, &lt;i&gt;/etc/apache2/mods-enabled/proxy.conf.&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ProxyRequests Off&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;This is the typical configuration that should work in all systems. However, it doesn't work with Debian and Ubuntu systems. To be specific, it does not work in Debian &lt;i&gt;etch &lt;/i&gt;and Ubuntu &lt;i&gt;10.04 code named Lucid Lynx.&lt;/i&gt; We face the following error in apache error log, while accessing the URL: &lt;i&gt;http://drizzle.maa.corp.collab.net/app. &lt;/i&gt;The user sees &lt;i&gt;404 access forbidden&lt;/i&gt; error in his browser.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;[Tue Sep 07 15:51:34 2010] [error] [client 127.0.0.1] client denied by server configuration: proxy:http://rainbow.maa.corp.collab.net/app&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;By default, the proxy through localhost is prohibited! A snippet from apache configuration file, &lt;i&gt;/etc/apache2/mods-enabled/proxy.conf.&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;proxy *=""&gt;&lt;/proxy&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddDefaultCharset off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order deny,allow&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Deny from all&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Allow from localhost&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;We should uncomment the line &lt;i&gt;# Allow from localhost&lt;/i&gt; to allow proxy through localhost. After the change, the snippet may look like:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;proxy *=""&gt;&lt;/proxy&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AddDefaultCharset off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Order deny,allow&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Deny from all&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;span style="color: red;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Allow from localhost&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;After this change, a graceful restart of apache may fix the issue. Wish it saves couple of hours for you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-8481997999809537263?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/8481997999809537263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2010/09/using-modproxy-on-debianubuntu-system.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/8481997999809537263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/8481997999809537263'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2010/09/using-modproxy-on-debianubuntu-system.html' title='Using mod_proxy on Debian/Ubuntu system'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-6442945022674183362</id><published>2010-02-16T16:55:00.006+05:30</published><updated>2010-02-16T17:04:05.531+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ci'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='hudson'/><title type='text'>Hudson Master Slave setup</title><content type='html'>&lt;div align="JUSTIFY" style="margin-bottom: 0in;"&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0in;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;Hudson Master Slave setup&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;(series 2 of 2)&lt;/span&gt; &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;In the &lt;a href="http://livecipher.blogspot.com/2010/01/agile-methodology-continuos-integration.html"&gt;previous article&lt;/a&gt;, we discussed about the usefulness of the Hudson CI engine. In that article, we discuss about how to setup Hudson and configure jobs to perform various tasks automatically, or on-demand.&lt;/div&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0in;"&gt;The tasks can be scheduled to run on the same machine (Master), or on a different machine (Slave). A master is a installation of Hudson, that can manage one or more slaves. The role of master remains same in Master slave setup. It serves HTTP requests, and it can still build projects on it's own.&lt;/div&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0in;"&gt;Slaves are computers that are setup to build projects triggered from the master. A separate program called &lt;b&gt;&lt;i&gt;slave agent&lt;/i&gt;&lt;/b&gt;&lt;span style="font-weight: normal;"&gt; runs on slave computer. In this article we'll discuss about how to setup Hudson to executed distributed builds using Master slave. One computer can be configured to execute multiple slave agents.&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0in;"&gt;&lt;/div&gt;&lt;h1 class="western"&gt;&lt;span style="font-size: large;"&gt;How does this work&lt;/span&gt;&lt;/h1&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0in;"&gt;When the slaves are registered to a master, the master starts distributing loads to slaves. The delegation depends on the specific job. The job can be configured to either execute on the master, or it can be tied to a specific slave. On the other hand, the jobs can be configured to freely roam between slaves, wherein the job is executed using the free slave. As per the user is concerned, the setup is transparent. The results for all jobs are viewable using the Master, irrespective of the Slave that executed the job.&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="margin-bottom: 0in;"&gt;The slave may be built using any Operating system. The Master slave setup is highly helpful while the user has to execute the job on different Operating system. Consider this use case: The application is expected to run on different operating system, Linux, Solaris and Windows system. To address this need, the user can install Hudson on any machine, say Linux, and add 2 slaves: Solaris and Windows. The user can add 3 different jobs, one running on Master itself and others running on slave machines.&lt;/div&gt;&lt;h1 class="western"&gt;&lt;span style="font-size: large;"&gt;Methods to Launch Slave agents&lt;/span&gt;&lt;/h1&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0in;"&gt;The slave can be launched from Master using any of following methods:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Launch Slave agents on Unix  machines via SSH.&lt;/li&gt;&lt;li&gt;Launch Slave agents via JNLP.&lt;/li&gt;&lt;li&gt;Launch Slave agents via execution  of command on the master.&lt;/li&gt;&lt;li&gt;Let Hudson control windows slave  as a windows service.&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;The following screenshot illustrates the list of modes under which the Hudson slave can be launched.&amp;nbsp; &lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;&lt;a href="http://3.bp.blogspot.com/_dWL7A18AuFA/S3p7yGMyE4I/AAAAAAAABEo/h6x1l2oCndM/s1600-h/hudson-slave-modes.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="51" src="http://3.bp.blogspot.com/_dWL7A18AuFA/S3p7yGMyE4I/AAAAAAAABEo/h6x1l2oCndM/s640/hudson-slave-modes.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Launch Slave agents on Unix machines via SSH&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="JUSTIFY"&gt;&lt;span style="font-weight: normal;"&gt;Hudson has a built-in SSH client implementation that it can use to talk to remote sshd and start a slave agent. This is the most convenient and preferred method for Unix slaves, which normally has sshd out-of-the-box. Click &lt;/span&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt;Manage Hudson&lt;/span&gt;&lt;/i&gt;&lt;span style="font-weight: normal;"&gt;, then &lt;/span&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt;Manage Nodes&lt;/span&gt;&lt;/i&gt;&lt;span style="font-weight: normal;"&gt;, then click &lt;/span&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt;New Node&lt;/span&gt;&lt;/i&gt;&lt;span style="font-weight: normal;"&gt;. In this set up, the connection information is supplied, including SSH host name, user name and authentication credentials. The authentication is performed using password or ssh keys. If it is configured to use ssh keys, the SSH public key should be copied to &lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;span style="font-weight: normal;"&gt;~/.ssh/authorized_keys&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt; file. Hudson will do the rest of the work by itself, including copying the binary needed for a slave agent, and starting/stopping slaves.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;Depending on the project and hardware resource availability, the user Desktop can be used as one of Slave, without affecting his day-to-day activities, thus avoiding the need for dedicated Slaves.&lt;/div&gt;&lt;/blockquote&gt;&lt;h2 class="western"&gt;&lt;/h2&gt;&lt;h2 class="western"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.blogger.com/post-create.do" name="Distributedbuilds-LaunchslaveagentviaJavaWebStart"&gt;&lt;/a&gt;&lt;b&gt;Launch slave agent via Java Web Start&lt;/b&gt;&lt;/span&gt;&lt;/i&gt; &lt;/h2&gt;&lt;div style="margin-bottom: 0in;"&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-weight: normal;"&gt;Another way of launching slave is to start a slave agent through Java Web Start (JNLP). In this approach, the user will login to the slave node, open a browser and open the slave page using the URL pointed to the Master. It may look like the following URL:&lt;/div&gt;&lt;div align="JUSTIFY" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;span style="font-family: Courier New,monospace;"&gt;http://masterserver:port/hudson/jnlpJars/slave.jar&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-weight: normal;"&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-weight: normal;"&gt;The user is presented with the JNLP launch icon. If user click the icon, the Java Web Start kicks in and it launches a slave agent on this computer.&lt;/div&gt;&lt;div align="JUSTIFY" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-weight: normal;"&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-weight: normal;"&gt;This mode is convenient when the master cannot initiate a connection to slaves, such as when it runs outside a firewall while the rest of the slaves are in the firewall. The disadvantage is, if the machine with a slave agent goes down, the master has no way of re-launching it on its own.&lt;/div&gt;&lt;div style="font-weight: normal; margin-bottom: 0in;"&gt;&lt;/div&gt;&lt;h3 class="western"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://www.blogger.com/post-create.do" name="Distributedbuilds-Launchslaveagentheadlessly"&gt;&lt;/a&gt;Launch slave agent headlessly&lt;/span&gt;&lt;/i&gt; &lt;/h3&gt;&lt;div align="JUSTIFY" style="font-weight: normal; margin-bottom: 0in;"&gt;This launch mode uses a mechanism very similar to Java Web Start, except that it runs without using GUI, making it convenient for an execution as a daemon on Unix. To do this, the user should configure this slave to be a JNLP slave by downloading &lt;tt&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&lt;i&gt;slave.jar&lt;/i&gt;&lt;/span&gt;&lt;/tt&gt;, and then from the slave, run a command like this:&lt;/div&gt;&lt;div style="font-weight: normal; margin-bottom: 0in;"&gt;&lt;/div&gt;&lt;pre style="font-weight: normal;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-weight: normal;"&gt;&lt;span style="font-family: Courier New,monospace;"&gt;java -jar slave.jar -jnlpUrl http://yourserver:port/computer/slave-name/slave-agent.jnlp&lt;/span&gt;&lt;/pre&gt;&lt;div style="font-weight: normal; margin-bottom: 0in;"&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-weight: normal; margin-bottom: 0in;"&gt;&lt;br /&gt;The &lt;span style="font-family: Courier New,monospace;"&gt;slave.jar&lt;/span&gt; file is downloaded from the above mentioned URL. Make sure to replace &lt;b&gt;slave-name&lt;/b&gt; with the name of the slave setup in Master.&lt;br /&gt;&lt;blockquote&gt;By default, Hudson runs on port 8080. It can be installed and managed without the need for super user privilege. The super user privilege is not required to manage both Master and Slave. &lt;/blockquote&gt;&lt;/div&gt;The following diagram illustrates the list of configuration parameters specific to a slave.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_dWL7A18AuFA/S3qBFN_G-CI/AAAAAAAABEw/GYdxfv2w__4/s1600-h/hudson-slave-2.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="176" src="http://3.bp.blogspot.com/_dWL7A18AuFA/S3qBFN_G-CI/AAAAAAAABEw/GYdxfv2w__4/s400/hudson-slave-2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 class="western"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;Launch Slave Agent using own scripts&lt;/span&gt;&lt;/i&gt;&lt;/h2&gt;&lt;div align="JUSTIFY"&gt;If the above modes is not flexible, the user can write his own script to launch the Slave agent. The script is placed in the Master computer and Hudson runs this script whenever it should connect to the slave. The script may use the remote login program like SSH, RSH to establish connection between Master and slave.&lt;/div&gt;&lt;div align="JUSTIFY"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="JUSTIFY"&gt;The script would execute the slave agent program like &lt;span style="font-family: Courier New,monospace;"&gt;java -jar slave.jar. &lt;/span&gt;&lt;span style="font-family: Times New Roman,serif;"&gt;The stdin and stdout for the script should be connected to the master. For example, the script that does &lt;/span&gt;&lt;span style="font-family: Courier New,monospace;"&gt;ssh myslave java -jar ~/bin/slave.jar&lt;/span&gt;&lt;span style="font-family: Times New Roman,serif;"&gt; would satisfy this need, when it is executed from the Master web interface. For this reason, running this script manually from the command line does no good.&lt;/span&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;The copy of slave.jar can be downloaded from the above mentioned URL. Launching the slave agent using this mode requires additional setup in the Slave. The benefit is that when the connection goes bad, the user can use Hudson web interface to re-establish the connection.&lt;span style="font-family: Times New Roman,serif;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family: Times New Roman,serif;"&gt;&lt;span style="background-color: #f3f3f3;"&gt;The user should update slave.jar every time the Hudson system is upgraded. Though, in practice, the slave.jar is not changed frequently.&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;h2 class="western" style="line-height: 100%;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;About the Author&lt;/span&gt;&lt;/i&gt;&lt;/h2&gt;&lt;div style="line-height: 100%;"&gt;&lt;/div&gt;&lt;div align="JUSTIFY" style="-moz-background-clip: border; -moz-background-inline-policy: continuous; -moz-background-origin: padding; background: transparent none repeat scroll 0% 0%; font-family: Arial,Helvetica,sans-serif; font-weight: normal; line-height: 100%; margin-bottom: 0in;"&gt;&lt;span style="font-size: small;"&gt;By: &lt;b&gt;Nithya Pattabiraman&lt;/b&gt;. The author is currently employed in CollabNet working for their Quality Assurance Team. She can be contacted at nithya AT collab.net.&lt;/span&gt;&lt;/div&gt;&lt;h2 class="western"&gt;&lt;/h2&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-6442945022674183362?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/6442945022674183362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2010/02/hudson-master-slavep-setup.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/6442945022674183362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/6442945022674183362'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2010/02/hudson-master-slavep-setup.html' title='Hudson Master Slave setup'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_dWL7A18AuFA/S3p7yGMyE4I/AAAAAAAABEo/h6x1l2oCndM/s72-c/hudson-slave-modes.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-7855888543149499185</id><published>2010-01-27T11:36:00.005+05:30</published><updated>2010-01-27T12:02:16.293+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='abdul kalam'/><category scheme='http://www.blogger.com/atom/ns#' term='apj'/><category scheme='http://www.blogger.com/atom/ns#' term='motivation'/><title type='text'>Six traits of a Good Leader</title><content type='html'>APJ's motivational interview with Knowledge@Wharton. Courtesy: Found this link from &lt;a href="http://www.shreesvibes.com/Vibes/Videos/Videos.html"&gt;Sriram's Video Collection&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Few abstracts from the interview.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;What's Creativity?&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Learning gives Creativity; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Creativity leads to Thinking; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Thinking provides Knowledge; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Knowledge makes you great!&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;Six traits of a Good leader:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;A leader should have a vision&lt;/li&gt;&lt;li&gt;A leader should travel in unexplored path&lt;/li&gt;&lt;li&gt;A leader should know how to manage Success &amp;amp; Failures&lt;/li&gt;&lt;li&gt;A leader should have courage to take decisions&lt;/li&gt;&lt;li&gt;A leader should have a nobility in Management&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Every action of a leader should be transparent&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;center&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/laGZaS4sdeU&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/laGZaS4sdeU&amp;rel=0&amp;color1=0xb1b1b1&amp;color2=0xcfcfcf&amp;hl=en_US&amp;feature=player_embedded&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-7855888543149499185?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/7855888543149499185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2010/01/six-traits-of-good-leader.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/7855888543149499185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/7855888543149499185'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2010/01/six-traits-of-good-leader.html' title='Six traits of a Good Leader'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5265739055575131649.post-7379699544279459076</id><published>2010-01-20T14:38:00.002+05:30</published><updated>2010-01-20T17:04:02.084+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ci'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='hudson'/><title type='text'>Agile Methodology: Continuos Integration with Hudson</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-large;"&gt;﻿Hudson - an extensible Continuous Integration engine&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;(series 1 of 2)&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;If you believe in Agile software development practices, you already realize the importance of continuous integration. It is one of Agile methods to facilitate the delivery of bug free software to the customer. The following practices define the true continuous integration system. &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://4.bp.blogspot.com/_dWL7A18AuFA/S1bE6QYuHxI/AAAAAAAABC8/gWEYq9w1AMo/s1600-h/hudson-arch-1.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_dWL7A18AuFA/S1bE6QYuHxI/AAAAAAAABC8/gWEYq9w1AMo/s320/hudson-arch-1.png" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Members integrate source code frequently &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Each integration is verified by automatic build &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;The code is tested in a mock production environment&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;The effects of using the continuous integration system are:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Integration issues are found early&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;The status of latest build are easily known&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;The current build is available instantly for demo or release purposes&lt;br /&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;The Figure 1 illustrates the architecture of a Continuous Integration System. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Why Hudson? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Hudson system is designed precisely to meet the continuous integration needs. It is useful to build and test software projects continuously. It provides an easy to use interface,, making it easier for developers to integrate changes to the project. The automated and continuous build increases the productivity of the team. It is also useful to monitor the externally executed builds and notify the interested parties when something is wrong. The Developers can save the changes in the Version control system. The Hudson job(s) monitor the VCS continuously and act upon accordingly. &lt;br /&gt;&lt;br /&gt;The Figure 2 is a sceenshot from Apache build farm that gives an hint on how the Hudson home page would look like when you configure multiple jobs.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; &lt;br /&gt;&lt;span style="font-size: large;"&gt;Features&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://4.bp.blogspot.com/_dWL7A18AuFA/S1bFlYTu8AI/AAAAAAAABDE/QVvrP3hPmts/s1600-h/hudson-apache-joblist.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_dWL7A18AuFA/S1bFlYTu8AI/AAAAAAAABDE/QVvrP3hPmts/s320/hudson-apache-joblist.png" width="144" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Easy installation&lt;/b&gt;. No addition installation instructions, no database.&amp;nbsp; java -jar hudson.war &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Java and Open Source&lt;/b&gt;. The Hudson system is fully written in Java language, thus it is platform independent. The Hudson system is Open source, released under MIT License.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Easy configuration&lt;/b&gt;. The Hudson system can be configured completely using the web GUI. There is no need to tweak or configure the settings manually. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Distributed builds&lt;/b&gt;. Hudson can distribute build/test loads to multiple computers, thus utilizing the hardware resources effectively. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Junit/TestNG test reporting&lt;/b&gt;. The Hudson system can parse the Junit/TestNG test output generated by build/test scripts and generate the intuitive report. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Plugins&lt;/b&gt;. The functionality is extended using various plugins. You can write own plugins to support tools and processes you use. You can visit the following link to view all available Hudson plugins.&lt;br /&gt;&lt;/span&gt; http://wiki.hudson-ci.org/display/HUDSON/Plugins &lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;Jobs &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The build in Hudson is configured as a Job. It may involve one or many tasks including, code compilation, executing unit tests, publishing build artifacts, updating issue trackers, identifying code violations, generating documentation, etc. The build can be configured as a series of shell, perl and python commands. The elegant method is to write a script using any scripting language that perform all activities and execute the script from a Hudson job. Depending on the plugins installed, the user may see many options in the Job configuration screen. The job may belong to any of following category: &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Scheduled. The Job can be scheduled to run at specific date/time. The Linux crontab like scheduling is possible. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Monitor Version Control System (VCS). The Job can be configured to run immediate after a commit in the VCS. The Hudson system can poll the VCS periodically, detect the changes if any and initiate the build process. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;On demand. The build can be triggered on a demand basis.&lt;br /&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ol&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_dWL7A18AuFA/S1bp5aw9O8I/AAAAAAAABDM/m61_hTO_Abg/s1600-h/hudson-job.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_dWL7A18AuFA/S1bp5aw9O8I/AAAAAAAABDM/m61_hTO_Abg/s320/hudson-job.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;In short, the job can be configured to update the VCS working copy, execute the build, generate the installation packages, run tests on different platform, generate documentation and code quality reports. The final result is published in the user interface. &lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: large;"&gt;Plugins&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The plugins can be managed from within the Hudson user interface. The users has the ability to keep track of installed plugins and new plugins. The updates to Hudson and plugins are tracked from the same screen. The users are notified of updates to Hudson and plugins (if any) automatically. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;i&gt;Few cool plugins :&lt;/i&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Leader board&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Plugin to report code violation&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Webtest plugin&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Publish Documents&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Integration with ftp/scp servers&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Integration with Issue trackers&lt;br /&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: large;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;Hudson home page: http://hudson-ci.org/&lt;br /&gt;&lt;br /&gt;With the above suggestions, you may configure a simple Hudson Job that performs certain tasks specific to build and test. Once you start using Hudson system, you will be interested to explore the scope of using Hudson system to execute distributed builds. The Hudson system can be configured to run multiple Slave instances in parallel on different platform. We will cover the Hudson Master Slave setup in next series. Stay tuned!&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5265739055575131649-7379699544279459076?l=livecipher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://livecipher.blogspot.com/feeds/7379699544279459076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://livecipher.blogspot.com/2010/01/agile-methodology-continuos-integration.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/7379699544279459076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5265739055575131649/posts/default/7379699544279459076'/><link rel='alternate' type='text/html' href='http://livecipher.blogspot.com/2010/01/agile-methodology-continuos-integration.html' title='Agile Methodology: Continuos Integration with Hudson'/><author><name>Live cipher</name><uri>http://www.blogger.com/profile/08335084176072272678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_dWL7A18AuFA/TJhafG6w-_I/AAAAAAAABhI/ROHUFFW2v18/S220/bhuvan-skype.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_dWL7A18AuFA/S1bE6QYuHxI/AAAAAAAABC8/gWEYq9w1AMo/s72-c/hudson-arch-1.png' height='72' width='72'/><thr:total>2</thr:total></entry></feed>
