<?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-31679049</id><updated>2011-07-07T21:58:37.473-07:00</updated><title type='text'>Jakka's Tech Farce</title><subtitle type='html'>This blog is mainly intended for technically insane people who want waste their precious time in mundane software engineering and programming concepts.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-31679049.post-305060654779119996</id><published>2010-04-30T23:46:00.000-07:00</published><updated>2010-04-30T23:50:33.662-07:00</updated><title type='text'></title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;       &lt;/span&gt;Mobile Banking and SMS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SMS is the communication service component of the GSM mobile communication system which&lt;/div&gt;&lt;div style="text-align: justify;"&gt;allows exchange of text messages between mobile phone devices. SMS has been adopted by&lt;/div&gt;&lt;div style="text-align: justify;"&gt;the CDMA system as well. We can send up to 160 characters (including spaces) to and from a&lt;/div&gt;&lt;div style="text-align: justify;"&gt;mobile handset. SMS can be used for peer-to-peer as well as broadcast kind of messaging. [1]&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SMS or text messaging is very popular in developing countries of South-East Asia and is also&lt;/div&gt;&lt;div style="text-align: justify;"&gt;gaining popularity in the USA. SMS provides the end consumer with a low cost way of using the&lt;/div&gt;&lt;div style="text-align: justify;"&gt;mobile VAS services. Anyone even without a data plan is able to send and receive SMS. Hence&lt;/div&gt;&lt;div style="text-align: justify;"&gt;many of the content providers are providing mobile VAS through SMS or SMS based platforms.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SMS is definitely a great medium to provide Banking services. There can actually be two way&lt;/div&gt;&lt;div style="text-align: justify;"&gt;communications between the end consumer and the banks. We can classify the communication&lt;/div&gt;&lt;div style="text-align: justify;"&gt;into two types PUSH and PULL. PULL kind of communication is done when the end consumer&lt;/div&gt;&lt;div style="text-align: justify;"&gt;request for his balance by sending a SMS onto a shortcode provided and the content provider&lt;/div&gt;&lt;div style="text-align: justify;"&gt;sends him the required information. PUSH kind of communication is done when the Banks want&lt;/div&gt;&lt;div style="text-align: justify;"&gt;to intimate the consumer on some activity on this account. There can be an alert sent as an&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SMS with the required information. SMS based platforms like STK/UTK also enable both kind of&lt;/div&gt;&lt;div style="text-align: justify;"&gt;communication. The only concern is of security when offering a financial service over SMS. This&lt;/div&gt;&lt;div style="text-align: justify;"&gt;can be addressed using some extra authentication using PIN and so on.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;To provide SMS based services one needs to know about some components or technologies or&lt;/div&gt;&lt;div style="text-align: justify;"&gt;protocols.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SMSC is a acronym for Short Message Service Center. A SMSC is responsible for handling the&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SMS operations of a wireless network. When a user sends a text message (SMS message) to&lt;/div&gt;&lt;div style="text-align: justify;"&gt;another user, the message gets stored in the SMSC which delivers it to the destination user&lt;/div&gt;&lt;div style="text-align: justify;"&gt;when they are available. This is a store and forward option. [2]&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Short Message Peer-to-Peer (SMPP) protocol is a telecommunications industry protocol for&lt;/div&gt;&lt;div style="text-align: justify;"&gt;exchanging SMS messages between SMS peer entities such as short message service&lt;/div&gt;&lt;div style="text-align: justify;"&gt;centers and/or External Short Messaging Entities. It is often used to allow third parties&lt;/div&gt;&lt;div style="text-align: justify;"&gt;(e.g. value-added service providers like news organizations) to submit messages, often in bulk.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[3] In simple terms SMPP is the language that a SMSC speaks.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Short codes (also known as short numbers) are special telephone numbers, significantly&lt;/div&gt;&lt;div style="text-align: justify;"&gt;shorter than full telephone numbers, which can be used to address SMS and MMS messages&lt;/div&gt;&lt;div style="text-align: justify;"&gt;from mobile phones or fixed phones. There are two types of short codes: dialing and&lt;/div&gt;&lt;div style="text-align: justify;"&gt;messaging. Short codes are designed to be easier to read and remember than normal&lt;/div&gt;&lt;div style="text-align: justify;"&gt;telephone numbers. Short codes are widely used for value-added services such as television&lt;/div&gt;&lt;div style="text-align: justify;"&gt;voting, ordering ringtones, charity donations and mobile services. [4]&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SMS gateway is a device or service offering SMS transit, transforming messages&lt;/div&gt;&lt;div style="text-align: justify;"&gt;to mobile network traffic from other media, or vice versa, allowing transmission or receipt&lt;/div&gt;&lt;div style="text-align: justify;"&gt;of SMS messages with or without the use of a mobile phone. Typical use of a gateway would be&lt;/div&gt;&lt;div style="text-align: justify;"&gt;to forward simple SMS to a mobile phone recipient. [5]&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some SMS gateway providers can be classified as SMS aggregators or SS7 providers. The&lt;/div&gt;&lt;div style="text-align: justify;"&gt;aggregator model is based on multiple agreements with mobile carriers to exchange 2-way SMS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;traffic into and out of the operator's Short Message Service Centre (SMSC) Aggregators lack&lt;/div&gt;&lt;div style="text-align: justify;"&gt;direct access into the SS7 protocol, which is the protocol where the SMS messages are&lt;/div&gt;&lt;div style="text-align: justify;"&gt;exchanged. These providers have no visibility and control over the message delivery, being&lt;/div&gt;&lt;div style="text-align: justify;"&gt;unable to offer delivery guarantees. SMS messages are delivered in the operator's SMSC, but&lt;/div&gt;&lt;div style="text-align: justify;"&gt;not the subscriber's handset. [5]&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Gateway connects directly to a Mobile Operator's SMSC via the Internet or direct leased&lt;/div&gt;&lt;div style="text-align: justify;"&gt;line connections. It converts the message format into a format understood by the SMSC,&lt;/div&gt;&lt;div style="text-align: justify;"&gt;typically this is the SMPP protocol. Direct to SMSC Gateways are used by SMS Aggregators to&lt;/div&gt;&lt;div style="text-align: justify;"&gt;provide SMS services to their clients. Typically Direct to SMSC Gateways are used for high&lt;/div&gt;&lt;div style="text-align: justify;"&gt;volume messaging and require a contract directly with the Mobile Operator. [5]&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For the service to be carrier agnostic it has to use a SMS Aggregator. The other way can be to&lt;/div&gt;&lt;div style="text-align: justify;"&gt;have a SMS Gateway at the content provider’s end which connects to SMSCs of different&lt;/div&gt;&lt;div style="text-align: justify;"&gt;operators.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Kannel is a freely available and an Open source SMS Gateway. [7]&lt;/div&gt;&lt;div style="text-align: justify;"&gt;SIM Application Toolkit (commonly referred to as STK) is a standard of the GSM system&lt;/div&gt;&lt;div style="text-align: justify;"&gt;which enables the SIM to initiate actions which can be used for various value-added services.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The SIM Application Toolkit consists of a set of commands programmed into the SIM card which&lt;/div&gt;&lt;div style="text-align: justify;"&gt;define how the SIM should interact directly with the outside world and initiates commands&lt;/div&gt;&lt;div style="text-align: justify;"&gt;independently of the handset and the network. This enables the SIM to build up an interactive&lt;/div&gt;&lt;div style="text-align: justify;"&gt;exchange between a network application and the end user and access or control access to the&lt;/div&gt;&lt;div style="text-align: justify;"&gt;network. The SIM also gives commands to the handset, such as display menu and ask for user&lt;/div&gt;&lt;div style="text-align: justify;"&gt;input. STK has been deployed by many mobile operators around the world for many&lt;/div&gt;&lt;div style="text-align: justify;"&gt;applications, often where a menu-based approach is required, such as Mobile Banking and&lt;/div&gt;&lt;div style="text-align: justify;"&gt;content browsing] Designed as a single application environment, STK can be started at the&lt;/div&gt;&lt;div style="text-align: justify;"&gt;initial power up of the SIM card and is especially suited to low level applications with simple&lt;/div&gt;&lt;div style="text-align: justify;"&gt;user interfaces. [6]&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Some manufacturers claim that STK enables higher levels of security through identity&lt;/div&gt;&lt;div style="text-align: justify;"&gt;verification and encryption, which are necessary for secure electronic commerce. This provided&lt;/div&gt;&lt;div style="text-align: justify;"&gt;high level of security than the SMS Client since the SMS here is encrypted.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A menu for STK based application is pre-burnt on the SIM or it is possible today to change STK&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Menu for WIB or S@T based applications quickly Over The Air via SMS bearer, without the user&lt;/div&gt;&lt;div style="text-align: justify;"&gt;having to return the SIM or even take it to the operator's business center. It is also be possible&lt;/div&gt;&lt;div style="text-align: justify;"&gt;to change the menu of WIG-based STK applications. One of the limitations can be that there is&lt;/div&gt;&lt;div style="text-align: justify;"&gt;no multimedia support (only basic pictures).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;UTK which stands for UIM Toolkit is the counter part of the STK for the CDMA networks.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;There is something called a DP (Delivery Platform) with the operator end which enables STK or&lt;/div&gt;&lt;div style="text-align: justify;"&gt;UTK kind of applications. Some of popular vendors of such platforms are SmartTrust [8] and&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Gemalto [9].&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;References&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[1] SMS From Wikipedia, the free encyclopedia.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;http://en.wikipedia.org/wiki/SMS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[2] SMSC From Wikipedia, the free encyclopedia.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;http://en.wikipedia.org/wiki/Short_message_service_center&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[3] SMPP From Wikipedia, the free encyclopedia.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;http://en.wikipedia.org/wiki/SMPP&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[4] Shortcodes From Wikipedia, the free encyclopedia.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;http://en.wikipedia.org/wiki/Short_code&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[5] SMS Gateway, From Wikipedia, the free encyclopedia.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;http://en.wikipedia.org/wiki/SMS_gateway&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[6] SIM Application Toolkit, From Wikipedia, the free encyclopedia.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;http://en.wikipedia.org/wiki/SIM_Application_Toolkit&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[7] Kannel, An Open Source SMS Gateway http://www.kannel.org/&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[8] SmartTrust http://www.smarttrust.com&lt;/div&gt;&lt;div style="text-align: justify;"&gt;[9] Gemalto http://www.gemalto.com&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-305060654779119996?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/305060654779119996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=305060654779119996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/305060654779119996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/305060654779119996'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2010/04/mobile-banking-and-sms-sms-is.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-6000270240348650626</id><published>2009-07-05T22:05:00.001-07:00</published><updated>2009-07-05T22:08:22.411-07:00</updated><title type='text'></title><content type='html'>My First Contribution to Open Source GEO&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This was the first code contribution from myself to this OSGEO project called GeoTools.&lt;/div&gt;&lt;div&gt;&lt;a href="http://jira.codehaus.org/browse/GEOT-2581"&gt;http://jira.codehaus.org/browse/GEOT-2581&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/31679049-6000270240348650626?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/6000270240348650626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=6000270240348650626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/6000270240348650626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/6000270240348650626'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2009/07/my-first-contribution-to-open-source.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-2742699680692279418</id><published>2009-05-30T05:08:00.000-07:00</published><updated>2009-05-30T05:10:33.902-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;"&gt;How to use Plug2Surf Tata Indicom USB Modem in Fedora Linux 6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Please following the below following steps to use the tata indicom plug2surf USB modem in&lt;br /&gt;Fedora Core Linux 6:&lt;br /&gt;&lt;br /&gt;1. Type the below command on the command prompt in a terminal&lt;br /&gt;&lt;br /&gt; $wvdialconf /etc/wvdial.conf&lt;br /&gt; &lt;br /&gt;  The wvdial.conf file is created and you will see some messages aswell.&lt;br /&gt;&lt;br /&gt;2. Edit the wvdial.conf file in your favortite editor and should like below when done&lt;br /&gt;&lt;br /&gt; [Dialer Defaults]&lt;br /&gt; Modem = /dev/ttyACM0&lt;br /&gt; Baud = 460800&lt;br /&gt; Init1 = ATZ&lt;br /&gt; Init2 = ATQ0 V1 E1 S0=0 &amp;amp;C1 &amp;amp;D2 +FCLASS=0&lt;br /&gt; Init3 = at+crm=1&lt;br /&gt; Stupid MODE=1&lt;br /&gt; ISDN = 0&lt;br /&gt; Modem Type = USB Modem&lt;br /&gt; Phone = #777&lt;br /&gt; Username = internet&lt;br /&gt; Password = internet&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Copy the resolv.conf into the /etc/ folder to be on safe-side.&lt;br /&gt;&lt;br /&gt; cp /etc/ppp/resolv.conf /etc/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Plug-in the modem and just type the below command and the dialer will start.&lt;br /&gt;&lt;br /&gt; $wvdial&lt;br /&gt;&lt;br /&gt;You are ready to surf the internet now !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-2742699680692279418?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/2742699680692279418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=2742699680692279418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/2742699680692279418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/2742699680692279418'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2009/05/how-to-use-plug2surf-tata-indicom-usb.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-2383239065980689781</id><published>2009-03-11T04:42:00.000-07:00</published><updated>2009-03-11T05:12:58.377-07:00</updated><title type='text'></title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Oh My Jar Oh My Jar !!!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;How do you know or ensure that your Enterprise Java Application is performing well ?&lt;br /&gt;&lt;br /&gt;As per me I usually load "mata.jar" and "believer.jar" in the classpath and it is working quite well right now.&lt;br /&gt;&lt;br /&gt;Looks like it is my first lesson in Computational Theology.&lt;br /&gt;&lt;br /&gt;&lt;br /&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;&lt;br /&gt;&lt;/div&gt;&lt;br /&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;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&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/31679049-2383239065980689781?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/2383239065980689781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=2383239065980689781' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/2383239065980689781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/2383239065980689781'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2009/03/oh-my-jar-oh-my-jar-how-do-you-know-or.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-4211934749883699398</id><published>2009-02-04T07:55:00.000-08:00</published><updated>2009-02-04T08:18:51.671-08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Hiroshima &amp;amp; Nagasaki : A QA Engineer's Perspective&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Is Test Automation essential ?&lt;br /&gt;Test Automation is very essential especially in regression testing of software systems. This question is similar to one like "How important is the manufacturing some product using a machine vs hand made ?". We cannot compare test done by a machine (a computer/ automated test) with a Manual Test of a QA Engineer.&lt;br /&gt;&lt;br /&gt;While developing or maintaing a critical application you have to be doubly sure that the software you develop and deploy is bug free. Hence when you automate the tests you as a software engineer will be confident that the software you have written is bug free (atleast of the forseen or known bugs).&lt;br /&gt;&lt;br /&gt;When "Test Automation" seen from the perspective of a poor QA Engineer who does not reliaze the benefits of automating the tests would lead to frustrated life, which not only lead to his own bad health but might lead to severe consequences. The consequences which might be harmful to  the whole society.&lt;br /&gt;&lt;br /&gt;Who knows the great disaster of "Hiroshima and Nagasaki" was a consequence of a frustration of  QA engineer who could not automate his regression tests !!!!!!&lt;br /&gt;&lt;br /&gt;The reality really bites ................................... doesn't it ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-4211934749883699398?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/4211934749883699398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=4211934749883699398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/4211934749883699398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/4211934749883699398'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2009/02/hiroshima-nagasaki-qa-engineers.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-7443288714603374790</id><published>2009-01-31T23:36:00.000-08:00</published><updated>2009-01-31T23:48:27.892-08:00</updated><title type='text'></title><content type='html'>&lt;div  style="text-align: justify;font-family:arial;"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;What the fuck is GIS ?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;GIS for a layman and for everyman who wants to lay !!!!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What is GIS ?&lt;br /&gt;&lt;br /&gt;Some call it Geographic Info Systems, some call it Geographical&lt;br /&gt;&lt;br /&gt;Information Systems, some people see it as a field of academic study&lt;br /&gt;&lt;br /&gt;called GI Science. You even get a Master's and Doctorate in this field&lt;br /&gt;&lt;br /&gt;of study.&lt;br /&gt;&lt;br /&gt;Defining GIS is not a simple task. It is percieved differently by&lt;br /&gt;&lt;br /&gt;different people.  some people think it as a branch of IT, some think&lt;br /&gt;&lt;br /&gt;it to be computer-assisted mapping systems, some as cartographic&lt;br /&gt;&lt;br /&gt;application, a type of database systems or a ....... some of my friends&lt;br /&gt;&lt;br /&gt;even thought of it as Girl Information System.... ;-)&lt;br /&gt;&lt;br /&gt;I am not getting into Perception and cognitive science.....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My Cricket coach always asked me to go by the book. so I am going by&lt;br /&gt;&lt;br /&gt;the definition in this book on "Concepts and Techniques of Geographic&lt;br /&gt;&lt;br /&gt;Information Systems by C.P.Lo and Albert K. W. Yeung", which is&lt;br /&gt;&lt;br /&gt;GIS is a set of computer-based systems for managing geographic data and&lt;br /&gt;&lt;br /&gt;using these data to solve spatial problems.&lt;br /&gt;&lt;br /&gt;As IT professionals I expect everyone of us to know what data and&lt;br /&gt;&lt;br /&gt;information is all about. some of us even know what metadata is.&lt;br /&gt;&lt;br /&gt;A question must arise in our minds that what is the need of yet another&lt;br /&gt;&lt;br /&gt;Information system.&lt;br /&gt;&lt;br /&gt;The speciality of GIS lies entirely in the data. Geographic data or&lt;br /&gt;&lt;br /&gt;spatial data is special since it is multi-dimensional. The any other&lt;br /&gt;&lt;br /&gt;form of data can be called as non-spatial or attribute data.&lt;br /&gt;&lt;br /&gt;Some of our mechanical engineering friends might be thinking about the&lt;br /&gt;&lt;br /&gt;CAD/CAM systems. GIS offers much more that a simple CAD/CAM system.&lt;br /&gt;&lt;br /&gt;The other main interesting aspect lies in its ability to make the user&lt;br /&gt;&lt;br /&gt;visualize spatial data in the terms of the maps they can produce, which&lt;br /&gt;&lt;br /&gt;is the cartographic side of GIS. Which is missing in AUTOCAD.&lt;br /&gt;&lt;br /&gt;Why does the multi-dimensionalness pose a challenge?&lt;br /&gt;&lt;br /&gt;Some of our computer science friends must be well aware of the Balanced-Trees or the B-Trees.&lt;br /&gt;These data structures are used in the context of RDBMS for the indexing or ordering of data or tuples in a table.&lt;br /&gt;&lt;br /&gt;we all know that we can only index 1 column using 1 tree. I hope I am right here. This column is usually the Primary key.&lt;br /&gt;&lt;br /&gt;As all the well know RDBMS are suited only for the non-spatial data.&lt;br /&gt;&lt;br /&gt;Why cant it be used for spatial data. Since it is multi-dimensional.&lt;br /&gt;&lt;br /&gt;As we all know we can represent a point P in 2-D space using cartesian coordinates using as (x,y).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We all are well aware of the fact that both x and y are independant of each other but the point P needs both x and y for it to be represented.&lt;br /&gt;&lt;br /&gt;Let us take the problem of finding the nearest ATM from our office.&lt;br /&gt;If we represent all the points of interest in this problem as a Points in 2-D space. It is a problem of ordering in 2-D space.&lt;br /&gt;&lt;br /&gt;Some mathematicians might argue that is a problem of topology !!!&lt;br /&gt;&lt;br /&gt;Hence a Spatial Analysis problem. Can we use B-Trees for this ? No ...&lt;br /&gt;&lt;br /&gt;so we need a new kind of a data structure for this which is called an&lt;br /&gt;&lt;br /&gt;R-Tree. Hence the databases also special and called spatial Databases.&lt;br /&gt;&lt;br /&gt;We can order the data using R-Tree on the basis of radial distance and&lt;br /&gt;&lt;br /&gt;find the nearest ATM.&lt;br /&gt;&lt;br /&gt;So GIS is a about data, Information System, Cartographic System and a&lt;br /&gt;&lt;br /&gt;Spatial Analysis tool.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Maps and GIS.&lt;br /&gt;&lt;br /&gt;GIS as a cartographic application. GIS gives us the capability of&lt;br /&gt;&lt;br /&gt;visualizing the spatial data and the spatial distribution of the&lt;br /&gt;&lt;br /&gt;non-spatial data in terms of the maps they can produce. One of the most&lt;br /&gt;&lt;br /&gt;important aspect when displaying a map is the Map Scale.&lt;br /&gt;&lt;br /&gt;The scale of a map is the ratio or proportion between the distances&lt;br /&gt;&lt;br /&gt;measured on the map and the corresponding distances measured on the&lt;br /&gt;&lt;br /&gt;ground.&lt;br /&gt;YOu can do the mathematics.&lt;br /&gt;&lt;br /&gt;Classes of Maps&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1) General Purpose or Reference maps: These are maps not designed for&lt;br /&gt;&lt;br /&gt;any specific applications. This class of maps focus on locations and&lt;br /&gt;&lt;br /&gt;shows a variety of physical and cultural features such as drainage,&lt;br /&gt;&lt;br /&gt;roads, railways, airports, forest and cultivate areas etc. They server&lt;br /&gt;&lt;br /&gt;as the base maps for developing and integrating other form of&lt;br /&gt;&lt;br /&gt;geographic infomation.&lt;br /&gt;&lt;br /&gt;2) Special Purpose or Thematic maps:&lt;br /&gt;&lt;br /&gt;These maps are designed to depict a particular type of feature or&lt;br /&gt;&lt;br /&gt;measurement only. Like it can show the variation of rainfall across&lt;br /&gt;&lt;br /&gt;certain region. These maps are generated using the base maps.&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/31679049-7443288714603374790?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/7443288714603374790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=7443288714603374790' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/7443288714603374790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/7443288714603374790'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2009/01/what-fuck-is-gis-gis-for-layman-and-for.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-4971274179235940879</id><published>2009-01-31T21:53:00.001-08:00</published><updated>2009-01-31T21:53:54.984-08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="font-family: times new roman; font-weight: bold;"&gt;Interoperability, SOA and National Integration&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;It is all about "INTEROPERABILITY" my friends.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;when you have different components of a system built in various technologies you will have lot of problems in making an integrated system which is working.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Every Child in India understands it, very well I guess.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;There is INTROP issues at every moment in your life once you step out of your house.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;They say there are 2 sides to a coin. One can take something positively or negatively.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Just for example if a south indian boy likes a north indian girl, both parties might not go ahead with the marriage simply because of INTROP issues between both the families.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;Then SOA ...comes into the rescue.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;what it basically means ..either of the parties have to be so well architected that they perform as a webservice which will make possible this integration ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;As they say again there are 2 sides to a coin ...but there is also a third side side which is hidden ..and can be seen only by few of them ..who believe in multi-dimensionality of things.....&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;When you change the context ..and look at larger issues like National Integration .... you need More Web-services ..... that is SOA components ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: times new roman;"&gt;I am a strong supporter of SOA ...... it as some nice philosophy behind it ....&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-4971274179235940879?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/4971274179235940879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=4971274179235940879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/4971274179235940879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/4971274179235940879'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2009/01/interoperability-soa-and-national_31.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-4237048156960668776</id><published>2009-01-23T02:18:00.000-08:00</published><updated>2009-01-23T02:20:20.409-08:00</updated><title type='text'></title><content type='html'>&lt;p&gt;How to Fly&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Just dont believe in Newton's Law of Gravitation.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-4237048156960668776?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/4237048156960668776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=4237048156960668776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/4237048156960668776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/4237048156960668776'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2009/01/how-to-fly-just-dont-believe-in-newtons.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-8997051549202045346</id><published>2008-10-19T08:17:00.000-07:00</published><updated>2009-02-05T22:07:34.046-08:00</updated><title type='text'></title><content type='html'>&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;GOTO : HELL&lt;/span&gt;&lt;/span&gt;&lt;div&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;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;For my fellow programming geeks i need not tell about this annoying keyword.  My first experience with this goto was when I went to help one of my non-programmer seniors of mine in his bachelors project (in the year 1999). The task was to convert a legacy piece of software in early version of FORTRAN into C language. This code was full of GOTOs which made it possible for any human to read it.  I tried my best to untangle the spaghetti code but failed miserable.  So my response was simple &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;GOTO: HELL&lt;/span&gt;.  I am really greatful to Professor Dijkstra for removing this BadWord.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-8997051549202045346?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/8997051549202045346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=8997051549202045346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/8997051549202045346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/8997051549202045346'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2008/10/goto-hell-for-my-fellow-programming.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-2518806327373028547</id><published>2008-10-13T03:49:00.000-07:00</published><updated>2008-10-19T08:31:30.764-07:00</updated><title type='text'></title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;My Daily Scrum&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p align="center"&gt;&lt;span class="Apple-style-span" style="font-size: 18px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;span class="Apple-style-span" style="font-size: 18px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;1) what did i do before today's meeting?&lt;/p&gt;&lt;p&gt;Ans:  nothing much as usual.... &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;2) what will i do before the next meeting ? &lt;/p&gt;&lt;p&gt;Ans: i will try to find the answer to the first question again i guess. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;3) are there any impediments ?&lt;/p&gt;&lt;p&gt;Ans:  i guess the whole project is one big impediment ....&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-2518806327373028547?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/2518806327373028547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=2518806327373028547' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/2518806327373028547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/2518806327373028547'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2008/10/my-dialy-scrum-1-what-did-i-do-before.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-917215082567544618</id><published>2008-10-12T23:43:00.001-07:00</published><updated>2008-10-19T08:32:20.210-07:00</updated><title type='text'></title><content type='html'>&lt;div align="center"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="center"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: 18px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: 18px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: 18px; font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;span style="font-family:arial;"&gt;                                                              &lt;span style="font-size:130%;"&gt;  Spatial AUTOCorrelation&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;My professor tried his best to teach this spatial statistics concept to me but unfortunately he could not drive the point home. After five years Ranjeet made me realize that it was as simple as chossing an apple from a basket full of only apples. For people who dont know who Ranjeet is, he is my AUTO driver. &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;The simple fact that how he picks up another passenger for the same source and destination as mine made me understand what spatial auto-correlation is all about. That puts me in fix. Who is a better teacher ? my professor or Ranjeet ............. It is very simple I guess ....&lt;br /&gt;&lt;br /&gt;who better than an Auto driver, can teach about AUTO-Correlation ?.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div 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/31679049-917215082567544618?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/917215082567544618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=917215082567544618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/917215082567544618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/917215082567544618'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2008/10/my-professor-tried-his-best-to-teach.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-1934160861055387476</id><published>2008-05-23T09:42:00.000-07:00</published><updated>2008-05-23T11:10:01.506-07:00</updated><title type='text'></title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;An Intro to Open Source Software Development&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;&lt;/strong&gt;This article tries to give a mild introduction for those Java programming geeks who want to contribute  to open source softwares but who get lost in this maze of tar balls with documentation, source code,  third party jars and binaries.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;this is not another creative writing attempt  from the author.... lets get down to the business now.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;For anyone who can understand the English language it is obvious that an Open Source Software is a piece of software which has it's source code open to everyone in this world who want to study or modify it. For someone who is better than a layman in software industry, an open source software is not just free software but also has a community of developers associated with it who are constantly working towards contributing to its development and also providing the required support through forums and mailing-lists.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;&lt;span style="font-size:78%;"&gt;basically what the author is trying to say is since they are several fellows  work on the same thing, one or another will help you out if you have any problem.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;For a more book type definition of what an open source software is, you can refer to [1].&lt;br /&gt;Some organizations like the Apache Foundation [2] have plethora of open source softwares for various purposes.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:100%;" &gt;&lt;span style="font-size:78%;"&gt;what is there in it for an average programmer .... ;-) not me&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Several of these open source softwares are written by experienced developers who want to solve some problem using a software. Hence most of them are well-written and could be studied by less experienced programmers who want to improve their coding skills.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;what is there in it for an experienced programmer?&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Well experienced programmers can show case there problem solving skills and good coding practices.&lt;br /&gt;&lt;br /&gt;Now getting down to what you need to do to work with an open source Java software. First of all you need Computer of course, a JDK, an IDE like Eclipse. What you have to do is:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Download the source code.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Download the binaries.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Download documentation like user manual or javadocs.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:78%;"&gt;Thats all ! you are ready to go .......&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;You have to import the source into eclipse as a project.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;You need the helping jars to compile the source code. (You can find them in the source or the binaries zip).&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:100%;"&gt;    Since you can compile and build the source code you can make changes to it ! and even contribute to it.&lt;br /&gt;&lt;br /&gt;Just let the code flow through your fingers ......Happy Open Sourcing !!!&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;br /&gt;[1] http://en.wikipedia.org/wiki/Open_source_software&lt;br /&gt;[2] http://jakarta.apache.org/&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-1934160861055387476?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/1934160861055387476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=1934160861055387476' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/1934160861055387476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/1934160861055387476'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2008/05/intro-to-open-source-software.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-5048104026910770911</id><published>2007-10-29T00:56:00.000-07:00</published><updated>2007-10-29T00:57:26.886-07:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;JVM Monitoring using JMX&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;We can manage Java applications through JMX API. Java supports JMX from jdk1.5 onwards. JConsole is a tool for monitoring local or remote JVMs. This entirely works on JMX technology.  To do what JConsole does we need to write a JMX client. This client would get access to the MBean exposed by JVM by connecting to the JMX Agent in that  JVM.&lt;br /&gt;&lt;br /&gt;How to write a client is explained clearly by this blog [1]. We can modify the code given in the blog to access the memory usage details of the JVM. We have to gain access to the MemoryMXBean[2].&lt;br /&gt;&lt;br /&gt;There are some issues which have to be taken care of when running the application to be monitored.[3] The java application should be run using the following parameters:&lt;br /&gt;&lt;br /&gt;-Dcom.sun.management.jmxremote.port=5009&lt;br /&gt;-Dcom.sun.management.jmxremote.authenticate=false&lt;br /&gt;-Dcom.sun.management.jmxremote.ssl=false&lt;br /&gt;&lt;br /&gt;The Remote Client  connects to a JMX agent using an RMI connector with the following URL: [4] service:jmx:rmi:///jndi/rmi://hostName:5009/jmxrmi.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="http://blogs.sun.com/jmxetc/entry/how_to_retrieve_remote_jvm"&gt;http://blogs.sun.com/jmxetc/entry/how_to_retrieve_remote_jvm&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/MemoryMXBean.html"&gt;http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/MemoryMXBean.html&lt;/a&gt;&lt;br /&gt;[3] &lt;a href="http://72.5.124.55/javase/6/docs/technotes/guides/management/agent.html"&gt;http://72.5.124.55/javase/6/docs/technotes/guides/management/agent.html&lt;/a&gt;&lt;br /&gt;[4] &lt;a href="http://forum.java.sun.com/thread.jspa?threadID=5212843"&gt;http://forum.java.sun.com/thread.jspa?threadID=5212843&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-5048104026910770911?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/5048104026910770911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=5048104026910770911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/5048104026910770911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/5048104026910770911'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2007/10/jvm-monitoring-using-jmx-we-can-manage.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-271714583728858680</id><published>2007-09-17T01:49:00.000-07:00</published><updated>2007-09-17T01:54:36.622-07:00</updated><title type='text'></title><content type='html'>Settings Parameters in HttpServletRequest&lt;br /&gt;&lt;br /&gt;Sometimes we need to set some parameters in a request when forwarding the request to a new jsp or a servlet. We can achieve this thing using the class javax.servlet.http.HttpServletRequestWrapper.&lt;br /&gt;&lt;br /&gt;We have to extend a the above class and define few methods like setParameter() and getParameter() and we are ready to go !!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;public class RequestWrapper extends HttpServletRequestWrapper {&lt;br /&gt;private HashMap fakedParameters;&lt;br /&gt;private RequestWrapper(HttpServletRequest nested)&lt;br /&gt;{&lt;br /&gt;super(nested);&lt;br /&gt;fakedParameters = new HashMap(nested.getParameterMap());&lt;br /&gt;}&lt;br /&gt;public void setParameter(String key, String value)&lt;br /&gt;{&lt;br /&gt;fakedParameters.put(key, value);&lt;br /&gt;}&lt;br /&gt;public String getParameter(String name)&lt;br /&gt;{&lt;br /&gt;return (String) fakedParameters.get(name);&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#333300;"&gt;we can then use this wrapper object as a new request !!&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#333300;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#999999;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-271714583728858680?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/271714583728858680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=271714583728858680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/271714583728858680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/271714583728858680'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2007/09/settings-parameters-in.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-4987729904144410436</id><published>2007-08-28T08:52:00.000-07:00</published><updated>2007-10-29T07:52:36.930-07:00</updated><title type='text'></title><content type='html'>&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;b&gt;Synchronization Simplified&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;Most of the Java applications are multi-threaded due to the obvious reasons of better performance and better utilization of resources. &lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;Hence in such applications there are many occasions when two or more threads share an object. Which may lead to situations called “race condition” in which two or more threads are trying access the methods of same object. For Example there may be a case when one thread is writing something to an object while another thread is trying to read from it. In most situations, a race conditions is more subtle and less predictable, because you cannot be sure when the context switch will occur. This can cause the program to run right one time and wrong the next.&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;When two or more threads need to access an object which is a shared resource they need some way to ensure that the resource will be used by only one thread at a time. The process by which this achieved is called &lt;i&gt;synchronization&lt;/i&gt;. &lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;The access to the object can be serialized by the process of synchronization. This is achieved by the use of the keyword “&lt;b&gt;synchronized&lt;/b&gt;”. You can synchronize your code in two ways:&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; TEXT-ALIGN: justify"&gt;Modify the methods of the object with the synchronized keyword. Which makes the object “thread-safe” which implies it is safe to use this object in a multi-threaded application. For Example a Vector is thread-safe whereas an ArrayList is not.&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; TEXT-ALIGN: justify"&gt;If you want to use an object which is not thread-safe in a multithreaded application we have to use synchronized blocks.&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;For Example if Person is not thread safe and p is an object of person with Thread t.&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;Class Person&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;{&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;int age;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;public void setAge(int age);&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;}&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;To use p in a thread safe manner we use &lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;b&gt;synchronized&lt;/b&gt;(p)&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;{&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;p.setAge();&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;}&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;b&gt;A Simple Example for understanding Synchronization.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;class Person&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;{&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;int age;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;public void setAge(int age)&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;{&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;this.age = age ;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;}&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;public int getAge()&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;{&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;return age;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;}&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;}&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;class MyThread extends Thread&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;{&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;Person p;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;int age;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;public MyThread(Person p, int age)&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;{&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;this.p = p;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;this.age = age;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;}&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;public void run()&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;{&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;p.setAge(age);&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;}&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;}&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;public class TestSynchronization&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;{&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;public static void main(String args[]) throws Exception&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;{&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;Person p = new Person();&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;MyThread t1 = new MyThread(p,1);&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;MyThread t2 = new MyThread(p,2);&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;MyThread t3 = new MyThread(p,3);&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;t1.start();&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;t2.start();&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;t3.start();&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;System.out.println(“”+p.getAge());&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;}&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;}&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;The output of this simple program is unpredictable because the three threads t1,t2,t3 go into a race condition and depending on the context switch the execution of threads take place. The output can be 1, 2, 3 when we expect 3.&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;To make the program behave in a predictable way we use the synchronized keyword.&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;We just have to make the methods setAge() and getAge() synchronized.&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;Hence it is advisable that in multi-threaded applications we use thread-safe classes like Vector, HashTable, etc.&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;If it is inevitable to use some of the collections in multithreaded environment we can use the Collections class to make synchronized ArrayList, HashMap etc.&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;b&gt;ArrayList synchronizedArrayList = Collections.synchronizedList(arraylist);&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;By the way the &lt;b&gt;HttpSession&lt;/b&gt; class is also not thread safe !!!.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;That’s all about synchronization….. happy multithreading ….be thread-safe ;-)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-4987729904144410436?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/4987729904144410436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=4987729904144410436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/4987729904144410436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/4987729904144410436'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2007/08/synchronization-simplified-most-of-java.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-7033046060687788507</id><published>2007-08-17T08:06:00.000-07:00</published><updated>2007-10-29T07:54:00.640-07:00</updated><title type='text'></title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="FONT-WEIGHT: bold"&gt;JProfiler&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;h2&gt;&lt;span style="FONT-WEIGHT: normal"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Profiling is a set of techniques for estimating the amount of time spent in various portions of your program. &lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;The size of the program unit being profiled is called the &lt;b&gt;granularity&lt;/b&gt;.&lt;br /&gt;For example, you can profile &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h2 style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="FONT-WEIGHT: normal"&gt;Routines &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="FONT-WEIGHT: normal"&gt;Loops &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="FONT-WEIGHT: normal"&gt;Statements &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="FONT-WEIGHT: normal"&gt;Addresses &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;The profile will tell you how much of the execution time can be attributed to each grain you have selected. The most common grain is routine level profiling. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;The output of a profiler indicates what fraction of the execution time was spent in each grain.&lt;br /&gt;Presumably, to improve performance, you focus on the grains that are taking the most time. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Any tool which will enable you to do profiling of your program is a &lt;b&gt;Profiler&lt;/b&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;There are several commercial as well as open source java profilers. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;(&lt;/span&gt;&lt;a href="http://java-source.net/open-source/profilers"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;http://java-source.net/open-source/profilers&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Using Java profilers you can do profiling of a Java Application, Applet, J2ee components like servlets and JSPs and even J2me Midlets.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;My experience with profiling has been plain old logging statements weaved in the production code and using &lt;b&gt;JProfiler &lt;/b&gt;(a commercial Java Profiler) .&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;a href="http://www.ej-technologies.com/products/jprofiler/overview.html"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;http://www.ej-technologies.com/products/jprofiler/overview.html&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;I have recently used JProfiler for profiling a J2ee application. I am very impressed with its easy to use wizard to integrate with any J2EE application server. I could easily integrate the Resin application server with this tool. The “cpu view” section of the profiler gives information about the method level profiling, about the threads in different states in the application. You can read about some reviews about this tool on &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;a href="http://weblogs.java.net/blog/simongbrown/archive/2005/02/jprofiler_minir_1.html"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;http://weblogs.java.net/blog/simongbrown/archive/2005/02/jprofiler_minir_1.html&lt;/span&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;I have managed to dig out some of the methods to concentrate on to improve the performance of the application. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;All in all &lt;b&gt;JProfiler&lt;/b&gt; is a very useful and easy to use tool …definitely not another buzzword for my CV. ;-)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-7033046060687788507?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/7033046060687788507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=7033046060687788507' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/7033046060687788507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/7033046060687788507'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2007/08/jprofiler-profiling-is-set-of.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-116344434803233561</id><published>2006-11-13T10:55:00.000-08:00</published><updated>2006-11-13T10:59:08.053-08:00</updated><title type='text'></title><content type='html'>A Small Note on Artificial Neural Networks and GIS&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Artificial Neural Networks&lt;/strong&gt; or &lt;strong&gt;ANN&lt;/strong&gt;s as we popularly known are models that are designed to imitate the human brain through the use of Mathematical Models.&lt;br /&gt;&lt;br /&gt;ANNs have been applied to problems like classification, time series analysis, wave/wind speed predictions, etc.&lt;br /&gt;&lt;br /&gt;Most of the natural phenomenon are inherently random in nature and cannot be effectively represented or formulated as a series of Mathematical Equations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ANN&lt;/strong&gt;s  have been  proved to be successful in modelling such phenomenon as we can see in several publications citing to Wave Speed Prediction or Wind Speed Prediction [1]. &lt;strong&gt;&lt;span style="font-size:78%;"&gt;&lt;em&gt;&lt;br /&gt;&lt;br /&gt;( Iam citing Civil Engineering applications for the obvious reasons).&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ANNs can be tightly coupled with GIS to create highly &lt;em&gt;&lt;strong&gt;intelligent  &lt;/strong&gt;&lt;/em&gt;decision support systems(&lt;strong&gt;DSS&lt;/strong&gt;).&lt;br /&gt;&lt;br /&gt;One such example can be a GIS based Navigation System:-&lt;br /&gt;&lt;br /&gt;&lt;em&gt;On any given day vehicular traffic will vary through a city with respect to time of day, road network capacity and weather amongst other factors. A GIS can map the road network easily enough, but imagine an accident or some other event causing this flow of traffic to change. Traffic congestion would change with respect to other routes, those nearer the event becoming more congested. ANN input might include the location of the accident causing resultant congestion on arterial roadways, current weather conditions which influence speed and time of day, which relates to load. Using ANN all variables with respect to the accident could be processed resulting in a determination of optimum re-routing until the traffic flow is stabilized. In such a case, GIS mapping is used and spatial data acts as one of the input variables into the ANN. Taken one step further, a map server could update with latest conditions and transfer those to vehicles and or PDA – allowing individual drivers to follow the best selected re-routing. This would also be quite useful for emergency vehicle access purposes. &lt;/em&gt;[2]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Intellligent Planning Tool&lt;br /&gt;&lt;br /&gt;Other example would be an intelligent GIS based tool for Fire Station Locations planning for future. This would involve prediction of location of fire incidents based on the location of past data. As I believe that ANN can extract a pattern from the past fire location data to predict the future locations. The Data which is obtained based on ANN predictions can be fed to a GIS based Simulation Software [3] which could predict the optimum location of fire stations for future years. I would also like to mention that this is a GIS-T application since it involves travel time optimisation on road networks.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;[ I would like to work on this if I get funding !! for it ]&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finally I conclude that we would get the maximum utilization of GIS based Decision Support Systems and Artificial Intelligent techniques like ANN, heristics, etc when they are coupled together to solve real world problems.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Refrences:&lt;br /&gt;&lt;br /&gt;[1] "Wind Speed Analysis using Artificial Neural Networks", Sandeep Kumar Jakkaraju, B Tech Project, Civil Engineering Department, IIT Bombay. (2001) [&lt;strong&gt;unpublished&lt;/strong&gt;]&lt;br /&gt;&lt;br /&gt;[2] "GIS &amp; Artificial Neural Networks: Does Your GIS Think?" , Jeff Thurston - January 2002 GISCafe.com.&lt;br /&gt;&lt;br /&gt;[3] &lt;em&gt;Simulation of Fire Company Response Times&lt;/em&gt;,  Jean-Claude Thill, Irene Casas, Sandeep Kumar Jakkaraju (SUNY-Buffalo)            &lt;strong&gt;&lt;em&gt;,50&lt;sup&gt;th&lt;/sup&gt; Annual North American Meetings of the Regional Science Association International&lt;/em&gt;, &lt;/strong&gt;Philadelphia, Pennsylvania, Nov 20-22, 2003.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[ copyright  &lt;strong&gt;Sandeep Kumar Jakkaraju , &lt;/strong&gt;2006]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-116344434803233561?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/116344434803233561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=116344434803233561' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/116344434803233561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/116344434803233561'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2006/11/small-note-on-artificial-neural.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-115441274258605398</id><published>2006-07-31T23:11:00.000-07:00</published><updated>2006-07-31T23:12:22.600-07:00</updated><title type='text'></title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Errors Encountered While Integrating the Libpqxx code with our Library.&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0in;" start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt;"&gt;While integrating the libraries all of them      should have the “Runtime Library” property set to “&lt;b style=""&gt;Multi-threaded Debug DLL (/MDd)&lt;/b&gt;”. Even if one of the libraries      has different runtime library the console application project will give      Linking errors. The errors are mostly “&lt;b style=""&gt;error LNK 2005&lt;/b&gt;” errors. For example like the one, TestRouteXMLGenerator      error LNK2005: "public: __thiscall std::_Locinfo::_Locinfo(char const      *)" (??0_Locinfo@std@@QAE@PBD@Z) already defined in      msvcprtd.lib(MSVCP71D.dll).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Solution:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt;"&gt; All the libraries should have the “Runtime Library” property set to “&lt;b style=""&gt;Multi-threaded Debug DLL (/MDd)&lt;/b&gt;”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0in;" start="2" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt;"&gt;We were building all of our libraries in DEBUG      mode and linking the Test console project with DEBUG version of static      libraries except that of libpqxx as we did not have its DEBUG version. We      got the following (Debug Assertion Failed) error at the point where we      used to make the call to the libpqxx code  when we linked      with the release version of the library.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;    &lt;p class="MsoNormal" style="margin-left: 0.25in; text-align: justify;"&gt;&lt;span style="font-size: 10pt;"&gt;We did not get this error in the Release version since we were linking with the release version of libpqxx library. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Solution:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-align: justify;"&gt;&lt;span style="font-size: 10pt;"&gt;We created the DEBUG verion of the libpqxx library the &lt;b style=""&gt;libqxxd.lib&lt;/b&gt; and linked with it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.25in; text-align: justify;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0in;" start="1" type="1"&gt;&lt;li class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;The struct member alignment problem:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt;"&gt; The libpqxx library was created using the      default struct member alignment of “8 Bytes”. All of our libraries are      created using the struct member alignment of “1 Byte”. We got the      following error just before the libpqxx code was ended. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size: 10pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify;"&gt;&lt;b style=""&gt;&lt;span style="font-size: 10pt;"&gt;Solution: &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt;"&gt;Used #pragma pack to toggle between the two struct member alignments.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in; text-align: justify;"&gt;&lt;span style="font-size: 10pt;"&gt;We put all the header files of libpqxx between the statements #pragma pack(push,8), to change to&lt;span style=""&gt;  &lt;/span&gt;8 bytes and #pragma pop (to get back to original stuct alignment of 1 byte ).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-115441274258605398?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/115441274258605398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=115441274258605398' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/115441274258605398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/115441274258605398'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2006/07/errors-encountered-while-integrating.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-31679049.post-115389943221668473</id><published>2006-07-26T00:32:00.000-07:00</published><updated>2006-07-26T00:37:12.226-07:00</updated><title type='text'></title><content type='html'>Hi&lt;br /&gt;&lt;br /&gt;I have recently used this TinyXml to create XML DOM Document. It is very easy to use.&lt;br /&gt;It is very light weight as in it just a few header and source files unlike the famous apache xerces.&lt;br /&gt;I have modified the TinyXml package to give XML DOM Document as a string. I have just added a few functions in the tinyxml.h and tinyxml.cpp files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31679049-115389943221668473?l=jakkarajus.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://jakkarajus.blogspot.com/feeds/115389943221668473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=31679049&amp;postID=115389943221668473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/115389943221668473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/31679049/posts/default/115389943221668473'/><link rel='alternate' type='text/html' href='http://jakkarajus.blogspot.com/2006/07/hi-i-have-recently-used-this-tinyxml.html' title=''/><author><name>ljack</name><uri>http://www.blogger.com/profile/02779823000871538862</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
