<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-6448432495120456380</atom:id><lastBuildDate>Sat, 14 Nov 2009 21:09:08 +0000</lastBuildDate><title>Explore Your Thought Process</title><description>Let's stimulate our thought process. Let's learn technology by sharing our thoughts.</description><link>http://explore-your-thought-process.blogspot.com/</link><managingEditor>monudjn@yahoo.com (Monu)</managingEditor><generator>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-396296569433751196</guid><pubDate>Sun, 11 Jan 2009 10:00:00 +0000</pubDate><atom:updated>2009-01-13T18:10:55.122+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>EGL</category><category domain='http://www.blogger.com/atom/ns#'>Web Application</category><category domain='http://www.blogger.com/atom/ns#'>Performance</category><title>EGL: Performance Optimization</title><description>There are many factors which directly or indirectly affects the performance of EGL/Java Web Application. Performance tunning can be done at various ends. Mainly Application Level, Database Level and Server Level.&lt;br /&gt;&lt;br /&gt;A few thoughts mentioned below:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Application level:&lt;/strong&gt;&lt;br /&gt;1) If you are displaying huge chunk of data in the UI (say more than 25 rows in a page) then programmatic pagination is must. That is segregate the resultset into different pages (may be 20-25 rows per page). And load data for each page on demand.&lt;br /&gt;2) Give a look at the UI components for the page you are getting less performance and see if it can be simplified with lesser components. I know it is not easy and advisable to redesign at the point when delivery date is close.&lt;br /&gt;3) You can use "Ajax" whenever and wherever possible. It will definitely increase the performance.&lt;br /&gt;4) If you are using session variable make sure you remove it once it is done. DONOT wait till user logoff.&lt;br /&gt;&lt;strong&gt;A topic of debate:&lt;/strong&gt;&lt;br /&gt;1) Hand written java code by professional is always better than generated java code. Hand written java code can always be fined tunned and pin-point using optimization tools like Optimizeit etc.&lt;br /&gt;2) Now million dollar question (or may be some cents) is why jsf is defaulted to session scope and why not defaulted to request scope? How it is removed from the session on page transition? How and when the memory is reclaimed by JVM? As we all know we cannot force JVM to garbage collected.&lt;br /&gt;&lt;strong&gt;Server Level:&lt;/strong&gt;&lt;br /&gt;It is one of the several important steps that needs to be performed in order to get maximum output. It is NOT very difficult and scary to make changes to server setting then sticking onto the default setting. Refer below links to get an insite of it &lt;a href="http://www.ibm.com/developerworks/websphere/library/techarticles/0602_lurie/0602_lurie.html"&gt;http://www.ibm.com/developerworks/websphere/library/techarticles/0602_lurie/0602_lurie.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://whitepapers.techrepublic.com.com/abstract.aspx?docid=325396"&gt;http://whitepapers.techrepublic.com.com/abstract.aspx?docid=325396&lt;/a&gt;&lt;br /&gt;&lt;a href="http://rifers.org/blogs/gbevin/2005/4/21/get_rid_of_outofmemoryerror"&gt;http://rifers.org/blogs/gbevin/2005/4/21/get_rid_of_outofmemoryerror&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Database Level:&lt;/strong&gt;&lt;br /&gt;This is under discussion and will be posted shortly.&lt;br /&gt;&lt;br /&gt;Debate and discussions are always wel-come.&lt;br /&gt;&lt;br /&gt;Regards&lt;br /&gt;Monu&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-396296569433751196?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2009/01/egl-performance-optimization.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-4770624429985406762</guid><pubDate>Thu, 08 Jan 2009 09:38:00 +0000</pubDate><atom:updated>2009-01-08T15:46:44.198+05:30</atom:updated><title>JSF: Displaying "Loading....Please Wait!" message during ajax call</title><description>&lt;div align="justify"&gt;AJAX is becoming a specification in present day web application. Web 2 already infected and spread all across internet application. Web 3 is knocking at the doop step. &lt;a href="http://explore-your-thought-process.blogspot.com/2008/06/topic-of-debate-web-10-vs-web-20-vs-web.html"&gt;more...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A very common requirement in ajax based web page is to convey the user that some server-side process is going on and the page/portion of the page is reloading. The best way to do this is displaying a suitable message like "Loading.....Please Wait!". Java Server Faces (JSF) is very impressive in implementing AJAX behavior in a page. It has provided well abstracted and easy to implement steps. Now coming back to message displaying use case; it requires just 4 additional changes: &lt;/div&gt;&lt;ol&gt;&lt;li&gt;Download a ajax activity image and store in images folder under WebContent folder. You can refer to this site to generate a gif image &lt;a href="http://www.ajaxload.info/"&gt;http://www.ajaxload.info/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Copy the below code anywhere in the page&lt;/strong&gt;. Preferrably immediately after &amp;lt;body&amp;gt;&lt;br /&gt;&lt;div id="loading"&gt;&amp;lt;div id="loading"&amp;gt;&amp;lt;p&amp;gt;Loading... Please wait!&amp;lt;/p&amp;gt;&amp;lt;img src="${pageContext.request.contextPath}/images/activity.gif" /&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Add two javascript function as mentioned below&lt;/strong&gt;:&lt;br /&gt;&lt;script language="JavaScript"&gt;&lt;br /&gt;function startProgressBar(){&lt;br /&gt;    document.all.loading.style.visibility="visible";&lt;br /&gt;}&lt;br /&gt;function stopProgressBar(){&lt;br /&gt;   document.all.loading.style.visibility="hidden";&lt;br /&gt;}&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&amp;lt;script language="JavaScript"&amp;gt;function startProgressBar(){ document.all.loading.style.visibility="visible";}function stopProgressBar(){ document.all.loading.style.visibility="hidden";}&amp;lt;/script&amp;gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Change the ajax tag in your jsf page&lt;/strong&gt;&lt;br /&gt;&lt;?xml:namespace prefix = hx /&gt;&lt;hx:ajaxrefreshrequest  target="ajaxGroup" style="color:#ff0000;"&gt;&amp;lt;hx:ajaxRefreshRequest target="ajaxGroup" &lt;span style="color:#ff0000;"&gt;onstart="startProgressBar()"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;oncomplete="stopProgressBar()&lt;/span&gt;" id="ajaxRefreshRequest1"&amp;gt;&amp;lt;/hx:ajaxRefreshRequest&amp;gt;&lt;/hx:ajaxrefreshrequest&gt; &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Regards&lt;/p&gt;&lt;p&gt;Monu&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/6448432495120456380-4770624429985406762?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2009/01/jsf-displaying-loadingplease-wait.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-6399180136260003973</guid><pubDate>Tue, 18 Nov 2008 18:50:00 +0000</pubDate><atom:updated>2008-11-19T00:43:13.156+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>JSF</category><category domain='http://www.blogger.com/atom/ns#'>EGL</category><title>EGL: Customize error message.</title><description>&lt;div align="justify"&gt;In EGL/JSF there is an api called &lt;em&gt;Syslib.setError("errorMsg")&lt;/em&gt;. This api display the error message in the UI provided there is an error component available in the page. You can put that error component by dragging onto the page from enhanced faces component . So far so good.&lt;/div&gt;&lt;div align="justify"&gt;Now if you want to display multiple message with a break in each line. For example you want to display following messages:&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;&lt;strong&gt;Warning: you have not entered street name.&lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;&lt;strong&gt;Form has been saved.&lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;Now if you want to display these lines in the same fashion as above you can not do that using setError function. It will display both the statement in the same line. Also if you want to set different colors for warning and success message you can not do.&lt;/div&gt;&lt;div align="justify"&gt;Now how to accomplish this requirement. JSF provide one component called outputText. You can drag this component from Enhanced Faces component list. Then create a string variable in the JSF Handler and assign the variable as below:&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;&lt;strong&gt;multipleMsg String = "Warning: you have not entered street name&lt;br /&gt;Form has been saved";&lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;After that bind this multipleMsg variable to the outputText component in the jsp. Similarly you can also add color on to these texts.&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;&lt;/em&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;Is not it cool&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;&lt;/em&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;Regards&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;Monu&lt;/em&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-6399180136260003973?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/11/egl-customize-error-message.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-3173601272048421630</guid><pubDate>Sun, 16 Nov 2008 13:33:00 +0000</pubDate><atom:updated>2008-11-19T00:47:57.664+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Defect Fixing</category><title>Defect Fixing: Be careful of bug fixing side effect</title><description>&lt;div align="justify"&gt;Defect Fixing ! Hmm one of the terrible thing to developers life. This is the biggest challenge a developer can have during developement. A small defect can make months long hard work bitter. So developers be careful of that and vows yourself to find remedy to tackle this and make your developement life easy. From my experience I have list down some points which might help minimizing defect counts.&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;u&gt;Prevention is better than cure:&lt;/u&gt;&lt;/strong&gt; I think this is the single most important statement that minimize all problems. So what prevention should we take? How this statment is applicable to software development? Well the answer is straight forward follow best practices and coding standard. &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;u&gt;Bug fixing side effect:&lt;/u&gt;&lt;/strong&gt; Most deadly defects are the result of defect fixing. Some features remain untested after fixing a defect in some other feature assuming that the former is already tested before. That is why automation of test cases are highly desirable. Make sure irrespective of severity of the defect you run the entire test cases only again before delivery of code.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;u&gt;Time line:&lt;/u&gt;&lt;/strong&gt; Make sure you keep enough time for testing your application.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Regards&lt;/p&gt;&lt;p align="justify"&gt;Monu&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-3173601272048421630?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/10/defect-fixing-be-careful-of-bug-fixing.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-3421559156492518203</guid><pubDate>Sun, 16 Nov 2008 07:04:00 +0000</pubDate><atom:updated>2008-11-16T12:35:14.956+05:30</atom:updated><title>myLot</title><description>&lt;a href="http://www.mylot.com/monudjn/9172"&gt;myLot User Profile&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-3421559156492518203?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/11/mylot.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-547985873958170689</guid><pubDate>Wed, 05 Nov 2008 16:32:00 +0000</pubDate><atom:updated>2008-11-19T00:19:32.768+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>JSF</category><category domain='http://www.blogger.com/atom/ns#'>EGL</category><title>EGL: Edit page details while printing web page</title><description>What you do when you want to print a web page? Answer is obvious; use window.print() event. What you do when you want to print a web page which requires formatting like removing some text, page break, modifying some content etc. just before sending to printer? Answer could be you will create one more page and make the changes required for printing with window.print() event on page load function. Then forward to this page on clicking print button. Is there any other better solution? Remember the original page could be the result of lot of business which need to take care even when you are forwarding to other page taking up printing responsibility.&lt;br /&gt;Well in that case I would prefer to advise you to use javascript and css. This approach is not only fast but also easy and accurate.&lt;br /&gt;Now how to do that. Well answer is right below:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Surround the portion with a div in the jsp page you want to print . Donot think about the changes now.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Call a javascript function say &lt;em&gt;printPage(divPrintId).&lt;/em&gt; &lt;em&gt;divPrintId &lt;/em&gt;is the id of the div.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Retrieve the entire text within the div as &lt;em&gt;str=document.getElementById(divPrintId).innerHTML&lt;/em&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now do the business changes on the innerHTML text. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;For page break you can create a javascript inside printPage javascript like below:&lt;br /&gt;&lt;em&gt;newwin.document.write('pageBreakDetails();\n')&lt;br /&gt;newwin.document.write('function pageBreakDetails(){\n')&lt;br /&gt;newwin.document.write('var details = document.getElementById("form1:tableId").style.pageBreakBefore="always";\n ')&lt;br /&gt;newwin.document.write('}\n')&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Let me know if someone finds any difficulty implementing this&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Regards&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Monu&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-547985873958170689?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/11/egl-edit-page-details-while-printing.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-5293813365905952897</guid><pubDate>Mon, 06 Oct 2008 09:38:00 +0000</pubDate><atom:updated>2008-10-22T15:50:42.913+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>blogger</category><title>Blogger: Resolve Common Error while placing ads in a blogger</title><description>&lt;div align="justify"&gt;This article is little off-beat. However this is definitely useful for those who are newbie in the blogging world. Recently I have tried to display ad inside the article. For that I have made some changes in the template. After entering the ad code when try to save the template I have encountered different errors.&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;Open quote is expected for attribute "{1}" associated with an element type &lt;&lt;strong&gt;&lt;em&gt;elementType&gt; : &lt;/em&gt;&lt;/strong&gt;Check the template code and look for &lt;elementtype&gt;(say height). This will be something like height = 5. Now blogger will complaint the above error. The solution is simple just put 5 within single quote like height = '5'.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;The reference to entity "&lt;&lt;strong&gt;entity&lt;/strong&gt;&gt;" must end with the ';' delimiter. : Check the template code and look for &lt;entity&gt;(say ad_size). Usually this kind of error is found when we use &amp;amp; inside a url (say http: // example.com?a=1&amp;amp;ad_size=3). Now "&amp;amp;" has to be replaced with "&amp;amp;amp;" to get rid of the problem.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;Note: These problem errors are reference to blogger.com&lt;/p&gt;&lt;p align="justify"&gt;Similar kinds of problem might occur because less than and greater than sign.&lt;/p&gt;&lt;p align="justify"&gt;&lt;&gt; &lt;p align="justify"&gt;&gt; should be replaced with &amp;amp;gt;&lt;/p&gt;&lt;p align="justify"&gt;"" should be replaced with &amp;amp;quot;&lt;/p&gt;&lt;p align="justify"&gt;Regards&lt;/p&gt;&lt;p align="justify"&gt;Monu&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-5293813365905952897?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/10/blogger-resolve-common-error-while.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-6173481571372887689</guid><pubDate>Sat, 04 Oct 2008 17:47:00 +0000</pubDate><atom:updated>2008-10-19T23:45:05.534+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>JSF</category><title>JSF: Avoid both Pagination and vertical scrolling at the same time</title><description>&lt;div align="justify"&gt;I have seen many applications (including one of my own application) use page pagination and vertical scrolling at the same time. This is a bad design at any curcumstances. Pagination is commonly used where application needs to display a huge chunk of data rows. It enhances page response and processing time. However sometime a page may have lot of other UI components which may allow a smaller portion of page area to display data row (may be atmost 10 rows). In such cases web designer go for vertical scrolling. Eventually this will force developer to think about implementing fixed header data column in a table.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;From my perception, even though you are able to display only few rows of data in a table at one time; do NOT go for vertical scrolling. This will reduce page usability. If user agrees to have say 20 rows in a page they might agree for 10 rows if convinced properly.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;JSF allows two types of pagination. &lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;UI Pagination only: This is pagination in the UI only. No need to do any kind of code in the server. Just need to use pagination component in the web page using tooling.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;Both UI and Server side Pagination: This is pagination both in the UI and in the server. You need to take care of previous, next and current set of rows that need to be displayed.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;Very shortly I will explain these pagination technics with example along with vertical scrolling and fixed header problem.&lt;/p&gt;&lt;p align="justify"&gt;Regards&lt;/p&gt;&lt;p align="justify"&gt;Monu&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-6173481571372887689?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/10/jsf-avoid-both-pagination-and-vertical.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-1949304136475381450</guid><pubDate>Thu, 02 Oct 2008 10:35:00 +0000</pubDate><atom:updated>2008-10-05T09:23:44.628+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>EGL</category><title>EGL: Extract URL details</title><description>&lt;div align="justify"&gt;This article helps Enterprise Generation Language (EGL) programmers to get the details about the server, port number and url type. Given below is a piece of dirty code (DONT COPY)&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;1) Create a Java Class like below:&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;package explore.your.thought.process&lt;br /&gt;&lt;em&gt;public class URLDetails {&lt;br /&gt;public String getServer(String url) {&lt;br /&gt;String replacedStr = getURLType(url);&lt;br /&gt;String server = "";&lt;br /&gt;String urlWithOutHTTP = url.replaceAll(replacedStr, "");&lt;br /&gt;String[] strArr = urlWithOutHTTP.split("[:]");&lt;br /&gt;if (strArr.length &gt; 0)&lt;br /&gt;server = strArr[0];&lt;br /&gt;return server;&lt;br /&gt;}&lt;br /&gt;public String getServerPort(String url) {&lt;br /&gt;String replacedStr = getURLType(url);&lt;br /&gt;String serverPort = "";&lt;br /&gt;String urlWithOutHTTP = url.replaceFirst(replacedStr, "");&lt;br /&gt;String[] strArr = urlWithOutHTTP.split("[:]");&lt;br /&gt;if (strArr.length &gt; 1) {&lt;br /&gt;String[] strArr1 = strArr[1].split("[/]");&lt;br /&gt;if (strArr1.length &gt; 0) {&lt;br /&gt;serverPort = strArr1[0];&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;return serverPort;&lt;br /&gt;}&lt;br /&gt;public String getURLType(String url) {&lt;br /&gt;String urlType = "";&lt;br /&gt;if (url.indexOf("https://") != -1)&lt;br /&gt;urlType = "https://";&lt;br /&gt;else if (url.indexOf("http://") != -1)&lt;br /&gt;urlType = "http://";&lt;br /&gt;return urlType;&lt;br /&gt;}&lt;br /&gt;}&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;2) create an EGL External Type:&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;ExternalType URLDetails type JavaObject&lt;br /&gt;{JavaName = "URLDetails", PackageName = "explore.your.thought.process"}&lt;br /&gt;Function getServer(url String in) returns (String) ;&lt;br /&gt;function getServerPort(url String in) returns (String);&lt;br /&gt;Function getURLType(url String in) returns (String);&lt;br /&gt;End&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Regards&lt;/div&gt;&lt;div align="justify"&gt;Monu&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-1949304136475381450?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/10/egl-extract-url-details.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-8045183962904872455</guid><pubDate>Wed, 01 Oct 2008 09:50:00 +0000</pubDate><atom:updated>2008-10-05T09:24:11.902+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>EGL</category><title>EGL: Converting string to int</title><description>&lt;div align="justify"&gt;Enterprise Generation Language (EGL) is coming up great. It has provided a good many number of API's. However sometime we need to rely on Java api to do some small task. For example converting string to int or any other datatype conversion. There is nothing great in converting string to int in EGL. We just need to do something like below:&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;resultInt int = JavaLib.invoke("java.lang.Integer", "parseInt", "12345");&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;if we print resultInt obviously the result would be "12345". So far so good. Now try to change the string to "9999999999" and execute the program again. Output will be something like&lt;br /&gt;&lt;strong&gt;&lt;em&gt;For input string: "9999999999" &lt;/em&gt;&lt;/strong&gt;and the execution will stop by then. What is the reason for this behavior? This is because we are NOT handling exception. Try below snippet:&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;try&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;resultInt int = JavaLib.invoke("java.lang.Integer", "parseInt", "12345");&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;onException (e AnyException)&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;//assign some value as per business&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;resultInt = -1; &lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;em&gt;end&lt;/em&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Regards&lt;/div&gt;&lt;div align="justify"&gt;Monu&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-8045183962904872455?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/10/egl-converting-string-to-int.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-1924646536736235024</guid><pubDate>Tue, 30 Sep 2008 08:31:00 +0000</pubDate><atom:updated>2008-10-05T09:24:51.096+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Software Development</category><title>How To: Minimize Defects and Rework during Software Development</title><description>&lt;div align="justify"&gt;This article tries to analyse various factors injecting defects and how to minimize the defect ratio and amount of rework we do during a software/application development.&lt;br /&gt;&lt;br /&gt;When we estimate effort and hours for a project we dont estimate the number of bugs or the amount of rework we will be addressing during the development. Actually this is a hidden factor which eventually determines the delivery timeframe. More time we spend in rework+bug fixing, more deviation from the project plan.&lt;br /&gt;&lt;br /&gt;From various analysis it is concluded that high severity defects are uncovered during UAT (User Acceptance Test) when actually the user do the testing. It is very likely that those issues are related to the business of the application i.e. it could be the business rule which is NOT being captured or it is implemented wrongly. The impact of such a defect could be very immense which might lead to a huge rework never captured during planning of the project. Eventually this result in slipping the delivery date.&lt;br /&gt;&lt;br /&gt;So who has introduced those defects ? Who should be blamed for this? Hmmm probably every one will blame one another.&lt;br /&gt;&lt;br /&gt;From the past experience most of the defects are induced during requirement analysis and designing and it is uncovered in QA or UAT. On the other hand the developers are the main victims and has to go ahead fixing those with all the blames on their shoulders.&lt;br /&gt;&lt;br /&gt;I have tried to list down some of the key points that could lead to a smooth project delivery. Those are as follows: &lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;u&gt;Project Estimation:&lt;/u&gt;&lt;/strong&gt; During estimation project managers should keep enough allowable buffer to cope with any uncertain activities like rework and increased defect ratio from past experience. Update project plan whenever client aggrees on that.&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;u&gt;Requirement Analysis:&lt;/u&gt;&lt;/strong&gt; These phase introduced most of the defects and unfortunately uncovered most of them during UAT. So give enough time/hours during estimation to baseline this. Do not wait till UAT comes back with issue which may be too late. Especially when writing use case give utmost attension.&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;u&gt;Review:&lt;/u&gt;&lt;/strong&gt; Many times it is seen that clients are NOT very reluctant to review those documents. In that case if application fails to go to production both client and vendor is responsible. It is also seen that when everything got over including developement and testing client comes back seeking updation in the requirement document and so on and forth. So it is very important that client review any documents being sent for his approval should be correct and as per the expectation and on time.&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;u&gt;Avoid blame game:&lt;/u&gt;&lt;/strong&gt; An individual can be blamed and responsible for NOT meeting the delivery date. Everyone is equally responsible for any thing good or bad happen during the development. It is the process which could be blamed. Keep this experience as historical data and can be used as input in future projects estimation.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Regards&lt;/p&gt;&lt;p align="justify"&gt;Monu&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/6448432495120456380-1924646536736235024?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/09/how-to-minimize-defects-and-rework.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-5364689009599528311</guid><pubDate>Sat, 27 Sep 2008 07:54:00 +0000</pubDate><atom:updated>2008-11-19T00:48:53.756+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>EGL</category><category domain='http://www.blogger.com/atom/ns#'>Java/J2EE</category><category domain='http://www.blogger.com/atom/ns#'>Web Application</category><title>EGL: Sorting Datatable Columns</title><description>&lt;div align="justify"&gt;There are many instances when we need to sort a particular column in a datatable. In this article I am trying to demonstrate one out of thousand options to sort a particular column in EGL.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Create a Java Class:&lt;/strong&gt;&lt;br /&gt;public class DatatableSorting {&lt;br /&gt;public List sortAsc(List list) {&lt;br /&gt;Collections.sort(list);&lt;br /&gt;return list;&lt;br /&gt;}&lt;br /&gt;public List sortDesc(List list) {&lt;br /&gt;Comparator comparator = Collections.reverseOrder();&lt;br /&gt;Collections.sort(list, comparator);&lt;br /&gt;return list;&lt;br /&gt;}&lt;br /&gt;}&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Create EGL External Type:&lt;br /&gt;&lt;/strong&gt;ExternalType DatatableSorting type JavaObject&lt;br /&gt;{JavaName = "DatatableSorting", PackageName = "explore.your.thought.process"}&lt;br /&gt;function sortAsc(sortableArray String[] inout) returns (String[]);&lt;br /&gt;function sortDesc(sortableArray String[] inout) returns (String[]);&lt;br /&gt;End&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Use DatatableSorting in EGL File: &lt;/strong&gt;&lt;br /&gt;program test type BasicProgram {}&lt;br /&gt;function main()&lt;br /&gt;sortableArray String[]{"A", "B", "1", "2"};&lt;br /&gt;sortingDatatableCols DatatableSorting = new DatatableSorting ();&lt;br /&gt;sortingDatatableCols.sortAsc(sortableArray);&lt;br /&gt;sortingDatatableCols.sortDesc(sortableArray);&lt;br /&gt;end&lt;br /&gt;end&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;Note: If we notice carefully the java functions sortAsc and sortDesc accepts list as parameter and returns a list. However in out EGL it is actually String[]. This is because in EGL string[] will be generated to list in Java.&lt;/p&gt;&lt;p align="justify"&gt;I will be writing one more article on sorting multiple columns based on reflection shortly. &lt;/p&gt;&lt;p align="justify"&gt;Your comments are most welcome.&lt;/p&gt;&lt;p align="justify"&gt;Regards&lt;/p&gt;&lt;p align="justify"&gt;Monu&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-5364689009599528311?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/10/egl-sorting-datatable-columns.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-40560578264165817</guid><pubDate>Thu, 11 Sep 2008 05:23:00 +0000</pubDate><atom:updated>2008-11-19T00:46:30.590+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>JSF</category><category domain='http://www.blogger.com/atom/ns#'>Web Application</category><title>JSF: Handling onchange event with input mask</title><description>&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;onchange&lt;/strong&gt; event is NOT working when we use mask on a text field with Input Assistance enable in java server faces (jsf).&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;div align="left"&gt;Example: Following jsp code sample will illustrate the problem.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5210501936868883986" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_p5a_LceLl7k/SE9r57iN_hI/AAAAAAAAAA4/Q-5RLWmQdlM/s320/untitled4.JPG" border="0" /&gt; onchange is very important if we want to see if a particular form is got changed.&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;One possible solution is to use hidden variable which will hold the same value as the phone number field initially.&lt;br /&gt;Any change in the value of phone number field will not affect the hidden field. That means hidden variable will hold the old value. Any difference between the two means the field got changed.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5210502171095354530" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_p5a_LceLl7k/SE9sHkGKTKI/AAAAAAAAABA/POJSTQlvQkU/s320/untitled3.JPG" border="0" /&gt;&lt;br /&gt;&lt;?xml:namespace prefix = hx /&gt;&lt;hx:inputhelperassist id="assist6" promptcharacter="" errorclass="inputText_Error"&gt;&lt;hx:convertmask mask="(###)###-####"&gt;&lt;hx:convertnumber pattern="(###)###-####"&gt;&lt;/hx:convertnumber&gt;&lt;/hx:convertmask&gt;&lt;/hx:inputhelperassist&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-40560578264165817?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/no-onchange-event-occurs-when-input.html</link><author>monudjn@yahoo.com (Monu)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_p5a_LceLl7k/SE9r57iN_hI/AAAAAAAAAA4/Q-5RLWmQdlM/s72-c/untitled4.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-3144740118564309672</guid><pubDate>Wed, 10 Sep 2008 17:12:00 +0000</pubDate><atom:updated>2008-10-19T23:49:03.943+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Reports</category><category domain='http://www.blogger.com/atom/ns#'>Java/J2EE</category><category domain='http://www.blogger.com/atom/ns#'>Web Application</category><title>Best Practice : Use of Report in Java/j2ee</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;Use of reporting tool like jasper, crystal, brit etc. is common in web application developed in java/j2ee or any other language. Now a days all reporting tool provide greater flexibility and comes out with lot many features. Performing certain business, displaying computed columns etc which is also possible through java. What I meant by that is for a given feature we may have two ways to perform either in Java or in Report. Now should we choose Java or Reporting tool to implement the same?&lt;br /&gt;We should be little careful and should analyse which is the best way......&lt;br /&gt;From my personal experience, I would go with Java to perform business rule or performing some computation instead of report.&lt;br /&gt;In most reporting tool we have to first create the design file which will be translated to intermediate form like xml. Then this intermediate form will eventually converted to appropriate report form. Now if we choose reporting design file to perform computation or other business rule then sometime it would be difficult to make changes if any business rule got changed because it has to under above discussed translation. Also to modify the design file you require certain tool. For example if an application is running in production and require immediate modification then we can make the changes in Java and then redeploy into the server. It is also easy to maintain.&lt;br /&gt;&lt;br /&gt;Regards&lt;br /&gt;Monu&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-3144740118564309672?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/best-practice-use-of-report-in-javaj2ee.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-8881042485316319646</guid><pubDate>Sat, 30 Aug 2008 08:28:00 +0000</pubDate><atom:updated>2008-10-05T09:25:28.843+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Software Development</category><title>Software Development Methodologies: A Practical Approach</title><description>&lt;div align="justify"&gt;In this article I would like to discuss about some of the most frequently used software development models. These are &lt;strong&gt;&lt;em&gt;Waterfall model, Iterative Model and Agile Methodology&lt;/em&gt;&lt;/strong&gt;. I have experience of working in all these models ; so like to share some of my view points. Before that let me quote you the definitions of those models.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Waterfall:&lt;/strong&gt; Wikipedia defines waterfall model as &lt;em&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/em&gt;&lt;em&gt;&lt;em&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p align="justify"&gt;&lt;em&gt;&lt;em&gt;" A &lt;/em&gt;&lt;a title="Sequence" href="http://en.wikipedia.org/wiki/Sequence"&gt;&lt;em&gt;sequential&lt;/em&gt;&lt;/a&gt;&lt;em&gt; &lt;/em&gt;&lt;a class="mw-redirect" title="Software development model" href="http://en.wikipedia.org/wiki/Software_development_model"&gt;&lt;em&gt;software development model&lt;/em&gt;&lt;/a&gt;&lt;em&gt; (a process for the creation of software) in which development is seen as flowing steadily downwards (like a &lt;/em&gt;&lt;a title="Waterfall" href="http://en.wikipedia.org/wiki/Waterfall"&gt;&lt;em&gt;waterfall&lt;/em&gt;&lt;/a&gt;&lt;em&gt;) through the phases of &lt;/em&gt;&lt;a title="Requirements analysis" href="http://en.wikipedia.org/wiki/Requirements_analysis"&gt;&lt;em&gt;requirements analysis&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, &lt;/em&gt;&lt;a title="Software design" href="http://en.wikipedia.org/wiki/Software_design"&gt;&lt;em&gt;design&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, &lt;/em&gt;&lt;a title="Implementation" href="http://en.wikipedia.org/wiki/Implementation"&gt;&lt;em&gt;implementation&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, &lt;/em&gt;&lt;a title="Software testing" href="http://en.wikipedia.org/wiki/Software_testing"&gt;&lt;em&gt;testing&lt;/em&gt;&lt;/a&gt;&lt;em&gt; (validation), &lt;/em&gt;&lt;a title="Enterprise application integration" href="http://en.wikipedia.org/wiki/Enterprise_application_integration"&gt;&lt;em&gt;integration&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, and &lt;/em&gt;&lt;a title="Software maintenance" href="http://en.wikipedia.org/wiki/Software_maintenance"&gt;&lt;em&gt;maintenance&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. "&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/em&gt;&lt;p align="justify"&gt;&lt;/em&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;strong&gt;Iterative:&lt;/strong&gt; Wikipedia defines Iterative model as &lt;/div&gt;&lt;p align="justify"&gt;&lt;em&gt;&lt;/p&gt;&lt;/em&gt;&lt;blockquote&gt;&lt;p align="justify"&gt;&lt;em&gt;" A cyclic &lt;/em&gt;&lt;a title="Software development process" href="http://en.wikipedia.org/wiki/Software_development_process"&gt;&lt;em&gt;software development process&lt;/em&gt;&lt;/a&gt;&lt;em&gt; developed in response to the weaknesses of the &lt;/em&gt;&lt;a title="Waterfall model" href="http://en.wikipedia.org/wiki/Waterfall_model"&gt;&lt;em&gt;waterfall model&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. It is an essential part of the &lt;/em&gt;&lt;a class="mw-redirect" title="Rational Unified Process" href="http://en.wikipedia.org/wiki/Rational_Unified_Process"&gt;&lt;em&gt;Rational Unified Process&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, the &lt;/em&gt;&lt;a title="Dynamic Systems Development Method" href="http://en.wikipedia.org/wiki/Dynamic_Systems_Development_Method"&gt;&lt;em&gt;Dynamic Systems Development Method&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, &lt;/em&gt;&lt;a title="Extreme Programming" href="http://en.wikipedia.org/wiki/Extreme_Programming"&gt;&lt;em&gt;Extreme Programming&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and generally the &lt;/em&gt;&lt;a title="Agile software development" href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;&lt;em&gt;agile software development&lt;/em&gt;&lt;/a&gt;&lt;em&gt; frameworks. "&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;em&gt;&lt;p align="justify"&gt;&lt;/em&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;strong&gt;Agile: &lt;/strong&gt;Wikipedia defines waterfall model as &lt;/div&gt;&lt;p align="justify"&gt;&lt;em&gt;&lt;/p&gt;&lt;/em&gt;&lt;blockquote&gt;&lt;p align="justify"&gt;&lt;em&gt;" A group of &lt;/em&gt;&lt;a title="Software development" href="http://en.wikipedia.org/wiki/Software_development"&gt;&lt;em&gt;software development&lt;/em&gt;&lt;/a&gt;&lt;em&gt; methodologies that promotes development &lt;/em&gt;&lt;a class="mw-redirect" title="Iterations" href="http://en.wikipedia.org/wiki/Iterations#Project_management"&gt;&lt;em&gt;iterations&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, open collaboration, and process adaptability throughout the life-cycle of the project. It chooses to get things do things in small increments, with minimal&lt;br /&gt;planning, rather than plan at length. This helps to minimize the overall risk,&lt;br /&gt;and allows the project to adapt to changes more quickly. "&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p align="justify"&gt;All the above methodologies are widely accepted. However these models has its own pros and cons.&lt;/p&gt;&lt;p align="justify"&gt;The success of any software is mostly depend on the type of development model we select. Waterfall model is better suited for those softwares where requirements remain constant. If we expect requirement changes during the developement of the software, it is very difficult to inject those changes in water fall model. For example if the software is in UAT phase and demand some changes in the requirement then all artifacts need to change. Also overall risk in terms of cost, effort and time will scale up many folds. This may even lead to change in design which will eventually effect the developement phase.&lt;/p&gt;&lt;p align="justify"&gt;Now how to deal with those sudden changes in the software with minimal cost and effort. Iterative and Agile models is targetting to solve these uncertainities with small time slice and minimal planning. Both iterative and agile model pass through entire software developement phase in each iteration. While in iterative model usually each iteration measured in months, agile model is measured in weeks. &lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;u&gt;Summary of these models:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;u&gt;Waterfall:&lt;/u&gt; No requirement changes&lt;/p&gt;&lt;p align="justify"&gt;&lt;u&gt;Iterative:&lt;/u&gt; Probability of Medium to less requirement changes&lt;/p&gt;&lt;p align="justify"&gt;&lt;u&gt;Agile:&lt;/u&gt; Requirement Changes&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;Regards&lt;/p&gt;&lt;p align="justify"&gt;Monu&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&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/6448432495120456380-8881042485316319646?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/08/software-development-methodologies.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-3085397358785728795</guid><pubDate>Tue, 12 Aug 2008 06:34:00 +0000</pubDate><atom:updated>2008-11-19T00:49:59.869+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Power builder</category><category domain='http://www.blogger.com/atom/ns#'>Web Application</category><title>Power Builder to Web Application Migration</title><description>&lt;div align="justify"  style="font-family:verdana;"&gt;&lt;span style="font-size:100%;"&gt;Power builder is a client/server application development tool. It is relatively simpler to develop complex application with power builder. Due to easy to access web application and other reasons, companies are fast migrating to web application version using various languages like java/j2ee, php, .net so on and forth.&lt;br /&gt;&lt;br /&gt;Re-platforming of power builder (PB) version of application to web application is NOT easy. Care has to be taken with proper design and prototyping. I have tried to list down a few points which might be helpful.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div align="justify"  style="font-family:verdana;"&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Single most important factor is designing. Designer has to understand the current features and implementation of the application. Also he/she has to be able to visualize the web application version and how to implement those features. Designer should try to keep user experience same as PB application. ALL SIMPLE POWER BUILDER features are actually complex when realizing in web application.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Prototyping is useful in visualizing the converted version of PB application. This is the best time to make changes as per client request. Also do not forget to take an approval from end user. Prototype is the best way to convey the user about the changes from PB. Also convinced them with simple to understand explanation.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Displaying list of records in the browser is the toughest job in migration project like this. PB can retrieve thousands of rows within a fraction of second while web application can not show these many records with same amount of time. Try to display minimum number of records with pagination. You may need to convince the user for that.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;PB has an excellent and powerful concepts called data window. You can do anything and everything using Data Window. I doubt any programming language will have something like data window. So pay special attention to data window and extract all the properties pertaining to it. Take a close look at the sorting, column properties etc.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Finally compare the data being shown in both the version of application including default sort order, masking of fields, coloring etc.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;span style="font-size:100%;"&gt;I will be happy if readers can increase this list with there experience and skill. Comments are welcome.&lt;br /&gt;&lt;br /&gt;Regards&lt;br /&gt;Monu&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-3085397358785728795?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/migration-of-application-developed-in.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-6936570584648540398</guid><pubDate>Tue, 05 Aug 2008 09:02:00 +0000</pubDate><atom:updated>2008-10-05T09:59:40.856+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Linux</category><category domain='http://www.blogger.com/atom/ns#'>RBDe</category><title>How to resume ssh after installing IBM RBDe 7.1 in Linux OS</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Recently I have installed IBM RBDe 7.1 in Linux OS. It has installed and running successfully. However remote connection to the linux system STOP working. Usually we use Secure Shell (ssh) to connect from windows/other os to connect to Linux machine. ssh uses port 22 by default. When I installed RBDe 7.1 I was unable to connect to Linux from windows through ssh. This is probably because while installing RBDe it set some rules or some other manipulation to iptables. To resume remote connection, open a terminal in Linux then enter the command &lt;strong&gt;iptables -F&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;From man iptables:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;iptables - administration tool for IPv4 packet filtering and NAT &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;-F, --flush [chain]&lt;br /&gt;Flush the selected chain (all the chains in the table if none is given). This is equivalent to deleting all the rules one by one. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-6936570584648540398?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/how-to-resume-ssh-after-installing-ibm.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-8906198731244982577</guid><pubDate>Thu, 24 Jul 2008 10:07:00 +0000</pubDate><atom:updated>2008-10-05T09:29:02.534+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Unix</category><title>How to resolve problem with X11GraphicsEnvironment in unix</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;Are you planning to display report or graphics in web application running in unix operating system? Are you getting error similar to below error?&lt;/span&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;java.lang.InternalError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method) at sun.awt.X11GraphicsEnvironment.&lt;clinit&gt;(X11GraphicsEnvironment.java:175)&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This error is very common in unix with NO X environment. Here, I am trying to give couple of troubleshooting steps. Those are as follows:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Set up headless mode&lt;/strong&gt;: To set up headless mode, set the appropriate system property by using the setProperty() method. This method enables you to set the desired value for the system property that is indicated by the specific key.&lt;br /&gt;&lt;em&gt;System.setProperty("java.awt.headless", "true");&lt;/em&gt; &lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Set Java Environment Variable:&lt;/strong&gt; &lt;em&gt;Djava.awt.headless=true&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;In JVM Process Definition of WAS, we need to create variable DISPLAYwith port # on which X11 is running, the Value field (default is:0.0).&lt;br /&gt;example :&lt;br /&gt;&lt;em&gt;DISPLAY=0.0&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;X11 server is running:&lt;/strong&gt; If running please note the port number by issuing following command&lt;br /&gt;&lt;em&gt;ps -ef egrep X11&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;Setting the DISPLAY variable using script or in cell by issuing,setenv &lt;em&gt;DISPLAY=&lt;server&gt;:0.0 export DISPLAY&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;Use the &lt;em&gt;xhost + &lt;/em&gt;command to make this variable to global scope with above&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;&lt;span style="font-family:verdana;"&gt;Follow above steps one at a time and carry a test. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:verdana;"&gt;Regards&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:verdana;"&gt;Monu&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;/div&gt;&lt;em&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-8906198731244982577?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/how-to-resolve-problem-with.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-8853738764582948371</guid><pubDate>Wed, 23 Jul 2008 12:19:00 +0000</pubDate><atom:updated>2008-10-05T09:30:32.954+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>JSP</category><category domain='http://www.blogger.com/atom/ns#'>Java/J2EE</category><category domain='http://www.blogger.com/atom/ns#'>Web Application</category><title>Implementation of SaveAs functionality in JSP as well as Servlet</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;Implementing SaveAs functionality in java/j2ee may not be a big deal. However for developers like me it is sounding difficult. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;em&gt;Every complex problem has a simple solution&lt;/em&gt; - atleast I believe that.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;For those folks who found implementing SaveAs functionality in web application is difficult, this article will crack it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Description:&lt;/strong&gt; Implementing save as functionality in jsp as well as using servlet.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Assumptions&lt;/strong&gt;: I assume that content of the file is already generated or file is generated in the server. Also assumes that we know the file type. Now browser should ask the user to save the file in desired location or open the file in appropriate editor.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Implementation in JSP&lt;/strong&gt;: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;FileType: excel&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Code: response.setContentType("application/vnd.ms-excel")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;FileType: pdf&lt;br /&gt;Code: response.setContentType("application/pdf")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;FileType: text&lt;br /&gt;Code: response.setContentType("text/plain")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;FileType: csv&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Code: response.setContentType("application/octet-stream")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;FileType: csv&lt;br /&gt;Code: response.setContentType("application/octet-stream")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Additionally you can use following statement which will set the filename&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;response.setHeader ("Content-Disposition", "attachment;filename=\""+ fileName +"\"");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Implementation in Servlet&lt;/strong&gt;: In servlet you can do something like below:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;//set the content type based on file type&lt;br /&gt;if(fileType.equalsIgnoreCase("PDF")){&lt;br /&gt;response.setContentType ("application/pdf");&lt;br /&gt;}&lt;br /&gt;if(fileType.equalsIgnoreCase("TEXT")){&lt;br /&gt;response.setContentType ("text/plain");&lt;br /&gt;}&lt;br /&gt;if(fileType.equalsIgnoreCase("CSV")){&lt;br /&gt;response.setContentType ("application/octet-stream");&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;//set the file name&lt;br /&gt;response.setHeader ("Content-Disposition", "attachment;filename=\""+ fileName +"\"");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;//get the file content&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;File file = new File(filePath);&lt;br /&gt;// Create the byte array to hold the data&lt;br /&gt;byte[] bytes = null;&lt;br /&gt;InputStream is;&lt;br /&gt;try {&lt;br /&gt;is = new FileInputStream(file);&lt;br /&gt;// Get the size of the file&lt;br /&gt;long length = file.length();&lt;br /&gt;// You cannot create an array using a long type.&lt;br /&gt;// It needs to be an int type.&lt;br /&gt;// Before converting to an int type, check&lt;br /&gt;// to ensure that file is not larger than Integer.MAX_VALUE.&lt;br /&gt;if (length &gt; Integer.MAX_VALUE) {&lt;br /&gt;// File is too large&lt;br /&gt;}&lt;br /&gt;bytes = new byte[(int)length];&lt;br /&gt;// Read in the bytes&lt;br /&gt;int offset = 0;&lt;br /&gt;int numRead = 0;&lt;br /&gt;while (offset &lt; numread="is.read(bytes,"&gt;= 0) {&lt;br /&gt;offset += numRead;&lt;br /&gt;}&lt;br /&gt;// Ensure all the bytes have been read in&lt;br /&gt;if (offset &lt;&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;response.setContentLength(bytes.length);&lt;br /&gt;response.getOutputStream().write(bytes);&lt;br /&gt;response.getOutputStream().close(); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Common Mistake&lt;/strong&gt;: I have seen developers try to write the file content into response object inside jsp which is illegal because server is already finished writing onto the response.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Regards&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Monu&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-8853738764582948371?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/implementation-of-saveas-functionality.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-3550929394818511338</guid><pubDate>Wed, 16 Jul 2008 06:21:00 +0000</pubDate><atom:updated>2008-10-05T10:01:25.089+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>EGL</category><category domain='http://www.blogger.com/atom/ns#'>Web Application</category><title>EGL: Handling session timeout</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Session Handling is one of the most important task in web application. Same is true for EGL generated Java/j2ee code. In this article we will discuss about session handling in EGL targetting to Java/J2ee code. Also we will see how to deal with the scenerio when user tries to access the application pages without login.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Use Case:&lt;/u&gt;&lt;br /&gt;1) When session expires, if the user clicks any of the link/buttons in the application, the application should log out and take the user to login page&lt;br /&gt;&lt;br /&gt;2) When user enter the url of a page directly in the brower without validating itself, it should take you to login page.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;One possible approach:&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;For session handling to work firstly we have to make an entry in the web.xml as session-timeout set to integer variable greater than 0.&lt;br /&gt;&lt;br /&gt;In the application we should have a template. This template will be used by all the pages in the application except for login page. In general template is used to get a consistent look and feel through out the application. It may have header, footer, menus and so on. That means before loading individual pages it will first load template. So we have to write the session handling code in the template. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;u&gt;Sample code snippet:&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;You can do something like below in onConstructor&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;if(userId == null StrLib.clip(userId) == "")&lt;br /&gt;urlPath string = urlType+server+":"+serverPort+contextPath;&lt;br /&gt;//clear all session attributes&lt;br /&gt;J2EELib.clearEGLSessionAttrs();&lt;br /&gt;forward to url urlPath;&lt;br /&gt;end&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;This way we can achieve the use case 2.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Regards&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Monu&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-3550929394818511338?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/how-to-session-timeout-and-restrict.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-9215724049600204813</guid><pubDate>Sat, 21 Jun 2008 05:13:00 +0000</pubDate><atom:updated>2008-10-05T09:43:15.383+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Software Development</category><category domain='http://www.blogger.com/atom/ns#'>Web Application</category><title>5 Key Points Resolving Application Issues in Production</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;No software is bug free. Even time critical application may fail at some or other point of time. There are many instances when a particular application running in production fail.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;That is why care should be taken when deploying application in production when application is ready to use by end user. I have shortlist 5 key points deal with those issues.&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Maintaining Log File&lt;/strong&gt;: Always maintain a log file to track the activities of user in production. If a issue arise in the application, first look into the log file and try to analyse the problem. So make sure your log file capture all critical application scenerio in the log file.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Sit with the user to understand the issue&lt;/strong&gt;: If the log file does not help in finding the issue, sit with the client/user to understand the issue. Record the steps user is performing so that you yourself can reproduce the issue later.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Reproduction of issue in development environment&lt;/strong&gt;: By following recorded steps try to reproduce the issue in development environment. This is a very important step and has to happen. Once reproduced the issue can be resolved very easily.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Creating duplicate environment in Production (if applicable):&lt;/strong&gt; If issue can not be reproduced in development environment, then there is a serious problem. Try to create a duplicate environment in production if user allows to do that. Then fix the issue in production.&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Run automated test cases&lt;/strong&gt;: After fixing the issue either in production or development run your automated test cases to make sure that application is running fine and there is no side effect due to issue fix&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:verdana;"&gt;Regards&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:verdana;"&gt;Monu&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/6448432495120456380-9215724049600204813?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/5-key-points-resolving-application.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-1065938878138499056</guid><pubDate>Wed, 18 Jun 2008 17:52:00 +0000</pubDate><atom:updated>2008-09-17T16:19:40.258+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>knowledge Transfer</category><title>Process of Knowledge Transfer : Part Three</title><description>&lt;span style="font-family:verdana;"&gt;In continuation with &lt;/span&gt;&lt;a href="http://explore-your-thought-process.blogspot.com/2008/06/process-of-knowledge-transfer-part-two.html" rel="tag"&gt;&lt;span style="font-family:verdana;"&gt;Process of Knowledge Transfer : Part Two&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; we will discuss about various methods of Knowledge Transfer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="font-family:verdana;"&gt;Methods of Knowledge Transfer&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The employee who is giving KT should aware of some basic KT methods which accelerate the handover process.&lt;br /&gt;&lt;u&gt;Following some or all below methods helps greatly:&lt;/u&gt;&lt;br /&gt;i) &lt;u&gt;Preparation of Documents&lt;/u&gt;: There should be some project related documents like requirement specs and/or technical specs and/or manuals or any other project related documents. These documents should be distributed to the employees who is (are) taking the KT. These documents give a feel of the project.&lt;br /&gt;ii) &lt;u&gt;Preparation of presentation&lt;/u&gt;: Distribution of project related presentation also helps in handover process.&lt;br /&gt;iii) &lt;u&gt;Identification of key flows&lt;/u&gt;: The employee who is giving KT should prepare certain key flows of the project/application. Number of key flows should depend on the complexity of the project. Key flows should be high level design breaking of which will break the system. Key flows should not be too fine grain. In a small size project key flows may vary from 5 to 10 flows. After identifying the key flows it should be explained to the employee who is (are) taking the KT.&lt;br /&gt;iv) &lt;u&gt;Debugging of the project&lt;/u&gt;: Debugging is the best way to know the sequence of events happening inside the project. Pick one key flow at a time and allow the developers to drill down.&lt;br /&gt;v) &lt;u&gt;Testing the application&lt;/u&gt;: Presented the developers with the test cases and allow them to test the application.&lt;br /&gt;vi) &lt;u&gt;Identification of critical and common defect&lt;/u&gt;: If the project is in support and maintenance phase, it would definitely encountered certain critical and common defect during the course. Identify those defects and presented to the employee who is taking KT. Analyze those defects and provide some tactics to find the possible solution.&lt;br /&gt;vii) &lt;u&gt;Workshop of defect analysis and fix&lt;/u&gt;: There should be a workshop in which all critical and similar defects should be presented to the developer and allow them to analyze the defect and come out with probable fix.&lt;br /&gt;viii) &lt;u&gt;Workshop to correct the breaking system&lt;/u&gt;: Break the application by commenting out certain lines of codes and allow developers to correct the system.&lt;br /&gt;ix) &lt;u&gt;Real time defect fix&lt;/u&gt;: During the process of KT, last task could be give opportunities to analyze the incoming simple defect to developers and also allow them fix those.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The discussed Knowledge Transfer framework should NOT considered as a burden or rigid structure. Rather it is a process which can be taken as base upon which every one will follow a common path for the common goal. It can be modified and enhanced to become a mature framework. Implementer should understand the importance of knowledge transfer and management should understand the time required to accomplish these activities.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Regards&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Monu&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-1065938878138499056?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/process-of-knowledge-transfer-part.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-6399971792167851753</guid><pubDate>Wed, 18 Jun 2008 17:42:00 +0000</pubDate><atom:updated>2008-09-17T16:20:21.009+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>knowledge Transfer</category><title>Process of Knowledge Transfer : Part Two</title><description>&lt;span style="font-family:verdana;"&gt;In continuation with &lt;a href="http://explore-your-thought-process.blogspot.com/2008/06/process-of-knowledge-transfer-part-one.html" rel="tag"&gt;Process of Knowledge Transfer : Part One&lt;/a&gt; we will discuss about various factors affecting Knowledge Transfer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold;font-family:verdana;" &gt;Factors Affecting Knowledge Transfer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;To ensure an orderly transition of responsibilities we need to define a process. Let us discuss the various process oriented mechanism that help us achieving smooth knowledge transfer. There are various factors that affect the knowledge transfer process. The below mentioned factors are valid for both form of knowledge transfer i.e. for employee who is moving out of the project to other project and for employee who is leaving the organization. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;1) &lt;/span&gt;&lt;span style="FONT-WEIGHT: bold;font-family:verdana;" &gt;Awareness&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;: This is very crucial factor as the person who is taking the knowledge transfer has to understand the importance of his involvement. Project leader or mentor or project manager (or any one whom the developer is reporting to) has to motivate the developer to prepare themselves with a positive note. Developers should be advised to ask tons of questions about the project. Developers and the person who is giving the knowledge transfer should not follow any shortcut learning. Communicate to the team that person “A” is leaving and that person “B” is replacing.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;2) &lt;/span&gt;&lt;span style="FONT-WEIGHT: bold;font-family:verdana;" &gt;Preparation of Handover Plan&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;: Planning is important for any successful task. Similarly handing over the responsibility has to be carried out in a planned manner so that the task can be accomplished more affectively and efficiently. The employee who is giving the KT should prepare the handover plan in case the employee is moving out of the project and the NOT the organization. In the case of employee who is leaving the organization should prepare the handover plan together with another team member (can be team leader or manager) who is aware of the project. While creating the plan the employee has to put himself into the shoe of the developer who does not know anything about the project. Time is an important factor to accomplish these tasks. The organization has to sort out the time factor.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;3) &lt;/span&gt;&lt;span style="FONT-WEIGHT: bold;font-family:verdana;" &gt;Review of Handover Plan&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;: Review of the handover plan has to be carried out. It has to approve by concern authority. This is very important as the person who is leaving the organization will not be available for further help. So it has to make sure that the handover plan is complete and provide enough information for the developer to know insight of the project.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;4)&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold;font-family:verdana;" &gt; Timeframe&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;: How long handover will continue? How much time does the developer requires contributing towards the project activities? The concern authority has to discuss with both the employees (one who is giving KT and who is (are) taking KT) to come out with the timeframe. Again this can be little flexible for the employee who is moving out of the project and NOT the organization because he/she will be available even after KT. But for the employee who is leaving the organization, the authority has to decide it cautiously. Depending on the complexity of the project timeframe will vary.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;5)&lt;/span&gt;&lt;span style="FONT-WEIGHT: bold;font-family:verdana;" &gt;Weekly Meeting on Status and progress of KT&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;: Activity or task tracking helps the organization to see if the realization of the plan is happening as schedule or any diversion. This can be achieved by weekly meeting on status and progress report. The concern authority should discuss with the developer to see how comfortable he/she is becoming with the project.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="FONT-FAMILY: verdana"&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;In part Three, we will discuss about Methods of Knowledge Transfer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Regards&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Monu&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-6399971792167851753?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/process-of-knowledge-transfer-part-two.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-6670312180841357429</guid><pubDate>Wed, 18 Jun 2008 17:23:00 +0000</pubDate><atom:updated>2008-09-17T16:20:39.380+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>knowledge Transfer</category><title>Process of Knowledge Transfer : Part One</title><description>&lt;span style="font-family:verdana;font-size:100%;"&gt;Knowledge transfer is the process of transferring knowledge from one individual to another by means of mentoring, training, documentation, and other means. It is an important aspect of project management and life cycle. It is not uncommon practice to transfer information from one person to another during a project life cycle. Lack of proper knowledge transfer may lead the project to instable position. Those projects which are already in production may need special attention because different people contribute to the project at different time.&lt;br /&gt;&lt;br /&gt;Process oriented knowledge transfer is an integral part any organization. There are typically two scenarios when knowledge transfer has to happen during the life of a particular project.&lt;br /&gt;&lt;br /&gt;Firstly, when an existing employee moves out of the project and take up some new roles and responsibility. Success of any project depends on the methodology or process it flows during the life of the project. It follows a defined life cycle and process. Likewise accomplishment of a particular project, movement among employee is desirable for the betterment of the organization. At certain point of time developer has to step up to take the responsibility of a designer, designer has to take up the responsibility of architect. Similarly sooner or later project leader has to become project manager. In order to achieve these, people move in and out of project at regular interval. It is therefore desirable and responsibility of the employee to do knowledge transfer so that internal movement does not affect the project activities and client expectation.&lt;br /&gt;&lt;br /&gt;Secondly, when an employee leaves the company, proper knowledge transfer become very crucial. This is because he/she won’t be available to provide any further assistance.&lt;br /&gt;In Part Two, we will discuss about various factors affecting knowledge transfer.&lt;br /&gt;&lt;br /&gt;Regards&lt;br /&gt;Monu&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-6670312180841357429?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/process-of-knowledge-transfer-part-one.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-6448432495120456380.post-4127718780111820453</guid><pubDate>Mon, 26 May 2008 10:10:00 +0000</pubDate><atom:updated>2008-10-05T09:32:31.797+05:30</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Web Application</category><category domain='http://www.blogger.com/atom/ns#'>Internet</category><title>A Topic of Debate : Web 1.0 vs Web 2.0 vs Web 3.0</title><description>&lt;div align="justify"&gt;&lt;span style="font-family:lucida grande;"&gt;Firstly I would like to quote the definitions of these terminologies from &lt;/span&gt;&lt;a href="http://en.wikipedia.org/"&gt;&lt;span style="font-family:lucida grande;"&gt;Wikipedia&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:lucida grande;"&gt; : &lt;/span&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;p align="justify"&gt;" &lt;em&gt;&lt;span style="font-family:lucida grande;"&gt;Web 1.0 refers to the state of the &lt;/span&gt;&lt;/em&gt;&lt;a title="World Wide Web" href="http://en.wikipedia.org/wiki/World_Wide_Web"&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt;World Wide Web&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt;, and website design style before the &lt;/span&gt;&lt;/em&gt;&lt;a title="Web 2.0" href="http://en.wikipedia.org/wiki/Web_2.0"&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt;Web 2.0&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt; craze, and included most &lt;/span&gt;&lt;/em&gt;&lt;a class="mw-redirect" title="Websites" href="http://en.wikipedia.org/wiki/Websites"&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt;websites&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt; in the period between &lt;/span&gt;&lt;/em&gt;&lt;a title="1994" href="http://en.wikipedia.org/wiki/1994"&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt;1994&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt; and &lt;/span&gt;&lt;/em&gt;&lt;a title="2004" href="http://en.wikipedia.org/wiki/2004"&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt;2004&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt;. It is important to note that "Web 1.0" is a &lt;/span&gt;&lt;/em&gt;&lt;a title="Retronym" href="http://en.wikipedia.org/wiki/Retronym"&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt;retronym&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt;. That is to say that&lt;br /&gt;it has been retroactively named only after the introduction of the term "Web 2.0", and has very loosely defined boundaries. For the most part websites were a strictly one-way published media, similar to the &lt;/span&gt;&lt;/em&gt;&lt;a class="mw-redirect" title="Gopher protocol" href="http://en.wikipedia.org/wiki/Gopher_protocol"&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt;Gopher protocol&lt;/span&gt;&lt;/em&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;em&gt;&lt;span style="font-family:lucida grande;"&gt; that came before it. &lt;/span&gt;&lt;/em&gt;"&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;"&lt;em&gt; Web 2.0 is a term describing the trend in the use of &lt;/em&gt;&lt;a title="World Wide Web" href="http://en.wikipedia.org/wiki/World_Wide_Web"&gt;&lt;em&gt;World Wide Web&lt;/em&gt;&lt;/a&gt;&lt;em&gt; technology and &lt;/em&gt;&lt;a title="Web design" href="http://en.wikipedia.org/wiki/Web_design"&gt;&lt;em&gt;web design&lt;/em&gt;&lt;/a&gt;&lt;em&gt; that aims to enhance &lt;/em&gt;&lt;a title="Creativity" href="http://en.wikipedia.org/wiki/Creativity"&gt;&lt;em&gt;creativity&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, information sharing, and, most notably, collaboration among users. These concepts have led to the development and evolution of web-based communities and &lt;/em&gt;&lt;a title="Web service" href="http://en.wikipedia.org/wiki/Web_service"&gt;&lt;em&gt;hosted services&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, such as &lt;/em&gt;&lt;a class="mw-redirect" title="Social networking sites" href="http://en.wikipedia.org/wiki/Social_networking_sites"&gt;&lt;em&gt;social-networking sites&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, &lt;/em&gt;&lt;a title="Wiki" href="http://en.wikipedia.org/wiki/Wiki"&gt;&lt;em&gt;wikis&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, &lt;/em&gt;&lt;a title="Blog" href="http://en.wikipedia.org/wiki/Blog"&gt;&lt;em&gt;blogs&lt;/em&gt;&lt;/a&gt;&lt;em&gt;, and &lt;/em&gt;&lt;a title="Folksonomy" href="http://en.wikipedia.org/wiki/Folksonomy"&gt;&lt;em&gt;folksonomies&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. &lt;/em&gt;"&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;"&lt;em&gt; Web 3.0 is a term used to describe the future of the &lt;/em&gt;&lt;a title="World Wide Web" href="http://en.wikipedia.org/wiki/World_Wide_Web"&gt;&lt;em&gt;World Wide Web&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Following&lt;br /&gt;the introduction of the phrase "&lt;/em&gt;&lt;a title="Web 2.0" href="http://en.wikipedia.org/wiki/Web_2.0"&gt;&lt;em&gt;Web 2.0&lt;/em&gt;&lt;/a&gt;&lt;em&gt;" as a description of the recent evolution of the Web, many technologists, journalists, and industry leaders have used the term "Web 3.0" to hypothesize about a future wave of Internet innovation. &lt;/em&gt;"&lt;/p&gt;&lt;/blockquote&gt;&lt;p align="justify"&gt;&lt;br /&gt;From above definitions it is really difficult to find a given web application should call as Web 1.0 or Web 2.0. However it is certain that any web application is Web 1.0 compatibility but which application is to call Web 2.0 is a matter of debate. There is no specification which independently certifies a given web application as Web 2.0 compatibility. People thinks any application which has ajax capability or where users can upload pictures, display them, and modify as in when required or all colorful designs with 3D shades is to be called as Web 2. All these features were pretty much available in sites developed before the term "Web 2.0" was coined. &lt;/p&gt;&lt;p align="justify"&gt;First of all we have to come up with specification which defines the boundaries of Web 2.0. Otherwise the actual meaning of the term will go in vein and left out with just a technical jargon to represent a complex, multi-feature web application.&lt;/p&gt;&lt;p align="justify"&gt;When people around the world struggling to understand the meaning and semantics of Web 2.0, there is one more terminology revolving around us as Web 3.0 which is looking as the future course of web application. It is always good to look at the future and set up certain milestone. But at the same time we have to benchmark the current stand and move ahead.&lt;/p&gt;&lt;p align="justify"&gt;Readers are requested to provide comments which help us to understand the underlying meaning of these jargons.&lt;/p&gt;&lt;p align="justify"&gt;Regards&lt;/p&gt;&lt;p align="justify"&gt;Monu&lt;/p&gt;&lt;p align="justify"&gt;&lt;/span&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;p align="justify"&gt;&lt;em&gt;&lt;/p&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6448432495120456380-4127718780111820453?l=explore-your-thought-process.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://explore-your-thought-process.blogspot.com/2008/06/topic-of-debate-web-10-vs-web-20-vs-web.html</link><author>monudjn@yahoo.com (Monu)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item></channel></rss>