<?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-8461442</id><updated>2012-02-02T00:50:10.799-06:00</updated><category term='nested folder'/><category term='Continuous Integration'/><category term='server push'/><category term='javascript'/><category term='Test Driven Development'/><category term='java'/><category term='ajax'/><category term='8005'/><category term='multiple instances'/><category term='spybot'/><category term='recursive'/><category term='malware'/><category term='tomcat'/><category term='reverse ajax'/><category term='ports'/><category term='instance'/><category term='8080'/><category term='service'/><category term='session timeout'/><category term='jar'/><category term='anti hacking tools'/><category term='nested'/><category term='classloader'/><category term='delete'/><category term='agile'/><category term='8009'/><category term='html'/><category term='media idea &quot;self playing media&quot; spm'/><category term='nested file'/><category term='spyware'/><category term='Software Engineering Process'/><category term='eclipse'/><category term='loading a file from jar'/><title type='text'>ITNow</title><subtitle type='html'>My Development facet...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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>92</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8461442.post-2960370399717394440</id><published>2011-01-20T15:44:00.005-06:00</published><updated>2011-01-20T16:28:00.822-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>javascript debugging in internet explorer(IE8 +)</title><content type='html'>Press Shift-F12 after your web page is loaded. This will bring up Developer tools window. Select the "script" tab. If you have more than one js files, they will be listed in a drop down painted just adjacent to start/stop debugger button. Scroll down to the line where you wish to add the breakpoint in the code. Clicking the white column by the col number will add the break point. At this point, hit start debugger button. Your parent window might refresh. &lt;br /&gt;&lt;br /&gt;Happy js debugging!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-2960370399717394440?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/2960370399717394440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2011/01/javascript-debugging-using-ie8.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/2960370399717394440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/2960370399717394440'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2011/01/javascript-debugging-using-ie8.html' title='javascript debugging in internet explorer(IE8 +)'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-4210118641408224412</id><published>2009-07-14T17:04:00.000-05:00</published><updated>2009-07-14T17:04:17.127-05:00</updated><title type='text'>Why will Google Chrome OS not take over Microsoft Windows?</title><content type='html'>The single most important thing an OS does is hardware abstraction. While Linux xyz and macs have mastered in many areas like security, look and feel, speed, etc, Windows still remain unchallenged when it comes to device support. And how do they do that? By not having or supporting a common standard for device drivers! Go to a computer shop and purchase your favorite gadget; be it the coolest graphics card, 64 bit sound blaster, a simple USB skype phone or any other internal/external h.w. that you can think, to the bare minimum it will run out of the box(with some installations) on your windows PC! And that's the power of Windows. Like many others, I myself periodically tried different flavors of Linux over the past decade, but every time I did that I had to compromise on some h.w. support or the other. Recently I installed the newest coolest version of SUSE on my old box connected to 16:9 format TV via DVI and supporting graphics card, only to learn that there are no available drivers for my graphics card in the linux world. After lot of hacking and several attempts, I finally gave up and switched back to Windows :(. While SUSE worked out of the box and did most of the stuff better than Windows, it didn't support the 16:9 format on my graphics card(due to lack of supporting driver). &lt;br /&gt;&lt;br /&gt;One single thing that Google should do to successfully capture the OS market is provide out of the box support to Microsoft's Device Drivers or provide some magical way to port the device driver s.w. into its new operating system. Current day Linux flavors are at least 100 times better in almost every area of OS features(including look and feel I must say) compared to Windows. There is no doubt that Google will make a great and innovative product, but what is more important is h.w. support, adaption and market penetration. Google can persuade manufacturers of nwe h.w. to support its OS, but what about the trillions of already manufactured equipments that are powered on all over the planet? Google should learn a lesson from Linux's struggle to capture Windows user base over the past decade. Remember, most ppl no longer use Windows because they like it, but because it just works out of the box! &lt;br /&gt;&lt;br /&gt;For non configurable machines like Mobile phones, netbooks or even laptops, google OS or even Android with some improvement would be a great fit and work for most use cases out of the box. But for desktops, I still feel, google should nail the device driver requirements first. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html"&gt;@Official Google Blog: Introducing the Google Chrome OS&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-4210118641408224412?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html' title='Why will Google Chrome OS not take over Microsoft Windows?'/><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/4210118641408224412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2009/07/why-will-google-chrome-os-not-take-over.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/4210118641408224412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/4210118641408224412'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2009/07/why-will-google-chrome-os-not-take-over.html' title='Why will Google Chrome OS not take over Microsoft Windows?'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-4418234217736003937</id><published>2009-07-08T22:22:00.002-05:00</published><updated>2009-07-08T22:32:21.914-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>wild card search in eclipse</title><content type='html'>While eclipse's simple search is good enough for most purpose; You can make use of wild cards to enhance your search results. For example adding dots in your search text will ignore that many characters and match rest of the string. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Example: &lt;br /&gt;text: The quick brown FOX jumps over the lazy DOG&lt;br /&gt;search for: f.x&lt;br /&gt;will match: FOX&lt;br /&gt;&lt;br /&gt;text: The quick brown FOX jumps over the lazy DOG&lt;br /&gt;search for: b..wn&lt;br /&gt;will match: brown&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;text: The quick brown FOX jumps over the lazy DOG&lt;br /&gt;search for: q...k&lt;br /&gt;will match: quick&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now say you dont know the number of characters either. In this case you can make use of start to match any number of characters. &lt;br /&gt;&lt;br /&gt;Example: &lt;br /&gt;&lt;br /&gt;text: The quick brown FOX jumps over the lazy DOG&lt;br /&gt;search for: the.*fox&lt;br /&gt;will match: The quick brown FOX &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;text: The quick brown FOX jumps over the lazy DOG&lt;br /&gt;search for: the.*brown.*over&lt;br /&gt;will match: The quick brown FOX jumps over&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-4418234217736003937?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/4418234217736003937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2009/07/wild-card-search-in-eclipse.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/4418234217736003937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/4418234217736003937'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2009/07/wild-card-search-in-eclipse.html' title='wild card search in eclipse'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-61275306120922478</id><published>2009-06-03T10:39:00.004-05:00</published><updated>2009-06-04T12:41:32.875-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reverse ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='session timeout'/><category scheme='http://www.blogger.com/atom/ns#' term='server push'/><title type='text'>Session expiration issue in Web 2.0 applications</title><content type='html'>Traditional web applications consists of thin html based client that makes request to a thick server for most of its user activities. Thick server or application servers will typically associate a "session object" for each of its client. These session-objects will have a "time out" window that keeps track of user inactivity. If the user is inactive for certain time interval, (s)he should be logged off from the system and server resources should be reclaimed. Servers typically have background threads that keep track of inactive sessions and flush them off as and when timeouts happen. This works great on the server side. However, session termination message is passed on to the client browser only when a new request  is made after the time-out interval is elapsed.&lt;br /&gt;&lt;br /&gt;This approach might not always work in case of web2.0 or ajax or thick client based applications where lot of data/processing exists on the client. Client might continue to work on locally loaded data without making a server call even after the time out interval. Example: user  modifies form fields or type in lot of text in an textarea while session time out has already happened on the server. User might end up loosing all the information when he actually hits the save button. Even worse is the security scenario: A user might have left his computer unattended, machine unlocked and browser window open with the web application running in it. Server might have logged off the user and cleared his session information, but some(pre loaded) data is still visible/available in his browser window.  Ideally all this data should had been cleared the moment session time out happened.&lt;br /&gt;&lt;br /&gt;The big issue here is http protocol's stateless nature. Sessions are tracked between a browser and the server with an internal token exchange mechanism. This token or session id is not part of the http protocol. Http by its very nature will only transport packages(request/response)  from source to destination. With that said, servers cannot communicate with browsers at will. If that was possible, we could have send a session time out message to the browser as and when it occurred. Unfortunately there is no standard protocol between browser/server to achieve this.&lt;br /&gt;&lt;br /&gt;Sending messages from the server to client is called "server push". In web2.0 world it is also called "reverse ajax". There are different ways to achieve this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Client polling&lt;/span&gt;: Client(browser application) pings the server every pre determined interval to see if server has any data/message that needs to be pushed.  Orbitz, Priceline, etc use this mechanism for there long running search queries . Unfortunately this will not work in our scenario where we need to communicate session time out information. Every time the client hits server, session gets renewed!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Piggyback: &lt;/span&gt;In this technique, server piggy back or append its message/data(if available) with every request that is received from the client. This method is better than client polling in terms of performance or bandwidth utilization. However it has same problem for our session timeout issue. Moreover piggyback mechanism cannot be used for instant/immediate server push. Server has to wait for that next client request in order to pass an message or event information.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Comet or Comet like&lt;/span&gt;: Comet is actually an umbrella term for techniques that work on long running transactions between the client browser and server. Idea is simple: Browser sends a request; server never returns a response; instead it keeps the connection open by sending KEEP-ALIVE messages; whenever the server wish to communicate data/message, it utilizes this open channel. This method works for our scenario, this is how we handle the session time outs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;When the user logs in for the very first time, browser sends a request to the server which is never responded. Only KEEP-ALIVE flags are send back to browser. To do this, you will require 1 Server thread per user session that will sleep until  time out happens. To receive session time out event, this thread will have to register a session time out listener/handler with the server.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You might want to inform the user about inactivity and give him a change to save his session. To do this, you need to create a custom session time out job that will trigger a time out event just before the actual time out. Actual time out parameter value can be read from the session itself. When the custom time out job event happens, you should compare inactivity time with job's activity period. If the comparison result is false, some activity happened since the job was last scheduled. Job should be rescheduled with new timeout interval. If the comparison result is true, no activity has happened for the job time frame. You should now alert the user with a message(You will be logged off in x seconds, click Continue to save your session) and Continue button. If user hits the continue button, a server call should be made and job should be rescheduled with new session time out interval. If the user fails to hit continue in x seconds, you should log him/her off automatically and also display a user friendly message, informing him/her of the timeout event. You will have to create a client side timer for the exact(excluding the n.w. latency time) delta time for which his session will be active at time of displaying the very first message.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;This approach works like charm if implemented properly. However there are some issues. Browsers typically spawn maximum 2 concurrent request threads per server session. By blocking one request on the server, browser has only one more request thread in its hand for communication. This means, two images cannot be downloaded at the same time; t files cannot be uploaded at the same time; etc. Browser will synchronize all the events.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Another issue: On the server you will require extra resources to handle this form of communication. You will require at least 1 thread and scheduled job per active user session. &lt;/li&gt;&lt;/ul&gt;Server push technology comes with lot of promises. You can push data to the client, as and when it is produced on the server. However this entire approach require proper design and good implementation. There are several open and commercial libraries available that could assist you achieve server push. As discussed above, this technique also has its pitfalls which should be considered before diving into it.&lt;br /&gt;&lt;br /&gt;It needs mention that webservices which operate over the same http channel already have this concept in form of "WS Callbacks". I am positive that server push or reverse ajax or server callbacks will be standardized and incorporated by the browser/server providers in near future. Till then, we will keep discovering new solutions!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-61275306120922478?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/61275306120922478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2009/06/session-expiration-issue-in-web-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/61275306120922478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/61275306120922478'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2009/06/session-expiration-issue-in-web-20.html' title='Session expiration issue in Web 2.0 applications'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-7781812204710901919</id><published>2009-05-27T21:25:00.000-05:00</published><updated>2009-05-27T21:58:25.467-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Calculating the number of characters that can fit a div or td element</title><content type='html'>Here is the problem...&lt;br /&gt;I have an div or td element that has fixed width. I need to find the number of characters that could possibly fit its width/length. Character width is different for different characters. As an example "l" might require 2px, but "W" might require 6! With that said, simple division calculation might now always work. One solution is to clip the div area using css. This will truncate the text that is outside of specified width. Example:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:lucida grande;" &gt;&amp;lt;span style="white-space: nowrap;text-indent:10px;overflow:hidden;width:32px;"&amp;gt;od oifh sdof od fdo fso dfosdffusdoifouiofusdoisoif&amp;lt;/span&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Above code will truncate any text that is over 32 px. However it will not work for td elements.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Only possible way to truncate text over a specified px width in td element is to actually calculate the number of visible characters. Following code will help you find the exact pixel length of any text inside a div:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&amp;lt;div id="sourceDiv" style="position:absolute; z-index:-1"&amp;gt;lll&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;input type="button" value="Check Size" onclick="var box = document.getElementById('sourceDiv'); alert(box.clientWidth + ' x ' + box.clientHeight);" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next step is to calculate px width of every possible character you expect to be displayed in your div/td/span. You can either calculate this at the very beginning and cache the results for future use, or you can compute it on demand. To compute individual character width, make an js array of all possible characters. loop through this, and in each iteration replace the sourceDiv's innerhtml to the character in array. Read the width and store it in another array. Now you have an array or map of all possible characters. You should be able to write a simple function that will calculate the number of characters that would be required to fill up a fixed width div/td/span from a input string/text!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-7781812204710901919?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/7781812204710901919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2009/05/calculating-number-of-characters-that.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/7781812204710901919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/7781812204710901919'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2009/05/calculating-number-of-characters-that.html' title='Calculating the number of characters that can fit a div or td element'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-1851981806275297740</id><published>2009-05-14T11:25:00.001-05:00</published><updated>2009-09-09T11:38:16.888-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Test Driven Development'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Software Engineering Process'/><category scheme='http://www.blogger.com/atom/ns#' term='Continuous Integration'/><title type='text'>Paper: Software Engineering Process using Agile Methodology</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Abstract&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;Agile software development practices offer compelling advantages like&lt;br /&gt;streamlined processes, less “paper work”, high quality, creativity in work,&lt;br /&gt;shorter delivery cycles, and above all customer satisfaction. Proper adoption and&lt;br /&gt;implementation of agile processes is a challenge in itself. Automated tools and&lt;br /&gt;practices like Continuous Integration, Test Driven Development, etc can largely&lt;br /&gt;simplify agile adoption.&lt;br /&gt;&lt;br /&gt;&lt;a title="View Software Engineering Process Using Agile on Scribd" href="http://www.scribd.com/doc/19576826/Software-Engineering-Process-Using-Agile" style="margin: 12px auto 6px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;"&gt;Software Engineering Process Using Agile&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_971677938095867" name="doc_971677938095867" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle" height="500" width="100%"&gt;  &lt;param name="movie" value="http://d.scribd.com/ScribdViewer.swf?document_id=19576826&amp;amp;access_key=key-22r2t4dllp6qsh5wti7g&amp;amp;page=1&amp;amp;version=1&amp;amp;viewMode="&gt;   &lt;param name="quality" value="high"&gt;   &lt;param name="play" value="true"&gt;  &lt;param name="loop" value="true"&gt;   &lt;param name="scale" value="showall"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="devicefont" value="false"&gt;  &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="menu" value="true"&gt;  &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="salign" value=""&gt;        &lt;embed src="http://d.scribd.com/ScribdViewer.swf?document_id=19576826&amp;amp;access_key=key-22r2t4dllp6qsh5wti7g&amp;amp;page=1&amp;amp;version=1&amp;amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_971677938095867_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle" height="500" width="100%"&gt;&lt;/embed&gt;&lt;a class="riblsgiofpljnjhavoyl" href="http://d.scribd.com/ScribdViewer.swf?document_id=19576826&amp;amp;access_key=key-22r2t4dllp6qsh5wti7g&amp;amp;page=1&amp;amp;version=1&amp;amp;viewMode="&gt;&lt;/a&gt; &lt;/object&gt; &lt;br /&gt;&lt;br /&gt;Download this paper free: &lt;a href="http://rakeshw.googlepages.com/SoftwareEngineeringprocessusingAgile.pdf"&gt;@original link&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-1851981806275297740?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/1851981806275297740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2009/05/paper-software-engineering-process.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/1851981806275297740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/1851981806275297740'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2009/05/paper-software-engineering-process.html' title='Paper: Software Engineering Process using Agile Methodology'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-23808212968872365</id><published>2009-04-06T10:48:00.000-05:00</published><updated>2009-04-06T10:58:28.372-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jar'/><category scheme='http://www.blogger.com/atom/ns#' term='loading a file from jar'/><category scheme='http://www.blogger.com/atom/ns#' term='classloader'/><title type='text'>Loading a non java file from jar</title><content type='html'>Scenario: You have a configuration or text or any other non java file of that kind. You have to package your application(apis) as jar(executable or non executable) for the client to use. However if the non java files used by your application are static(cannot change at runtime or by the user), you might want to package them as part of your archive. Here is the code to do exactly that:&lt;br /&gt;&lt;br /&gt;public static InputStream loadFileFromJar(String fName){&lt;br /&gt;     return Constants.class.getClassLoader().getResourceAsStream(fName);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;We all know that getResourceAsStream() method of ClassLoader will load any file from available classpath. However in case of jar(some times) the classloader could be different. So we play a small trick: We first load a class(could be even a dummy blank class) from the jar and acquire the handle to that classloader. Now we can be assured that this classloader will have access to all the resources  inside the jar.&lt;br /&gt;&lt;br /&gt;One more thing: You should keep your file either in base of the jar or in a relative folder.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-23808212968872365?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/23808212968872365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2009/04/loading-non-java-file-from-jar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/23808212968872365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/23808212968872365'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2009/04/loading-non-java-file-from-jar.html' title='Loading a non java file from jar'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-5821016596005550506</id><published>2009-03-20T14:38:00.000-05:00</published><updated>2009-03-20T14:56:32.748-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nested file'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='recursive'/><category scheme='http://www.blogger.com/atom/ns#' term='delete'/><category scheme='http://www.blogger.com/atom/ns#' term='nested'/><category scheme='http://www.blogger.com/atom/ns#' term='nested folder'/><title type='text'>Java code to delete entire folder structure with files in it</title><content type='html'>Ever tried file.delete() and wondered why your non empty directory is not deleted? Irony with java's api is that it returns a boolean when we expect it to either delete or fail! Here is a simple recursive function that will do the trick of deleting any file or folder with or without nested structure.&lt;br /&gt;&lt;br /&gt;If you use this method in your application, do so at your own risk. I have not tested it for boundary conditions...&lt;br /&gt;    public static void deleteResource(File file){&lt;br /&gt;        if (file != null)&lt;br /&gt;            if (file.isFile())&lt;br /&gt;                file.delete();&lt;br /&gt;            else if (file.isDirectory()){&lt;br /&gt;                File[] resources = file.listFiles();&lt;br /&gt;                if (resources.length == 0)&lt;br /&gt;                    file.delete();&lt;br /&gt;                else {&lt;br /&gt;                    for (File resource: resources)&lt;br /&gt;                        deleteResource(resource);&lt;br /&gt;                    deleteResource(file);&lt;br /&gt;                }&lt;br /&gt;        }&lt;br /&gt;    }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-5821016596005550506?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/5821016596005550506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2009/03/java-code-to-delete-entire-folder.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/5821016596005550506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/5821016596005550506'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2009/03/java-code-to-delete-entire-folder.html' title='Java code to delete entire folder structure with files in it'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-3564641904982046327</id><published>2009-03-20T12:06:00.000-05:00</published><updated>2009-03-20T12:35:06.376-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='service'/><category scheme='http://www.blogger.com/atom/ns#' term='ports'/><category scheme='http://www.blogger.com/atom/ns#' term='8080'/><category scheme='http://www.blogger.com/atom/ns#' term='8005'/><category scheme='http://www.blogger.com/atom/ns#' term='8009'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><category scheme='http://www.blogger.com/atom/ns#' term='multiple instances'/><category scheme='http://www.blogger.com/atom/ns#' term='instance'/><title type='text'>Running multiple tomcat as service on same machine?</title><content type='html'>Often while hosting tomcat server test instances, due to lack of hardware you are required to host multiple instances of your tomcat server software on same physical box. Moreover tomcat is so lightweight, it makes all the sense in the world to host multiple tomcats on the same machine. Unfortunately Tomcat installation wizard does not provide you the option to configure your "listening port" number. (Default is 8080). This is how I configured my tomcat instances:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download the zip of your favourite tomcat version from tomcat.apache.org. Do not download the exe, use a zip. This is the key!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unzip the software and copy it into multiple folders indicating multiple server instance. Use some naming convention for ease of identification. I append the http port number to directory name.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You will have to change at least 3 port numbers: 8080, 8005, 8009. (for tomcat 5.5 and 6)&lt;/li&gt;&lt;li&gt;While deciding on new port numbers, follow a naming convention. For example, if I had four instances running on the same machine, my port numbers would be: 5580/5505/5509, 6680/6605/6609 and 7780/7705/7709.&lt;/li&gt;&lt;li&gt;Now do search in multiple files and "replace all " to replace all port number references. Editplus does a good job!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Registering your servers as service: Navigate to the bin folder of your tomcat installation. Run the command &lt;span style="font-style: italic;"&gt;service.bat install &lt;service&gt;. &lt;/span&gt;It is again a good idea to append your port number in the service name. Perform this exercise with all your instances.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open your services console. You can start/stop tomcat here.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-3564641904982046327?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/3564641904982046327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2009/03/running-multiple-tomcat-as-service-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/3564641904982046327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/3564641904982046327'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2009/03/running-multiple-tomcat-as-service-on.html' title='Running multiple tomcat as service on same machine?'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-5288191751046710483</id><published>2008-10-25T20:00:00.000-05:00</published><updated>2008-10-25T23:25:21.233-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='media idea &quot;self playing media&quot; spm'/><title type='text'>Idea: Self playing media</title><content type='html'>Here is an idea which might not be new but at least not very popular.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Idea: &lt;/span&gt;&lt;br /&gt;"A framework that would allow media to play itself."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Background&lt;/span&gt;&lt;br /&gt;Media, namely music and video exist in various formats. Each format has its own advantage and drawback. While some are more popular, others little less, some are free, other propriety. These digital media files are played by a piece of software/hardware called "Media Players". Every new media player, and its newer version try to play the most recent format and provide host of other features. It is very easy to upgrade a software based media player to play that new format which promises lower compression, high quality and other goodies. But things get bad when it comes to hardware. You are always stuck with a dumb box of electronics with no build in intelligence and upgrade capability. This box can understand only those media formats that were hardwired in it at time of manufacture. And the worse thing is you payed for this dumbness which will finally end up as a landfill!!!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Idea:&lt;/span&gt;&lt;br /&gt;- Create a generic framework that would allow Self Playing Media(SPM for simplicity) files to play themselves.&lt;br /&gt;- SPM files are executables that contain inside them the actual media as well as the software(set of insructions) to decode and play the media.&lt;br /&gt;- Considering the fact that media files(at least video) easily scale from Mbs to Gbs, it should be fairly trivial to package a few KB of software that comply with a standard interface and has the capability to play just the media it is packaged with.&lt;br /&gt;- The framework I am talking about is really a thin abstraction layer between the underlying hardware and the SPM this hardware will play. In hardware based players, this framework or SPM player will exist as the hardware firmware.&lt;br /&gt;- It will provide SPM a interface to the hardware features and a area where SPM can execute its media.&lt;br /&gt;- This Framework by itself will not have the capability to play any particular format.&lt;br /&gt;- Framework will provide a screen buffer. When SPM writes itself to this screen buffer, the framework will make sure that it is rendered on the screen(TV/display).&lt;br /&gt;- Framework will also provide call back methods. For example play/pause/ffd/rwd on a player will be intercepted by the framework and passed on as method call backs to the SPM, which will convert them into appropriate actions.&lt;br /&gt;- Media publishers can now include proprietary encoding, compressions and features without worrying much about the end user hardware/software capabilities. All they need to mention is "Plays in SPM compatible player"&lt;br /&gt;- As a user of software based media player, what it really means is that you will never have to download a codec or any extra files to support the new media that you just downloaded.&lt;br /&gt;- Commercial media can have advanced features like authentication, licensing and security built in!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Analogy to this concept:&lt;/span&gt;&lt;br /&gt;- Flash movie exported as exe can play in windows based computer without requiring a browser or flash player.&lt;br /&gt;- A ziped file exported as exe can unzip itself on any windows based computer without requiring the winzip application installed.&lt;br /&gt;- A java application can play on any computer/device that supports jvm(java virtual machine a framework to run java applications)&lt;br /&gt;- Java Media Framework is an well designed framework for media in java(FYI: &lt;a href="http://www.onjava.com/pub/a/onjava/2002/10/09/jmf.html"&gt;external link&lt;/a&gt;). But JMF was build with applets and desktop based java in mind. Moreover SPM like concept is still alien.&lt;br /&gt;&lt;br /&gt;With embedded java/linux and relevant industry standards, SPM and SPM based framework is very possible with today's technology. It was actually possible yesterday had the big players taken the initiative.&lt;br /&gt;&lt;br /&gt;Imagine, if such concept had been envisioned when the first Audio/Video CD/DVD player was build, we would have (at least in theory) used a 10 year old VCD/DVD player to play the modern divx and mpeg encoded formats!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-5288191751046710483?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/5288191751046710483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2008/10/idea-self-playing-media.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/5288191751046710483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/5288191751046710483'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2008/10/idea-self-playing-media.html' title='Idea: Self playing media'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-3714741365058991455</id><published>2008-06-06T15:51:00.000-05:00</published><updated>2008-06-06T18:20:49.086-05:00</updated><title type='text'>Accessing JBoss server over the network</title><content type='html'>It is so easy to get started with jboss, but so difficult to customize it to do simple day to day stuff. For instance, you can start jboss by simply running the &lt;span style="font-style: italic;"&gt;run.bat &lt;/span&gt;and access your fav Hello World or any other sample app at &lt;span style="font-style: italic;"&gt;http://&lt;localhost&gt;:&lt;port&gt;/&lt;app-name&gt;.&lt;/app-name&gt;&lt;/port&gt;&lt;/localhost&gt;&lt;/span&gt; Then you add a cool new feature and try to share this link with your colleague/friend/boss. Since you are smart, you change localhost with your local ip. Now you email the link and wait for appreciation. But what you end up getting is a reply that says: "this link doesn't work!" .  Welcome to the world of jboss where you literally pay a price for using open source s.w. in form of time spend to find the right configuration.&lt;br /&gt;&lt;br /&gt;By default jboss will accept all incoming requests if the domain name is localhost or ip 127.0.0.1. Anything other than this will throw a 404. There are two ways to get around this:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. -b flag&lt;br /&gt;&lt;/span&gt;When you run jboss, run it with the -b flag. Your command like might look something like this:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&gt;run.bat -b 0.0.0.0&lt;/span&gt;&lt;br /&gt;This will instruct jboss to accept incoming requests from any of its domain controller or ip addresses. You can also do ipconfig on your server box and specify the server's Ip address in place of 0.0.0.0.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. jboss.bind.address&lt;/span&gt;&lt;br /&gt;Above method will not work if you are running jboss as windows service. In that case you will have to explicitly configure this option in a property file.&lt;br /&gt;locate the file: &lt;span style="font-style: italic;"&gt;...\default\conf\jndi.properties&lt;br /&gt;&lt;/span&gt;Add the following line to it: jboss.bind.address=&lt;your.server.ip.address&gt;&lt;br /&gt;&lt;br /&gt;Finally, you can check the jmx console to see if the changes are accepted!&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/your.server.ip.address&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-3714741365058991455?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/3714741365058991455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2008/06/accessing-jboss-server-over-network.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/3714741365058991455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/3714741365058991455'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2008/06/accessing-jboss-server-over-network.html' title='Accessing JBoss server over the network'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-116802765902245263</id><published>2007-01-05T13:55:00.000-06:00</published><updated>2007-01-05T14:07:39.306-06:00</updated><title type='text'>like jira but free!</title><content type='html'>Are you working with open source tools?&lt;br /&gt;Is your configuration management tool svn/subversion?&lt;br /&gt;If you answer yes, then you might consider using jira and twiki in your project.&lt;br /&gt;Jira, a very nice tool to use comes with a price tag.&lt;br /&gt;So for users like me, who love the word "free" aka "open source" (better then free), here is a tool that offer many jira like features while integrating a wiki in it.&lt;br /&gt;&lt;br /&gt;Here is a quick look at features:&lt;br /&gt;- wiki like collaboration&lt;br /&gt;- subversion integration&lt;br /&gt;- Ticket/bug tracking&lt;br /&gt;&lt;br /&gt;&lt;a href="http://trac.edgewall.org/#WelcometotheTracProject."&gt;@link to website&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dev.rubyonrails.org/"&gt;@ rubyonrails uses it&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-116802765902245263?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/116802765902245263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2007/01/like-jira-but-free.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116802765902245263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116802765902245263'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2007/01/like-jira-but-free.html' title='like jira but free!'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-116447944261793535</id><published>2006-11-25T11:02:00.000-06:00</published><updated>2006-12-28T11:07:41.403-06:00</updated><title type='text'>Tools to clean/analyse your junk code</title><content type='html'>While we all write the "best code in the world", only few of us actually take the pain review/analyse it for improvements(for the obvious reason that best cannot be improved!).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fortunately java world provide a bunch of tools to analyze your source code and provide recommendations to clean them. Eclipse and java development has evolved to a point where most of the development related activities can be acheived from a single IDE with plugins.&lt;br /&gt;&lt;br /&gt;Source code analyzers typically work using a set of rules. These rules can be modified, changed, etc based upon requirements. Every tool comes bundled with its own set of rules. Rules belong to categories. You can execute rules/categories selectively or all of them on your source code. Recommendations are then presented in tabular form. You then have a choice of fixing it on your own or allowing the tool to fix it. Caution: Some rules might alter the logic of your source code, so make sure you are aware of the changes before you execute them. Popularity of a tool depends on the effectiveness of the rules and the number of rules in it.&lt;br /&gt;&lt;br /&gt;Here are some interesting tools:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Eclipse Refactor: &lt;/span&gt;&lt;br /&gt;Right click your source in eclipse and check the options under "source" and "refactor". You can do lot of things like "correct indentation", "format" and other cleanups. This is a good way to make your code look clean and green.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pmd.sourceforge.net/"&gt;PMD:&lt;/a&gt;(free)&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;PMD scans Java source code and looks for potential problems like:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Possible bugs - empty try/catch/finally/switch statements&lt;/li&gt;&lt;li&gt;Dead code - unused local variables, parameters and private methods&lt;/li&gt;&lt;li&gt;Suboptimal code - wasteful String/StringBuffer usage&lt;/li&gt;&lt;li&gt;Overcomplicated expressions - unnecessary if statements, for loops that could be while loops&lt;/li&gt;&lt;li&gt;Duplicate code - copied/pasted code means copied/pasted bugs&lt;/li&gt;&lt;/ul&gt;You can either use the default(around 200) rules or write your own rules using xpath/java.&lt;br /&gt;&lt;/blockquote&gt;&lt;a href="http://www.appperfect.com/products/ca.html"&gt;&lt;span style="font-weight: bold;"&gt;AppPerfect&lt;/span&gt; &lt;/a&gt;(commercial)&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;    Applies over 600 high-value coding rules, including optimization, portability, i18n and coding standards, while analyzing your source code&lt;/li&gt;&lt;li&gt;    Automatically fixes many of the violations&lt;/li&gt;&lt;li&gt;    Support for JDK 1.5-specific syntax and keywords&lt;/li&gt;&lt;li&gt;    Comprehensive reports including custom report designer and export of reports in PDF, Excel and HTML formats&lt;/li&gt;&lt;li&gt;    Command line invocation to integrate with build scripts (including ANT-based built scripts)&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-131.html"&gt;&lt;span style="font-weight: bold;"&gt;Eclipse Metrics&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;(free)&lt;br /&gt;Checks for:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;      &lt;a href="http://eclipse-metrics.sourceforge.net/descriptions/CyclomaticComplexity.html" title="Description of McCabe's Cyclomatic Complexity metric"&gt;McCabe's Cyclomatic        Complexity&lt;/a&gt;     &lt;/li&gt;&lt;li&gt;      &lt;a href="http://eclipse-metrics.sourceforge.net/descriptions/EfferentCouplings.html" title="Description of Efferent Couplings metric"&gt;Efferent Couplings&lt;/a&gt;     &lt;/li&gt;&lt;li&gt;      &lt;a href="http://eclipse-metrics.sourceforge.net/descriptions/LackOfCohesionInMethods.html" title="Description of Lack of Cohesion in Methods metric"&gt;Lack of Cohesion in        Methods&lt;/a&gt;     &lt;/li&gt;&lt;li&gt;      &lt;a href="http://eclipse-metrics.sourceforge.net/descriptions/LinesOfCode.html" title="Description of Lines Of Code in Method metric"&gt; Lines Of Code in Method&lt;/a&gt;     &lt;/li&gt;&lt;li&gt;      &lt;a href="http://eclipse-metrics.sourceforge.net/descriptions/NumberOfFields.html" title="Description Of Number Of Fields metric"&gt; Number Of Fields&lt;/a&gt;     &lt;/li&gt;&lt;li&gt;      &lt;a href="http://eclipse-metrics.sourceforge.net/descriptions/NumberOfLevels.html" title="Description of Number Of Levels metric"&gt; Number Of Levels&lt;/a&gt;     &lt;/li&gt;&lt;li&gt;      &lt;a href="http://eclipse-metrics.sourceforge.net/descriptions/NumberOfParameters.html" title="Description of Number Of Parameters metric"&gt;Number Of Parameters&lt;/a&gt;     &lt;/li&gt;&lt;li&gt;      &lt;a href="http://eclipse-metrics.sourceforge.net/descriptions/NumberOfStatements.html" title="Description of Number Of Statements metric"&gt;Number Of Statements&lt;/a&gt;     &lt;/li&gt;&lt;li&gt;      &lt;a href="http://eclipse-metrics.sourceforge.net/descriptions/WeightedMethodsPerClass.html" title="Description of Weighted Methods Per Class metric"&gt;Weighted Methods Per Class&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other links: &lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.eclipseplugincentral.com/Web_Links-index-req-viewcatlink-cid-14.html"&gt;@Eclipse source code analyzer&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/dotnet/Cyclomatic_Complexity.asp"&gt;@Cyclomatic complexity&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mvn-author-plug.sourceforge.net/"&gt;@Maven plugin for reporting&lt;/a&gt;&lt;br /&gt;[Checkstyle, FindBugs, PMD, Lint4j, JavaNCSS, JCoverage, Cobertura, Emma, Clover, Tasks List]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-116447944261793535?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/116447944261793535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/11/tools-to-cleananalyse-your-junk-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116447944261793535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116447944261793535'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/11/tools-to-cleananalyse-your-junk-code.html' title='Tools to clean/analyse your junk code'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-116414169137664025</id><published>2006-11-21T14:38:00.000-06:00</published><updated>2006-11-21T14:41:32.963-06:00</updated><title type='text'>"do you know"</title><content type='html'>All static methods are automatically final!&lt;br /&gt;&lt;br /&gt;Instances of the class Class represent classes and interfaces in a running Java application.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Every array also belongs to a class that is reflected as a Class object that is shared by all arrays with the same element type and number of dimensions. The primitive Java types (boolean, byte, char, short, int, long, float, and double), and the keyword void are also represented as Class objects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-116414169137664025?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/116414169137664025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/11/do-you-know.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116414169137664025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116414169137664025'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/11/do-you-know.html' title='&quot;do you know&quot;'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-116414124182619583</id><published>2006-11-21T14:33:00.000-06:00</published><updated>2006-11-21T14:34:03.620-06:00</updated><title type='text'>Changing log4j properties at run time</title><content type='html'>I had a requirement where the log4j property file generated should have a unique id appended to it. This id is generated inside the running application.  One simple way of doing it is: Make use of system variables inside the log4j properties file:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;log4j.appender.R.File=&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;d:/mylogs/servicelogger[%d{MYAPPENDER}].log&lt;br /&gt;&lt;/span&gt;After you have done this, make sure you set &lt;span style="font-style: italic;"&gt;MYAPPENDER  &lt;/span&gt;in the system environment.&lt;br /&gt;&lt;br /&gt;Another way of doing this is: read the log4j properties inside the application, locate the specific property(in our case: &lt;span style="font-style: italic;"&gt;log4j.appender.R.File). &lt;/span&gt;Change this property and instantiate log4j using this new set of properties. Here is the code to do this:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            prop.load(new FileInputStream(logPropertyFile));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            String userLogFName = (String)prop.getProperty("log4j.appender.R.File");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            prop.remove("log4j.appender.R.File");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            prop.setProperty("log4j.appender.R.File", newFName);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            org.apache.log4j.PropertyConfigurator.configure(prop);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            this.serviceLogger = new   &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Log4JLogger(org.apache.log4j.Logger.getLogger(DTM_LOG4J_CATEGORY_NAME));&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-116414124182619583?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/116414124182619583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/11/changing-log4j-properties-at-run-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116414124182619583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116414124182619583'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/11/changing-log4j-properties-at-run-time.html' title='Changing log4j properties at run time'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-116346045844660875</id><published>2006-11-13T17:27:00.001-06:00</published><updated>2009-06-04T12:58:13.784-05:00</updated><title type='text'>soapUI: Tool to ease your Webservices development</title><content type='html'>I have often used altova tools to ease my XML and webservices(SOAP) development. Also, bea users have witnessed how easy it is to use an IDE to simplify rudimentary webservices/soap/WSDL related tasks. Well, soapui makes life much simpler for SOA developers. Here is quick look at soapUI features: &lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;p&gt;soapUI has a broad set of features that greatly ease the development, integration and testing of webservices;&lt;/p&gt;&lt;div class="subsection"&gt;&lt;a name="Web_Service_Inspection_and_Invocation"&gt;&lt;/a&gt;&lt;h3&gt;Web Service Inspection and Invocation&lt;/h3&gt;&lt;table class="columnsTable" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="firstColumn" align="" bgcolor="white" valign="top" width=""&gt;&lt;div&gt;   The following features for inspecting and invoking web services are currently available:   &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/interfaces.html"&gt;Imported WSDL:s&lt;/a&gt; are shown as a hierarchy view of interfaces (PortTypes) and their operations&lt;/li&gt;&lt;li&gt;Automatic generation of &lt;a href="http://www.soapui.org/userguide/requests.html"&gt;requests&lt;/a&gt; from associated schema (both with/without optional schema elements)&lt;/li&gt;&lt;li&gt;Manage unlimited number of requests for each operation&lt;/li&gt;&lt;li&gt;Manage multiple &lt;a href="http://www.soapui.org/userguide/interfaces.html#Service_Endpoints"&gt;service endpoints&lt;/a&gt; for each interface&lt;/li&gt;&lt;li&gt;Support for Basic, Digest, WS-Security and NTLM &lt;a href="http://www.soapui.org/userguide/requests.html#Authentication"&gt;authentication&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Support for &lt;a href="http://www.soapui.org/userguide/attachments.html"&gt;Attachments&lt;/a&gt;; MTOM, SOAP with Attachments, Inline files&lt;/li&gt;&lt;li&gt;Support for both SOAP 1.1 and SOAP 1.2&lt;/li&gt;&lt;li&gt;Syntax highlighting editor with undo/redo, formatting, etc.&lt;/li&gt;&lt;li&gt;HTTP wire log shows actual requests sent and received&lt;/li&gt;&lt;/ul&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class="lastColumn" align="right" bgcolor="white" valign="top" width=""&gt;&lt;a href="http://www.soapui.org/images/screenshot1.gif" target="_new"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="subsection"&gt;&lt;a name="Web_Service_Development_and_Validation"&gt;&lt;/a&gt;&lt;h3&gt;Web Service Development and Validation&lt;/h3&gt;&lt;table class="columnsTable" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="firstColumn" align="" bgcolor="white" valign="top" width=""&gt;&lt;div&gt;   The following features are available for development of Web Services:   &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/tools/topdown.html"&gt;Generate both Server and Client code&lt;/a&gt; for some of the most popular WebService   toolkits; JBossWS, JWSDP, Axis 1, Axis 2, XFire, .NET and GSoap&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/tools/bottomup.html"&gt;Generate WSDLs&lt;/a&gt; from existing java-code for JBossWS&lt;/li&gt;&lt;li&gt;Generate &lt;a href="http://www.soapui.org/userguide/tools/topdown.html"&gt;XML-Binding classes&lt;/a&gt; for JAXB and XMLBeans&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/commandline/toolrunner.html"&gt;Command-line support&lt;/a&gt; for all generation tools for easy integration    in continuous integration/build environments&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/tools/wsi.html"&gt;Validate Web Service Definitions&lt;/a&gt; and messages against the WS-I Basic Profile&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/requests.html#Message_Validation"&gt;Validate requests and response bodies&lt;/a&gt; against their schema definition&lt;/li&gt;&lt;li&gt;IDE-plugins are available for &lt;a href="http://www.soapui.org/eclipse/index.html"&gt;eclipse&lt;/a&gt;, &lt;a href="http://www.soapui.org/intellij/index.html"&gt;IntelliJ IDEA&lt;/a&gt;,    &lt;a href="http://www.soapui.org/netbeans/index.html"&gt;NetBeans&lt;/a&gt; and a specialized eclipse-plugin for &lt;a href="http://www.soapui.org/jbossws/index.html"&gt;JBossWS&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class="lastColumn" align="right" bgcolor="white" valign="top" width=""&gt;&lt;a href="http://www.soapui.org/images/screenshot4.gif" target="_new"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="subsection"&gt;&lt;a name="Web_Service_Functional_Testing"&gt;&lt;/a&gt;&lt;h3&gt;Web Service Functional Testing&lt;/h3&gt;&lt;table class="columnsTable" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="firstColumn" align="" bgcolor="white" valign="top" width=""&gt;&lt;div&gt;   The following features for functional testing web services are currently available:   &lt;ul&gt;&lt;li&gt;Create &lt;a href="http://www.soapui.org/userguide/functional/index.html"&gt;TestSuites/TestCases&lt;/a&gt; containing requests to imported Web Service&lt;/li&gt;&lt;li&gt;SOAP Response can be asserted for associated &lt;a href="http://www.soapui.org/userguide/functional/response-assertions.html"&gt;schema compliance, xpath expression content matching&lt;/a&gt;, etc..&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/functional/propertytransfers.html"&gt;Values can be transferred&lt;/a&gt; from a between requests using XPath expressions (for transfer of for example sessionIds)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/functional/gotostep.html"&gt;XPath-based conditions&lt;/a&gt; can be used to control TestCase execution paths&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/functional/groovystep.html"&gt;Groovy Scripts&lt;/a&gt; can be added for arbitrary functionality&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/functional/propertiesstep.html"&gt;Test Properties&lt;/a&gt; can be defined and loaded from external files during execution&lt;/li&gt;&lt;li&gt;Easy changing of testcase endpoints/credentials allows entire testcases/suites to run against multiple servers&lt;/li&gt;&lt;li&gt;Tests/Testcases can be run both in soapUI or through maven or &lt;a href="http://www.soapui.org/userguide/commandline/functional.html"&gt;from command-line&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;   &lt;/div&gt;&lt;/td&gt;&lt;td class="lastColumn" align="right" bgcolor="white" valign="top" width=""&gt;&lt;a href="http://www.soapui.org/images/screenshot2.gif" target="_new"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;a name="Web_Service_Load_Testing"&gt;&lt;/a&gt;&lt;h3&gt;Web Service Load Testing&lt;/h3&gt;&lt;div&gt;   The following features for load testing web services are currently available:   &lt;ul&gt;&lt;li&gt;Create any number of &lt;a href="http://www.soapui.org/userguide/loadtest/index.html"&gt;LoadTests&lt;/a&gt; for a TestCase&lt;/li&gt;&lt;li&gt;Choose between configurable &lt;a href="http://www.soapui.org/userguide/loadtest/configuration.html"&gt;Load Strategies, Limits and Thread-counts&lt;/a&gt;    and analyze how web services perform under a variety of scenarios&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/loadtest/assertions.html"&gt;Assert LoadTest results&lt;/a&gt; continuously for performance and functionality surveillance&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.soapui.org/userguide/loadtest/diagrams.html"&gt;Behavioural Diagrams&lt;/a&gt; allow realtime analysis of performance statistics&lt;/li&gt;&lt;li&gt;Export results, logs, diagram data, etc, for external processing&lt;/li&gt;&lt;li&gt;Run multiple LoadTests interactively in soapUI or through maven or &lt;a href="http://www.soapui.org/userguide/commandline/loadtest.html"&gt;from command-line&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.soapui.org/features.html"&gt;@link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-116346045844660875?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/116346045844660875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/11/soapui-tool-to-ease-your-webservices.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116346045844660875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116346045844660875'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/11/soapui-tool-to-ease-your-webservices.html' title='soapUI: Tool to ease your Webservices development'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-116067293135434244</id><published>2006-10-12T12:06:00.000-05:00</published><updated>2006-10-12T12:08:51.636-05:00</updated><title type='text'>java: Always override hashCode() when you override equals</title><content type='html'>&lt;p style="font-weight: bold;"&gt;&lt;a name="N1012B"&gt;&lt;span class="smalltitle"&gt;Why override equals() and hashCode()?&lt;/span&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;What would happen if &lt;code&gt;Integer&lt;/code&gt; did not override &lt;code&gt;equals()&lt;/code&gt; and &lt;code&gt;hashCode()&lt;/code&gt;?  Nothing, if we never used an &lt;code&gt;Integer&lt;/code&gt; as a key in a &lt;code&gt;HashMap&lt;/code&gt; or other hash-based collection.  However, if we were to use such an &lt;code&gt;Integer&lt;/code&gt; object for a key in a &lt;code&gt;HashMap&lt;/code&gt;, we would not be able to reliably retrieve the associated value, unless we used the exact same &lt;code&gt;Integer&lt;/code&gt; instance in the &lt;code&gt;get()&lt;/code&gt; call as we did in the &lt;code&gt;put()&lt;/code&gt; call. This would require ensuring that we only use a single instance of the &lt;code&gt;Integer&lt;/code&gt; object corresponding to a particular integer value throughout our program. Needless to say, this approach would be inconvenient and error prone. &lt;/p&gt; &lt;p&gt; The interface contract for &lt;code&gt;Object&lt;/code&gt; requires that if two objects are equal according to &lt;code&gt;equals()&lt;/code&gt;, then they must have the same &lt;code&gt;hashCode()&lt;/code&gt; value.  Why does our root object class need &lt;code&gt;hashCode()&lt;/code&gt;, when its discriminating ability is entirely subsumed by that of &lt;code&gt;equals()&lt;/code&gt;?  The &lt;code&gt;hashCode()&lt;/code&gt; method exists purely for efficiency. The Java platform architects anticipated the importance of hash-based collection classes -- such as &lt;code&gt;Hashtable&lt;/code&gt;, &lt;code&gt;HashMap&lt;/code&gt;, and &lt;code&gt;HashSet&lt;/code&gt; -- in typical Java applications, and comparing against many objects with &lt;code&gt;equals()&lt;/code&gt; can be computationally expensive.  Having every Java object support &lt;code&gt;hashCode()&lt;/code&gt; allows for efficient storage and retrieval using hash-based collections. &lt;/p&gt; &lt;/blockquote&gt;&lt;a href="http://www-128.ibm.com/developerworks/java/library/j-jtp05273.html"&gt;@article&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-116067293135434244?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/116067293135434244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/10/java-always-override-hashcode-when-you.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116067293135434244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/116067293135434244'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/10/java-always-override-hashcode-when-you.html' title='java: Always override hashCode() when you override equals'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115748540559491598</id><published>2006-09-05T14:43:00.000-05:00</published><updated>2009-05-14T10:13:39.617-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='malware'/><category scheme='http://www.blogger.com/atom/ns#' term='spybot'/><category scheme='http://www.blogger.com/atom/ns#' term='spyware'/><category scheme='http://www.blogger.com/atom/ns#' term='anti hacking tools'/><title type='text'>Troubled with malware and spywares?</title><content type='html'>Here are two more weapons for your Computer security arsenal:&lt;br /&gt;Prevx&lt;br /&gt;CCleaner&lt;br /&gt;&lt;br /&gt;I have found both these tools extremely helpful especially if your computer is affected by popups, malwares, spyware, etc. &lt;span style="font-style: italic;"&gt;Prevx &lt;/span&gt;is by far the best anti-malware, anti-spyware tool I have ever used. Its much better the spybot and likes. What makes &lt;span style="font-style: italic;"&gt;prevx &lt;/span&gt;a better tool is the fact that it is not very popular yet. Remember, hackers will try to hack into the most popular and widely used software. The only drawback of prevx is that it is not free. You can try the full version free for 30 days. After 30 days only the detection part of the s.w. will be enabled.&lt;br /&gt;&lt;br /&gt;CCleanse is another handy tool and yes it is free! This is from their website: &lt;blockquote&gt;&lt;br /&gt;CCleaner is a &lt;b&gt;freeware&lt;/b&gt; system optimization and privacy tool.     It removes unused files from your system - allowing Windows to run faster     and freeing up valuable hard disk space.     It also cleans traces of your online activities such as your Internet history.     But the best part is that it's fast (normally taking less that a second to run) and contains     NO Spyware or Adware! :)&lt;/blockquote&gt;So if you suspect malicious contents on your computer, immediately install and run these tools! And if you have not already retired your IE browser, do so! Majority of attacks happen thro your internet browser. So it is extremely important to use a safe browser. I will strongly recommend Mozilla Firefox over IE. (Do not install extensions if you care for the startup speed) You can stop most if not all adware/spyware attacks if you switch to Firefox. Firefox is the way to go!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.prevx.com/"&gt;@prevx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ccleaner.com/"&gt;@Ccleaner&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mozilla.com/firefox/"&gt;@Firefox&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More:&lt;br /&gt;&lt;a href="http://www.safer-networking.org/en/home/index.html"&gt;@spybot search and destroy&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115748540559491598?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115748540559491598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/09/troubled-with-malware-and-spywares.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115748540559491598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115748540559491598'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/09/troubled-with-malware-and-spywares.html' title='Troubled with malware and spywares?'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115748440970802367</id><published>2006-09-05T14:14:00.000-05:00</published><updated>2006-09-05T14:26:50.020-05:00</updated><title type='text'>Redirecting eclipse console output to log file</title><content type='html'>There is a way to redirect the console text into a log/text file under eclipse. If you are running a web-based application, possibility is that you already have a .log file configured some where. You can simply open this log file and look for messages.&lt;br /&gt;&lt;br /&gt;In case of pure java application however, most of the output is showin in the eclipse console unless you configure a redirect.&lt;br /&gt;&lt;br /&gt;Pull up the &lt;span style="font-style: italic;"&gt;"Debug" &lt;/span&gt;or &lt;span style="font-style: italic;"&gt;"Run" &lt;/span&gt;dialogs where you configured your &lt;span style="font-style: italic;"&gt;main class&lt;/span&gt;. Select the java application you want to run. If you dont have an entry under &lt;span style="font-style: italic;"&gt;"java applications"&lt;/span&gt;, you might have to create one. On the right hand side of the screen, select the &lt;span style="font-style: italic;"&gt;"Common" &lt;/span&gt;tab. Check the &lt;span style="font-style: italic;"&gt;"File" checkbox &lt;/span&gt;and mention a physical path+filename in the input textbox. You  are all set! Open the specified file in your fav text editor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115748440970802367?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115748440970802367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/09/redirecting-eclipse-console-output-to.html#comment-form' title='37 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115748440970802367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115748440970802367'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/09/redirecting-eclipse-console-output-to.html' title='Redirecting eclipse console output to log file'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461442.post-115628750398063829</id><published>2006-08-22T17:13:00.000-05:00</published><updated>2007-02-13T10:08:16.973-06:00</updated><title type='text'>The non OO part of J2EE</title><content type='html'>GUI development has always been a pain. Looking back, the most commercially successfull, and easy to use tool for GUI based application development was Visual Basic. It had an easy form creator where you can drag drop your widgets and create your own application UI in minutes. Once you are done with it, you can simply tie some application logic to each form button.. u have your application ready!&lt;br /&gt;&lt;br /&gt;Then came the web based era of application development where UI was interpreted as HTML and rendered by a web browser.  Application logic would run decoupled in a middleware server. Microsoft was quick to launch its new technology based on IIS(web server) called ASP.&lt;br /&gt;&lt;br /&gt;java kept developing in the background. Java's concept was simple: Object Oriented, open source and platform independent. For UI based application development, java had awt and then swing. Everything was object oriented.. Eventually swing evolved, new tools were introduced that made it easy to develop forms using java-swing(vb style). In the mean time Java based web technology(asp or .net equivalent) developed independent to swing into the massive J2EE framework. J2EE does everything one would expect from a good middleware framework but for the UI part.&lt;br /&gt;&lt;br /&gt;I must say Java couldnt keep its promise of "object orinted" when it comes to the web/html part of J2EE. JSP(an answer to asp) was deviced as java embeded in html which will generate html based UI's at run time to be displayed in the user browser. JSP is (html + java) highly non object oriented. JSP discussion is incomplete without the underlying java counter part: servlets. Servlets are object oriented but I must say it is difficult if not impossible to design UI based forms using servlets. The main problem here is "browser based html" and the decoupling between browser and the middle ware application.&lt;br /&gt;&lt;br /&gt;This complexity was addressed using different design patterns, frameworks etc. For instance STRUTS the popular framework to seperate UI, navigation and business logic. And then JSF to remove the disadvantages of STRUTS and to provide a better standard for tool developers. Its all good but where are the objects? For instance, JSF which defines user element placement has become more XML oriented then object oriented.&lt;br /&gt;&lt;br /&gt;With evey new standard and framework introduction in the J2EE(web tier) world, we are only moving away from complete object orientation. If you want to know what an complete object oriented application is, and what the advantages are, then just create an application using Java-Swing. In the java-swing world you can create the entire application using the plane old java classes(completely OO) and may be few property files to store customaziable information external to the application code!&lt;br /&gt;&lt;br /&gt;So web part of J2EE is bad? I dont have an answer. This is just an evolution, it had to evolve this way. May be the sane thoughts tossed during the evolution didnt win the votes of sponsorers over what is practical.&lt;br /&gt;&lt;br /&gt;I would like to propose here one such "sane" but not very practical thought for web based appliaction development:&lt;br /&gt;&lt;blockquote&gt;Create your entire application as an pure java-swing based app. Then create a layer on top of it which will convert the java based swing forms into browser based html pages. Let this layer take care of navigation and other other conversion logistics. We have a simplified framework! &lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I ran across an commerical application that does just this!&lt;br /&gt;&lt;a href="http://www.creamtec.com/webcream/"&gt;@link to webcreme&lt;/a&gt;&lt;br /&gt;This might sound more like an integration tool that must be used to expose the existing java application to web based clients.&lt;br /&gt;&lt;br /&gt;But if this concept is explored properly and if the application is designed properly, I think we have a new era of Java web based development.&lt;br /&gt;&lt;br /&gt;Feb 13:&lt;br /&gt;&lt;a href="http://code.google.com/webtoolkit/"&gt;@GWT&lt;/a&gt;&lt;br /&gt;&lt;a href="http://j2s.sourceforge.net/index.html"&gt;@Java2Script, RCP to RIA&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115628750398063829?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115628750398063829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/08/non-oo-part-of-j2ee.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115628750398063829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115628750398063829'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/08/non-oo-part-of-j2ee.html' title='The non OO part of J2EE'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115627749061467982</id><published>2006-08-22T15:09:00.000-05:00</published><updated>2006-08-22T15:11:31.056-05:00</updated><title type='text'>javadocs in Windows help format?</title><content type='html'>Ever thought of converting or reading your javadocs in a PDF or windows help file(chm)? Not a bad idea hun? Well check this:&lt;br /&gt;&lt;a href="http://www.doc-o-matic.com/purchase.html"&gt;@Commercial tool that does it all&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.allimant.org/javadoc/index.php"&gt;@javadocs in chm&lt;/a&gt;&lt;br /&gt;[tbd]@free tool&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115627749061467982?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115627749061467982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/08/javadocs-in-windows-help-format.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115627749061467982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115627749061467982'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/08/javadocs-in-windows-help-format.html' title='javadocs in Windows help format?'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115557268822149846</id><published>2006-08-14T11:22:00.000-05:00</published><updated>2006-08-14T11:24:48.580-05:00</updated><title type='text'>Free enterprise collaboration platform: TWiki</title><content type='html'>&lt;h2&gt;What is TWiki?&lt;/h2&gt;  &lt;blockquote&gt;&lt;p&gt;TWiki, a flexible, powerful, and easy to use enterprise collaboration platform and knowledge management system. It is a  &lt;a href="http://twiki.org/cgi-bin/view/Codev/StructuredWiki"&gt;Structured Wiki&lt;/a&gt;, typically  used to run a project development space, a document management system, a  knowledge base, or any other groupware tool, on an intranet or on the  internet. Web content can be created collaboratively by using just a  browser. Users without programming skills can create web applications.  Developers can extend the functionality of TWiki with Plugins.    &lt;a href="mailto:?Subject=Interesting%20TWiki.org%20web%20site&amp;Body=Hi%2C%0D%0A%0D%0AI%20think%20you%27ll%20find%20the%20TWiki.org%20web%20site%20interesting.%0D%0Ahttp://TWiki.org/%20offers%20free%20software%20where%20anyone%20can%0D%0Acreate%20web%20pages%20by%20just%20using%20a%20browser.%20Check%20it%20out%21%0D%0A%0D%0ARegards%2C%0D%0A"&gt;&lt;/a&gt;   &lt;/p&gt; &lt;p&gt; &lt;i&gt;"We use TWiki internally to manage documentation and project planning  for our products."&lt;/i&gt; &lt;a href="http://twiki.org/cgi-bin/view/Main/TWikiSuccessStoryOfYahoo"&gt;said&lt;/a&gt;  Eric Baldeschwieler, Director of Software Development of Yahoo! &lt;i&gt;"Our development team includes hundreds of people in various locations  all over the world, so web collaboration is VERY important to us. TWiki has  changed the way we run meetings, plan releases, document our product and  generally communicate with each other. We're great fans of your work!"&lt;/i&gt;   &lt;/p&gt; &lt;/blockquote&gt;&lt;a href="http://twiki.org/"&gt;@link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115557268822149846?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115557268822149846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/08/free-enterprise-collaboration-platform.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115557268822149846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115557268822149846'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/08/free-enterprise-collaboration-platform.html' title='Free enterprise collaboration platform: TWiki'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115533699487428031</id><published>2006-08-11T17:50:00.000-05:00</published><updated>2006-08-11T17:56:35.493-05:00</updated><title type='text'>Project build system</title><content type='html'>Krysalis Centipede is a project build system based on Apache Ant.&lt;br /&gt;It's made to be easy, extensible and powerful.&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;You can just grab it and start building your project. Anything that is needed for a start is there, and the creation of personalized build targets is straightforward, because it's based on plain Ant. Centipede is un-intrusive, and gives you power without taking any. It also has an interactive target facility, so that the user can just run "build" and choose from a menu.&lt;/blockquote&gt;Link: &lt;a href="http://www.krysalis.org/centipede/"&gt;@Centipede&lt;/a&gt;&lt;br /&gt;Other links: &lt;a aiotarget="false" aiotitle="@Maven s" href="http://maven.apache.org/what-is-maven.html"&gt;@Maven&lt;/a&gt; | &lt;a href="http://www.atlassian.com/software/jira/"&gt;@Jira&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115533699487428031?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115533699487428031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/08/project-build-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115533699487428031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115533699487428031'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/08/project-build-system.html' title='Project build system'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115515587086506741</id><published>2006-08-09T15:34:00.000-05:00</published><updated>2006-08-09T15:41:24.466-05:00</updated><title type='text'>Text based graphics: figlet</title><content type='html'>Ever wonder where the Graphics fonts made out of text come from while chatting in irc or channels alike?&lt;br /&gt;Obviously thro s.w. Unless someone is sitting in N. pole providing his service @ 1c per character! :D&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.figlet.org/"&gt;@link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115515587086506741?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115515587086506741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/08/text-based-graphics-figlet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115515587086506741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115515587086506741'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/08/text-based-graphics-figlet.html' title='Text based graphics: figlet'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115514772179701471</id><published>2006-08-09T13:18:00.000-05:00</published><updated>2006-08-09T13:22:02.156-05:00</updated><title type='text'>How to run java application as Windows Service?</title><content type='html'>Procrun is the answer. And thankfully this product is from the open source company Apache.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Procrun &lt;/span&gt;is a set of libraries and applications for making Java applications to run on WIN32 much easier.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Prunsrv &lt;/span&gt;is a service application for running applications as services. It can convert any application to run as a service.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;b style="font-style: italic;"&gt;Prunmgr&lt;/b&gt;&lt;span style="font-style: italic;"&gt; is a GUI application for monitoring and configuring procrun     services.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;FYI: Apache Tomcat service in win32 uses the procrun service.&lt;br /&gt;&lt;br /&gt;@link&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115514772179701471?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115514772179701471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/08/how-to-run-java-application-as-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115514772179701471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115514772179701471'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/08/how-to-run-java-application-as-windows.html' title='How to run java application as Windows Service?'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115464088605482962</id><published>2006-08-03T16:33:00.000-05:00</published><updated>2006-08-03T16:48:26.426-05:00</updated><title type='text'>Insert invisible frame at will</title><content type='html'>Ever thought of inseting a "hidden" frame in your page, where you can do magical things? Well we all do. Invisible frame is the magic wand for java developers. Well, now you can keep your source(html, jsp, jsf, etc) clean and insert this frame with a function call.&lt;br /&gt;&lt;br /&gt;Code below will not only insert a invisible frame, but it will also return you its handle. If you wish you can pass a frame id of your choice, or be careless and the code will generate one.&lt;br /&gt;&lt;xmp&gt;&lt;br /&gt;   /*&lt;br /&gt;   *Add a invisible frame in your document and get a handle to it.&lt;br /&gt;   *It is not necessary to specify the frame id.&lt;br /&gt;   */&lt;br /&gt;   var frameCount = 0;&lt;br /&gt;   function getInvisibleFrameHandle(frameId)&lt;br /&gt;   {&lt;br /&gt;       var frameName,html;&lt;br /&gt;&lt;br /&gt;       if (!frameId)&lt;br /&gt;           frameName="_invisibleFrame__" + (frameCount++);&lt;br /&gt;       else&lt;br /&gt;           frameName = frameId;&lt;br /&gt;       if (document.getElementById(frameName))&lt;br /&gt;           return document.frames[frameName];&lt;br /&gt;       else&lt;br /&gt;           appendDocument("&lt;iframe id=" + frameName +             " style="visibility: visible; height: 0pt; width: 100%;"&gt;");&amp;amp;amp;lt;br&amp;amp;amp;gt;        return document.frames[frameName];&amp;amp;amp;lt;br&amp;amp;amp;gt;    }   &amp;amp;amp;lt;/xmp&amp;amp;amp;gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;/xmp&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115464088605482962?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115464088605482962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/08/insert-invisible-frame-at-will_03.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115464088605482962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115464088605482962'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/08/insert-invisible-frame-at-will_03.html' title='Insert invisible frame at will'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115464034124229338</id><published>2006-08-03T16:22:00.000-05:00</published><updated>2006-08-03T16:25:41.343-05:00</updated><title type='text'>A generic js function to append text in HTML</title><content type='html'>Here is a simple js function to append whatever you feel like after your document(html) is loaded in the user browser.&lt;br /&gt;&lt;br /&gt;       &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;/*&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*Append HTML to document.&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*WORKS IN ALL BROWSERS&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(63, 95, 191);"&gt;*/&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;                                        &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;function &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;appendDocument(html)&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;{&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;&lt;span style=""&gt;  &lt;/span&gt;if &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;(document.all)&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;document.body.insertAdjacentHTML(&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(142, 0, 255);"&gt;'beforeEnd'&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;, html);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;else if &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;(document.createRange) &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;{&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;&lt;span style=""&gt;      &lt;/span&gt;var &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;range = document.createRange();&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;range.setStartAfter(document.body.lastChild);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;var &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;docFrag = range.createContextualFragment(html);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;document.body.appendChild(docFrag);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;}&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;&lt;span style=""&gt;  &lt;/span&gt;else if&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; (document.layers) &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;{&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;&lt;span style=""&gt;      &lt;/span&gt;var &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;l = &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;Layer(window.innerWidth);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;l.document.open();&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;l.document.write(html);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;l.document.close();&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;l.top = document.height;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;document.height += l.document.height;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;l.visibility = &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(142, 0, 255);"&gt;'show'&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;}&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&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/8461442-115464034124229338?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115464034124229338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/08/generic-js-function-to-append-text-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115464034124229338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115464034124229338'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/08/generic-js-function-to-append-text-in.html' title='A generic js function to append text in HTML'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115463986145196529</id><published>2006-08-03T16:11:00.000-05:00</published><updated>2006-08-03T16:17:41.900-05:00</updated><title type='text'>Java code to create Reports using jasper and text data</title><content type='html'>Copy paste the code below in Editplus to understand it. It is pretty straight forward to read and understand.&lt;br /&gt;"&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;generateLabels&lt;/span&gt;" is a function that will take a string which is really a txt datasource for your designed jrxml file. I used ireports to design the jrxml.&lt;br /&gt;&lt;br /&gt;jrxml will return a byte array that can be displayed(response.write) as embeded pdf(or any other format) in the user browser.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;byte&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;[] generateLabels(String dataSource)&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;{&lt;span style=""&gt;     &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;byte&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;[] pdfBytes=&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;null&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;            &lt;/span&gt;JasperDesign jrDesign;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;            &lt;/span&gt;JasperReport jrReport;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;            &lt;/span&gt;JasperPrint jrPrint; &lt;span style=""&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;try&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;{&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;ByteArrayInputStream dataSourceByteInputStream = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;ByteArrayInputStream(dataSource.getBytes());&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;JRCsvDataSource jrCsvDs = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;JRCsvDataSource(dataSourceByteInputStream);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;String[] header={&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;"label"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;, &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;"details"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;};&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;jrCsvDs.setFieldDelimiter(&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;','&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;jrCsvDs.setRecordDelimiter(&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;";"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;jrCsvDs.setColumnNames(header);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;InputStream jrStream = &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;FileUtil.&lt;i&gt;readConfigFileFromClassPath&lt;/i&gt;(&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;.getClass(),&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;"etc/label.jrxml"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;).getByteStream();&lt;span style=""&gt;           &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;Map parameters = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; HashMap();&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;parameters.put(&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;"ReportTitle"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;, &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;"Labels"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;jrDesign = JRXmlLoader.&lt;i&gt;load&lt;/i&gt;(jrStream);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;jrReport = &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;JasperCompileManager.&lt;i&gt;compileReport&lt;/i&gt;(jrDesign);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;jrPrint = &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;JasperFillManager.&lt;i&gt;fillReport&lt;/i&gt;(jrReport,parameters,jrCsvDs);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;JasperExportManager.&lt;i&gt;exportReportToPdfFile&lt;/i&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;jrPrint,&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;"labels.pdf"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;pdfBytes = &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;JasperExportManager.&lt;i&gt;exportReportToPdf&lt;/i&gt;(jrPrint);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;PdfReader pdfr = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; PdfReader(pdfBytes);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;ByteArrayOutputStream baos = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;ByteArrayOutputStream();&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;PdfStamper stamp = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; PdfStamper(pdfr, baos);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;stamp.addJavaScript(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 1.5in; text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;"this.print({bUI: false, bSilent: false});\r"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;stamp.close();&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;pdfBytes = baos.toByteArray();&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;catch&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;(Exception ex)&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;            &lt;/span&gt;{&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;                  &lt;/span&gt;ex.printStackTrace();&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; pdfBytes;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;      &lt;/span&gt;}&lt;span style=""&gt;           &lt;/span&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/8461442-115463986145196529?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115463986145196529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/08/java-code-to-create-reports-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115463986145196529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115463986145196529'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/08/java-code-to-create-reports-using.html' title='Java code to create Reports using jasper and text data'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115463944229307161</id><published>2006-08-03T15:59:00.000-05:00</published><updated>2006-08-03T16:10:42.653-05:00</updated><title type='text'>Auto print on document load</title><content type='html'>Below is a simple process/hack to bypass the browser print dialog.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Generate a pdf for whatever(html or else) you want to print (This is typically done at the server. I use itext) using your fav api.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Once you have the pdf(from any source), you are 33% done.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now we will ask the pdf to do something onLoad.&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;guess what "something" is: "Print"!&lt;/li&gt;&lt;li&gt;You can &lt;span style="font-weight: bold;"&gt;embed &lt;/span&gt;a piece of js &lt;span style="font-weight: bold;"&gt;in the pdf &lt;/span&gt;that will run at pdf load event.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In this js we will ask Acrobat reader to directly print the document to printer &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Next you will have to load this pdf in an invisible iframe on your page, using javascript.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You are done! Trigger the invisible iframe load using either a button click or html-onLoad event. hurray your document is send straight to the printer!!!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;This method works both in firefox and IE. It ha to, we are basically bypassing the browser security!&lt;/li&gt;&lt;/ul&gt;Here is the code that will embed javascript in the pdf document. Ofcourse, we will be using java and itext libs to do this.:&lt;br /&gt;&lt;br /&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;&lt;/span&gt;PdfReader pdfr = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; PdfReader(pdfBytes);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;&lt;/span&gt;ByteArrayOutputStream baos = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; ByteArrayOutputStream();&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;&lt;/span&gt;PdfStamper stamp = &lt;/span&gt;&lt;b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(127, 0, 85);"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt; PdfStamper(pdfr, baos);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;&lt;/span&gt;stamp.addJavaScript(&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: rgb(42, 0, 255);"&gt;"this.print({bUI: false, bSilent: false});\r"&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;);&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;; color: black;"&gt;&lt;span style=""&gt;&lt;/span&gt;stamp.close();&lt;span style=""&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;br /&gt;&lt;br /&gt;Loading pdf in an invisible frame is a easy task ... I would let you play arround with this code. Or may be I will post it if time permits!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115463944229307161?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115463944229307161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/08/auto-print-on-document-load.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115463944229307161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115463944229307161'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/08/auto-print-on-document-load.html' title='Auto print on document load'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115463872469883326</id><published>2006-08-03T15:48:00.000-05:00</published><updated>2009-05-14T10:09:39.836-05:00</updated><title type='text'>How to extract a list values from URL</title><content type='html'>Assuming you are using java servlet, here is a simple method:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sample: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;http://localhost:8080/extract.do?ist=val1&amp;amp;ist=val2&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"   &gt;&lt;span style=""&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;            for&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"   &gt;(String ist:req.getParameterValues(&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;"ist"&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"   &gt;)) {&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"   &gt;&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"   &gt;&lt;span style=""&gt;                  &lt;/span&gt;System.&lt;/span&gt;&lt;i&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;out&lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"   &gt;.println(&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;"ist: "&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"   &gt; + ist);&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"   &gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;span style=""&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115463872469883326?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115463872469883326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/08/how-to-extract-string-from-url.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115463872469883326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115463872469883326'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/08/how-to-extract-string-from-url.html' title='How to extract a list values from URL'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115428465238866479</id><published>2006-07-30T13:37:00.000-05:00</published><updated>2006-07-30T13:37:32.456-05:00</updated><title type='text'>Ruby on Rail</title><content type='html'>A smart new way to create quick web applications.&lt;br /&gt;Check some of the &lt;a href="http://www.rubyonrails.org/screencasts"&gt;presentations&lt;/a&gt;, really cool stuff.&lt;br /&gt;&lt;br /&gt;From the website:&lt;br /&gt;&lt;blockquote&gt;Ruby on Rails is an open-source web framework that's optimized for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring convention over configuration. &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.rubyonrails.org/"&gt;@link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115428465238866479?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115428465238866479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/07/ruby-on-rail.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115428465238866479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115428465238866479'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/07/ruby-on-rail.html' title='Ruby on Rail'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-115428446130597828</id><published>2006-07-30T13:28:00.000-05:00</published><updated>2006-09-21T13:18:41.863-05:00</updated><title type='text'>Cracking the pdf</title><content type='html'>Do you have a locked pdf?&lt;br /&gt;Cannot  extract the text?&lt;br /&gt;Cannot print it?&lt;br /&gt;Cannot modify it?&lt;br /&gt;Well, here is a simple solution...&lt;br /&gt;&lt;br /&gt;Bang your head over the wall ... :D Just kidding!&lt;br /&gt;Follow these simple steps:&lt;br /&gt;&lt;br /&gt;Download and install the latest version of &lt;a href="http://www.cs.wisc.edu/%7Eghost/"&gt;GhostScript&lt;/a&gt;&lt;br /&gt;Download and install the latest version of &lt;a href="http://www.cs.wisc.edu/%7Eghost/gsview/"&gt;GSView&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thats it!&lt;br /&gt;Open the "locked" pdf in GSView. You can now convert your original file into various types. One of the extension is "PDFWriter". You basically convert your original document(with all the security) into a basic converted document(without the protection).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hurray, now you can do whatever u want to do with this documnt. Use your fav "free" program to convert the pdf to word, ppt, etc. Or you can mark, copy, extract the text or even print it, if it was disabled.&lt;br /&gt;&lt;br /&gt;njoy and thank postscript... &lt;span style="font-style: italic;"&gt;and ofcourse me for pointing you there! &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-115428446130597828?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/115428446130597828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/07/cracking-pdf.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115428446130597828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/115428446130597828'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/07/cracking-pdf.html' title='Cracking the pdf'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-114565351372924086</id><published>2006-04-21T16:05:00.000-05:00</published><updated>2006-04-21T16:05:14.010-05:00</updated><title type='text'>Open source ajax</title><content type='html'>&lt;blockquote&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://www.getahead.ltd.uk/dwr/"&gt;DWR&lt;/a&gt; - DWR (Direct Web Remoting) is a way of calling Java code on the server directly from Javascript in the browser. DWR consists of two main parts: JavaScript running in the user's browser to communicate with the server and dynamically update the webpage, and a Java Servlet running on the server that processes requests and sends responses back to the browser. DWR takes a novel approach to AJAX by dynamically generating JavaScript code based Java classes. Thus the web developer can use Java code from JavaScript as if it were local to the web-browser; whereas in reality the Java code runs in the web-server and has full access to web-server resources.&lt;/li&gt;&lt;li&gt;&lt;a href="http://oss.metaparadigm.com/jsonrpc/"&gt;JSON-RPC-Java&lt;/a&gt; - JSON-RPC-Java is a dynamic JSON-RPC implementation in Java. It allows you to transparently call server-side Java code from JavaScript with an included lightweight JSON-RPC JavaScript client. It is designed to run in a Servlet container such as Tomcat and can be used with JBoss and other J2EE Application servers to allow calling of plain Java or EJB methods from within a JavaScript DHTML web application.&lt;/li&gt;&lt;li&gt;&lt;a href="http://ajaxtags.sourceforge.net/"&gt;AjaxTags&lt;/a&gt; - The AJAX Tag Library is a set of JSP tags that simplify the use of Asynchronous JavaScript and XML (AJAX) technology in JavaServer Pages. This tag library fills that need by not forcing J2EE developers to write the necessary JavaScript to implement an AJAX-capable web form. The tag library provides support for live form updates for the following use cases: autocomplete based on character input to an input field, select box population based on selections made from another field, callout or balloon popups for highlighting content, refreshing form fields, and toggling images and form field states on/off. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.nextapp.com/products/echo2/"&gt;Echo 2&lt;/a&gt; - Echo2 is the next-generation of the Echo Web Framework, a platform for developing web-based applications that approach the capabilities of rich clients. The 2.0 version holds true to the core concepts of Echo while providing dramatic performance, capability, and user-experience enhancements made possible by its new Ajax-based rendering engine. &lt;/li&gt;&lt;li&gt;&lt;a href="http://ajaxanywhere.sourceforge.net/"&gt;AjaxAnywhere&lt;/a&gt; - AjaxAnywhere is designed to turn any set of existing JSP components into AJAX-aware components without complex JavaScript coding. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.activemq.com/Ajax"&gt;ActiveMQ Ajax Support&lt;/a&gt; - Ajax support in ActiveMQ builds on top of the REST connector for ActiveMQ which allows any web capable device to send or receive messages over JMS. All the Ajax examples are currently using OpenRico.&lt;/li&gt;&lt;li&gt;&lt;a href="http://tacos.sourceforge.net/"&gt;Tacos&lt;/a&gt; - The Tacos library project provides components and ajax behaviour for the Tapestry java web application framework. Most of the library relies almost exclusively on Dojo. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.opensymphony.com/webwork/"&gt;WebWork 2.2&lt;/a&gt; Awesome AJAX support built on top of DWR and Dojo. Form validation, tabbed panels, remotable forms, and remote divs. More AJAX components will be coming in subsequent releases. &lt;/li&gt;&lt;li&gt;&lt;a href="https://swf.dev.java.net/"&gt;Simple Web Framework&lt;/a&gt; - The Simple Web Framework (SWF) is an event based framework targeting Struts developers who want to build rich Web applications but do not want to migrate to JSF. The SWF is built upon the same Jakarta commons basis as Struts, but uses a different request processor (front controller.) The SWF event model supports XmlHttpRequest (as well as form/submit) based event posting, similar to VB.NET or JSF, with In place Page Updating (IPU) rather than page reloading. &lt;/li&gt;&lt;li&gt;&lt;a href="http://wicket.sourceforge.net/"&gt;Wicket 1.1 rc2&lt;/a&gt; - Dojo, Scriptaculous and Wicket integration. The release consists of an Ajax handler, allowing you to create your own custom Wicket Ajax components based on the Dojo toolkit.&lt;/li&gt;&lt;li&gt;&lt;a href="http://taconite.sourceforge.net/"&gt;Taconite&lt;/a&gt; - The heart of Taconite is a parser that converts normal (X)HTML code into a series of JavaScript commands that dynamically create the content on the browser. This parser allows you, the developer, to write content in way that is natural -- as (X)HTML. You no longer have to crowd your pages with a slew of document.createElement and document.appendChild commands to dynamically create new content. The Taconite custom parser is implemented as a set of JSP custom tags, which can be used in any Java servlet container, or as a client-side JavaScript library, meaning it can be used in conjunction with virtually any server-side technology.&lt;/li&gt;&lt;li&gt;&lt;a href="http://swato.throughworks.com/"&gt;SWATO&lt;/a&gt; - Server side Java library can be deployed in Servlet 2.3+ compatible containers. Client side JavaScript library is base on Prototype. JSON based marshalling. Spring integration. Includes several reusable components like auto-suggest Textbox, Javascript templates and logging.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.zimbra.com/"&gt;Zimbra&lt;/a&gt; - Zimbra is an open source server and client technology for AJAX based messaging and collaboration. The collaboration server is built using Java based technologies. The server features file based message storate, a SQL metadata storage, Lucene based search, clustering, replication, archiving and LDAP support. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.orbeon.com/ops/doc/home-changes-30"&gt;Orbeon Presentation Server (OPS) Version 3.0&lt;/a&gt; - OPS 3.0 features an XForms engine much improved over OPS 2.8's, significant improvements in the Page Flow Controller, and more. The XForms engine is now based on Ajax technologies. This makes the XForms engine much more responsive to user interaction than with OPS 2.8. The new Ajax-based XForms engine, present in OPS 3.0 and forward, is refered to as the Next Generation XForms engine or, in short, as XForms NG.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jsorb.org/"&gt;JsOrb&lt;/a&gt; - JsOrb includes code generators that build on demand JavaScript classes for your POJOs and as proxies to your business logic interfaces. The JavaScript classes have the same methods as your POJOs and business logic interfaces, so your JavaScript code ends up looking surprisingly similar to Java. &lt;/li&gt;&lt;li&gt;&lt;a href="http://zk1.sourceforge.net/"&gt;ZK&lt;/a&gt; - ZK is an event-driven, XUL-based, AJAX-embedded, all Java framework to enable rich user interfaces for Web applications. With ZK, you represent and manipulate RIA in XUL/HTML components all at the server similar to how you developed desktop apps. ZK includes an AJAX-based event-driven engine to automate interactivity, and a rich set of XUL-based components. &lt;/li&gt;&lt;li&gt;&lt;a href="http://rialto.application-servers.com/"&gt;Rialto&lt;/a&gt; - Rialto is a cross browser javascript widgets library. It supports pure javascript development and JSP/taglib development. A JSF integration is planned. &lt;/li&gt;&lt;li&gt;&lt;a href="http://jspcontrols.sourceforge.net/"&gt;JSP Controls Tag Library&lt;/a&gt; - JSP Controls Tag Library (the "Library") provides the lifecycle for portlet-like JSP components. The Library does not require a portal engine or other central controller. The components built with the Library can be used in any JSP-based application. The Library supports two request processing modes: Non-Ajax and Ajax. Pages composed with JSP Controls Tag Library look and behave the same way whether they run in Ajax mode or not. &lt;/li&gt;&lt;li&gt;&lt;a href="http://www.openlaszlo.org/"&gt;OpenLaszlo&lt;/a&gt; - OpenLaszlo programs are written in XML and JavaScript and transparently compiled to Flash and DHTML. The OpenLaszlo APIs provide animation, layout, data binding, server communication, and declarative UI. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;a href="http://www.manageability.org/blog/stuff/ajax-libraries"&gt;@link to main article&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-114565351372924086?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/114565351372924086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/04/open-source-ajax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114565351372924086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114565351372924086'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/04/open-source-ajax.html' title='Open source ajax'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-114538412040815649</id><published>2006-04-18T13:14:00.000-05:00</published><updated>2006-04-18T13:15:20.883-05:00</updated><title type='text'>Wink, FREE screen recording tool</title><content type='html'>Wink is a Tutorial and Presentation creation software, primarily aimed at creating tutorials on how to use software (like a tutor for MS-Word/Excel etc). Using Wink you can capture screenshots, add explanations boxes, buttons, titles etc and generate a highly effective tutorial for your users.   Here is a sample Flash tutorial created by Wink. Click the green arrow button to start viewing it. --------&gt;&lt;br /&gt;(More tutorials created by Wink users and companies can be found &lt;a href="http://www.debugmode.com/userforums/viewforum.php?f=34"&gt;at the User Forums&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;This is a good example of how you can create tutorials in Wink, by capturing screenshots, mouse movements and specifying your own explanations with them. And all this in a standard Windows-based UI with drag-and-drop editing makes it very easy to create high quality tutorials/documentation.&lt;br /&gt;&lt;br /&gt;It is estimated that Macromedia Flash Player is installed in more than 90% of the PCs. Using Wink you can create content viewable across the web in all these users' desktops. Similar applications sell for hundreds of dollars, while Wink is &lt;b&gt;free&lt;/b&gt; with unrivaled features. So spread the word about Wink to your friends.&lt;br /&gt;&lt;br /&gt;Winki &lt;a href="http://www.debugmode.com/wink/"&gt;@linki&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-114538412040815649?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/114538412040815649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/04/wink-free-screen-recording-tool.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114538412040815649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114538412040815649'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/04/wink-free-screen-recording-tool.html' title='Wink, FREE screen recording tool'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-114444406809410575</id><published>2006-04-07T16:05:00.000-05:00</published><updated>2006-04-07T16:07:48.763-05:00</updated><title type='text'>Tools for Hibernate 2.x</title><content type='html'>&lt;p&gt;The tools used for roundtrip development in &lt;span style="color: rgb(204, 0, 0);"&gt;Hibernate&lt;/span&gt; 2 provide support for transforming to&lt;/p&gt; &lt;img style="float: right;" src="http://www.hibernate.org/hib_images/tools/legacy_overview.gif" alt="" _base_href="http://www.hibernate.org/" border="0" height="238" width="299" /&gt;&lt;p&gt; and from sourcecode (java), &lt;span style="color: rgb(204, 0, 0);"&gt;mapping&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;file&lt;/span&gt;s (hbm) and a database definition (ddl). Use the  &lt;a href="http://www.hibernate.org/255.html" _base_href="http://www.hibernate.org/"&gt;new tools&lt;/a&gt; for &lt;span style="color: rgb(204, 0, 0);"&gt;Hibernate&lt;/span&gt; 3.x.&lt;/p&gt;&lt;p&gt;The goal of these tools is to help support the usage of &lt;span style="color: rgb(204, 0, 0);"&gt;Hibernate&lt;/span&gt; in almost any kind of development scenario. For example, if you start with an existing (legacy) database, use the tools to &lt;span style="color: rgb(204, 0, 0);"&gt;generate&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;Hibernate&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;mapping&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;file&lt;/span&gt;s and Java source &lt;span style="color: rgb(204, 0, 0);"&gt;file&lt;/span&gt;s. If you start with Java code, you can markup your classes with XDoclet tags and automatically &lt;span style="color: rgb(204, 0, 0);"&gt;generate&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;Hibernate&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;mapping&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;file&lt;/span&gt;s from your annotations. Of course, you can also &lt;span style="color: rgb(204, 0, 0);"&gt;generate&lt;/span&gt; a SQL database schema (DDL) automatically from a &lt;span style="color: rgb(204, 0, 0);"&gt;Hibernate&lt;/span&gt; &lt;span style="color: rgb(204, 0, 0);"&gt;mapping&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;Note, that not all tools provide complete support for all features in &lt;span style="color: rgb(204, 0, 0);"&gt;Hibernate&lt;/span&gt;, as it is simply not possible to &lt;span style="color: rgb(204, 0, 0);"&gt;generate&lt;/span&gt; every output from every input (for example, a database schema doesn't have enough information to &lt;span style="color: rgb(204, 0, 0);"&gt;generate&lt;/span&gt; perfect Java classes).&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.hibernate.org/256.html"&gt;@link&lt;/a&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/8461442-114444406809410575?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/114444406809410575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/04/tools-for-hibernate-2x.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114444406809410575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114444406809410575'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/04/tools-for-hibernate-2x.html' title='Tools for Hibernate 2.x'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-114403317210069314</id><published>2006-04-02T21:55:00.000-05:00</published><updated>2006-04-02T21:59:32.386-05:00</updated><title type='text'>WebScarab - Open Web Application Security</title><content type='html'>WebScarab is a tool designed for Web security professionals and Web developers. It allows the user to view the traffic between the Web browser and server, and modify it in transit. WebScarab is intended to become the tool of choice for serious Web debugging.&lt;br /&gt;&lt;br /&gt;WebScarab is a framework for analysing applications that communicate using the HTTP and HTTPS protocols. It is written in Java, and is thus portable to many platforms. In its simplest form, WebScarab records the conversations (requests and responses) that it observes, and allows the operator to review them in various ways.&lt;br /&gt;&lt;br /&gt;WebScarab provides a number of plugins, mainly aimed at the security functionality for the moment. Those plugins include:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Fragments - extracts Scripts and HTML comments from HTML pages as they are seen via the proxy, or other plugins&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Proxy - observes traffic between the browser and the web server. The WebScarab proxy is able to observe both HTTP and encrypted HTTPS traffic, by negotiating an SSL connection between WebScarab and the browser instead of simply connecting the browser to the server and allowing an encrypted stream to pass through it. Various proxy plugins have also been developed to allow the operator to control the requests and responses that pass through the proxy.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Manual intercept - allows the user to modify HTTP and HTTPS requests and responses on the fly, before they reach the server or browser.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Beanshell - allows for the execution of arbitrarily complex operations on requests and responses. Anything that can be expressed in Java can be executed.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Reveal hidden fields - sometimes it is easier to modify a hidden field in the page itself, rather than intercepting the request after it has been sent. This plugin simply changes all hidden fields found in HTML pages to text fields, making them visible, and editable.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Bandwidth simulator - allows the user to emulate a slower network, in order to observe how their website would perform when accessed over, say, a modem.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Spider - identifies new URLs on the target site, and fetches them on command.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Manual request - Allows editing and replay of previous requests, or creation of entirely new requests.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SessionID analysis - collects and analyses a number of cookies (and eventually URL-based parameters too) to visually determine the degree of randomness and unpredictability.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Scripted - operators can use BeanShell to write a script to create requests and fetch them from the server. The script can then perform some analysis on the responses, with all the power of the WebScarab Request and Response object model to simplify things.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Parameter fuzzer - performs automated substitution of parameter values that are likely to expose incomplete parameter validation, leading to vulnerabilities like Cross Site Scripting (XSS) and SQL Injection.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Search - allows the user to craft arbitrary BeanShell expressions to identify conversations that should be shown in the list.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Compare - calculates the edit distance between the response bodies of the conversations observed, and a selected baseline conversation. The edit distance is "the number of edits required to transform one document into another". For performance reasons, edits are calculated using word tokens, rather than byte by byte.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;SOAP - There is a plugin that parses WSDL, and presents the various functions and the required parameters, allowing them to be edited before being sent to the server.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://www.owasp.org/software/webscarab.html"&gt;@link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-114403317210069314?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/114403317210069314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/04/webscarab-open-web-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114403317210069314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114403317210069314'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/04/webscarab-open-web-application.html' title='WebScarab - Open Web Application Security'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-114304272377529282</id><published>2006-03-22T09:49:00.000-06:00</published><updated>2006-03-22T09:53:22.000-06:00</updated><title type='text'>Open Source caching system: "memcached"</title><content type='html'>&lt;p&gt;&lt;tt class="mem"&gt;memcached&lt;/tt&gt; is a high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.danga.com/"&gt;Danga Interactive&lt;/a&gt; developed &lt;tt class="mem"&gt;memcached&lt;/tt&gt; to enhance the speed of &lt;a href="http://www.livejournal.com/"&gt;LiveJournal.com&lt;/a&gt;, a site which was already doing 20 million+ dynamic page views per day for 1 million users with a bunch of webservers and a bunch of database servers. &lt;tt class="mem"&gt;memcached&lt;/tt&gt; dropped the database load to almost nothing, yielding faster page load times for users, better resource utilization, and faster access to the databases on a memcache miss.&lt;/p&gt;..&lt;br /&gt;&lt;p&gt;It uses &lt;a href="http://www.monkey.org/%7Eprovos/libevent/"&gt;libevent&lt;/a&gt; to scale to any number of open connections (using &lt;a href="http://www.xmailserver.org/linux-patches/nio-improve.html"&gt;epoll&lt;/a&gt; on Linux, if available at runtime), uses non-blocking network I/O, refcounts internal objects (so objects can be in multiple states to multiple clients), and uses its own slab allocator and hash table so virtual memory never gets externally fragmented and allocations are guaranteed O(1).&lt;/p&gt;&lt;a href="http://www.danga.com/memcached/"&gt;@link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-114304272377529282?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/114304272377529282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/03/open-source-caching-system-memcached.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114304272377529282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114304272377529282'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/03/open-source-caching-system-memcached.html' title='Open Source caching system: &quot;memcached&quot;'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-114229222077899931</id><published>2006-03-13T17:12:00.001-06:00</published><updated>2006-03-13T17:23:40.870-06:00</updated><title type='text'>How does Jasper subreporting works?</title><content type='html'>This is a simple get-started guide on how the subreporting works in Jasper. This is by no means a detailed reference. If you are using ireports, you can drag-drop the sub-report icon from the pallette. You can double click the grey area to specify the sub-reporting parameters that will identify your already created stand-alone sub-repport.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Under the Subreport/Connection/Datasource expression tab, you can specify the connection or data source. To use the same connection as your parent report, select Use conenction expression and use the value $P{REPORT_CONNECTION}&lt;br /&gt;&lt;br /&gt;Under subreport, you can specify different ways to invoke your subreport file. You can also pass your parameters here. Define the parameters correctly. For example, if your subreport is expecting ID as one of its parameter, the expression for this parameter will look like: $F{ID}&lt;br /&gt;&lt;br /&gt;If you are specifying String under the expression class, do not forget the double quotes: "myChildReport.jasper". You can also embed a few lines of code under the subreport expression and supply it with URL, File, InputStream or the JasperReport objects. Variably, you can have a static factory method inside your code, that can be included here. Caution: You might loose the flexibility of previewing your report in ireports.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After you close this dialog, ireports will add the subreport xml inside the template. At runtime, your specified jasper subreport(class) will be loaded by the class loader and executed with the supplied parameters. You might face difficulties if you manage to load this sub-report in a seperate class loader.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Happy subreporting!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-114229222077899931?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/114229222077899931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/03/how-does-jasper-subreporting-works.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114229222077899931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114229222077899931'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/03/how-does-jasper-subreporting-works.html' title='How does Jasper subreporting works?'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-114229157017528844</id><published>2006-03-13T17:12:00.000-06:00</published><updated>2006-03-13T17:12:50.506-06:00</updated><title type='text'>How to change your subreport paths at runtime?</title><content type='html'>See the &lt;span style="font-style: italic;"&gt;"How does Jasper subreporting works?"&lt;/span&gt; article above in order to understand this article. If you use ireports, you can double click the sub-reports block and specify your subreport name. If you select the image expression class as "java.lang.String", you can specify your subreport name(compiled) as a java string. You can specify say mysubreport.jasper and expect the jasper file to be in the &lt;ireports-home&gt; folder. You can also specify an absolute path for your sub report. While programming it is best to reduce the dependency on such hardcoded paths in the report template.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Here is the solution: &lt;/span&gt;&lt;br /&gt;While creating the report template, always use the filename for your subreport name. At run time, replace this filename with your sub-report absolute path location which can be fetched from a property file. Code below, does exactly the same!&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt; &lt;span style="font-family:courier new;"&gt;  private void changeSubReportPath(JasperDesign jasperDesign)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Object[] &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;objExpressions &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;= jasperDesign.getExpressions().toArray();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        for (int i=0; i&lt;objexpressions.length;&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            JRDesignExpression &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;jrExpression &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;= (JRDesignExpression)objExpressions[i];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            String expressionText = jrExpression.getText();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            if ((expressionText.indexOf(".&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;class&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;") != -1) || (expressionText.indexOf(".&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;jasper&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;") != -1))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;jrExpression.setText&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;("\"" + System.getProperty("report.child.basepath") + expressionText.substring(1));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    } &lt;/span&gt;&lt;br /&gt;&lt;/objexpressions.length;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/ireports-home&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-114229157017528844?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/114229157017528844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/03/how-to-change-your-subreport-paths-at.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114229157017528844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114229157017528844'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/03/how-to-change-your-subreport-paths-at.html' title='How to change your subreport paths at runtime?'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-114229041511715696</id><published>2006-03-13T16:04:00.000-06:00</published><updated>2006-03-13T16:54:01.243-06:00</updated><title type='text'>Reporting frameworks for the open source Java world</title><content type='html'>Jasper Reports and BIRT are amongst the most popular open source reporting framework for the java world. Jasper had been here for quite some time, while BIRT is relatively new with less third party tool support then Jasper. However at first use BIRT looks very easy to use and nicely designed then its counter part. BIRT is restricted for the eclipse users(Developed and maintained by eclipse.org), but I am pretty sure that quite a few stand alone BIRT reporting tools might already be under development. The basic BIRT plugin is capable of addressing most of your reporting needs. If you compare BIRT vs JASPER side by side, both of them have almost the same features, though the "BI" part of BIRT reads "Business Intelligence" which means BIRT will be doing more then reporting (if not now, may be in future).&lt;br /&gt;&lt;br /&gt;Like any other open source software, both these tools are poorly documented. I found it easy to get around with BIRT then with JASPER. Jasper api's give you great flexibility with your programming tasks. Amongst the well known jasper tools, I tried Ireports(standalone), the eclipse plugin and open report. None of them are up to the mark or as good compared to the BIRT eclipse plugin. A good source of documentation for jasper is available in form of a downloadable pdf(JRUltimateGuide.2.2.pdf), only after you some $45's! Just an fyi, most of the explanation in this pdf actually point to the examples folder of the downloadable jasper api source-docs.&lt;br /&gt;&lt;br /&gt;BIRT architecture is much cleaner and easy to get around, compared to Jasper. You can import existing style sheets, custom HTML code, XPATH,  and most important of all, no intermediate file generation(like compiled file crap!).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quick links: &lt;/span&gt;&lt;br /&gt;If you are working with Jasper, here are your quick links:&lt;br /&gt;&lt;a href="http://jasperreports.sourceforge.net/index.html"&gt;@Jasper Home&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/ireport"&gt;@ireports, standalone tool to create jrxml files&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.jasperassistant.com"&gt;@eclipse plugin, if you are lost in the eclipse world&lt;/a&gt;&lt;br /&gt;&lt;a href="http://oreports.com/index.php"&gt;@open reports. This tool is more talks and less work.&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jasperreports.sourceforge.net/quick.how.to.html"&gt;@quick how to&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jasperreports.sourceforge.net/api/index.html"&gt;@api docs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you are working with BIRT:&lt;br /&gt;&lt;a href="http://www.eclipse.org/birt/phoenix/"&gt;@BIRT Home&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.eclipse.org/birt/phoenix/tutorial/"&gt;@BIRT tutorials&lt;/a&gt;&lt;br /&gt;&lt;a href="http://birtworld.blogspot.com/"&gt;@Birt world blog, very informative&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.eclipse.org/help31/index.jsp?topic=/org.eclipse.birt.doc/birt/birt-25-3.html"&gt;@eclipse documentation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.eclipse.org/birt/phoenix/project/notable2.0.php#jump_8"&gt;@BIRT features&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tools.osmosis.gr/blog/archives/2005/06/birt_and_object.html"&gt;@How to POJO as data source?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Happy Reporting!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-114229041511715696?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/114229041511715696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/03/reporting-frameworks-for-open-source.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114229041511715696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114229041511715696'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/03/reporting-frameworks-for-open-source.html' title='Reporting frameworks for the open source Java world'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-114228742646360142</id><published>2006-03-13T16:00:00.000-06:00</published><updated>2006-03-13T16:03:46.786-06:00</updated><title type='text'>Transferring data between relational db and xml</title><content type='html'>A good document that explains the use of jaxb, hyperjaxb and hibernate to acheive xml to object to relational persistance. Also check hibernate, hyperjaxb and jaxb relative websites.&lt;br /&gt;&lt;a href="http://www-zeuthen.desy.de/technisches_seminar/texte/TRANSFERRING_DATA_XML_RDB.pdf"&gt;@link &lt;/a&gt;&lt;img style="width: 1px; height: 75px;" src="file:///C:/DOCUME%7E1/rwagh/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-114228742646360142?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/114228742646360142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/03/transferring-data-between-relational.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114228742646360142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114228742646360142'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/03/transferring-data-between-relational.html' title='Transferring data between relational db and xml'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-114118720693887467</id><published>2006-02-28T22:25:00.000-06:00</published><updated>2006-02-28T22:26:47.173-06:00</updated><title type='text'>What is Beehive?</title><content type='html'>&lt;blockquote&gt;&lt;p&gt; Welcome to Beehive! Our goal is to make J2EE programming easier by building a simple object model on          J2EE and Struts. Using the new &lt;a class="external" href="http://jcp.org/en/jsr/detail?id=175"&gt;JSR-175&lt;/a&gt; annotations, Beehive reduces the coding          necessary for J2EE.  The initial Beehive project has three pieces.&lt;/p&gt; &lt;ul&gt;&lt;li&gt;                  &lt;strong&gt;NetUI&lt;/strong&gt;: An annotation-driven web application programming framework that is built atop Struts.                  NetUI centralizes navigation logic, state, metadata, and exception handling in a single encapsulated                 and reusable Page Flow Controller class.  In addition, NetUI provides a set of JSP tags                 for rendering HTML / XHTML and higher-level UI constructs such as data grids and trees and has first-class                 integration with JavaServer Faces and Struts.             &lt;/li&gt;&lt;li&gt;                  &lt;strong&gt;Controls&lt;/strong&gt;: A lightweight, metadata-driven component framework for building that reduces the                  complexity of being a client of enterprise resources.  Controls provide a unified client abstraction that                 can be implemented to access a diverse set of enterprise resources using a single configuration model.             &lt;/li&gt;&lt;li&gt;                  &lt;strong&gt;Web Service Metadata (WSM)&lt;/strong&gt;: An implementation of &lt;a class="external" href="http://jcp.org/en/jsr/detail?id=181"&gt;JSR 181&lt;/a&gt; which                  standardizes a simplified, annotation-driven model for building Java web services.             &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;         In addition, Beehive includes a set of &lt;em&gt;system controls&lt;/em&gt; that are abstractions for low-level J2EE resource APIs such         as EJB, JMS, JDBC, and web services.         &lt;/p&gt; &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-114118720693887467?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/114118720693887467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/02/what-is-beehive.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114118720693887467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114118720693887467'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/02/what-is-beehive.html' title='What is Beehive?'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-114116839924268322</id><published>2006-02-28T16:54:00.000-06:00</published><updated>2006-02-28T17:13:19.626-06:00</updated><title type='text'>New patent grants a company to collect fee for the use of ajax, rich web, web2, etc</title><content type='html'>This is nasty! US patent system should either be revisited or demolished. A small company was grated a patent that can possibly restrict the public or "open-source" use of rich web based applications like ajax, web2, etc. What does that mean? Probably google, yahoo, macromedia, microsoft and all other rich content lib/application makers will have to pay a fee to this company for what they are doing now.&lt;br /&gt;&lt;br /&gt;Below links will give you detailed information:&lt;br /&gt;&lt;a href="http://patft.uspto.gov/netacgi/nph-Parser?u=/netahtml/srchnum.htm&amp;Sect1=PTO1&amp;amp;Sect2=HITOFF&amp;p=1&amp;amp;r=1&amp;l=50&amp;amp;f=G&amp;d=PALL&amp;amp;s1=7000180.WKU.&amp;OS=PN/7000180&amp;amp;RS=PN/7000180"&gt;The patent&lt;b&gt; 779831&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;Rich-media applications are designed and created via the Internet. A host     computer system, containing processes for creating rich-media applications, is     accessed from a remote user computer system via an Internet connection. User account     information and rich-media component specifications are uploaded via the established     Internet connection for a specific user account...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.profx.us"&gt;The company&lt;/a&gt;&lt;br /&gt;Balthaser makes a web-based design tool called pro:FX that enables users to build their own web applications using an interactive system constructed with Flash. Balthaser's patent covers almost exactly that process, but it is broad enough to encapsulate web based design tools constructed with virtually any technology or framework ..&lt;br /&gt;&lt;p&gt;&lt;a href="http://digg.com/programming/U.S._Grants_Patent_For_Using_AJAX"&gt;the discussion&lt;/a&gt;&lt;br /&gt;Now any site that uses rich-media technology implementations, including Flash, Flex, Java, Ajax, and XAML, when the rich-media application is accessed on any device over the Internet, including desktops, mobile devices, set-top boxes, and video game consoles will need a licence.&lt;/p&gt;&lt;a href="http://news.google.com/news?hl=en&amp;hs=eAD&amp;amp;client=firefox-a&amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;spell=1&amp;tab=wn&amp;amp;ie=ISO-8859-1&amp;q=Balthaser+ajax+patents&amp;amp;btnG=Search+News"&gt;in news&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-114116839924268322?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/114116839924268322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/02/new-patent-grants-company-to-collect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114116839924268322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/114116839924268322'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/02/new-patent-grants-company-to-collect.html' title='New patent grants a company to collect fee for the use of ajax, rich web, web2, etc'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113985831868523054</id><published>2006-02-13T13:14:00.000-06:00</published><updated>2006-02-13T13:18:39.050-06:00</updated><title type='text'>TOGAF, The Open Group Architecture Framework</title><content type='html'>&lt;p&gt;TOGAF, The Open Group Architecture Framework, is an industry standard           architecture framework that may be used freely by any organization           wishing to develop an information systems architecture for use within           that organization.&lt;/p&gt;         &lt;p&gt;TOGAF has been developed and continuously evolved since the mid-90’s           by representatives of some of the world’s leading IT customer           and vendor organizations, working in The Open Group's Architecture           Forum. Details of the Forum, and its plans for evolving TOGAF in the           current year, are given on the &lt;a href="http://www.opengroup.org/architecture/"&gt;Architecture Forum&lt;/a&gt; web           site.&lt;/p&gt;&lt;a href="http://www.opengroup.org/togaf/"&gt;@link&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.opengroup.org/certification/"&gt;@certification&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113985831868523054?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113985831868523054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/02/togaf-open-group-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113985831868523054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113985831868523054'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/02/togaf-open-group-architecture.html' title='TOGAF, The Open Group Architecture Framework'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113883429394500596</id><published>2006-02-01T16:41:00.000-06:00</published><updated>2006-02-01T16:51:34.476-06:00</updated><title type='text'>Rule Engines for dynamic business logic</title><content type='html'>This is similar to the prolog interpreter I used in my acadamics. But integrating a rule based engine in an application framework model with a backing server like weblogic, provides lot of power to the enterprise. &lt;br /&gt;&lt;br /&gt;Business applications often require logic that changes frequently to meet the dynamic needs of the enterprise. While this logic can be coded in Java, the resulting application cannot be quickly adapted when change is required. BEA WebLogic Portal includes a rules engine that, together with a WebLogic Integration business process, provides an alternative solution that allows rapid&lt;img src="http://dev2dev.bea.com/images/2005/10/rules.gif" alt="Rules Engine is an EJB wrapped in a Control" height="698" width="460" /&gt;&lt;br /&gt;changes to business logic without changing Java code. In this article, we review how the rules engine works and the steps required to incorporate it into a WebLogic Integration (WLI) process. We also describe how JavaBeans can be used in the rules engine to describe an arbitrary set of objects for the rules to act on and provide actions for back-end processing. Finally, we describe how the Datasync facility of WebLogic Portal can dynamically update a set of rules on a running system without redeploying the application.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev2dev.bea.com/pub/a/2005/10/dynamic_business_logic1.html"&gt;@complete article&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113883429394500596?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113883429394500596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/02/rule-engines-for-dynamic-business.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113883429394500596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113883429394500596'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/02/rule-engines-for-dynamic-business.html' title='Rule Engines for dynamic business logic'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113813101268839739</id><published>2006-01-24T13:24:00.000-06:00</published><updated>2006-01-24T13:30:13.056-06:00</updated><title type='text'>Flash video over HTML!</title><content type='html'>This demo shows a Flash video (.flv) with an alpha channel. The photos below are   standard HTML images, but the Flash video is playing over them (using CSS styles to   overlap and align the video to the images).&lt;br /&gt;&lt;a href="http://www.aflax.org/examples/video2/video2.html"&gt;Video with Alpha Channel over Images&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.proxus.com/components/FLV_Player.php"&gt;Another Demo&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.aflax.org/#demos"&gt;Other flash demos&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113813101268839739?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113813101268839739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/01/flash-video-over-html.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113813101268839739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113813101268839739'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/01/flash-video-over-html.html' title='Flash video over HTML!'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113804219346290692</id><published>2006-01-23T12:44:00.000-06:00</published><updated>2006-01-23T12:49:53.940-06:00</updated><title type='text'>The AJAX of FLASH= AFLAX</title><content type='html'>&lt;p&gt;&lt;b&gt;AFLAX&lt;/b&gt; stands for 'Asynchronous Flash and &lt;a href="http://en.wikipedia.org/wiki/XML" title="XML"&gt;XML&lt;/a&gt;. Defined simply, &lt;i&gt;AFLAX&lt;/i&gt; is a development methodology which combines &lt;a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29" title="Ajax (programming)"&gt;Ajax&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Macromedia_Flash" title="Macromedia Flash"&gt;Flash&lt;/a&gt; to create more dynamic web based applications.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.xamlon.com/" class="external text" title="http://www.xamlon.com/"&gt;Xamlon&lt;/a&gt; claims that &lt;i&gt;AFLAX&lt;/i&gt; is a 'simpler development technology' and also more easily made suitable to mobile applications than Ajax (although mention of XAML aspects of AFLASH in the Xamlon &lt;a href="http://www.xamlon.com/software/xamlonpro/flash/aflax.aspx" class="external text" title="http://www.xamlon.com/software/xamlonpro/flash/aflax.aspx"&gt;introductory description&lt;/a&gt; appears to indicate a &lt;a href="http://en.wikipedia.org/wiki/Microsoft" title="Microsoft"&gt;Microsoft&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Operating_system" title="Operating system"&gt;operating system&lt;/a&gt; platform-specificity).&lt;/p&gt; &lt;p&gt;There are multiple implementations that could be qualified as &lt;i&gt;AFLAX'&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.macromedia.com/software/flex/productinfo/brz_overview/" target="mm_window"&gt;Overview and demo&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a class="l" href="http://maps.yahoo.com/" onmousedown="return rwt(this,'res','1','&amp;sig2=Q3M03PU4jpbLFePHlgfwnQ')"&gt;&lt;b&gt;Yahoo&lt;/b&gt;! &lt;b&gt;Maps&lt;/b&gt;, Driving Directions, and Traffic implementing AFLAX&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113804219346290692?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113804219346290692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2006/01/ajax-of-flash-aflax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113804219346290692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113804219346290692'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2006/01/ajax-of-flash-aflax.html' title='The AJAX of FLASH= AFLAX'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113183577700266427</id><published>2005-11-12T16:42:00.000-06:00</published><updated>2005-11-12T16:49:37.176-06:00</updated><title type='text'>Setting java heap size, for java and ant</title><content type='html'>If you are using the java command prompt, you can very well set the heap size with the -Xms switch.&lt;br /&gt;example:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;java -Xms64m -Xmx512m &lt;/span&gt;&lt;br /&gt; where&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-Xms&lt;size&gt;&lt;/span&gt; specifies the initial Java heap size and&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;-Xmx&lt;size&gt;&lt;/span&gt; the maximum Java heap size.&lt;br /&gt;&lt;br /&gt;If you are using Ant to run your java classes, set the heap size using the following command line:&lt;br /&gt;set &lt;span style="font-family: courier new;"&gt;ANT_OPTS=-Xmx300M&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113183577700266427?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113183577700266427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/setting-java-heap-size-for-java-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113183577700266427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113183577700266427'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/setting-java-heap-size-for-java-and.html' title='Setting java heap size, for java and ant'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113174771207040413</id><published>2005-11-11T16:20:00.000-06:00</published><updated>2005-11-11T16:21:52.373-06:00</updated><title type='text'>Maven for automated build and reporting</title><content type='html'>Maven is a software project management and comprehension tool. Based on the concept of a project object model         (POM), Maven can manage a project's build, reporting and documentation from a central piece of information.                        &lt;h4&gt;Maven Documentation&lt;/h4&gt;                        All the documentation for Maven is in the form of guides         which can all be found &lt;a href="http://maven.apache.org/guides/index.html"&gt;here&lt;/a&gt;.                                    &lt;h4&gt;About Maven 2.0&lt;/h4&gt;                        Maven 2.0 is a rewrite of the popular Maven application to achieve a number of goals, and to provide a stable         basis to take it into the future.               &lt;ul&gt; &lt;li&gt;           &lt;i&gt;             &lt;a href="http://maven.apache.org/what-is-maven.html"&gt;What is Maven?&lt;/a&gt;           &lt;/i&gt;         &lt;/li&gt;&lt;li&gt;           &lt;i&gt;What are the             &lt;a href="http://maven.apache.org/maven-features.html"&gt;features of Maven 2.0&lt;/a&gt;             ?           &lt;/i&gt;         &lt;/li&gt;&lt;li&gt;           &lt;i&gt;Where is the             &lt;a href="http://maven.apache.org/guides/index.html"&gt;Documentation&lt;/a&gt;             ?           &lt;/i&gt;         &lt;/li&gt;&lt;li&gt;           &lt;i&gt;Tell me about the             &lt;a href="http://maven.apache.org/about.html#m2-goals"&gt;goals of Maven 2.0&lt;/a&gt;           &lt;/i&gt;         &lt;/li&gt;&lt;li&gt;           &lt;i&gt;Can I             &lt;a href="http://maven.apache.org/about.html#get-involved"&gt;get involved&lt;/a&gt;             ?           &lt;/i&gt;         &lt;/li&gt;&lt;li&gt;           &lt;i&gt;Where do I             &lt;a href="http://maven.apache.org/about.html#get-help"&gt;get help&lt;/a&gt;             with Maven 2.0?           &lt;/i&gt;         &lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113174771207040413?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113174771207040413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/maven-for-automated-build-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113174771207040413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113174771207040413'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/maven-for-automated-build-and.html' title='Maven for automated build and reporting'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113158270363417486</id><published>2005-11-09T18:31:00.000-06:00</published><updated>2005-11-09T18:42:10.486-06:00</updated><title type='text'>HyperJaxb, quick start guid</title><content type='html'>&lt;span style="font-weight: bold;"&gt;What is &lt;/span&gt;&lt;a style="font-weight: bold;" href="https://hyperjaxb.dev.java.net/"&gt;HyperJaxb&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;? &lt;/span&gt;&lt;br /&gt;HyperJaxb is a set of libraries developed and maintaied by the java.net community. To understand HyperJaxb you should understand both jaxb and Hibernate in some details. HyperJaxb provides a bridge between the jaxb generated objects and the Hibernate mapping. In layman's term, using HyperJaxb, you can simply drop your xsd in a folder, run a magical script and you can see both the java objects as well as relational tables created for you! Aint it promising?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What can we do with Hyperjaxb? &lt;/span&gt;&lt;br /&gt;We can do magical things with this new api, if used properly. Especially in a services driven application(SOA), we can completely concentrate on the xsd's to design our application without worrying about the underlying data/object layer or the back end relational layer. We can simply leaverage jaxb, hyperjaxb and hibernate to do the dirty work for us. For instance, I can create a catalog.xsd template to supply catalog xml data to customer webservices and the user facing front end. This xsd will be converted by HyperJaxb into java objects that can be used in application programming as well as relational structure that will store the actuall data! Now say the customer adds a new element in the catalog.xsd; all we need to do is regenerate the jaxb objects and the backend tables! No redesigning of the object and db layer. (Obviously you will have to migrate the data and implement the new business logic if any, manually).&lt;br /&gt;&lt;br /&gt;How does HyperJaxb works?&lt;br /&gt;hyperjaxb leverages a cool feature introduced in Hibernate, called as &lt;a href="http://xdoclet.sourceforge.net/xdoclet/index.html"&gt;XDoclet&lt;/a&gt;. Using XDoclet, you can trick the standard java compiler by adding attribute oriented code snippets right in the program comments. When you compile a xsd using HyperJaxb(instead of the standard jaxb), you end up creating jaxb like java classes with XDoclet annotations in these java files that will contain the mapping information. Now you dont have to write the mapping information on your own. HyperJaxb will generate it all for you.&lt;br /&gt;&lt;br /&gt;How to get HyperJaxb working?&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Download and install the latest stable release of HyperJaxb in &lt;span style="font-family: courier new;"&gt;c:\program files&lt;/span&gt; from &lt;a href="https://hyperjaxb.dev.java.net/"&gt;here&lt;/a&gt;.&lt;/li&gt;   &lt;li&gt;Create the following folder structure:&lt;/li&gt;   &lt;ul&gt;     &lt;li style="font-family: courier new;"&gt;C:\dev\hyperJaxb&lt;/li&gt;     &lt;ul&gt;       &lt;li&gt;hibernate (hibernate property files will sit here)&lt;br /&gt;    &lt;/li&gt;       &lt;li&gt;myTestApp (Your sample test application)&lt;br /&gt;    &lt;/li&gt;       &lt;ul&gt;         &lt;li&gt;schema (place your favourite scample catalog.xsd schema file here)&lt;br /&gt;      &lt;/li&gt;         &lt;li&gt;sample (sample xml file for the above schema)&lt;/li&gt;       &lt;/ul&gt;     &lt;/ul&gt;   &lt;/ul&gt;   &lt;li&gt;copy the following files from &lt;span style="font-family: courier new;"&gt;C:\Program Files\hyperjaxb\tests&lt;/span&gt; into &lt;span style="font-family: courier new;"&gt;c:\dev\hyperjaxb&lt;/span&gt;&lt;/li&gt;   &lt;ul style="font-family: courier new;"&gt;     &lt;li&gt;build.xml&lt;/li&gt;     &lt;li&gt;runtest.bat&lt;/li&gt;     &lt;li&gt;test.build.xml&lt;/li&gt;   &lt;/ul&gt;   &lt;li&gt;Modify &lt;span style="font-family: courier new;"&gt;build.xml&lt;/span&gt;&lt;/li&gt;   &lt;ul&gt;     &lt;li&gt;Completely delete the following tags:&lt;br /&gt;  &lt;/li&gt;     &lt;ul&gt;       &lt;li&gt;  &lt;span style="font-family: courier new;"&gt;test.all &lt;/span&gt;and &lt;span style="font-family: courier new;"&gt;clean.all&lt;/span&gt;&lt;target name="test.all" depends="leadIn"&gt;&lt;/target&gt;&lt;target name="clean.all"&gt;&lt;br /&gt;&lt;/target&gt;&lt;/li&gt;     &lt;/ul&gt;     &lt;li&gt;Replace them with&lt;/li&gt;     &lt;ul&gt;       &lt;li&gt;  &lt;span style="font-family: courier new;"&gt;myTestApp&lt;/span&gt;&lt;target name="test.all" depends="leadIn"&gt;&lt;/target&gt;&lt;target name="clean.all"&gt;&lt;br /&gt;&lt;/target&gt;&lt;/li&gt;     &lt;/ul&gt;     &lt;li&gt;Check the relative location for build.xml&lt;br /&gt;  &lt;/li&gt;     &lt;ul&gt;       &lt;li&gt;&lt;ant antfile="../test.build.xml" dir="${test}"&gt;&lt;/ant&gt;It should be &lt;span style="font-family: courier new;"&gt;../test.build.xml&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;     &lt;/ul&gt;     &lt;li&gt;save and exit this file&lt;/li&gt;   &lt;/ul&gt;   &lt;li&gt;Modify test.buil.xml&lt;/li&gt;   &lt;ul&gt;     &lt;li&gt;Replace main.dir value to&lt;br /&gt;&lt;/li&gt;     &lt;ul style="font-family: courier new;"&gt;       &lt;li&gt; C:/Program Files/hyperjaxb&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;Replace hsqldb.lib.dir location to&lt;span style="font-family: courier new;"&gt; C:/Program Files/jtds-1_1&lt;/span&gt;   &lt;property name="hsqldb.lib.dir" location="C:/Program Files/jtds-1_1"&gt;&lt;/property&gt;&lt;/li&gt;     &lt;ul&gt;       &lt;li&gt;In this step we are replacing the hsql driver by the jtds driver so that we can connect to sqlserver.&lt;br /&gt;    &lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt;   &lt;li&gt;copy the following files in &lt;span style="font-family: courier new;"&gt;C:\dev\hyperJaxb\hibernate&lt;/span&gt; from &lt;span style="font-family: courier new;"&gt;C:\Program Files\hyperjaxb\tests\hibernate&lt;/span&gt;&lt;/li&gt;   &lt;ul style="font-family: courier new;"&gt;     &lt;li&gt;hibernate.export.properties&lt;/li&gt;     &lt;li&gt;hibernate.properties&lt;/li&gt;   &lt;/ul&gt;   &lt;li&gt;Modify both these files:&lt;br /&gt;&lt;/li&gt;   &lt;ul&gt;     &lt;li&gt;Comment everything.&lt;br /&gt;  &lt;/li&gt;     &lt;li&gt;Search for the word &lt;span style="font-family: courier new;"&gt;server&lt;/span&gt;; and below it add  the following lines:&lt;br /&gt;  &lt;/li&gt;     &lt;ul style="font-family: courier new;"&gt;       &lt;li&gt;hibernate.dialect net.sf.hibernate.dialect.SybaseDialect&lt;br /&gt;hibernate.connection.username sa&lt;br /&gt;hibernate.connection.password password&lt;br /&gt;hibernate.connection.driver_class net.sourceforge.jtds.jdbc.Driver&lt;br /&gt;hibernate.connection.url jdbc:jtds:sqlserver://localhost:1433/hibernateTest&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt;   &lt;li&gt;Create a blank database in sqlserver with the name hibernteTest, and make sure that sqlserver is up and running on port 1433 on localhost.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Go to the command prompt and execute the following command:&lt;br /&gt;&lt;/li&gt;   &lt;ul style="font-family: courier new;"&gt;     &lt;li&gt;runtest myTestApp&lt;/li&gt;   &lt;/ul&gt;   &lt;li&gt;If everything is set properly, you should see database tables created in the database and jaxb files created.&lt;/li&gt; &lt;/ul&gt;&lt;a href="https://hyperjaxb.dev.java.net/doc/reference/en/html/"&gt;@reference&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113158270363417486?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113158270363417486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/hyperjaxb-quick-start-guid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113158270363417486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113158270363417486'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/hyperjaxb-quick-start-guid.html' title='HyperJaxb, quick start guid'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113157693885122705</id><published>2005-11-09T16:54:00.000-06:00</published><updated>2005-11-09T16:55:38.913-06:00</updated><title type='text'>hibernate properties for jtdc drivers and sqlserver</title><content type='html'>&lt;span style="font-family:courier new;"&gt;hibernate.dialect &lt;span style="font-weight: bold;"&gt;net.sf.hibernate.dialect.SybaseDialect&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;hibernate.connection.username sa&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;hibernate.connection.password password&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;hibernate.connection.driver_class &lt;span style="font-weight: bold;"&gt;net.sourceforge.jtds.jdbc.Driver&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;hibernate.connection.url &lt;span style="font-weight: bold;"&gt;jdbc:jtds:sqlserver://localhost:1433/hibernateTest&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You need to have &lt;span style="font-family:courier new;"&gt;C:\Program Files\jtds-1_1\jtds-1.1.jar&lt;/span&gt; in your classpath.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113157693885122705?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113157693885122705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/hibernate-properties-for-jtdc-drivers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113157693885122705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113157693885122705'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/hibernate-properties-for-jtdc-drivers.html' title='hibernate properties for jtdc drivers and sqlserver'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113148790175380222</id><published>2005-11-08T16:08:00.000-06:00</published><updated>2005-11-09T16:25:51.570-06:00</updated><title type='text'>jaxb, quick start guide</title><content type='html'>Here is a quick start from my experience:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Install jaxb: &lt;/span&gt;Remember jaxb will not come as a seperate installation. So finding a jaxb installation on java.sun is futile. Download and install the latest version of jwsdp. I have installed it here: "&lt;span style="font-family:courier new;"&gt;c:\Program Files\jwsdp-1.6&lt;/span&gt;". You can find jaxb in &lt;span style="font-family:courier new;"&gt;C:\Program Files\jwsdp-1.6\jaxb&lt;/span&gt;&lt;br /&gt; &lt;/li&gt;   &lt;li&gt;The magical &lt;span style="font-weight: bold;"&gt;xjc compiler &lt;/span&gt;that does it all can be found in:&lt;span style="font-family:courier new;"&gt; C:\Program Files\jwsdp-1.6\jaxb\bin\xjc.bat&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;Always have the latest stable java build installed with you: &lt;span style="font-family:courier new;"&gt;C:\Program Files\Java\&lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;jdk1.5.0_04&lt;/span&gt;. Note JDK and not JRE! tools.jar is not found in jre.&lt;br /&gt; &lt;/li&gt;   &lt;li&gt;Create a development/work folder something like &lt;span style="font-family:courier new;"&gt;c:\dev\jaxb&lt;/span&gt;. You will eventually have the following folder\file structure here:&lt;br /&gt; &lt;/li&gt;   &lt;ul style="font-family: courier new;"&gt; &lt;li&gt;c:\dev\jaxb&lt;/li&gt;&lt;ul&gt;&lt;li&gt;\lib &lt;span style="font-family:georgia;"&gt;(for supporting libs)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;\work &lt;span style="font-family:georgia;"&gt;(for java files generate by the xjc compiler&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;\classes &lt;span style="font-family:georgia;"&gt;(for class files generated by the javac compiler)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;catalog.xsd &lt;span style="font-family:georgia;"&gt;(schema file to be persisted)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;setEnv.bat&lt;/li&gt;&lt;/ul&gt;   &lt;/ul&gt;   &lt;li&gt;Copy the following files in dev\lib from the jaxb installation:&lt;span style="font-family:courier new;"&gt; jax-qname.jar, jaxb-api.jar, jaxb-impl.jar, jaxb-libs.jar, jaxb-xjc.jar, namespace.jar, relaxngDatatype.jar&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;Our generated schema classes will be kept under:&lt;span style="font-family:courier new;"&gt; dev\jaxb\classes&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;Create a setEnv.bat file. Mine looks like this: &lt;/li&gt; &lt;blockquote style="font-family: courier new;"&gt;&lt;li&gt;@ECHO ON&lt;br /&gt;set CLASSPATH=.&lt;br /&gt;set CLASSPATH=%CLASSPATH%;C:\dev\jaxb\classes&lt;br /&gt;set CLASSPATH=%CLASSPATH%;C:\dev\jaxb\classes\myTest&lt;br /&gt;set CLASSPATH=%CLASSPATH%;C:\dev\jaxb\lib\jax-qname.jar&lt;br /&gt;set CLASSPATH=%CLASSPATH%;C:\dev\jaxb\lib\jaxb-api.jar&lt;br /&gt;set CLASSPATH=%CLASSPATH%;C:\dev\jaxb\lib\jaxb-impl.jar&lt;br /&gt;set CLASSPATH=%CLASSPATH%;C:\dev\jaxb\lib\jaxb-libs.jar&lt;br /&gt;set CLASSPATH=%CLASSPATH%;C:\dev\jaxb\lib\jaxb-xjc.jar&lt;br /&gt;set CLASSPATH=%CLASSPATH%;C:\dev\jaxb\lib\namespace.jar&lt;br /&gt;set CLASSPATH=%CLASSPATH%;C:\dev\jaxb\lib\relaxngDatatype.jar&lt;/li&gt; &lt;/blockquote&gt;&lt;li&gt;Copy your favourite xsd file in the &lt;span style="font-family:courier new;"&gt;c:\dev\jaxb&lt;/span&gt; folder.&lt;br /&gt; &lt;/li&gt;   &lt;li&gt;On command prompt execute the &lt;span style="font-family:courier new;"&gt;setEnv.bat&lt;/span&gt; file.&lt;/li&gt;   &lt;li&gt;(Make sure you have things like jav\bin, ant\bin etc in the system path variable)&lt;br /&gt; &lt;/li&gt;   &lt;li&gt;Once the env is set, you are all set.&lt;br /&gt; &lt;/li&gt;   &lt;li&gt;To generate java files in teh work folder, run the following command:&lt;br /&gt; &lt;/li&gt;   &lt;ul&gt;     &lt;li style="font-family: courier new;"&gt;xjc -p myTest catalog.xsd -d work&lt;/li&gt;     &lt;li&gt;You just compilled your entire schema into .java classes with package structure myTest under the work folder. Nice!&lt;br /&gt;   &lt;/li&gt;   &lt;/ul&gt;   &lt;li&gt;To generate .class files from the generated .java files, use the following command line:&lt;br /&gt; &lt;/li&gt;   &lt;ul style="font-family: courier new;"&gt;     &lt;li&gt;javac -d classes work\myTest\*.java&lt;/li&gt;   &lt;/ul&gt;   &lt;li&gt;YOU ARE DONE!&lt;/li&gt;   &lt;li&gt;Testing persistance:&lt;br /&gt; &lt;/li&gt;   &lt;ul&gt;     &lt;li&gt;change your directory to work folder. You should see the myTest package created here.&lt;br /&gt;   &lt;/li&gt;   &lt;/ul&gt;   &lt;ul&gt;     &lt;li&gt;Now create a folder named: "client".&lt;br /&gt;   &lt;/li&gt;     &lt;li&gt;Copy the &lt;span style="font-family:courier new;"&gt;JAXBConstructor.java&lt;/span&gt; file from this &lt;a href="http://www.onjava.com/onjava/2004/12/15/examples/jaxb-java-resources.zip"&gt;zip.&lt;/a&gt;&lt;/li&gt;     &lt;li&gt;Compile and run this file with  a sample xml as input.&lt;br /&gt;   &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Very nice articles that gets you started with jaxb:&lt;br /&gt;&lt;a href="http://www.onjava.com/pub/a/onjava/2004/12/15/jaxb.html"&gt;@link&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/WebServices/jaxb/"&gt;@sun&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113148790175380222?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113148790175380222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/jaxb-quick-start-guide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113148790175380222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113148790175380222'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/jaxb-quick-start-guide.html' title='jaxb, quick start guide'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113147521903015788</id><published>2005-11-08T12:40:00.000-06:00</published><updated>2005-11-08T12:40:54.463-06:00</updated><title type='text'>iBATIS: Object Relational Mapping(ORM)</title><content type='html'>&lt;div id="Block"&gt;    &lt;img alt="iBATIS Data Mapper process" src="http://ibatis.apache.org/flow.jpg" align="right" /&gt;    &lt;h2&gt;What is iBATIS?&lt;/h2&gt;    &lt;p&gt;The &lt;a title="iBATIS DataMapper framework" href="http://ibatis.apache.org/datamapper.html"&gt;    iBATIS Data Mapper framework&lt;/a&gt; makes it easier to use a database with Java and .NET applications. iBATIS couples objects with stored procedures or SQL statements using a XML descriptor. Simplicity is the biggest advantage of the iBATIS Data Mapper over object relational mapping tools.&lt;/p&gt;    &lt;p&gt;To use the iBATIS Data Mapper, you rely on your own objects, XML, and SQL. There is little to learn that you don't already know. With the iBATIS Data Mapper, you have the full power of both SQL and stored procedures at your fingertips.&lt;/p&gt;    &lt;p&gt;Are you interested but want to know what others have said? Well, first see the various    &lt;a title="iBATIS Articles and Other Coverage" href="http://opensource.atlassian.com/confluence/oss/display/IBATIS/Articles+and+other+coverage+of+iBATIS" target="_new"&gt;articles and books&lt;/a&gt;    that have covered iBATIS and read some of our    &lt;a title="iBATIS Feedback" href="http://opensource.atlassian.com/confluence/oss/display/IBATIS/Feedback+and+Experiences" target="_new"&gt;user feedback&lt;/a&gt;.    Then, learn how to simple it is to use the iBATIS Data Mapper by reading our    &lt;a title="SQL Maps for Java Tutorial" href="http://prdownloads.sourceforge.net/ibatisdb/iBATIS-SqlMaps-2-Tutorial.pdf?download"&gt;Java Tutorial&lt;/a&gt; or &lt;a title="iBATIS.NET DataMapper Quick Start Guide" href="http://opensource.atlassian.com/confluence/oss/display/IBATIS/Quick+Start+Guide" target="_new"&gt;.NET Quick Start Guide&lt;/a&gt;!&lt;/p&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113147521903015788?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113147521903015788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/ibatis-object-relational-mappingorm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113147521903015788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113147521903015788'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/ibatis-object-relational-mappingorm.html' title='iBATIS: Object Relational Mapping(ORM)'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113147397880595637</id><published>2005-11-08T12:18:00.000-06:00</published><updated>2005-11-08T12:19:38.996-06:00</updated><title type='text'>Continuous Integration</title><content type='html'>&lt;a href="http://www.martinfowler.com/articles/continuousIntegration.html"&gt;@link&lt;br /&gt;&lt;/a&gt;&lt;i&gt;An important part of any software development process is getting reliable builds of the software. Despite it's importance, we are often surprised when this isn't done. Here we discuss the process that Matt has put into place on a major project at ThoughtWorks, a process that is increasingly used throughout the company. It stresses a fully automated and reproducible build, including testing, that runs many times a day. This allows each developer to integrate daily thus reducing integration problems.&lt;br /&gt;&lt;br /&gt;&lt;/i&gt; &lt;p&gt;Software development is full of best practices which are often talked about but seem to be rarely done. One of the most basic, and valuable, of these is a fully automated build and test process that allows a team to build and test their software many times a day. The idea of a daily build has been talked about a lot. &lt;a href="http://www.amazon.com/exec/obidos/ASIN/1556159005"&gt;McConnnell&lt;/a&gt; recommends it as a best practice and it's been long known as a feature of the Microsoft development approach. We agree with the &lt;a href="http://www.martinfowler.com/xp.html"&gt;XP&lt;/a&gt; community, however, in saying that daily builds are a minimum. A fully automated process that allows you to build several times a day is both achievable and well worth the effort. &lt;/p&gt;    &lt;p&gt;We are using the term &lt;i&gt;Continuous Integration&lt;/i&gt;, a term used as one of the practices of XP (Extreme Programming). However we recognize that the practice has been around for a long time and is used by plenty of folks that would never consider XP for their work. We've been using XP as a touchstone in our software development process and that influences a lot of our terminology and practices. However you can use continuous integration without using any other parts of XP - indeed we think it's an essential part of any competent software development activity. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113147397880595637?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113147397880595637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/continuous-integration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113147397880595637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113147397880595637'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/continuous-integration.html' title='Continuous Integration'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113142897518925604</id><published>2005-11-07T23:48:00.000-06:00</published><updated>2005-11-09T16:49:33.240-06:00</updated><title type='text'>Hibernate, quick start guide</title><content type='html'>&lt;span style="font-weight: bold;"&gt;What is Hibernate? &lt;/span&gt;&lt;br /&gt;Hibernate is a ORM tool. ORM means object relational mapping. In laymans term, you can have a bunch of java classes(Value objects) and expect them to map directly on to the tables\columns in the database.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What can we do with Hibernate? &lt;/span&gt;&lt;br /&gt;Lots of things. You can design the object layer and forget about your relational layer. You can create both relational and object layers and forget about data transportation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How does Hibernate work? &lt;/span&gt;&lt;br /&gt;By now you might have realized that the major component in hibernate or any other ORM for that matter is "M", "M" for mapping. Your task is to generate/create this mapping file. And then compile everything. So basically, you create the object layer, create a blank database, create a mapping file, create a property file with database details and command the hibernate libraries to do the mapping. You can then use the hibernate libraries in your code to play around with your objects, that are mapped on to the database.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Getting started: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;"Road to Hibernate" is an excellent tutorial for you to get started with Hibernate. Here is the brief summary of what you will be doing:&lt;/li&gt;   &lt;li&gt;Download and install hibernate(&lt;span style="font-family: courier new;"&gt;c:\program files\hibernate-3_0_5&lt;/span&gt;)&lt;br /&gt; &lt;/li&gt;   &lt;li&gt;set up a work folder, something like c:\dev\hibernate&lt;br /&gt; &lt;/li&gt;   &lt;li&gt;Copying\referencing a bunch of \lib files: &lt;span style="font-family: courier new;"&gt;ant-antlr-1.6.3.jar, asm.jar, cglib-2.1.jar, commons-collections-2.1.1.jar, commons-logging-1.0.4.jar, dom4j-1.6.jar, hibernate3.jar, jdbc2_0-stdext.jar, jta.jar, jtds-1.1.jar, log4j-1.2.9.jar&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;Create some java value objects as described in the article.&lt;br /&gt; &lt;/li&gt;   &lt;li&gt;Create mapping file: &lt;span style="font-family: courier new;"&gt;hbm.xml&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;Create a configuration file with db connection information: &lt;span style="font-family: courier new;"&gt;hibernate.cfg.xml&lt;/span&gt;&lt;/li&gt;   &lt;li&gt;Write code, build and execute.&lt;br /&gt; &lt;/li&gt; &lt;/ul&gt; &lt;span style="font-style: italic;"&gt;The Road to &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0); font-style: italic;"&gt;Hibernate&lt;/span&gt;&lt;span style="font-style: italic;"&gt; is an introductory &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0); font-style: italic;"&gt;tutorial&lt;/span&gt;&lt;span style="font-style: italic;"&gt; for new users of &lt;/span&gt;&lt;a style="font-style: italic;" target="_blank" href="http://www.hibernate.org/"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Hibernate&lt;/span&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;. We start up with a simple command line application using an in-memory database and develop it further in small steps, until we reach a full fledged J2EE-Application using &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0); font-style: italic;"&gt;Hibernate&lt;/span&gt;&lt;span style="font-style: italic;"&gt;, EJBs, XDoclet and all the other nifty stuff.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;This &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0); font-style: italic;"&gt;tutorial&lt;/span&gt;&lt;span style="font-style: italic;"&gt; is intended to be for beginning users of &lt;/span&gt;&lt;span style="color: rgb(204, 0, 0); font-style: italic;"&gt;Hibernate&lt;/span&gt;&lt;span style="font-style: italic;"&gt;, but with advanced Java knowledge. It increases slowly in speed&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gloegl.de/5.html"&gt;@link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113142897518925604?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113142897518925604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/hibernate-quick-start-guide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113142897518925604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113142897518925604'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/hibernate-quick-start-guide.html' title='Hibernate, quick start guide'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113142071669995185</id><published>2005-11-07T21:30:00.000-06:00</published><updated>2005-11-07T21:31:56.760-06:00</updated><title type='text'>hsqldb - 100% Free and Fast Java Database</title><content type='html'>&lt;h3&gt;&lt;a href="http://hsqldb.org"&gt;&lt;span style="font-weight: normal;"&gt;@link&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/h3&gt; &lt;h3&gt;Features Summary&lt;/h3&gt;     &lt;ul&gt; &lt;li&gt; 100% Java      &lt;/li&gt;&lt;li&gt; A full RDBMS (Relational Database Management System), with the Object        capabilities of Java      &lt;/li&gt;&lt;li&gt;Switchable source code to support JDK 1.1.x, 1.2.x, 1.3.x, 1.4.x and above     &lt;/li&gt;&lt;li&gt;Super fast startup and SELECT, INSERT, DELETE and UPDATE operations     &lt;/li&gt;&lt;li&gt;&lt;a href="http://hsqldb.org/doc/guide/ch08.html"&gt;Standard SQL (Structured Query Language)        syntax&lt;/a&gt;      &lt;/li&gt;&lt;li&gt;Inner and outer joins, SELECT queries as correlations in joins     &lt;/li&gt;&lt;li&gt;Scalar (single value) SELECTS, correlated subqueries including IN, EXISTS,        ANY, ALL      &lt;/li&gt;&lt;li&gt;Views, Temp tables and sequences      &lt;/li&gt;&lt;li&gt;Primary key, unique and check constraints on single or multiple columns       &lt;/li&gt;&lt;li&gt;Indexes on single or multiple columns      &lt;/li&gt;&lt;li&gt;ORDER BY, GROUP BY and HAVING      &lt;/li&gt;&lt;li&gt;COUNT, SUM, MIN, MAX, AVG and statistical aggregate functions (also in        expressions and function arguments)      &lt;/li&gt;&lt;li&gt;Full support for SQL expressions such as CASE .. WHEN .. ELSE .. , NULLIF        etc.      &lt;/li&gt;&lt;li&gt;SQL standard autoincrement column support plus sequences      &lt;/li&gt;&lt;li&gt;Transaction COMMIT, ROLLBACK and SAVEPOINT support      &lt;/li&gt;&lt;li&gt;Referential Integrity (foreign keys) with full cascading options (delete,        update, set null, set default)      &lt;/li&gt;&lt;li&gt;Multiple schemata per database      &lt;/li&gt;&lt;li&gt;Java stored procedures and functions      &lt;/li&gt;&lt;li&gt;Triggers      &lt;/li&gt;&lt;li&gt;Database security with passwords, user rights and roles with GRANT and        REVOKE      &lt;/li&gt;&lt;li&gt;Extensive set of ALTER TABLE commands allowing change of column type      &lt;/li&gt;&lt;li&gt;In-memory tables for fastest operation     &lt;/li&gt;&lt;li&gt;Disk based tables for large data sets      &lt;/li&gt;&lt;li&gt;Text tables with external file data sources such as CSV files      &lt;/li&gt;&lt;li&gt;In-memory (like applets), embedded (into Java applications) and Client-Server        operating modes      &lt;/li&gt;&lt;li&gt;Three client server protocols: HSQL, HTTP and HSQL-BER - can run as an        HTTP web server - all with SSL option     &lt;/li&gt;&lt;li&gt;Can be used in applets, read-only media (CD), inside jars, webstart and        embedded applications      &lt;/li&gt;&lt;li&gt;Multiple databases per JVM     &lt;/li&gt;&lt;li&gt;Disk tables (CACHED TABLE) up to 8GB and text tables up to 2GB each      &lt;/li&gt;&lt;li&gt;Size of each string and binary data item only limited by memory      &lt;/li&gt;&lt;li&gt;Full support for PreparedStatement objects to speed up query processing      &lt;/li&gt;&lt;li&gt;95% JDBC interface support with batch statement and scrollable ResultSet        functionality      &lt;/li&gt;&lt;li&gt;All JDBC 1 data types supported, plus 'Object' , Boolean, Blob and Clob      &lt;/li&gt;&lt;li&gt;Full JDBC 2 DatabaseMetaData and ResultSetMetaData support      &lt;/li&gt;&lt;li&gt;Database dump as SQL script with or without data     &lt;/li&gt;&lt;li&gt;Powerful and compact java command line and GUI tools for database management        &lt;center&gt;         &lt;/center&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113142071669995185?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113142071669995185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/hsqldb-100-free-and-fast-java-database.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113142071669995185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113142071669995185'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/hsqldb-100-free-and-fast-java-database.html' title='hsqldb - 100% Free and Fast Java Database'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113142058286705133</id><published>2005-11-07T21:27:00.000-06:00</published><updated>2005-11-07T21:29:43.016-06:00</updated><title type='text'>OpenOffice: free, multiplatform and multilingual office suite</title><content type='html'>OpenOffice.org is  a &lt;a href="http://www.openoffice.org/product/reqts.html"&gt;multiplatform&lt;/a&gt; and &lt;a href="http://www.openoffice.org/project/l10n/languages.html"&gt;multilingual&lt;/a&gt; &lt;a href="http://www.openoffice.org/product/index.html"&gt;office suite&lt;/a&gt; and an &lt;a href="http://www.opensource.org/docs/definition.php"&gt;open-source&lt;/a&gt; project. Compatible with all other major office suites, the product is free to download, use, and distribute.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;OpenOffice.org 2.0 is the productivity suite that individuals, governments, and corporations around the world have been expecting for the last two years. Easy to use and fluidly interoperable with every major office suite, OpenOffice.org 2.0 realises the potential of open source.&lt;/p&gt;       &lt;p&gt;With new features, advanced XML capabilities and native support for the OASIS Standard OpenDocument format, OpenOffice.org 2.0 gives users around the globe the tools to be engaged and productive members of their society.&lt;br /&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://download.openoffice.org/2.0.0/index.html"&gt;OpenOffice.org 2.0 Download&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.openoffice.org/dev_docs/features/2.0/index.html"&gt;Features&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.openoffice.org/"&gt;http://www.openoffice.org/&lt;/a&gt;&lt;br /&gt;  &lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113142058286705133?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113142058286705133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/openoffice-free-multiplatform-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113142058286705133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113142058286705133'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/openoffice-free-multiplatform-and.html' title='OpenOffice: free, multiplatform and multilingual office suite'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113141623943790664</id><published>2005-11-07T20:16:00.001-06:00</published><updated>2009-09-19T21:49:10.795-05:00</updated><title type='text'>Firefox, quick navigation using keywords</title><content type='html'>This feature is better than the bookmark feature. Basically you add a keyword to your bookmarks. Keywords are the most convenient ways to revist the websites you visit frequently.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Steps: &lt;/b&gt;&lt;br /&gt;1. First create a bookmark to the website you visit the most.&lt;br /&gt;2. Then select "bookmarks\manage bookmark" from the menu.&lt;br /&gt;3. Locate the bookmark you just created.&lt;br /&gt;4. Right click this boomark and see its properties.&lt;br /&gt;5. under keyword add one word name for this bookmark.&lt;br /&gt;6. save, click ok, and you are done.&lt;br /&gt;7. Now open up a browser tab and type in your keyword in addr bar.&lt;br /&gt;8. Thats it, you should see your page!&lt;br /&gt;&lt;br /&gt;simple, effective and makes sense! I love firefox...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113141623943790664?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113141623943790664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/firefox-quick-navigation-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113141623943790664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113141623943790664'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/firefox-quick-navigation-using.html' title='Firefox, quick navigation using keywords'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113130402164033456</id><published>2005-11-06T13:06:00.000-06:00</published><updated>2005-11-06T13:19:23.923-06:00</updated><title type='text'>Integrating JBoss with the Eclipse IDE (win32)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Following versions work together: &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;jboss-4.0.3SP1&lt;/li&gt;   &lt;li&gt;Eclipse SDK 3.1.1;Build id: M20050929-0840&lt;/li&gt;   &lt;li&gt;JBossIDE 1.5 &lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step by step guide&lt;br /&gt;&lt;/span&gt; &lt;ol&gt;   &lt;li&gt;Download and &lt;span style="font-weight: bold;"&gt;install &lt;/span&gt;&lt;a href="http://www.jboss.com/products/jbossas/downloads"&gt;&lt;span style="font-weight: bold;"&gt;jboss&lt;/span&gt;-4.0.3SP1&lt;/a&gt;. I used "Run Installer"&lt;/li&gt;   &lt;li&gt;Download and &lt;span style="font-weight: bold;"&gt;unzip &lt;/span&gt;&lt;a href="http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.1.1-200509290840/eclipse-SDK-3.1.1-win32.zip"&gt;&lt;span style="font-weight: bold;"&gt;Eclipse &lt;/span&gt;3.1.1&lt;/a&gt; under &lt;span style="font-family: courier new;"&gt;program files&lt;/span&gt;. Make sure you download and install the proper build. I have not been lucky with other builds so far.&lt;/li&gt;   &lt;li&gt;Run Eclipse.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;Download and &lt;span style="font-weight: bold;"&gt;install JBossIDE&lt;/span&gt;:&lt;br /&gt;&lt;/li&gt;   &lt;ol&gt;     &lt;li&gt;Under the Eclipse IDE: &lt;span style="font-family:courier new;"&gt;Help/S.W updates/Find and install/Search for new features to install&lt;/span&gt;.&lt;br /&gt;    &lt;/li&gt;     &lt;li&gt;URL: &lt;span style="font-style: italic;"&gt;"http://download.jboss.org/jbosside/updates/development&lt;/span&gt;"&lt;br /&gt;    &lt;/li&gt;     &lt;li&gt;Name:&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;"JBossIDE 1.5 Release Candidate 1"&lt;/span&gt;&lt;/li&gt;     &lt;li&gt;Download and Insatall all in the list Do not do manual installation, automatic works!&lt;br /&gt;    &lt;/li&gt;   &lt;/ol&gt;    &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Setting up the default server menu&lt;/span&gt;: Once you are done with 4, right click any where on the IDE tool bar in eclipse and open up "&lt;span style="font-family:courier new;"&gt;Customize Perspective&lt;/span&gt;"; Select "&lt;span style="font-family:courier new;"&gt;Commands&lt;/span&gt;" tab. Select the "&lt;span style="font-family:courier new;"&gt;Default Server&lt;/span&gt;" check box from the list. Should be the 8th item in the list. This will enable the default server operations menu.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Creating default server configuration&lt;/span&gt;: From the menu select &lt;span style="font-family:courier new;"&gt;Run/Debug/Jboss4.0.x&lt;/span&gt;. Click New button on bottom right of the drop down. Home directory: &lt;span style="font-family:courier new;"&gt;C:\Program Files\jboss-4.0.3SP1&lt;/span&gt;. Under the "&lt;span style="font-family:courier new;"&gt;Server Configuration&lt;/span&gt;" select "&lt;span style="font-family:courier new;"&gt;Default&lt;/span&gt;". If you see a error on top left, means you are doing something wrong. Try one of these tips:&lt;br /&gt;&lt;/li&gt;   &lt;ol&gt;     &lt;li&gt;Error: &lt;span style="font-family:courier new;"&gt;could not locate tools.jar&lt;/span&gt;; Resolution, select a proper JDK and not JRE. &lt;span class="postbody"&gt;The tools.jar is in the JDK folder. You have to add the JDK as an installed JRE by selecting &lt;span style="font-family:courier new;"&gt;Window-&gt;Preferences, going to the Java-&gt;Installed JREs&lt;/span&gt; page, adding the JDK location with a name of your choice and making it the default for your workspace. Then goto the JDK tab under your &lt;span style="font-family:courier new;"&gt;new_configuration&lt;/span&gt; and select the proper JDK. I am using &lt;span style="font-family:courier new;"&gt;jdk1.5.0_04&lt;/span&gt;.&lt;br /&gt;     &lt;/span&gt;&lt;/li&gt;     &lt;li&gt;&lt;span class="postbody"&gt;Error: &lt;span style="font-family:courier new;"&gt;no jboss.4.0.x directory&lt;/span&gt;; Resolution, Uninstall your jboss and reinstall it. If that doesnt work, Reinstall the eclipseIDE plugin. If still no luck, gooooogle!&lt;/span&gt;&lt;/li&gt;     &lt;li&gt;&lt;span class="postbody"&gt;Error: Irritating pop up saying: &lt;span style="font-family:courier new;"&gt;Exception .metadata\.plugins\org.eclipse.debug.core\.launches&lt;/span&gt;. Resolution: Delete your .metadata folder that eclipse created in the workspace directory that you select at the time of launching the eclipse application. Then try 6 again.&lt;br /&gt;    &lt;/span&gt;&lt;/li&gt;   &lt;/ol&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Enabling the default server menu: &lt;/span&gt;If you pass the above step, you are almost done! Just go under &lt;span style="font-family:courier new;"&gt;Windows/Preferences/JBoss-IDE/Launcher&lt;/span&gt;. Now select the default server from the drop down. This should be the server configuration you just created under step 6.&lt;br /&gt;&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Starting your server: &lt;/span&gt;Go back to the "&lt;span style="font-family:courier new;"&gt;Default Server&lt;/span&gt;" menu item, now you should be able to start/stop/etc the server.&lt;br /&gt;&lt;/li&gt; &lt;/ol&gt; Credits:&lt;br /&gt;&lt;a href="http://www.devx.com/opensource/Article/20242/0/page/1"&gt;@devx article&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.jboss.com/?module=bb&amp;op=viewtopic&amp;amp;t=71704"&gt;@formum link for setting jdk instead of jvm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note: Use default installation locations and settings, atleast until you get things working.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113130402164033456?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113130402164033456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/integrating-jboss-with-eclipse-ide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113130402164033456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113130402164033456'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/integrating-jboss-with-eclipse-ide.html' title='Integrating JBoss with the Eclipse IDE (win32)'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113129226230243608</id><published>2005-11-06T09:41:00.000-06:00</published><updated>2005-11-06T09:51:06.223-06:00</updated><title type='text'>New features in J2EE 1,4</title><content type='html'>&lt;img alt="The image “http://java.sun.com/developer/technicalArticles/J2EE/new1_4/fig2.gif” cannot be displayed, because it contains errors." src="http://java.sun.com/developer/technicalArticles/J2EE/new1_4/fig2.gif" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Java API for XML-Based RPC (JAX-RPC), aka Java Web Services&lt;/span&gt;&lt;br /&gt;You can use the Java API for XML-based RPC (JAX-RPC) to build Web applications and Web services, incorporating XML-based RPC functionality according to the SOAP 1.1 specification.&lt;br /&gt;&lt;a href="http://java.sun.com/webservices/jaxrpc/index.jsp"&gt;@link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JACC, Java Authorization Contract for Containers&lt;br /&gt;&lt;/span&gt;The Java Authorization Contract for Containers (Java ACC) specification (JSR-115) defines new &lt;code&gt;java.security.Permission&lt;/code&gt; classes to satisfy the Java 2 Platform, Enterprise Edition (J2EE) authorization model. The Java ACC specification defines the binding of container access decisions to operations on instances of these permission classes.&lt;br /&gt;&lt;a href="http://java.sun.com/j2ee/javaacc/"&gt;@link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Java API for XML Registries (JAXR) Overview&lt;br /&gt;&lt;/span&gt; &lt;div&gt; The Java API for XML Registries (JAXR) provides a uniform and standard Java API for accessing different kinds of XML Registries. An XML registry is an enabling infrastructure for building, deploying, and discovering Web services. &lt;/div&gt;  &lt;span class="sp10"&gt; &lt;/span&gt;&lt;br /&gt;  &lt;div&gt;Currently there are a variety of specifications for XML registries including, most notably, the ebXML Registry and Repository standard, which is being developed by OASIS and U.N./CEFACT, and the UDDI specification, which is being developed by a vendor consortium. &lt;/div&gt;  &lt;span class="sp10"&gt; &lt;/span&gt;&lt;br /&gt;  &lt;div&gt;JAXR enables Java software programmers to use a single, easy-to-use abstraction API to access a variety of XML registries. Simplicity and ease of use are facilitated within JAXR by a unified JAXR information model, which describes content and metadata within XML registries.&lt;br /&gt;&lt;a href="http://java.sun.com/webservices/jaxr/overview.html"&gt;@link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Java Management Extensions (JMX)&lt;/span&gt;&lt;br /&gt;Java Management Extensions (JMX) technology provides the tools for building distributed, Web-based, modular and dynamic solutions for managing and monitoring devices, applications, and service-driven networks. By design, this standard is suitable for adapting legacy systems, implementing new management and monitoring solutions, and plugging into those of the future.&lt;br /&gt; &lt;/div&gt; &lt;a href="http://java.sun.com/products/JavaManagement/"&gt;@link&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mgmt: J2EE Management Specification&lt;/span&gt;&lt;br /&gt;The &lt;a href="http://www.jcp.org/en/jsr/detail?id=77&amp;amp;showPrint"&gt;J2EE Management specification (JSR 077)&lt;/a&gt; includes standard mappings of the model to the Common Information Model (CIM), to an SNMP Management Information Base (MIB), and to the Java object model through a server resident Enterprise JavaBeans (EJB) component, known as the J2EE Management EJB Component (MEJB). The MEJB provides interoperable remote access to the model from any standard J2EE application.&lt;br /&gt;&lt;a href="http://java.sun.com/j2ee/tools/management/overview.html"&gt;@link&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.javaworld.com/javaworld/jw-06-2002/jw-0614-mgmt.html"&gt;@javaWorld article&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113129226230243608?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113129226230243608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/new-features-in-j2ee-14.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113129226230243608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113129226230243608'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/new-features-in-j2ee-14.html' title='New features in J2EE 1,4'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113106323218488911</id><published>2005-11-03T18:12:00.000-06:00</published><updated>2005-11-03T18:13:52.566-06:00</updated><title type='text'>Fastest JDBC driver for SQLServer: jTDC</title><content type='html'>&lt;p&gt;jTDS is an open source 100% pure Java (type 4) JDBC 3.0 driver for         Microsoft SQL Server (6.5, 7, 2000 and 2005) and Sybase (10, 11, 12).         jTDS is based on &lt;a href="http://www.freetds.org/"&gt;FreeTDS&lt;/a&gt; and is         currently the fastest production-ready JDBC driver for SQL Server         and Sybase. jTDS is 100% JDBC 3.0 compatible, supporting forward-only         and scrollable/updateable &lt;code&gt;ResultSet&lt;/code&gt;s, concurrent         (completely independent) &lt;code&gt;Statement&lt;/code&gt;s and implementing all         the &lt;code&gt;DatabaseMetaData&lt;/code&gt; and &lt;code&gt;ResultSetMetaData&lt;/code&gt;         methods. Check out the &lt;a href="http://jtds.sourceforge.net/features.html"&gt;feature matrix&lt;/a&gt; for         more details.&lt;/p&gt;         &lt;p&gt;Quite a few of the commercial JDBC drivers out there are based on jTDS         (or FreeTDS), even if they no longer acknowledge this. jTDS has been         tested with virtually all JDBC-based database management tools and is         the driver of choice for most of these (recommended for         &lt;a href="http://www.minq.se/products/dbvis/drivers.html#sqlserver"&gt;DbVisualizer&lt;/a&gt;         and &lt;a href="http://squirrel-sql.sourceforge.net/"&gt;SQuirreL SQL&lt;/a&gt;,         distributed with &lt;a href="http://www.aquafold.com/"&gt;Aqua Data Studio&lt;/a&gt;         and &lt;a href="http://www.datadino.com/"&gt;DataDino&lt;/a&gt;). jTDS is also         becoming a common choice for enterprise-level applications: it passes         both the &lt;a href="http://java.sun.com/products/jdbc/download.html#testsuite131"&gt;         J2EE 1.3 certification&lt;/a&gt; and &lt;a href="http://www.hibernate.org/"&gt;Hibernate&lt;/a&gt;         test suites, and is recommended for &lt;a href="http://www.jboss.org/wiki/Wiki.jsp?page=SQLServer"&gt;JBoss&lt;/a&gt;, &lt;a href="http://www.hibernate.org/80.html"&gt;Hibernate&lt;/a&gt;, &lt;a href="http://www.atlassian.com/software/jira/docs/latest/standalone-dbconfig.html#sqlserver2000"&gt;Atlassian         JIRA&lt;/a&gt; and &lt;a href="http://confluence.atlassian.com/display/DOC/Requirements"&gt;Confluence&lt;/a&gt;         and &lt;a href="http://www.compiere.org/"&gt;Compiere&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://jtds.sourceforge.net/"&gt;@link&lt;/a&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/8461442-113106323218488911?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113106323218488911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/fastest-jdbc-driver-for-sqlserver-jtdc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113106323218488911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113106323218488911'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/fastest-jdbc-driver-for-sqlserver-jtdc.html' title='Fastest JDBC driver for SQLServer: jTDC'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113105604370595934</id><published>2005-11-03T16:12:00.000-06:00</published><updated>2005-11-03T16:14:04.056-06:00</updated><title type='text'>Troubleshooting tool, find dependencies: Dependency Walker</title><content type='html'>&lt;span style="font-family:Trebuchet MS;"&gt;&lt;a href="http://www.dependencywalker.com/"&gt;@link&lt;/a&gt;&lt;br /&gt;Dependency Walker is a free utility that scans any 32-bit or 64-bit Windows module (exe, dll, ocx, sys, etc.) and builds a hierarchical tree diagram of all dependent modules. For each module found, it lists all the functions that are exported by that module, and which of those functions are actually being called by other modules. Another view displays the minimum set of required files, along with detailed information about each file including a full path to the file, base address, version numbers, machine type, debug information, and more.&lt;br /&gt;&lt;br /&gt;Dependency Walker is also very useful for troubleshooting system errors related to loading and executing modules. Dependency Walker detects many common application problems such as missing modules, invalid modules, import/export mismatches, circular dependency errors, mismatched machine types of modules, and module initialization failures.&lt;br /&gt;&lt;br /&gt;Dependency Walker runs on Windows 95, 98, Me, NT, 2000, XP, and 2003. It can process any 32-bit or 64-bit Windows module, including ones designed for Windows CE. It can be run as graphical application or as a console application. Dependency Walker handles all types of module dependencies, including implicit, explicit (dynamic / runtime), forwarded, delay-loaded, and injected. A detailed help is included.&lt;/span&gt;  &lt;p align="left"&gt;&lt;span style="font-family:Trebuchet MS;"&gt;&lt;span style="font-weight: bold;"&gt;Dependency Walker is completely free to use&lt;/span&gt;. However, you may not profit from the distribution of it, nor may you bundle it with another product.&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/8461442-113105604370595934?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113105604370595934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/troubleshooting-tool-find-dependencies.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113105604370595934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113105604370595934'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/troubleshooting-tool-find-dependencies.html' title='Troubleshooting tool, find dependencies: Dependency Walker'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113089031720749887</id><published>2005-11-01T18:10:00.000-06:00</published><updated>2005-11-03T12:23:54.776-06:00</updated><title type='text'>A free version control tool from Apache, subVersion</title><content type='html'>&lt;a href="http://svnbook.red-bean.com/"&gt;step by step book&lt;/a&gt;&lt;br /&gt;&lt;a href="http://svn.haxx.se/users/archive-2005-06/0547.shtml"&gt;a useful forum link&lt;/a&gt;&lt;br /&gt;&lt;a href="http://svn.spears.at/#1"&gt;configuring http, step by step&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.samspublishing.com/articles/article.asp?p=30115&amp;amp;seqNum=3"&gt;Setting Up a Secure Apache 2 Server&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tud.at/programm/apache-ssl-win32-howto.php3"&gt;Most useful resource if you are setting up https for apache&lt;/a&gt;&lt;br /&gt;&lt;a href="http://cache.spurl.net/?url=http://www.thompsonbd.com/chris/tutorials/apachessl.html"&gt;SSL Securing apache server for windows 2003&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113089031720749887?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113089031720749887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/free-version-control-tool-from-apache.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113089031720749887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113089031720749887'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/free-version-control-tool-from-apache.html' title='A free version control tool from Apache, subVersion'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113087429391282321</id><published>2005-11-01T13:43:00.000-06:00</published><updated>2005-11-01T13:44:53.923-06:00</updated><title type='text'>What is WebDAV?</title><content type='html'>Briefly: WebDAV stands for "Web-based      Distributed Authoring and Versioning". It is      a set of extensions to the HTTP protocol      which allows users to collaboratively edit      and manage files on remote web servers.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.webdav.org/"&gt;@link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113087429391282321?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113087429391282321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/what-is-webdav.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113087429391282321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113087429391282321'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/what-is-webdav.html' title='What is WebDAV?'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113082988185958766</id><published>2005-11-01T00:25:00.000-06:00</published><updated>2005-11-01T01:24:41.916-06:00</updated><title type='text'>XMLHttpRequest object</title><content type='html'>The XMLHttpRequest object is a handy dandy JavaScript object that offers a   convenient way for webpages to get information from servers without refreshing themselves.  &lt;p&gt;The benefit to end users is   that they don't have to type as much and they don't have to wait as long.  For example, having the user's city and state   show up in a webpage automatically after the ZIP code has been typed in is a big time saver.     &lt;/p&gt; &lt;p&gt;Although the XMLHttpRequest object might sound complex and different from any other JavaScript object you have ever used, it really isn't. A good way to think of the XMLHttpRequest object is as you would think of the JavaScript Image object. As we know, with the Image object you can dynamically specify a new URL for the image source without reloading the page. Similarly with the XMLHttpRequest object, you can dynamically specify a URL to get some server data without reloading the page.&lt;/p&gt;&lt;br /&gt;&lt;a href="http://www.webpasties.com/xmlHttpRequest/"&gt;@link&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/XMLHttpRequest"&gt;@wiki-xmlHTTP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://developer.apple.com/internet/webcontent/xmlhttpreq.html"&gt;@apple&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.fiftyfoureleven.com/resources/programming/xmlhttprequest/examples"&gt;XMLHttpRequest &amp;amp; Ajax Working Examples&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113082988185958766?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113082988185958766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/11/xmlhttprequest-object.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113082988185958766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113082988185958766'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/11/xmlhttprequest-object.html' title='XMLHttpRequest object'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113082403798553355</id><published>2005-10-31T23:42:00.000-06:00</published><updated>2005-10-31T23:47:17.996-06:00</updated><title type='text'>Programmable Web apis</title><content type='html'>ProgrammableWeb is a &lt;strong&gt;web-as-platform reference site and blog &lt;/strong&gt;                     delivering news, information and resources for developing applications                     using the Web 2.0 APIs.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://programmableweb.com/apis"&gt;The programmable apis&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113082403798553355?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113082403798553355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/10/programmable-web-apis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113082403798553355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113082403798553355'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/10/programmable-web-apis.html' title='Programmable Web apis'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113082155165942141</id><published>2005-10-31T23:05:00.000-06:00</published><updated>2005-10-31T23:25:06.680-06:00</updated><title type='text'>Flash / JavaScript Integration Kit (Beta)</title><content type='html'>&lt;p&gt;The Flash / JavaScript Integration kit makes it possible to seamlessly communicate between Flash and JavaScript. You can call JavaScript functions from Flash, and ActionScript functions from JavaScript.&lt;/p&gt;   &lt;ul&gt; &lt;li&gt;&lt;a href="http://weblogs.macromedia.com/flashjavascript/downloads/FlashJavascriptGateway.zip"&gt;Download the latest release of the Flash / JavaScript Integration Kit.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://osflash.org/doku.php?id=flashjs"&gt;Go to the project page (on OSFlash).&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sourcesecure.co.uk/trac/osflash/flashjavascript"&gt;Go to the development site (view the source code or log a bug).&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt; &lt;a href="http://weblogs.macromedia.com/flashjavascript/"&gt;@link&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.osflash.org/doku.php?id=flashjs"&gt;@OSFlash&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113082155165942141?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113082155165942141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/10/flash-javascript-integration-kit-beta.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113082155165942141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113082155165942141'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/10/flash-javascript-integration-kit-beta.html' title='Flash / JavaScript Integration Kit (Beta)'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113082150267659525</id><published>2005-10-31T23:04:00.000-06:00</published><updated>2005-10-31T23:05:02.686-06:00</updated><title type='text'>Extending AJAX with the Flash/JavaScript Integration Kit</title><content type='html'>Want more control over the user experience? Because Flash makes graphical programming quick, easy, and attractive, and because JavaScript is very effective at manipulating HTML, they can be leveraged to focus on their strengths. Kris Hadlock shows you how to extend AJAX (Asynchronous JavaScript and XML) by cross-communicating between Flash and JavaScript. Discover how this technique enables technologies to focus on specialized tasks, and helps create the ultimate user experience.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.informit.com/articles/printerfriendly.asp?p=418664&amp;amp;rl=1"&gt;@article link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113082150267659525?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113082150267659525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/10/extending-ajax-with-flashjavascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113082150267659525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113082150267659525'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/10/extending-ajax-with-flashjavascript.html' title='Extending AJAX with the Flash/JavaScript Integration Kit'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113035200248909423</id><published>2005-10-26T13:39:00.000-05:00</published><updated>2005-10-26T13:40:13.870-05:00</updated><title type='text'>How to integrate Prolog and Java?</title><content type='html'>Use JPL.&lt;br /&gt;Production stable release, &lt;a href="http://sourceforge.net/projects/jpl/"&gt;@here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113035200248909423?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113035200248909423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/10/how-to-integrate-prolog-and-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113035200248909423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113035200248909423'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/10/how-to-integrate-prolog-and-java.html' title='How to integrate Prolog and Java?'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-113035067498267372</id><published>2005-10-26T13:15:00.000-05:00</published><updated>2005-10-26T13:17:54.990-05:00</updated><title type='text'>TWikiTM - an Enterprise Collaboration Platform</title><content type='html'>Welcome to TWiki, a flexible, powerful, and easy to use enterprise collaboration platform. It is a  &lt;a href="http://twiki.org/cgi-bin/view/Codev/StructuredWiki"&gt;Structured Wiki&lt;/a&gt;, typically  used to run a project development space, a document management system, a  knowledge base, or any other groupware tool, on an intranet or on the  internet. Web content can be created collaboratively by using just a  browser. Users without programming skills can create web applications.  Developers can extend the functionality of TWiki with Plugins.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dev2dev.bea.com/wiki/bin/view/TWiki/WebHome"&gt;@more Info&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twiki.org/"&gt;@home&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-113035067498267372?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/113035067498267372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/10/twikitm-enterprise-collaboration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113035067498267372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/113035067498267372'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/10/twikitm-enterprise-collaboration.html' title='TWikiTM - an Enterprise Collaboration Platform'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-112978602529613333</id><published>2005-10-20T00:25:00.000-05:00</published><updated>2005-10-20T00:27:05.300-05:00</updated><title type='text'>Video: Google Factory Tour</title><content type='html'>Very interesting!&lt;br /&gt;&lt;a href="http://video.google.com/videoplay?docid=3383042311441257769"&gt;@link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-112978602529613333?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/112978602529613333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/10/video-google-factory-tour.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/112978602529613333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/112978602529613333'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/10/video-google-factory-tour.html' title='Video: Google Factory Tour'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-112809977238325600</id><published>2005-09-30T11:57:00.000-05:00</published><updated>2005-09-30T12:05:57.503-05:00</updated><title type='text'>Forgot your XP pwd? tips 'n' tricks (win xp)</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;Forgot Ur Administrator Password!&lt;br /&gt;&lt;br /&gt;Can't Log On to Windows XP?&lt;br /&gt;&lt;br /&gt;If that's your only problem, then you probably have nothing to worry about. As long as you have your Windows XP CD, you can get back into your system using a simple but effective method made possible by alittle known access hole in Windows XP.&lt;br /&gt;&lt;br /&gt;you can easily change or wipe out your Administrator password for freeduring a Windows XP Repair. Here's how with a step-by-step descriptionof the initial Repair process included for newbie's.&lt;br /&gt;&lt;br /&gt;1. Place your Windows XP CD in your cd-rom and start your computer(it's assumed here that your XP CD is bootable – as it should be - andthat you have your bios set to boot from CD)&lt;br /&gt;&lt;br /&gt;2. Keep your eye on the screen messages for booting to your cdTypically, it will be "Press any key to boot from cd"&lt;br /&gt;&lt;br /&gt;3. Once you get in, the first screen will indicate that Setup isinspecting your system and loading files.&lt;br /&gt;&lt;br /&gt;4. When you get to the Welcome to Setup screen, press ENTER to SetupWindows now&lt;br /&gt;&lt;br /&gt;5. The Licensing Agreement comes next - Press F8 to accept it.&lt;br /&gt;&lt;br /&gt;6. The next screen is the Setup screen which gives you the option todo a Repair. It should read something like "If one of the followingWindows XP installations is damaged, Setup can try to repair it"&lt;br /&gt;&lt;br /&gt;Use the up and down arrow keys to select your XP installation (if youonly have one, it should already be selected) and press R to begin theRepair process.&lt;br /&gt;&lt;br /&gt;7. Let the Repair run. Setup will now check your disks and then startcopying files which can take several minutes.&lt;br /&gt;&lt;br /&gt;8. Shortly after the Copying Files stage, you will be required toreboot. (this will happen automatically – you will see a progress barstating "Your computer will reboot in 15 seconds"&lt;br /&gt;&lt;br /&gt;9. During the reboot, do not make the mistake of "pressing any key" toboot from the CD again! Setup will resume automatically with thestandard billboard screens and you will notice Installing Windows ishighlighted.&lt;br /&gt;&lt;br /&gt;10. Keep your eye on the lower left hand side of the screen and whenyou see the Installing Devices progress bar, press SHIFT + F10. Thisis the security hole! A command console will now open up giving youthe potential for wide access to your system.&lt;br /&gt;&lt;br /&gt;11. At the prompt, type NUSRMGR.CPL and press Enter. Voila! You havejust gained graphical access to your User Accounts in the Control Panel.&lt;br /&gt;&lt;br /&gt;12. Now simply pick the account you need to change and remove orchange your password as you prefer. If you want to log on withouthaving to enter your new password, you can type control userpasswords2at the prompt and choose to log on without being asked for password.After you've made your changes close the windows, exit the command boxand continue on with the Repair (have your Product key handy).&lt;br /&gt;&lt;br /&gt;13. Once the Repair is done, you will be able to log on with your newpassword (or without a password if you chose not to use one or if youchose not to be asked for a password). Your programs and personalizedsettings should remain intact.&lt;br /&gt;&lt;br /&gt;It has been tested on Windows XP Pro with and without SP1 and also hasbeen used in a real situation where someone could not remember their password and it worked like a charm to fix the problem. This security hole allows access to more than just user accounts. You can also&lt;br /&gt;access the Registry and Policy Editor, for example. And its gui access with mouse control. Of course, a Product Key will be needed to continue with the Repair after making the changes, but for anyone intent on gaining access to your system, this would be no problem.&lt;br /&gt;&lt;br /&gt;And in case you are wondering, NO, you cannot cancel install after making the changes and expect to logon with your new password.&lt;br /&gt;&lt;br /&gt;Cancelling will just result in Setup resuming at bootup and your changes will be lost.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.winsupersite.com/showcase/windowsxp_tips_rc1.asp"&gt;more 1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youthtech.com/techstuff/techtips/winxptips.htm"&gt;more 2&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.infopackets.com/"&gt;more 3&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.winplanet.com/tips_tutorials/9-n.htm"&gt;more 4&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-112809977238325600?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/112809977238325600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/09/forgot-your-xp-pwd-tips-n-tricks-win.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/112809977238325600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/112809977238325600'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/09/forgot-your-xp-pwd-tips-n-tricks-win.html' title='Forgot your XP pwd? tips &apos;n&apos; tricks (win xp)'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461442.post-112809875791260432</id><published>2005-09-30T11:42:00.000-05:00</published><updated>2005-09-30T11:47:54.526-05:00</updated><title type='text'>New name, old game: ajax!</title><content type='html'>&lt;p&gt;Ajax applications look almost as if they reside on the user's machine, rather than across the Internet on a server. The reason: pages get updated, not entirely refreshed.&lt;/p&gt;  &lt;p&gt;&lt;img style="cursor: -moz-zoom-in;" alt="The image “http://www.adaptivepath.com/images/publications/essays/ajax-fig2_small.png” cannot be displayed, because it contains errors." src="http://www.adaptivepath.com/images/publications/essays/ajax-fig2_small.png" width="447" /&gt;&lt;/p&gt; &lt;p&gt;“Every user action that normally would generate an HTTP request takes the form of a JavaScript call to the Ajax engine instead”, wrote Jesse James Garrett, in the essay that first defined the term. “Any response to a user action that doesn’t require a trip back to the server — such as simple data validation, editing data in memory, and even some navigation — the engine handles on its own. If the engine needs something from the server in order to respond — if it’s submitting data for processing, loading additional interface code, or retrieving new data — the engine makes those requests asynchronously, usually using XML, without stalling a user’s interaction with the application.”&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.adaptivepath.com/publications/essays/archives/000385.php"&gt;@source&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/AJAX"&gt;@wiki&lt;/a&gt;&lt;br /&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/8461442-112809875791260432?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/112809875791260432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/09/new-name-old-game-ajax.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/112809875791260432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/112809875791260432'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/09/new-name-old-game-ajax.html' title='New name, old game: ajax!'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-112613064086434502</id><published>2005-09-07T16:56:00.000-05:00</published><updated>2005-09-07T17:07:54.286-05:00</updated><title type='text'>Character sets</title><content type='html'>Official guide to character sets:&lt;br /&gt;&lt;pre&gt;This document specifies an Internet standards&lt;br /&gt;track protocol for the Internet community:&lt;br /&gt;&lt;a href="http://www.iana.org/assignments/character-sets"&gt;linky dinky @ iana&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also see UTF-8, a transformation&lt;br /&gt;format of &lt;a href="http://en.wikipedia.org/wiki/ISO_10646"&gt;ISO 10646 @ietf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A good explaination @ wiki on&lt;br /&gt;&lt;a aiotitle="character encoding" href="http://en.wikipedia.org/wiki/Character_encoding"&gt;character encoding&lt;/a&gt; and&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/ISO_10646"&gt;UCS (universal character sets)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Encoding is specified in html under the&lt;br /&gt;following tag:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;m equiv="Content-Type"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;content="text/html;charset=utf-8" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;and xml&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;?x ml version="1.0" encoding="iso-8859-1" ?&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;m eta="" equiv="Content-Type" content="text/html;charset=utf-8"&gt;&lt;/m&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-112613064086434502?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/112613064086434502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/09/character-sets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/112613064086434502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/112613064086434502'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/09/character-sets.html' title='Character sets'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-112058128819733123</id><published>2005-07-05T11:34:00.000-05:00</published><updated>2005-07-05T11:35:21.063-05:00</updated><title type='text'>CruiseControl</title><content type='html'>&lt;a href="http://cruisecontrol.sourceforge.net/"&gt;CruiseControl&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;CruiseControl is a framework for a continuous build process. It includes, but is not limited to, plugins for email notification, Ant, and various source control tools. A web interface is provided to view the details of the current and previous builds."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-112058128819733123?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/112058128819733123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/07/cruisecontrol.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/112058128819733123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/112058128819733123'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/07/cruisecontrol.html' title='CruiseControl'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111945242312338092</id><published>2005-06-22T10:00:00.000-05:00</published><updated>2005-06-22T10:01:36.150-05:00</updated><title type='text'>Inversion of Control Design Pattern for light weight Java</title><content type='html'>&lt;a href="http://www.devx.com/Java/Article/27583"&gt;devx Article&lt;/a&gt;&lt;br /&gt;Assume Class A has a relationship with Class B: it wants to use the services of Class B. The usual way to establish this relationship is to instantiate Class B inside Class A. Though this approach works, it creates tight coupling between the classes. You can't easily change Class B without modifying Class A. To eliminate the coupling, you can have a Configurator inject the instance of Class B (Object "b") to the instance of Class A (Object "a"). If you want to change the implementation of Class B later on, you simply change the Configurator object. So, the control of how Object "a" gets the reference of Object "b" is inverted. Object "a" is not responsible for getting the reference to Object "b". Instead, the Configurator is responsible for it. This is the basis for the IoC design pattern.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.picocontainer.org/Inversion%20of%20Control"&gt;PicoContainer - Inversion of Control&lt;/a&gt;: "Simply put, a component designed according to IoC does not go off and get other components that it needs in order to do its job. It instead declares these dependencies, and the container supplies them. Thus the name IoC/DIP/Hollywood Principle. The control of the dependencies for a given component is inverted. It is no longer the component itself that establishes its own dependencies, but something on the outside. That something could be a container like PicoContainer, but could easily be normal code instantiating the component in an embedded sense.&lt;br /&gt;Examples&lt;br /&gt;&lt;br /&gt;Here is the simplest possible IoC component :&lt;br /&gt;&lt;br /&gt;public interface Orange { &lt;br /&gt; // methods&lt;br /&gt;}&lt;br /&gt;public class AppleImpl implements Apple { &lt;br /&gt; private Orange orange; &lt;br /&gt; public AppleImpl(Orange orange) {   &lt;br /&gt;   this.orange = orange; &lt;br /&gt; }&lt;br /&gt; // other methods&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.martinfowler.com/articles/injection.html"&gt;Martin Flower&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111945242312338092?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111945242312338092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/06/inversion-of-control-design-pattern.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111945242312338092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111945242312338092'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/06/inversion-of-control-design-pattern.html' title='Inversion of Control Design Pattern for light weight Java'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111893688767322205</id><published>2005-06-16T10:44:00.000-05:00</published><updated>2005-06-16T10:48:07.680-05:00</updated><title type='text'>Accept-Encoding :gzip to compress information in http</title><content type='html'>&lt;p&gt;Information send by the server can be zipped to reduce size; Server should support compression and browser should support decompression. Most browsers do support this feature using the Accept-Encoding :gzip. Every server should have a setting that enables/disables this feature.&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.websiteoptimization.com/speed/18/"&gt;For IIS&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"&gt;From w3&lt;/a&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;The Accept-Encoding request-header field is similar to Accept, but    restricts the content-codings (section 3.5) that are acceptable in    the response. &lt;/p&gt;  &lt;pre&gt;       Accept-Encoding  = "Accept-Encoding" ":"&lt;br /&gt;&lt;/pre&gt;  &lt;pre&gt;                          1#( codings [ ";" "q" "=" qvalue ] )&lt;br /&gt;      codings          = ( content-coding | "*" )&lt;br /&gt;&lt;/pre&gt;  &lt;p&gt;    Examples of its use are: &lt;/p&gt;  &lt;pre&gt;       Accept-Encoding: compress, gzip&lt;br /&gt;      Accept-Encoding:&lt;br /&gt;      Accept-Encoding: *&lt;br /&gt;      Accept-Encoding: compress;q=0.5, gzip;q=1.0&lt;br /&gt;      Accept-Encoding: gzip;q=1.0, identity; q=0.5, *;q=0&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111893688767322205?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111893688767322205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/06/accept-encoding-gzip-to-compress.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111893688767322205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111893688767322205'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/06/accept-encoding-gzip-to-compress.html' title='Accept-Encoding :gzip to compress information in http'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111834599007253603</id><published>2005-06-09T14:39:00.001-05:00</published><updated>2009-06-04T12:48:14.604-05:00</updated><title type='text'>Amaya w3c Browser and Authoring tool</title><content type='html'>&lt;a href="http://www.w3.org/Amaya/"&gt;Amaya&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Amaya is a Web client that acts both as a browser and as an authoring tool. It has been designed by W3C with the primary purpose of demonstrating new Web technologies in a What You See Is What You Get (WYSIWYG) environment. The current version implements the Hypertext Markup Language (HTML), Extensible Hypertext Markup Language (XHTML), Mathematical Markup Language (MathML), Scalable Vector Graphics (SVG), the animation module of Synchronized Multimedia (SMIL Animation), Cascading Style Sheets (CSS), and Hypertext Transfer Protocol (HTTP).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111834599007253603?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111834599007253603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/06/amaya-w3c-browser-and-authoring-tool.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111834599007253603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111834599007253603'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/06/amaya-w3c-browser-and-authoring-tool.html' title='Amaya w3c Browser and Authoring tool'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111739244330355945</id><published>2005-05-29T13:47:00.000-05:00</published><updated>2005-05-29T13:47:23.340-05:00</updated><title type='text'>TCP/IP Protocol Sequence Diagrams</title><content type='html'>&lt;a href="http://www.eventhelix.com/RealtimeMantra/Networking/"&gt;TCP/IP Protocol Sequence Diagrams&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.eventhelix.com/RealtimeMantra/Networking/POP3.pdf"&gt;POP3 Sequence Diagram&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111739244330355945?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111739244330355945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/05/tcpip-protocol-sequence-diagrams.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111739244330355945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111739244330355945'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/05/tcpip-protocol-sequence-diagrams.html' title='TCP/IP Protocol Sequence Diagrams'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111731295437037369</id><published>2005-05-28T15:42:00.000-05:00</published><updated>2005-05-28T15:42:34.376-05:00</updated><title type='text'>Decompilation and Obfuscation of Java code</title><content type='html'>&lt;a href="http://www-106.ibm.com/developerworks/java/library/j-obfus/"&gt;How to lock down your Java code (or open up someone else's)&lt;/a&gt;&lt;br /&gt;&lt;a href=http://www.brouhaha.com/~eric/computers/mocha.html&gt;Eric Smith's Mocha(Decompilation) distribution site &lt;/a&gt;&lt;br /&gt;&lt;a href=http://java.cern.ch:80/CremaE1/DOC/quickstart.html&gt;Crema(Obfuscation) on the CERN site &lt;/a&gt;&lt;br /&gt;&lt;a href=http://www.javaworld.com/javaworld/javatips/jw-javatip22.html&gt;Protect your bytecodes from reverse engineering/decompilation&lt;/a&gt;&lt;br /&gt;&lt;a href=http://www.javaworld.com/columns/jw-tips-index.shtml&gt;java tips from javaworld&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111731295437037369?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111731295437037369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/05/decompilation-and-obfuscation-of-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111731295437037369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111731295437037369'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/05/decompilation-and-obfuscation-of-java.html' title='Decompilation and Obfuscation of Java code'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111731198841104281</id><published>2005-05-28T15:26:00.000-05:00</published><updated>2005-05-28T15:26:28.416-05:00</updated><title type='text'>Make an EJB from any Java class with Java Reflection</title><content type='html'>&lt;a href="http://www.javaworld.com/javaworld/jw-12-2000/jw-1215-anyclass.html"&gt;Make an EJB from any Java class with Java Reflection&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Do you have a Java class whose functionality would be useful across the entire enterprise? Do you have many classes with enterprise potential and existing applications that use them? Creating EJB versions of your classes and converting the applications that use them can be time-consuming -- unless you automate the process. Read on to find out how you can automate the routine aspects of EJB development by using Java Reflection.&lt;br /&gt;&lt;img src="http://www.javaworld.com/javaworld/jw-12-2000/images/jw-1215-anyclass2.gif"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111731198841104281?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111731198841104281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/05/make-ejb-from-any-java-class-with-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111731198841104281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111731198841104281'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/05/make-ejb-from-any-java-class-with-java.html' title='Make an EJB from any Java class with Java Reflection'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111731111127165076</id><published>2005-05-28T15:11:00.000-05:00</published><updated>2005-05-28T15:11:51.306-05:00</updated><title type='text'>Protection of Privacy on the Internet</title><content type='html'>&lt;a href="http://anon.inf.tu-dresden.de/index_en.html"&gt;JAP -- ANONYMITY &amp; PRIVACY&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;JAP makes it possible to surf the internet anonymously and unobservably.&lt;br /&gt;&lt;br /&gt;Due to recent events, we would like to be sure to point out, that the JAP software is in development and therefore does not yet offer maximum protection. (see below ... )&lt;br /&gt;&lt;br /&gt;Without Anonymization, every computer in the internet communicates using a traceable Address. That means:&lt;br /&gt;&lt;br /&gt;    * the website visited,&lt;br /&gt;    * the internet service provider (ISP),&lt;br /&gt;    * and any eavesdropper on the internet connection&lt;br /&gt;&lt;br /&gt;can determine which websites the user of a specific computer visits. Even the information which the user calls up can be intercepted and seen if encryption is not used.&lt;br /&gt;&lt;br /&gt;Info: Leaving a data trail online...&lt;br /&gt;JAP uses a single static address which is shared by many JAP users. That way neither the visited website, nor an eavesdropper can determine which user visited which website.&lt;br /&gt;How it works&lt;br /&gt;&lt;br /&gt;Instead of connecting directly to a webserver, users take a detour, connecting with encryption through several intermediaries, so-called mixes."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111731111127165076?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111731111127165076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/05/protection-of-privacy-on-internet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111731111127165076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111731111127165076'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/05/protection-of-privacy-on-internet.html' title='Protection of Privacy on the Internet'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111697075720020683</id><published>2005-05-24T16:39:00.000-05:00</published><updated>2005-05-24T16:39:17.206-05:00</updated><title type='text'>Core J2EE Patterns: Patterns index page</title><content type='html'>&lt;a href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html"&gt;Core J2EE Patterns&lt;/a&gt;: &lt;br /&gt;&lt;br /&gt;&lt;img src=http://java.sun.com/blueprints/corej2eepatterns/images06/figure06_02.gif&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111697075720020683?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111697075720020683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/05/core-j2ee-patterns-patterns-index-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111697075720020683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111697075720020683'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/05/core-j2ee-patterns-patterns-index-page.html' title='Core J2EE Patterns: Patterns index page'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111696984245854631</id><published>2005-05-24T16:24:00.000-05:00</published><updated>2005-05-24T16:24:02.483-05:00</updated><title type='text'>Tell the Java VM to Load the DLL</title><content type='html'>&lt;a href="http://www.inonit.com/cygwin/jni/helloWorld/load.html"&gt;Tell the Java VM to Load the DLL&lt;/a&gt;: &lt;br /&gt;public class HelloWorld &lt;br /&gt;{ &lt;br /&gt;    private static native void writeHelloWorldToStdout(); &lt;br /&gt;    public static void main(String[] args) &lt;br /&gt;    { &lt;br /&gt;        System.loadLibrary('HelloWorld'); writeHelloWorldToStdout(); &lt;br /&gt;    } &lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111696984245854631?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111696984245854631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/05/tell-java-vm-to-load-dll.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111696984245854631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111696984245854631'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/05/tell-java-vm-to-load-dll.html' title='Tell the Java VM to Load the DLL'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111696310584723250</id><published>2005-05-24T14:29:00.000-05:00</published><updated>2005-05-24T14:34:51.896-05:00</updated><title type='text'>Template engine for HTML(any string) generation</title><content type='html'>&lt;a href="http://freemarker.sourceforge.net/"&gt;Site&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;FreeMarker is a "template engine"; a generic tool to generate text output (anything from HTML to autogenerated source code) based on templates.&lt;br /&gt;&lt;br /&gt;FreeMarker is designed to be practical for the generation of       &lt;em&gt;HTML Web pages&lt;/em&gt;, particularly by servlet-based applications       following the &lt;em&gt;MVC&lt;/em&gt; (Model View Controller) pattern. The idea behind using the MVC pattern for dynamic Web pages is that you separate the designers (HTML authors) from the programmers. Everybody works on what they are good at. Designers can change the appearance of a page without programmers having to change or recompile code, because the application logic (Java programs) and page design (FreeMarker templates) are separated. Templates do not become polluted with complex program fragments.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://freemarker.sourceforge.net/images/overview.png" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111696310584723250?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111696310584723250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/05/template-engine-for-htmlany-string.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111696310584723250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111696310584723250'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/05/template-engine-for-htmlany-string.html' title='Template engine for HTML(any string) generation'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111653470912445314</id><published>2005-05-19T15:31:00.000-05:00</published><updated>2005-05-19T15:34:57.750-05:00</updated><title type='text'>J2EE Application server Matrix</title><content type='html'>&lt;a href="http://www.theserverside.com/reviews/matrix.tss"&gt;J2EE Application server Matrix&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.javaskyline.com/serv.html"&gt;Another Matrix&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111653470912445314?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111653470912445314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/05/j2ee-application-server-matrix.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111653470912445314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111653470912445314'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/05/j2ee-application-server-matrix.html' title='J2EE Application server Matrix'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111461681807338609</id><published>2005-04-27T10:46:00.000-05:00</published><updated>2005-04-27T10:46:58.073-05:00</updated><title type='text'>KDiff3, better then WinDiff!</title><content type='html'>&lt;a href="http://kdiff3.sourceforge.net/"&gt;KDiff3 - Homepage&lt;/a&gt;: "KDiff3 is a program that&lt;br /&gt;&lt;br /&gt;    * compares or merges two or three text input files or directories,&lt;br /&gt;    * shows the differences line by line and character by character (!),&lt;br /&gt;    * provides an automatic merge-facility and&lt;br /&gt;    * an integrated editor for comfortable solving of merge-conflicts,&lt;br /&gt;    * supports Unicode, UTF-8 and other codecs,&lt;br /&gt;    * supports KIO on KDE (allows accessing ftp, sftp, fish, smb etc.),&lt;br /&gt;    * and has an intuitive graphical user interface.&lt;br /&gt;    * Read what else is special in a short"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111461681807338609?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111461681807338609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/04/kdiff3-better-then-windiff.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111461681807338609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111461681807338609'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/04/kdiff3-better-then-windiff.html' title='KDiff3, better then WinDiff!'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111384983250004711</id><published>2005-04-18T13:43:00.000-05:00</published><updated>2005-04-18T13:43:52.500-05:00</updated><title type='text'>Windiff: For file/folder comparison under windows. </title><content type='html'>To compare files and display the results graphically, use Windiff.exe.&lt;br /&gt;&lt;a href="http://keithdevens.com/files/windiff"&gt;windiff.zip&lt;/a&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tools/tools/windiff.asp"&gt;Command line usage&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111384983250004711?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111384983250004711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/04/windiff-for-filefolder-comparison.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111384983250004711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111384983250004711'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/04/windiff-for-filefolder-comparison.html' title='Windiff: For file/folder comparison under windows. '/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-111029702802039129</id><published>2005-03-08T09:48:00.000-06:00</published><updated>2005-03-08T09:50:28.020-06:00</updated><title type='text'>Open Source Software in Java(tm)</title><content type='html'>Here is good link that maintains a list of open source projects by solution&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java-source.net/"&gt; http://java-source.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-111029702802039129?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/111029702802039129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/03/open-source-software-in-javatm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111029702802039129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/111029702802039129'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/03/open-source-software-in-javatm.html' title='Open Source Software in Java(tm)'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-110988603253589287</id><published>2005-03-03T15:37:00.000-06:00</published><updated>2005-03-03T15:40:32.536-06:00</updated><title type='text'>Sniffing into your own computer</title><content type='html'>Following tools can be used to log and view the packets send and received by applications running on your computer.&lt;br /&gt;&lt;a href="http://winpcap.polito.it/"&gt;WinPcap&lt;/a&gt; - the Free Packet Capture Library for Windows&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ethereal.com/"&gt;Ethereal &lt;/a&gt;- The world's most popular network protocol analyzer&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-110988603253589287?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/110988603253589287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/03/sniffing-into-your-own-computer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/110988603253589287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/110988603253589287'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/03/sniffing-into-your-own-computer.html' title='Sniffing into your own computer'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-110988567125728567</id><published>2005-03-03T15:31:00.000-06:00</published><updated>2005-03-03T15:35:48.443-06:00</updated><title type='text'>See SSL encrypted messages</title><content type='html'>If you want to see what is being sent even with SSL turned on, you can install the debug version of the WinInet library. This can log the plaintext version of data exchanged over SSL connections.&lt;br /&gt;&lt;br /&gt;Grab an appopriate version from here: http://www.mathies.com/win32tips.html (scroll down to the “Debug versions of Wininet.dll” section). Read the readme for installation instructions. It seems that the instructions were written before Windows File Protection became a feature, so you might have to shut that off to get it installed. This is not for the faint of heart.&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;[source: virtuelvis.com]&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-110988567125728567?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/110988567125728567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2005/03/see-ssl-encrypted-messages.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/110988567125728567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/110988567125728567'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2005/03/see-ssl-encrypted-messages.html' title='See SSL encrypted messages'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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-8461442.post-109606022654258152</id><published>2004-09-24T16:10:00.000-05:00</published><updated>2004-09-24T19:53:20.673-05:00</updated><title type='text'>my first test message 1</title><content type='html'>test body 1&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461442-109606022654258152?l=itnow.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://itnow.blogspot.com/feeds/109606022654258152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://itnow.blogspot.com/2004/09/my-first-test-message-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/109606022654258152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461442/posts/default/109606022654258152'/><link rel='alternate' type='text/html' href='http://itnow.blogspot.com/2004/09/my-first-test-message-1.html' title='my first test message 1'/><author><name>rakesh</name><uri>http://www.blogger.com/profile/05891424241596758888</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>
