<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12302789</id><updated>2024-08-28T19:25:58.945-07:00</updated><category term="Software Development"/><category term="India"/><category term="MyThoughts"/><category term="MyStuff"/><category term="Software Framework"/><category term="GoodOne"/><category term="Life"/><category term="Software Testing"/><category term="Bangalore"/><category term="Books"/><category term="Eclipse"/><category term="Qooxdooo"/><category term="Utility Softwares"/><category term="entrepreneur"/><category term="productivity"/><category term="New Technologies"/><category term="Travel"/><category term="WorkOut"/><category term="work"/><category term="Architecture"/><category term="Blogger"/><category term="Extra Bucks $"/><category term="Movie Reviews"/><category term="Sports"/><category term="opensource"/><category term="BetterDesign"/><category term="Environment"/><category term="Finance"/><category term="JasperReports"/><category term="Learning"/><category term="Magazines"/><category term="MicrosoftWindows-XP"/><category term="People"/><category term="Software Performance"/><title type='text'>Thoughts</title><subtitle type='html'>Treat people as you expect them to treat you!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>99</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12302789.post-8963304555094525016</id><published>2012-07-14T03:18:00.000-07:00</published><updated>2012-07-14T03:18:01.154-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse"/><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><category scheme="http://www.blogger.com/atom/ns#" term="Qooxdooo"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Development"/><title type='text'>Eclipse code template - Qooxdoo development</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
There is no proper WYSWYG editor for qooxdoo development. You need to code the classes as you code in core java. To improve the productivity, you can setup few code templates in your IDE such as Eclipse.&lt;br /&gt;
&lt;br /&gt;
For example: &lt;b&gt;create a code template for the qxclass&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Click on &lt;b&gt;Windows&lt;/b&gt; &amp;gt; &lt;b&gt;Preferences &lt;/b&gt;in Eclipse IDE.&lt;br /&gt;
In the preferences dialog as mentioned below, go to&amp;nbsp; &lt;b&gt;JavaScript &lt;/b&gt;&amp;gt; &lt;b&gt;Editor &lt;/b&gt;&amp;gt; &lt;b&gt;Templates&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Note:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
If you are project is JavaScript project, go to JavaScript &amp;gt; Editor &amp;gt; Templates.&lt;br /&gt;
If you are project is Java project, go to Java &amp;gt; Editor &amp;gt; Templates.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgntZygb_oSWHkQ0Zw9ZZKhJ_rz723qAbsTfWbfK4OGS5gyE4Xvb1rvVVggFeqlyR7CGRxZ-drCislLpKuUX8yEtWbRUkOlGy63ZqgMe41v0TGK5Jzgz7voyOSOvu5c2BM0QEJf/s1600/javascript-editor-templates.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;371&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgntZygb_oSWHkQ0Zw9ZZKhJ_rz723qAbsTfWbfK4OGS5gyE4Xvb1rvVVggFeqlyR7CGRxZ-drCislLpKuUX8yEtWbRUkOlGy63ZqgMe41v0TGK5Jzgz7voyOSOvu5c2BM0QEJf/s400/javascript-editor-templates.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add a new template by clicking on &quot;&lt;b&gt;New...&lt;/b&gt;&quot; button. Add the template for the qx class as mentioned below.&lt;br /&gt;
Give a name for it and type the template content. You can use certain variables such as $cursor to place the cursor at a specific location when you use this template. There are many more variables available in Eclipse IDE which you can use. &lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW1tomfHl2bVnl09Wz1sZCdhGAejoHNV0u2k-oUHpCLqR6a6Bukdgnl5VRxD8XwNc80S5Zv9FRmPCBD_Fqfeaqd5uKZ7ZGE5sWMeukUDdrOytHCsQxmY_CButCib8IzceMzKwx/s1600/qxclass.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;346&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhW1tomfHl2bVnl09Wz1sZCdhGAejoHNV0u2k-oUHpCLqR6a6Bukdgnl5VRxD8XwNc80S5Zv9FRmPCBD_Fqfeaqd5uKZ7ZGE5sWMeukUDdrOytHCsQxmY_CButCib8IzceMzKwx/s400/qxclass.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Now, let&#39;s see how to use this template.&lt;br /&gt;
&lt;br /&gt;
In the Eclipse IDE, After creating the file say &quot;appname.ui.MyClass.js&quot;, open athat empty file and type the template name (say &quot;qxclass&quot; - the one example mentioned above). and press &quot;Ctrl + Spacebar&quot;. The template code will be inserted and the cursor will be located at the place where you have mentioned ${cursor} in the template code.&lt;br /&gt;
&lt;br /&gt;
Happy Coding :)&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/8963304555094525016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/8963304555094525016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/8963304555094525016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/8963304555094525016'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2012/07/eclipse-code-template-qooxdoo.html' title='Eclipse code template - Qooxdoo development'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgntZygb_oSWHkQ0Zw9ZZKhJ_rz723qAbsTfWbfK4OGS5gyE4Xvb1rvVVggFeqlyR7CGRxZ-drCislLpKuUX8yEtWbRUkOlGy63ZqgMe41v0TGK5Jzgz7voyOSOvu5c2BM0QEJf/s72-c/javascript-editor-templates.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-127788953769163063</id><published>2012-04-20T04:27:00.002-07:00</published><updated>2012-04-20T04:30:51.511-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MyThoughts"/><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><title type='text'>No Energy Vs No Time</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
When you have multiple personal or official tasks (say 4) to do in a day, you will be thinking&amp;nbsp; &lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Whether I can do all those tasks by today?&lt;/li&gt;
&lt;li&gt;Should I discard one task?&lt;/li&gt;
&lt;li&gt;Should I prioritize and start from the one that is highest priority?&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
If you are a typical person, you will mostly prioritize and start with the highest priority task. But, actually in my experience that is not the most optimized approach.&lt;br /&gt;
&lt;br /&gt;
If you pick the task that gives me more satisfaction when you complete. Once you complete that task, the self satisfaction gives you the positive energy to do the rest of the tasks. Most likely you will complete all the tasks for that day.&lt;br /&gt;
&lt;br /&gt;
If you decide that you cannot do all the tasks today and discard one task. By any chance, if that discarded task is the one in which you will get satisfaction, it will work in the opposite way. You will be feeling low because you missed that in your day and this will fire a negative energy and you cannot efficiently perform the remaining tasks that you decided to do for that day.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
If you have list of tasks along with 1 hour swimming that you enjoy in the morning. If you feel it is going to be a long day today, let&#39;s skip the swimming today, that day will be really a long day.&lt;br /&gt;
But, If you start with you swimming in the morning, you get the positive energy and your brain cells are active and your will be able to do other tasks really quicker.&lt;br /&gt;
&lt;br /&gt;
So, it is about whether you have energy or not. It is not about whether you have time or not.&lt;br /&gt;
&lt;br /&gt;
Just give a try :) and let me know your experience...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/127788953769163063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/127788953769163063' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/127788953769163063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/127788953769163063'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2012/04/when-you-have-multiple-personal-or.html' title='No Energy Vs No Time'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-1424495000337521342</id><published>2012-03-17T07:58:00.002-07:00</published><updated>2012-03-21T05:03:28.251-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Qooxdooo"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Development"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Framework"/><title type='text'>Virtual Widgets in Qooxdoo</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Qoxdoo provides the virtual widgets for certain widgets. These virtual widgets creates and renders only the visible items and updates it on demand. This improves the performance a lot, I really mean it.&amp;nbsp; If you build an enterprise application, you have to handle huge data. These virtual widgets are very helpful to handle those scenarios. Let&#39;s compare one of the widget in it&#39;s normal form and it&#39;s virtual form.&lt;br /&gt;
&lt;br /&gt;
Widget:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ComboBox &lt;br /&gt;
Normal ComboBox: qx.ui.form.ComboBox &lt;br /&gt;
Virtual CombBox:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; qx.ui.form.VirtualComboBox&lt;br /&gt;
&lt;br /&gt;
Firstly, Let&#39;s check the qx.ui.form.ComboBox &lt;br /&gt;
In the demobrowser, only &lt;a href=&quot;http://demo.qooxdoo.org/current/demobrowser/#widget%7EComboBox.html&quot;&gt;30 items are added in the default ComboBox&lt;/a&gt;. I took the ComboBox widget to the Playground, edited the code to add &lt;a href=&quot;http://demo.qooxdoo.org/1.6/playground/#%7B%22code%22%3A%22%252F*%2520************************************************************************%250A%250A%2520%2520%2520qooxdoo%2520-%2520the%2520new%2520era%2520of%2520web%2520development%250A%250A%2520%2520%2520http%253A%252F%252Fqooxdoo.org%250A%250A%2520%2520%2520Copyright%253A%250A%2520%2520%2520%2520%25202004-2008%25201%25261%2520Internet%2520AG%252C%2520Germany%252C%2520http%253A%252F%252Fwww.1und1.de%250A%250A%2520%2520%2520License%253A%250A%2520%2520%2520%2520%2520LGPL%253A%2520http%253A%252F%252Fwww.gnu.org%252Flicenses%252Flgpl.html%250A%2520%2520%2520%2520%2520EPL%253A%2520http%253A%252F%252Fwww.eclipse.org%252Forg%252Fdocuments%252Fepl-v10.php%250A%2520%2520%2520%2520%2520See%2520the%2520LICENSE%2520file%2520in%2520the%2520project%27s%2520top-level%2520directory%2520for%2520details.%250A%250A%2520%2520%2520Authors%253A%250A%2520%2520%2520%2520%2520*%2520Martin%2520Wittemann%2520%28martinwittemann%29%250A%250A************************************************************************%2520*%252F%250A%250Aqx.Class.define%28%2522demobrowser.demo.widget.ComboBox%2522%252C%250A%257B%250A%2520%2520extend%2520%253A%2520qx.application.Standalone%252C%250A%250A%2520%2520members%2520%253A%250A%2520%2520%257B%250A%2520%2520%2520%2520%252F**%250A%2520%2520%2520%2520%2520*%2520TODOC%250A%2520%2520%2520%2520%2520*%250A%2520%2520%2520%2520%2520*%2520%2540return%2520%257Bvoid%257D%250A%2520%2520%2520%2520%2520*%252F%250A%2520%2520%2520%2520main%2520%253A%2520function%28%29%250A%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520this.base%28arguments%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520examlpe%25201%253A%2520default%2520combo%2520box%2520with%252030%2520text%2520items%250A%2520%2520%2520%2520%2520%2520this._createDefaultExample%28%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520example%25202%253A%2520combo%2520box%2520with%2520text%2520and%2520icons%250A%2520%2520%2520%2520%2520%2520this._createIconExample%28%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520example%25203%253A%2520wide%2520combo%2520box%2520with%2520a%2520large%2520list%250A%2520%2520%2520%2520%2520%2520this._createWideExample%28%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520example%25204%253A%2520combo%2520combo%2520box%2520with%2520HTML%2520%28rich%29%2520text%250A%2520%2520%2520%2520%2520%2520this._createHtmlExample%28%29%253B%250A%2520%2520%2520%2520%257D%252C%250A%250A%250A%2520%2520%2520%2520%252F**%250A%2520%2520%2520%2520%2520*%2520Creates%2520a%2520default%2520example.%250A%2520%2520%2520%2520%2520*%2520This%2520means%2520that%2520a%2520regular%2520combobox%2520will%2520be%2520created%2520and%2520filled%2520with%250A%2520%2520%2520%2520%2520*%2520some%2520tempaltes.%250A%2520%2520%2520%2520%2520*%250A%2520%2520%2520%2520%2520*%2520%2540return%2520%257Bvoid%257D%250A%2520%2520%2520%2520%2520*%252F%250A%2520%2520%2520%2520_createDefaultExample%2520%253A%2520function%28%29%250A%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520and%2520add%2520the%2520describing%2520label%250A%2520%2520%2520%2520%2520%2520var%2520label%2520%253D%2520new%2520qx.ui.basic.Label%28%2522Default%2522%29%253B%250A%2520%2520%2520%2520%2520%2520label.setFont%28%2522bold%2522%29%253B%250A%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28label%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%252020%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252025%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520a%2520combo%2520box%250A%2520%2520%2520%2520%2520%2520var%2520comboBox%2520%253D%2520new%2520qx.ui.form.ComboBox%28%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520fill%2520the%2520combo%2520box%2520with%2520some%2520stuff%250A%2520%2520%2520%2520%2520%2520for%2520%28var%2520i%253D1%253B%2520i%253C10000%253B%2520i%252B%252B%29%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%252F%252Fvar%2520tempItem%2520%253D%2520new%2520qx.ui.form.ListItem%28%25222%255E%2520%2522%2520%252B%2520i%2520%252B%2520%2522%2520%253D%2520%2522%2520%252B%2520Math.pow%282%252C%2520i%29%29%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520var%2520tempItem%2520%253D%2520new%2520qx.ui.form.ListItem%28%2522C%2522%2520%252B%2520i%29%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520comboBox.add%28tempItem%29%253B%250A%2520%2520%2520%2520%2520%2520%257D%250A%250A%2520%2520%2520%2520%2520%2520comboBox.addListener%28%2522changeValue%2522%252C%2520function%28e%29%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520this.debug%28%2522ChangeValue%253A%2520%2522%2520%252B%2520e.getData%28%29%29%253B%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520add%2520the%2520combobox%2520to%2520the%2520documents%2520root%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28comboBox%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%252020%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252040%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%2520%2520%2520%2520%257D%252C%250A%250A%250A%2520%2520%2520%2520%252F**%250A%2520%2520%2520%2520%2520*%2520Creates%2520a%2520icon%2520example.%250A%2520%2520%2520%2520%2520*%2520This%2520means%2520that%2520a%2520combobox%2520will%2520be%2520created%2520and%2520filled%2520with%250A%2520%2520%2520%2520%2520*%2520some%2520icons%2520and%2520text.%2520in%2520the%2520textfield%2520of%2520the%2520combo%2520box%2520is%2520only%250A%2520%2520%2520%2520%2520*%2520the%2520text%2520displayed.%250A%2520%2520%2520%2520%2520*%250A%2520%2520%2520%2520%2520*%2520%2540return%2520%257Bvoid%257D%250A%2520%2520%2520%2520%2520*%252F%250A%2520%2520%2520%2520_createIconExample%2520%253A%2520function%28%29%250A%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520and%2520add%2520the%2520describing%2520label%250A%2520%2520%2520%2520%2520%2520var%2520label%2520%253D%2520new%2520qx.ui.basic.Label%28%2522With%2520icons%2522%29%253B%250A%2520%2520%2520%2520%2520%2520label.setFont%28%2522bold%2522%29%253B%250A%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28label%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%2520160%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252025%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520a%2520combo%2520box%250A%2520%2520%2520%2520%2520%2520var%2520comboBox%2520%253D%2520new%2520qx.ui.form.ComboBox%28%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520fill%2520the%2520combo%2520box%2520with%2520some%2520stuff%250A%2520%2520%2520%2520%2520%2520for%2520%28var%2520i%253D1%253B%2520i%253C31%253B%2520i%252B%252B%29%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520var%2520tempItem%2520%253D%2520new%2520qx.ui.form.ListItem%28i%2520%252B%2520%2522%27s%2520Icon%2522%252C%2520%2522icon%252F16%252Fplaces%252Ffolder.png%2522%29%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520comboBox.add%28tempItem%29%253B%250A%2520%2520%2520%2520%2520%2520%257D%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520add%2520the%2520combobox%2520to%2520the%2520documents%2520root%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28comboBox%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%2520160%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252040%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%2520%2520%2520%2520%257D%252C%250A%250A%2520%2520%2520%2520%252F**%250A%2520%2520%2520%2520%2520*%2520Creates%2520a%2520HTML%2520example.%250A%2520%2520%2520%2520%2520*%2520This%2520means%2520that%2520a%2520combobox%2520will%2520be%2520created%2520and%2520filled%2520with%250A%2520%2520%2520%2520%2520*%2520some%2520text%252C%2520that%2520contain%2520HTML%2520tags%2520and%2520entities.%250A%2520%2520%2520%2520%2520*%250A%2520%2520%2520%2520%2520*%2520%2540return%2520%257Bvoid%257D%250A%2520%2520%2520%2520%2520*%252F%250A%2520%2520%2520%2520_createHtmlExample%2520%253A%2520function%28%29%250A%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520and%2520add%2520the%2520describing%2520label%250A%2520%2520%2520%2520%2520%2520var%2520label%2520%253D%2520new%2520qx.ui.basic.Label%28%2522With%2520HTML%2520%28rich%29%2520text%2522%29%253B%250A%2520%2520%2520%2520%2520%2520label.setFont%28%2522bold%2522%29%253B%250A%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28label%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%2520300%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252025%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520a%2520combo%2520box%250A%2520%2520%2520%2520%2520%2520var%2520comboBox%2520%253D%2520new%2520qx.ui.form.ComboBox%28%29.set%28%257Bwidth%253A%2520200%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520var%2520items%2520%253D%2520%255B%2522...%2520%2526gt%253B%2520%28as%2520literal%2520HTML%2520entity%29%2522%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2522...%2520%2526gt%253B%2520%28as%2520Richtext%29%2522%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2522%253Cb%253EBold%2520Text%253C%252Fb%253E%2522%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2522%253Cu%253EUnderlined%2520Text%253C%252Fu%253E%2522%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2522%253Ci%253EItalic%2520Text%253C%252Fi%253E%2522%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2522HTML%2520entities%253A%2520%2526laquo%253B%2520%2526lt%253B%2520%2526amp%253B%2520%2526gt%253B%2520%2526raquo%253B%2522%255D%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520fill%2520the%2520combo%2520box%2520with%2520some%2520stuff%250A%2520%2520%2520%2520%2520%2520for%2520%28var%2520i%2520%253D%25200%253B%2520i%2520%253C%2520items.length%253B%2520i%252B%252B%29%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520var%2520tempItem%2520%253D%2520new%2520qx.ui.form.ListItem%28items%255Bi%255D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520if%2520%28i%2520%253E%25200%29%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520tempItem.setRich%28true%29%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%250A%250A%2520%2520%2520%2520%2520%2520%2520%2520comboBox.add%28tempItem%29%253B%250A%2520%2520%2520%2520%2520%2520%257D%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520add%2520the%2520combobox%2520to%2520the%2520documents%2520root%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28comboBox%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%2520300%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252040%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%2520%2520%2520%2520%257D%252C%250A%250A%2520%2520%2520%2520%252F**%250A%2520%2520%2520%2520%2520*%2520TODOC%250A%2520%2520%2520%2520%2520*%250A%2520%2520%2520%2520%2520*%2520%2540return%2520%257Bvoid%257D%250A%2520%2520%2520%2520%2520*%252F%250A%2520%2520%2520%2520_createWideExample%2520%253A%2520function%28%29%250A%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520and%2520add%2520the%2520describing%2520label%250A%2520%2520%2520%2520%2520%2520var%2520label%2520%253D%2520new%2520qx.ui.basic.Label%28%2522Wide%252C%2520long%2520list%2522%29%253B%250A%2520%2520%2520%2520%2520%2520label.setFont%28%2522bold%2522%29%253B%250A%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28label%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%252020%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%2520285%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520a%2520combo%2520box%250A%2520%2520%2520%2520%2520%2520var%2520comboBox%2520%253D%2520new%2520qx.ui.form.ComboBox%28%29%253B%250A%2520%2520%2520%2520%2520%2520comboBox.setWidth%28300%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520fill%2520the%2520combo%2520box%2520with%2520some%2520stuff%250A%2520%2520%2520%2520%2520%2520for%2520%28var%2520i%253D1%253B%2520i%253C101%253B%2520i%252B%252B%29%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520var%2520tempItem%2520%253D%2520new%2520qx.ui.form.ListItem%28i%2520%252B%2520%2522%27s%2520Item%2522%29%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520comboBox.add%28tempItem%29%253B%250A%2520%2520%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520%2520%2520comboBox.setValue%28comboBox.getChildrenContainer%28%29.getSelectables%28%29%255B0%255D.getLabel%28%29%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520add%2520the%2520combobox%2520to%2520the%2520documents%2520root%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28comboBox%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%252020%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%2520300%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%2520%2520%2520%2520%257D%250A%250A%250A%2520%2520%257D%250A%257D%29%253B%250A%22%2C%20%22mode%22%3A%22ria%22%7D&quot;&gt;10000 items in the default CombBox&lt;/a&gt;. You can observe how slow the response of the ComboBox. The loading of the page is slow and the response on click is very slow as the number of items increases. Even unloading of the page is also slow.&lt;br /&gt;
&lt;br /&gt;
Now, Let&#39;s check qx.ui.form.VirtualComboBox&lt;br /&gt;
&amp;nbsp;In the demobrowser, only &lt;a href=&quot;http://demo.qooxdoo.org/current/demobrowser/#virtual%7EComboBox.html&quot;&gt;400 items are added in the default VirtualComboBox&lt;/a&gt;. I took the VirtualComboBox widget to the Playground, edited the code to add &lt;a href=&quot;http://demo.qooxdoo.org/1.6/playground/#%7B%22code%22%3A%22%252F*%2520************************************************************************%250A%250A%2520%2520%2520qooxdoo%2520-%2520the%2520new%2520era%2520of%2520web%2520development%250A%250A%2520%2520%2520http%253A%252F%252Fqooxdoo.org%250A%250A%2520%2520%2520Copyright%253A%250A%2520%2520%2520%2520%25202004-2011%25201%25261%2520Internet%2520AG%252C%2520Germany%252C%2520http%253A%252F%252Fwww.1und1.de%250A%250A%2520%2520%2520License%253A%250A%2520%2520%2520%2520%2520LGPL%253A%2520http%253A%252F%252Fwww.gnu.org%252Flicenses%252Flgpl.html%250A%2520%2520%2520%2520%2520EPL%253A%2520http%253A%252F%252Fwww.eclipse.org%252Forg%252Fdocuments%252Fepl-v10.php%250A%2520%2520%2520%2520%2520See%2520the%2520LICENSE%2520file%2520in%2520the%2520project%27s%2520top-level%2520directory%2520for%2520details.%250A%250A************************************************************************%2520*%252F%250A%250Aqx.Class.define%28%2522demobrowser.demo.virtual.ComboBox%2522%252C%250A%257B%250A%2520%2520extend%2520%253A%2520qx.application.Standalone%252C%250A%250A%2520%2520members%2520%253A%250A%2520%2520%257B%250A%2520%2520%2520%2520%252F**%250A%2520%2520%2520%2520%2520*%2520TODOC%250A%2520%2520%2520%2520%2520*%250A%2520%2520%2520%2520%2520*%2520%2540return%2520%257Bvoid%257D%250A%2520%2520%2520%2520%2520*%252F%250A%2520%2520%2520%2520main%2520%253A%2520function%28%29%250A%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520this.base%28arguments%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520examlpe%25201%253A%2520default%2520combo%2520box%2520with%252030%2520text%2520items%250A%2520%2520%2520%2520%2520%2520this._createDefaultExample%28%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520example%25202%253A%2520combo%2520box%2520with%2520text%2520and%2520icons%250A%2520%2520%2520%2520%2520%2520this._createIconExample%28%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520example%25203%253A%2520wide%2520combo%2520box%2520with%2520a%2520large%2520list%250A%2520%2520%2520%2520%2520%2520this._createWideExample%28%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520example%25204%253A%2520combo%2520combo%2520box%2520with%2520HTML%2520%28rich%29%2520text%250A%2520%2520%2520%2520%2520%2520this._createHtmlExample%28%29%253B%250A%2520%2520%2520%2520%257D%252C%250A%250A%250A%2520%2520%2520%2520%252F**%250A%2520%2520%2520%2520%2520*%2520Creates%2520a%2520default%2520example.%250A%2520%2520%2520%2520%2520*%2520This%2520means%2520that%2520a%2520regular%2520combobox%2520will%2520be%2520created%2520and%2520filled%2520with%250A%2520%2520%2520%2520%2520*%2520some%2520templates.%250A%2520%2520%2520%2520%2520*%250A%2520%2520%2520%2520%2520*%2520%2540return%2520%257Bvoid%257D%250A%2520%2520%2520%2520%2520*%252F%250A%2520%2520%2520%2520_createDefaultExample%2520%253A%2520function%28%29%250A%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520and%2520add%2520the%2520describing%2520label%250A%2520%2520%2520%2520%2520%2520var%2520label%2520%253D%2520new%2520qx.ui.basic.Label%28%2522Default%2522%29%253B%250A%2520%2520%2520%2520%2520%2520label.setFont%28%2522bold%2522%29%253B%250A%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28label%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%252020%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252025%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520a%2520combo%2520box%250A%2520%2520%2520%2520%2520%2520var%2520comboBox%2520%253D%2520new%2520qx.ui.form.VirtualComboBox%28%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252Fcreate%2520a%2520simple%2520model%250A%2520%2520%2520%2520%2520%2520var%2520rawData%2520%253D%2520%255B%255D%253B%250A%2520%2520%2520%2520%2520%2520for%2520%28var%2520i%253D1%253B%2520i%253C10000%253B%2520i%252B%252B%29%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%252F%252FrawData.push%28%25222%255E%2520%2522%2520%252B%2520i%2520%252B%2520%2522%2520%253D%2520%2522%2520%252B%2520Math.pow%282%252C%2520i%29%29%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520rawData.push%28%2522VC%2522%2520%252B%2520i%29%253B%250A%2520%2520%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520%2520%2520var%2520model%2520%253D%2520qx.data.marshal.Json.createModel%28rawData%29%253B%250A%2520%2520%2520%2520%2520%2520comboBox.setModel%28model%29%253B%250A%250A%2520%2520%2520%2520%2520%2520comboBox.addListener%28%2522changeValue%2522%252C%2520function%28e%29%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520this.debug%28%2522ChangeValue%253A%2520%2522%2520%252B%2520e.getData%28%29%29%253B%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520add%2520the%2520combobox%2520to%2520the%2520documents%2520root%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28comboBox%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%252020%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252040%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%2520%2520%2520%2520%257D%252C%250A%250A%250A%2520%2520%2520%2520%252F**%250A%2520%2520%2520%2520%2520*%2520Creates%2520a%2520icon%2520example.%250A%2520%2520%2520%2520%2520*%2520This%2520means%2520that%2520a%2520combobox%2520will%2520be%2520created%2520and%2520filled%2520with%250A%2520%2520%2520%2520%2520*%2520some%2520icons%2520and%2520text.%2520in%2520the%2520textfield%2520of%2520the%2520combo%2520box%2520is%2520only%250A%2520%2520%2520%2520%2520*%2520the%2520text%2520displayed.%250A%2520%2520%2520%2520%2520*%250A%2520%2520%2520%2520%2520*%2520%2540return%2520%257Bvoid%257D%250A%2520%2520%2520%2520%2520*%252F%250A%2520%2520%2520%2520_createIconExample%2520%253A%2520function%28%29%250A%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520and%2520add%2520the%2520describing%2520label%250A%2520%2520%2520%2520%2520%2520var%2520label%2520%253D%2520new%2520qx.ui.basic.Label%28%2522With%2520icons%2522%29%253B%250A%2520%2520%2520%2520%2520%2520label.setFont%28%2522bold%2522%29%253B%250A%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28label%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%2520160%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252025%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520a%2520combo%2520box%250A%2520%2520%2520%2520%2520%2520var%2520comboBox%2520%253D%2520new%2520qx.ui.form.VirtualComboBox%28%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520the%2520model%250A%2520%2520%2520%2520%2520%2520var%2520rawData%2520%253D%2520%255B%255D%253B%250A%2520%2520%2520%2520%2520%2520for%2520%28var%2520i%253D1%253B%2520i%253C31%253B%2520i%252B%252B%29%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520rawData.push%28%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520label%2520%253A%2520i%2520%252B%2520%2522%27s%2520Icon%2522%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520icon%2520%253A%2520%2522icon%252F16%252Fplaces%252Ffolder.png%2522%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%2520%2520%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520%2520%2520var%2520model%2520%253D%2520qx.data.marshal.Json.createModel%28rawData%29%253B%250A%2520%2520%2520%2520%2520%2520comboBox.setModel%28model%29%253B%250A%2520%2520%2520%2520%2520%2520comboBox.setLabelPath%28%2522label%2522%29%253B%250A%2520%2520%2520%2520%2520%2520comboBox.setIconPath%28%2522icon%2522%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520add%2520the%2520combobox%2520to%2520the%2520documents%2520root%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28comboBox%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%2520160%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252040%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%2520%2520%2520%2520%257D%252C%250A%250A%2520%2520%2520%2520%252F**%250A%2520%2520%2520%2520%2520*%2520Creates%2520a%2520HTML%2520example.%250A%2520%2520%2520%2520%2520*%2520This%2520means%2520that%2520a%2520combobox%2520will%2520be%2520created%2520and%2520filled%2520with%250A%2520%2520%2520%2520%2520*%2520some%2520text%252C%2520that%2520contain%2520HTML%2520tags%2520and%2520entities.%250A%2520%2520%2520%2520%2520*%250A%2520%2520%2520%2520%2520*%2520%2540return%2520%257Bvoid%257D%250A%2520%2520%2520%2520%2520*%252F%250A%2520%2520%2520%2520_createHtmlExample%2520%253A%2520function%28%29%250A%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520and%2520add%2520the%2520describing%2520label%250A%2520%2520%2520%2520%2520%2520var%2520label%2520%253D%2520new%2520qx.ui.basic.Label%28%2522With%2520HTML%2520%28rich%29%2520text%2522%29%253B%250A%2520%2520%2520%2520%2520%2520label.setFont%28%2522bold%2522%29%253B%250A%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28label%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%2520300%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252025%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520a%2520combo%2520box%250A%2520%2520%2520%2520%2520%2520var%2520comboBox%2520%253D%2520new%2520qx.ui.form.VirtualComboBox%28%29.set%28%257Bwidth%253A%2520200%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520var%2520items%2520%253D%2520%255B%2522...%2520%2526gt%253B%2520%28as%2520literal%2520HTML%2520entity%29%2522%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2522...%2520%2526gt%253B%2520%28as%2520Richtext%29%2522%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2522%253Cb%253EBold%2520Text%253C%252Fb%253E%2522%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2522%253Cu%253EUnderlined%2520Text%253C%252Fu%253E%2522%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2522%253Ci%253EItalic%2520Text%253C%252Fi%253E%2522%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520%2522HTML%2520entities%253A%2520%2526laquo%253B%2520%2526lt%253B%2520%2526amp%253B%2520%2526gt%253B%2520%2526raquo%253B%2522%255D%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520the%2520model%250A%2520%2520%2520%2520%2520%2520var%2520model%2520%253D%2520qx.data.marshal.Json.createModel%28items%29%253B%250A%2520%2520%2520%2520%2520%2520comboBox.setModel%28model%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520Set%2520the%2520created%2520list%2520item%27s%2520%2522rich%2522%2520property%250A%2520%2520%2520%2520%2520%2520var%2520delegate%2520%253D%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520configureItem%2520%253A%2520function%28item%29%250A%2520%2520%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520item.setRich%28true%29%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520%2520%2520%257D%250A%250A%2520%2520%2520%2520%2520%2520comboBox.setDelegate%28delegate%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520Provide%2520a%2520formatting%2520function%2520to%2520convert%2520the%2520displayed%2520value%2520back%2520to%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520plain%2520text%250A%2520%2520%2520%2520%2520%2520comboBox.setDefaultFormat%28function%28data%29%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520if%2520%28data%29%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520data%2520%253D%2520qx.lang.String.stripTags%28data%29%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520data%2520%253D%2520qx.bom.String.unescape%28data%29%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520%2520%2520%2520%2520return%2520data%253B%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520add%2520the%2520combobox%2520to%2520the%2520documents%2520root%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28comboBox%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%2520300%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%252040%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%2520%2520%2520%2520%257D%252C%250A%250A%2520%2520%2520%2520%252F**%250A%2520%2520%2520%2520%2520*%2520TODOC%250A%2520%2520%2520%2520%2520*%250A%2520%2520%2520%2520%2520*%2520%2540return%2520%257Bvoid%257D%250A%2520%2520%2520%2520%2520*%252F%250A%2520%2520%2520%2520_createWideExample%2520%253A%2520function%28%29%250A%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520and%2520add%2520the%2520describing%2520label%250A%2520%2520%2520%2520%2520%2520var%2520label%2520%253D%2520new%2520qx.ui.basic.Label%28%2522Sorted%2520and%2520filtered%2520model%2522%29%253B%250A%2520%2520%2520%2520%2520%2520label.setFont%28%2522bold%2522%29%253B%250A%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28label%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%252020%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%2520285%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520create%2520a%2520combo%2520box%250A%2520%2520%2520%2520%2520%2520var%2520comboBox%2520%253D%2520new%2520qx.ui.form.VirtualComboBox%28%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252Fcreate%2520a%2520simple%2520model%250A%2520%2520%2520%2520%2520%2520var%2520rawData%2520%253D%2520%255B%255D%253B%250A%2520%2520%2520%2520%2520%2520for%2520%28var%2520i%253D1%253B%2520i%253C100%253B%2520i%252B%252B%29%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520rawData.push%28%2522Item%2520%2522%2520%252B%2520i%29%253B%250A%2520%2520%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520%2520%2520var%2520model%2520%253D%2520qx.data.marshal.Json.createModel%28rawData%29%253B%250A%2520%2520%2520%2520%2520%2520comboBox.setModel%28model%29%253B%250A%250A%2520%2520%2520%2520%2520%2520var%2520delegate%2520%253D%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Inverts%2520the%2520order%250A%2520%2520%2520%2520%2520%2520%2520%2520sorter%2520%253A%2520function%28a%252C%2520b%29%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520return%2520a%2520%253C%2520b%2520%253F%25201%2520%253A%2520a%2520%253E%2520b%2520%253F%2520-1%2520%253A%25200%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520%252F%252F%2520Remove%2520even-numbered%2520items%250A%2520%2520%2520%2520%2520%2520%2520%2520filter%2520%253A%2520function%28item%29%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520var%2520num%2520%253D%2520parseInt%28%252F%28%255B0-9%255D%252B%29%252F.exec%28item%29%255B1%255D%252C%252010%29%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%2520%2520return%2520num%2520%2525%25202%2520%253F%2520true%2520%253A%2520false%253B%250A%2520%2520%2520%2520%2520%2520%2520%2520%257D%250A%2520%2520%2520%2520%2520%2520%257D%250A%250A%2520%2520%2520%2520%2520%2520comboBox.setDelegate%28delegate%29%253B%250A%250A%2520%2520%2520%2520%2520%2520%252F%252F%2520add%2520the%2520combobox%2520to%2520the%2520documents%2520root%250A%2520%2520%2520%2520%2520%2520this.getRoot%28%29.add%28comboBox%252C%250A%2520%2520%2520%2520%2520%2520%257B%250A%2520%2520%2520%2520%2520%2520%2520%2520left%2520%253A%252020%252C%250A%2520%2520%2520%2520%2520%2520%2520%2520top%2520%2520%253A%2520300%250A%2520%2520%2520%2520%2520%2520%257D%29%253B%250A%2520%2520%2520%2520%257D%250A%250A%250A%2520%2520%257D%250A%257D%29%253B%250A%22%2C%20%22mode%22%3A%22ria%22%7D&quot;&gt;10000 items in the default VirtualCombBox&lt;/a&gt;. You can observe that the VirtualCombBox response is good. :)&lt;br /&gt;
&lt;br /&gt;
The virtual widgets significantly reduces creation time and memory usage when 
visualizing even huge data sets. In addition to that, VirtualComboBox supports sorting and filtering through the delegate. Virtual List supports grouping.&amp;nbsp; Explore other virtual widgets in the DemoBrowser and Playground.&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/blockquote&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // create a combo box&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var box = new qx.ui.form.VirtualComboBox(); &lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
var delegate = {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Inverts the order&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sorter : function(a, b) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return a &amp;lt; b ? 1 : a &amp;gt; b ? -1 : 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; },&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Remove even-numbered items&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filter : function(item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var num = parseInt(/([0-9]+)/.exec(item)[1], 10);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return num % 2 ? true : false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; box.setDelegate(delegate);&lt;/blockquote&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/1424495000337521342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/1424495000337521342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/1424495000337521342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/1424495000337521342'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2012/03/virtual-widgets-in-qoxdoo.html' title='Virtual Widgets in Qooxdoo'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-8341057345852917531</id><published>2011-12-30T03:03:00.000-08:00</published><updated>2012-03-17T08:01:45.375-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Qooxdooo"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Development"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Framework"/><title type='text'>Cross browser support in web applications</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Few years ago, we had very few variations in the browsers. After the Google chrome, the browser market became very agile. Now, Firefox is releasing a major version every few months.&lt;br /&gt;
&lt;br /&gt;
In our team, we have two products, let&#39;s call it A and B.&lt;br /&gt;
A is developed with HTML, Javascript, CSS and with few additional third party components for Menus and Trees.&lt;br /&gt;
B is developed with the RIA framework qooxdoo. As the qooxdoo framework provides quite a lot of widgets, B does not use any other third party components for Menus and Trees.&lt;br /&gt;
&lt;br /&gt;
Recently, the verification of the products are in progress.&lt;br /&gt;
A has lot of issues with the different browsers. To say a few.&lt;br /&gt;
1- The third party components does not work with IE9 and Chrome 16. &lt;br /&gt;
2- We have coded in HTML and javascript to retain the fixed header for the tables. That worked well in IE7.0 and Firefox 3.x. From Firefox4 onwards, Firefox removed the support of a variable. Fixed header code broke in Firefox 4.x onwards. We tested in Firefox 9.0, the code didn&#39;t work in that version too. We had to fix it separately for Firefox 3.x and Firefox 4.x onwards.&lt;br /&gt;
&lt;br /&gt;
let&#39;s see how B performs.&lt;br /&gt;
1- As there are no third party components, B worked fairly well in IE9, Firefox 9.0, and Chrome.&lt;br /&gt;
2- qooxdoo&amp;nbsp; provides the table widget with sortable columns. This works well in most of the browsers.&lt;br /&gt;
&lt;br /&gt;
So, with the agile competition between the browsers, it is advisable to migrate your web application to a Rich Internet application using a good framework such as qooxdoo.&lt;br /&gt;
&lt;br /&gt;
Now, there is a &lt;a href=&quot;http://www.packtpub.com/qooxdoo-for-rich-internet-applications-beginners-guide/book%20&quot;&gt;beginner&#39;s guide on qooxdoo&lt;/a&gt; to jumpstart your development on Qooxdoo.&lt;br /&gt;
http://www.packtpub.com/qooxdoo-for-rich-internet-applications-beginners-guide/book  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/8341057345852917531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/8341057345852917531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/8341057345852917531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/8341057345852917531'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2011/12/cross-browser-support-in-web.html' title='Cross browser support in web applications'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-2241076733992271116</id><published>2011-12-29T06:35:00.000-08:00</published><updated>2011-12-29T06:37:21.279-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Development"/><title type='text'>prompt aborted by user in Firefox 8/9</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;For few years, I had the following snippet of code that worked until Firefox 3.x. The following code
refreshes the frame/page after the delete action to clear the old object and then alert the user that the
action is complete.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;refreshOnDelete();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;alert(“Deleted Successfully&quot;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;In Firefox 8/9, looks like they are unloading cleanly.
Therefore the alert will not be displayed to the user. Instead Firefox 8/9
displays an error message “prompt aborted by user”.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;So, you should alert before refreshing the frame/page. The
following code works in Firefox 8/9&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;alert(“Deleted Successfully&quot;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;refreshOnDelete();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;span style=&quot;font-family: Arial; font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Arial; font-size: 10pt;&quot;&gt;&lt;wbr&gt;&lt;/wbr&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/2241076733992271116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/2241076733992271116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/2241076733992271116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/2241076733992271116'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2011/12/prompt-aborted-by-user-in-firefox-89.html' title='prompt aborted by user in Firefox 8/9'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-568899753480949988</id><published>2011-12-27T07:33:00.000-08:00</published><updated>2012-03-17T08:02:06.322-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Books"/><category scheme="http://www.blogger.com/atom/ns#" term="Qooxdooo"/><category scheme="http://www.blogger.com/atom/ns#" term="Software Framework"/><title type='text'>Beginner&#39;s guide on qooxdoo</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Rich Internet Application (RIA) provides the capability to deliver feature-rich web 
applications, enables you to develop web applications with most of the desktop application&#39;s 
characteristics, and improves the usability of the web application. Over the last few years, 
many frameworks have arrived and are available to develop the Rich Internet Applications in 
different technologies.&lt;br /&gt;
&lt;br /&gt;
qooxdoo is one of the comprehensive open source RIA frameworks. qooxdoo allows you 
to develop cross-browser RIAs in object-oriented JavaScript, which helps greatly to re-use 
application code, and hence reduces the application size. It provides a wide range of 
off-the-shelf UI widgets. qooxdoo comes with a rich feature set when compared to most of the other 
RIA frameworks. qooxdoo is completely based on JavaScript. It provides a variety of tools to 
build, optimize, generate documentation, and more. qooxdoo framework supports multiple 
browsers, multi-language deployment, custom look and feel, unit testing, automation 
testing, and much more.&lt;br /&gt;
&lt;br /&gt;
In the past few years, all the major Internet applications or enterprise applications have   
been developed or migrated to RIA to support all the features that are provided in the 
desktop applications. This helps the organizations to keep the customers happy and also 
improves application deployment and maintenance.&lt;br /&gt;
&lt;br /&gt;
qooxdoo is an open source framework. It has been there since 2005 and it is a quite 
stable framework now. If you are watching and waiting for the right time to migrate your 
application to qooxdoo, this is the right time, in my opinion.

Now, there is a &lt;a href=&quot;http://www.packtpub.com/qooxdoo-for-rich-internet-applications-beginners-guide/book&quot;&gt;beginner&#39;s guide on qooxdoo&lt;/a&gt; to jumpstart your development on Qooxdoo.&lt;br /&gt;
http://www.packtpub.com/qooxdoo-for-rich-internet-applications-beginners-guide/book &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/568899753480949988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/568899753480949988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/568899753480949988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/568899753480949988'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2011/12/rich-internet-application-ria-provides.html' title='Beginner&#39;s guide on qooxdoo'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-3321298111046499673</id><published>2011-11-30T07:47:00.001-08:00</published><updated>2011-11-30T07:54:03.148-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Development"/><title type='text'>Requirements - What Vs How</title><content type='html'>When you get a request to add a feature for the product, you focus on the problem and ask what the user wants rather than how they want it. Most of the times, you&#39;ll hear &quot;how they want&quot;. Realizing what is the actual problem will enable you to provide a better and cleaner solution than their expectation.</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/3321298111046499673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/3321298111046499673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/3321298111046499673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/3321298111046499673'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2011/11/requirements-what-vs-how.html' title='Requirements - What Vs How'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-1005909583696708857</id><published>2010-06-04T07:26:00.000-07:00</published><updated>2010-06-04T07:28:24.605-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Life"/><title type='text'>Sleep Vs Quality Sleep</title><content type='html'>Normally I hear people saying &quot;You should have quality sleep&quot;. I didn&#39;t actually feel and experience that until last week. Few months back, I replaced my zero watts bulb (Apparently it is 12 watts bulb, check out &lt;a href=&quot;http://www.energymanagertraining.com/new_newspaper.htm&quot;&gt;here&lt;/a&gt;). Earlier I had Blue colored one, But I got the plain colored one as a replacement. I replaced the bulb and everything was fine. I normally switch on that bulb during the night and sleep. Initially I didn&#39;t realize any change, But in the later days, I realized that even if I sleep for 8+ hours, my eyes were straining during the day time. I thought it may be due to the tiredness of work, travel on Bangalore roads etc. One day I suddenly realized that long long ago, someone told me that my eyes are open slightly during my sleep. I started thinking on those lines and realized the plain colored zero watt bulb provides more light during the night. As I normally open my eyes slightly during sleep, I guess I strained my eyes during the sleep by closing it forcefully to avoid the light, which is the root cause. Then, I switched off the zero watt bulb and slept for few days, the quality of sleep improved a lot and now I sleep at least by 1 hour less than what I used to sleep before, get up early without alarm and my eyes doesn&#39;t strain during the day time. So, I really felt the quality sleep :)&lt;br /&gt;
&lt;br /&gt;
Now, I started researching about further improving the quality of my sleep by thinking and discussing with friends. Following mind map conveys all about getting quality sleep.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWicojifGmkeQufTePolUlYuU3UtpqQTthD5Xuu3fbazDMtNG6fAwbK9u7AQvMpGBGFVOfiMoOSaUuH95vR3bMhcG_SARwqyzyur0DTJ2r9_Sk1WFYl1VnCn3V5nVa0e8N98tD/s1600/Quality+Sleep.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWicojifGmkeQufTePolUlYuU3UtpqQTthD5Xuu3fbazDMtNG6fAwbK9u7AQvMpGBGFVOfiMoOSaUuH95vR3bMhcG_SARwqyzyur0DTJ2r9_Sk1WFYl1VnCn3V5nVa0e8N98tD/s640/Quality+Sleep.png&quot; width=&quot;627&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/1005909583696708857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/1005909583696708857' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/1005909583696708857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/1005909583696708857'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2010/06/sleep-vs-quality-sleep.html' title='Sleep Vs Quality Sleep'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWicojifGmkeQufTePolUlYuU3UtpqQTthD5Xuu3fbazDMtNG6fAwbK9u7AQvMpGBGFVOfiMoOSaUuH95vR3bMhcG_SARwqyzyur0DTJ2r9_Sk1WFYl1VnCn3V5nVa0e8N98tD/s72-c/Quality+Sleep.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-5805774097326491166</id><published>2010-05-17T03:54:00.000-07:00</published><updated>2010-05-17T03:56:08.032-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="productivity"/><title type='text'>Microsoft Word shortcut keys</title><content type='html'>If you use certain tools/software frequently, it is good to know useful shortcuts. This will help you save much time and enables you to prepare the artifacts very quickly if you are aware of the content ofcourse.&lt;br /&gt;
&lt;br /&gt;
As we use word quite often, It is good to know the shortcuts at&lt;a href=&quot;http://www.computerhope.com/shortcut/word.htm&quot;&gt; Microsoft word shortcuts &lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/5805774097326491166/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/5805774097326491166' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/5805774097326491166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/5805774097326491166'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2010/05/microsoft-word-shortcut-keys.html' title='Microsoft Word shortcut keys'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-559538795398216135</id><published>2010-04-12T06:36:00.000-07:00</published><updated>2010-04-13T05:14:07.158-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Development"/><title type='text'>HTML Select - Does not scale well ? Optimize it to Scale.</title><content type='html'>I had huge data in some scenario and ended up displaying 25000 options in HTML select. It was really slow to render the HTML select, especially in IE. Ideal way to resolve this issue to redesign the screen to avoid huge data in select element. Considering the release cycle, changes at multiple places, test coverage, user documentation change, etc, I tried to analyze the root cause of the issue. When you create each Option object and add it to Select element in java script for such a large number of options, browser spends lot of time doing the string concatenation underneath. Especially IE is very poor in performing such tasks. Even while clearing the 25000 options, it takes quite some time. To improve the performance, I re-wrote the code as mentioned below:&lt;br /&gt;
&lt;br /&gt;
Normal way but non-performing code:&lt;br /&gt;
&lt;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var selectedValue;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var selectElement; &lt;/blockquote&gt;&lt;blockquote&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectElement.length = 0; // clear the options&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var len = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i=0; i&amp;lt;=25000; i++)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectElement.options[len] = new Option(i, i);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if ( selectedValue != null &amp;amp;&amp;amp; i == selectedValue)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; selectElement.options[len].selected = true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;len++;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&lt;/blockquote&gt;Optimized code:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO28I5WnCb3OY7GYWQinDQeAo8UQZ0KQ5QcQs1PE76j2iiwj9PsYQxiaxPXwUwlojB07AjEPndcIPChr2_qifPTsWTyOjmEU0WMa4a7SLuXXWqJBy058wqTrTxDGl-jKKET5bN/s1600/one.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;376&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO28I5WnCb3OY7GYWQinDQeAo8UQZ0KQ5QcQs1PE76j2iiwj9PsYQxiaxPXwUwlojB07AjEPndcIPChr2_qifPTsWTyOjmEU0WMa4a7SLuXXWqJBy058wqTrTxDGl-jKKET5bN/s640/one.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/559538795398216135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/559538795398216135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/559538795398216135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/559538795398216135'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2010/04/html-select-does-not-scale-well.html' title='HTML Select - Does not scale well ? Optimize it to Scale.'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO28I5WnCb3OY7GYWQinDQeAo8UQZ0KQ5QcQs1PE76j2iiwj9PsYQxiaxPXwUwlojB07AjEPndcIPChr2_qifPTsWTyOjmEU0WMa4a7SLuXXWqJBy058wqTrTxDGl-jKKET5bN/s72-c/one.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-8661940095613694824</id><published>2010-02-01T23:46:00.001-08:00</published><updated>2020-12-17T11:21:29.018-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Testing"/><title type='text'>Selenium - wait_for_condition - timeout</title><content type='html'>&lt;b&gt;&lt;/b&gt;&lt;b style=&quot;font-weight: normal;&quot;&gt;$sel-&amp;gt;wait_for_condition($script, $timeout)&amp;nbsp;&lt;/b&gt; is not working correctly if the timeout is more than 180 seconds (180000 milliseconds). The timeout is not passed to the &lt;a href=&quot;http://search.cpan.org/%7Egaas/libwww-perl-5.834/lib/LWP/UserAgent.pm&quot;&gt;LWP::UserAgent&lt;/a&gt; object. By default the user agent times out for 180 seconds. If you are waiting for any time consuming AJAX operations, user agent times out at 180 seconds even if you pass higher timeout value (say 300000 milliseconds = 300 seconds) to the wait_for_condition selenium API.&lt;br /&gt;
I was getting the following error:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: courier new,courier;&quot;&gt;&lt;span&gt;Error requesting &lt;/span&gt;&lt;a class=&quot;jive-link-external-small&quot; href=&quot;http://localhost:4444/selenium-server/driver/:&quot;&gt;http://localhost:4444/selenium-server/driver/:&lt;/a&gt;&lt;br /&gt;
500 read timeout&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: courier new,courier;&quot;&gt;&amp;nbsp;&lt;/span&gt; &lt;br /&gt;
I and my colleague Mahesh checked the Selenium perl library code. It is not passing the timeout to the user agent, which is the issue. Normally people does not wait more than 3 minutes (180 seconds), so this issue might not have come to visibility. Anyhow, I have made a temporary fix locally only for the WaitForCondition command and it is working for higher timeout values.&lt;br /&gt;
&lt;br /&gt;
Code changes in Selenium.pm are &lt;br /&gt;
&lt;blockquote&gt;&amp;nbsp;&amp;nbsp; $command = uri_escape($command);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; my $fullurl = &quot;http://$self-&amp;gt;{host}:$self-&amp;gt;{port}/selenium-server/driver/&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; my $content = &quot;cmd=$command&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;my $tmp_timeout = 180;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($command eq &#39;waitForCondition&#39;) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $tmp_timeout = $args[1]/1000;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/blockquote&gt;and&lt;br /&gt;
&lt;blockquote&gt;&amp;nbsp;my $ua = LWP::UserAgent-&amp;gt;new;&lt;br /&gt;
&amp;nbsp;my $header = HTTP::Headers-&amp;gt;new( Content_Type =&amp;gt; &#39;application/x-www-form-urlencoded; charset=utf-8&#39; );&lt;br /&gt;
&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if ($command eq &#39;waitForCondition&#39;) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ua-&amp;gt;timeout($tmp_timeout);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;/blockquote&gt;I am not sure about other commands that require this fix, this fix just handle the timeout issue in $sel-&amp;gt;wait_for_condition() API.</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/8661940095613694824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/8661940095613694824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/8661940095613694824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/8661940095613694824'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2010/02/selenium-waitforcondition-timeout-issue.html' title='Selenium - wait_for_condition - timeout'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-6362478412778119584</id><published>2010-01-30T00:13:00.000-08:00</published><updated>2010-01-30T07:28:03.447-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blogger"/><title type='text'>Blogging</title><content type='html'>As the Blogging is out there for few years now, More people are becoming habitual to blog these days, I see many people are becoming a regular blogger and more people are creating new blogs daily. Time for the google, wordpress, and other blog sites to scale their clouds. I think, already they are doing it well :)&lt;br /&gt;
They are also enhancing the features. I recently changed my layout which stretches automatically based on my screen width. They are also commercializing well to monetize the blog to make win win situations for the blogger and the blog company. Amazon recently integrated with blogger to advertise the contents based on the blog context.&lt;br /&gt;
&lt;br /&gt;
Kinds of blogging that I observe through my network:&lt;br /&gt;
1) Few people blog related to their profession. One of my friend write about his management experiences at&amp;nbsp; &lt;a class=&quot;url&quot; href=&quot;http://managewell.net/&quot; onclick=&quot;(new Image()).src = &#39;/ajax/ct.php?app_id=9953271133&amp;amp;action_type=3&amp;amp;post_form_id=21f23df9781b940687a7845532596c2c&amp;amp;position=2&amp;amp;&#39; + Math.random();return true;&quot; onmousedown=&quot;UntrustedLink.bootstrap($(this), &amp;quot;21f23df9781b940687a7845532596c2c&amp;quot;, event)&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;http://managewell.net &lt;/a&gt;These kind of blog really helps him to share the experiences from his vast experience and enables him get feedback from specific people who are interested in the particular topic. Also, if you are really, really good in your profession, it will take you to the right place that you deserve if you are not already there. For the readers, the blog posts are too valuable information and thoughts. &lt;br /&gt;
&lt;br /&gt;
2) Few people write about their hobbies such as Travel, Fitness, etc. Even I have few separate blogs dedicated for travel, fitness, where I post related blog entries from by experiences.&lt;br /&gt;
&lt;br /&gt;
3) Few people write about their daily activities or kind of web diary. If you are writing these kind of blog, you need to be really careful before publishing the post. Once you post, it is visible over the net. You just think whether you really want to share the post to whole public and will it have any consequences any time later in your life. On the other end, you can create blogs wherein you can set the security so that only the approved contacts can read all the posts in your blog site. You can form a closed circle of friends or family, so that you can share the blog entries only within them. In google blogger, go to settings -&amp;gt; Permissions, you can see the options for the same.&lt;br /&gt;
&lt;br /&gt;
So, You think about the purpose of your blog, the intended audience of your blog, which will help you and the blog readers.</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/6362478412778119584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/6362478412778119584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/6362478412778119584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/6362478412778119584'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2010/01/blogging.html' title='Blogging'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-7488737993663190272</id><published>2010-01-12T02:18:00.000-08:00</published><updated>2010-01-30T00:18:02.201-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Development"/><title type='text'>Firefox - Event handling issue</title><content type='html'>In the recent firefox releases 3.0 and 3.5, I see an issue in the event firing. In the ajax exvironment, it sometimes misfires.&lt;br /&gt;
In my scenario, for an anchor element, I kept the href attribute as &quot;#&quot; and added an onclick event for a clean solution.&lt;br /&gt;
&lt;blockquote&gt;aElem.href = &quot;#&quot;;&lt;br /&gt;
aElem.onclick = function() {&lt;br /&gt;
//do the action&lt;br /&gt;
};&lt;/blockquote&gt;&lt;br /&gt;
It is working fine in IE browser, but this event is not fired correctly in firefox browser.&lt;br /&gt;
When I click on the  anchor element, firefox fires that action, but immediately after that it fires an event equivalent to refresh frame on which the anchor element was present.&lt;br /&gt;
To overcome this, I called the javascript function through the href attribute itself.&lt;br /&gt;
&lt;blockquote&gt;aElem.href=&quot;javascript:doMyAction();&quot;;&lt;br /&gt;
&lt;br /&gt;
function doMyAction() {&lt;br /&gt;
// do the action&lt;br /&gt;
}&lt;/blockquote&gt;&lt;br /&gt;
This is not a clean solution. But, this works both in firefox and IE.</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/7488737993663190272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/7488737993663190272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/7488737993663190272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/7488737993663190272'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2010/01/firefox-event-handling-issue.html' title='Firefox - Event handling issue'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-6591844953113373967</id><published>2009-12-02T05:38:00.000-08:00</published><updated>2009-12-02T05:48:46.814-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Environment"/><title type='text'>Reduce CO2 emissions</title><content type='html'>Google exposes some of the indicators nicely in charts based on the data exposed by &lt;a href=&quot;http://datafinder.worldbank.org/&quot;&gt;worldbank&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have checked few indicators across few countries. Here are the links of couple of charts.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.google.com/publicdata?ds=wb-wdi#met=en_atm_co2e_pc&amp;amp;idim=country:IND:CHN&amp;amp;tdim=true&quot;&gt;CO2 emissions - USA, India, and China&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.google.com/publicdata?ds=wb-wdi&amp;amp;met=eg_use_elec_kh_pc&amp;amp;idim=country:USA&amp;amp;q=electric+power+consumption#met=eg_use_elec_kh_pc&amp;amp;idim=country:USA:IND:CHN&quot;&gt;Electric Power Consumption - USA, India, and China&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Seeing all, Actually USA and the developed nations has to contribute a lot to save the environment.&lt;br /&gt;&lt;br /&gt;Check out the other indicators either through the &lt;a href=&quot;http://datafinder.worldbank.org/&quot;&gt;worldbank datafinder&lt;/a&gt; or Google Publicdata charts or develope your own way of rendering the data using the &lt;a href=&quot;http://developer.worldbank.org/&quot;&gt;worldbank API&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/6591844953113373967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/6591844953113373967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/6591844953113373967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/6591844953113373967'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2009/12/reduce-co2-emissions.html' title='Reduce CO2 emissions'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-3804329469328899019</id><published>2009-10-25T09:01:00.000-07:00</published><updated>2009-10-25T09:23:38.990-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bangalore"/><title type='text'>Bangalore Traffic and Circles</title><content type='html'>Bangalore traffic is going bad day by day. But, I don&#39;t see much improvement on the infrastructures. All the government is trying to do is widen the roads and build circles without signals. I hate the circles concept. You expect the bangalore traffic to flow automatically without any signals from  any direction to any direction. In bangalore, only the Hebbal flyover is up to the mark in the standards to have a free flow. Recently, they opened the circle near freedom park. Automobiles coming from any direction can circle around and take any direction out. Someone comes from the right end and wants to take the left road, and Someone else comes from the left and wants to take the right road. Both crosses each other and the traffic piles up. At least they would have made some layers of road which exits to different roads. Each and every civil engineer studies about the bridges and fly overs that aids the free flow of traffic. But, In reality they don&#39;t implement it quite often as they have constraints on the space, time, budget, and politics.</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/3804329469328899019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/3804329469328899019' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/3804329469328899019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/3804329469328899019'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2009/10/bangalore-traffic-and-circles.html' title='Bangalore Traffic and Circles'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-1990605290188054517</id><published>2009-10-17T20:05:00.000-07:00</published><updated>2009-10-17T20:25:03.329-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Movie Reviews"/><title type='text'>Sea Biscuit(2003)</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZA9S3o8QH0yFd4qczPt2NkCIh7u4VHFtJ0UCvrvylpvTZOk4VNEPHRApvi6UTd6ax7NFjwlPKwCI5gA_KGPiJD5-PaG8BablSsx5JzEa94aOp5w7dip-sOL5qiWtoRm1HxhJG/s1600-h/200px-Seabiscuit_ver2.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 135px; height: 200px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZA9S3o8QH0yFd4qczPt2NkCIh7u4VHFtJ0UCvrvylpvTZOk4VNEPHRApvi6UTd6ax7NFjwlPKwCI5gA_KGPiJD5-PaG8BablSsx5JzEa94aOp5w7dip-sOL5qiWtoRm1HxhJG/s200/200px-Seabiscuit_ver2.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5393775778626819058&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://www.imdb.com/title/tt0329575/&quot;&gt;Sea Biscuit(2003)&lt;/a&gt; is an amazing movie.&lt;br /&gt;Have seen it few times and won&#39;t be bored to see many more times.&lt;br /&gt;Well written by &lt;a href=&quot;http://www.imdb.com/name/nm1227780/&quot;&gt;Laura Hillenbrand&lt;/a&gt;  and nicely screen played by &lt;a href=&quot;http://www.imdb.com/name/nm0002657/&quot;&gt;Gary Ross&lt;/a&gt;.&lt;br /&gt;I liked the four main characters, Tom smith (played by &lt;a href=&quot;http://www.imdb.com/name/nm0177933/&quot;&gt;Chris Cooper&lt;/a&gt;),&lt;br /&gt;Red (played by &lt;a href=&quot;http://www.imdb.com/name/nm0029400/&quot;&gt;Michael Angarano&lt;/a&gt;),&lt;br /&gt;sea Biscuit and Charles Howard (played by &lt;a href=&quot;http://www.imdb.com/name/nm0000313/&quot;&gt;Jeff Bridges&lt;/a&gt;)&lt;br /&gt;Loved their expressions, especially Tom Smith&#39;s facial expressions at times for the dialogs of Charles Howard.&lt;br /&gt;&lt;br /&gt;The story line was awesome, it clearly shows the mix of right people with greate attitude put together can achieve anything even if they lack in some way. Small Horse, Tall Jockey, Old Trainer and the Owner. Small Horse had the spirit to win the well built horses. Tall jockey had the attitude to understand and mingle with it and beat all the right sized(short) jockeys. Old Trainer could clearly judge the horses, train them, and correct the jockeys mistakes. The Owner had picked the right trainer and he was there whenever they need or any one of them fail.&lt;br /&gt;&lt;br /&gt;Few of best dialogs that i liked from this movie are&lt;br /&gt;&lt;br /&gt;&quot;You know,you don&#39;t throw a whole life away...           &lt;br /&gt;just &#39;cause he&#39;s banged up a little.&quot;&lt;br /&gt;&lt;br /&gt;&quot;Brick by brick my citizens, brick by brick.&quot; - by The Roman Emperor, Hadrian&lt;br /&gt;&lt;br /&gt;It ain&#39;tjust the speed. It&#39;s the heart.</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/1990605290188054517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/1990605290188054517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/1990605290188054517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/1990605290188054517'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2009/10/sea-biscuit2003-is-amazing-movie.html' title='Sea Biscuit(2003)'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZA9S3o8QH0yFd4qczPt2NkCIh7u4VHFtJ0UCvrvylpvTZOk4VNEPHRApvi6UTd6ax7NFjwlPKwCI5gA_KGPiJD5-PaG8BablSsx5JzEa94aOp5w7dip-sOL5qiWtoRm1HxhJG/s72-c/200px-Seabiscuit_ver2.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-3420025868641936053</id><published>2009-09-11T02:28:00.000-07:00</published><updated>2010-01-30T00:26:17.043-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Testing"/><title type='text'>Selenium - Testing AJAX Web Applications</title><content type='html'>In AJAX applications, we do not reload the whole page, instead we update part of the page based on the response. To test these applications we cannot use wait_for_page_to_load() or wait_for_frame_to_load() or alert_is().&lt;br /&gt;
&lt;br /&gt;
In these cases, we have to use the wait_for_condition() selenium API.&lt;br /&gt;
Key thing to observe here is that the code that you write in the condition is in javascript. &lt;br /&gt;
In the following example, I am waiting for the alert for 60000 milliseconds. This alert is poped up after updating the page based on the AJAX response.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;my $cond = &quot;try{ if(selenium.getAlert().indexOf(&#39;Package successfully deployed&#39;) &amp;gt; -1){true;} } catch(ex) {}&quot;;&lt;br /&gt;
$Common::sel-&amp;gt;wait_for_condition($cond, 60000);&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/3420025868641936053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/3420025868641936053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/3420025868641936053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/3420025868641936053'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2009/09/selenium-testing-ajax-web-applications.html' title='Selenium - Testing AJAX Web Applications'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-4005040082047123271</id><published>2009-09-09T23:09:00.000-07:00</published><updated>2010-01-30T00:26:50.866-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Testing"/><title type='text'>Selenium - alert and confirm in the page&#39;s onload() event</title><content type='html'>Selenium does NOT support _javascript_ alerts that are generated in a page&#39;s onload() event handler. Selenium does NOT support _javascript_ confirmations that are generated in a page&#39;s onload() event handler.&lt;br /&gt;
&lt;br /&gt;
You may have some alert in the login page to display some alert on invalid username and password. When you want to automate the test cases on those pages, you need to add some javascript code on those pages before displaying the alert or confirm. These following lines makes the selenium to capture the alert or confirm messages.&lt;br /&gt;
&lt;blockquote&gt;var browserbot = parent.selenium.browserbot;&lt;br /&gt;
if (browserbot) {&lt;br /&gt;
browserbot.modifyWindowToRecordPopUpDialogs(window, browserbot);&lt;br /&gt;
}&lt;br /&gt;
alert(&quot;Alert message after those selenium workaround js snippet&quot;);&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/4005040082047123271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/4005040082047123271' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/4005040082047123271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/4005040082047123271'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2009/09/selenium-alert-and-confirm-in-pages.html' title='Selenium - alert and confirm in the page&#39;s onload() event'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-6457227532391431750</id><published>2009-09-06T23:12:00.000-07:00</published><updated>2010-01-30T00:27:12.059-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Testing"/><title type='text'>Selenium - How to check the disabled button?</title><content type='html'>If you are using the Selenium IDE, you cannot record a test to check the disabled button. Instead of recording you can use the selenium perl driver API and code the test.&lt;br /&gt;
If I am testing the disabled state of a button with an id=&quot;pingBtn&quot; in the HTML page, use the is_editable API and check the disabled state.&lt;br /&gt;
API doc:&lt;br /&gt;
&lt;blockquote&gt;$sel-&amp;gt;is_editable($locator)&lt;br /&gt;
Determines whether the specified input element is editable, ie hasn&#39;t been disabled.This method will fail if the specified element isn&#39;t an input element.&lt;br /&gt;
&lt;br /&gt;
$locator is an element locator&lt;br /&gt;
Returns true if the input element is editable, false otherwise&lt;/blockquote&gt;Compare the return value to false (0) to check the disabled state and add a comment which will be printed on the test console.&lt;br /&gt;
&lt;blockquote&gt;ok($sel-&amp;gt;is_editable(&quot;pingBtn&quot;) == 0, &quot;is_not_editable, pingBtn&quot;);&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/6457227532391431750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/6457227532391431750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/6457227532391431750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/6457227532391431750'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2009/09/selenium-how-to-check-disabled-button.html' title='Selenium - How to check the disabled button?'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-5270868499256990251</id><published>2009-07-29T10:40:00.000-07:00</published><updated>2010-01-30T00:22:50.070-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Software Development"/><title type='text'>Brief Introduction about web development</title><content type='html'>I was explaining about the web development to one of my friend who is very good in C and Unix, but new to web development. Just thought of sharing the same notes in my blog.&lt;br /&gt;
Image export of mind map is here:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlcUQJzc4w0EtNPJE96LLrmOysEXErA3yZ400ur060H2fh7MDXlsdipO5wCLMjAv8hZXm04jpOw2tzYjDQOBxJ9rQmaw6TOPGyQ2PPnDGTwYdFM1lqUSPBbsSBtPGIOEmppVz1/s1600-h/Web+Dev.jpeg&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5363939825985422802&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlcUQJzc4w0EtNPJE96LLrmOysEXErA3yZ400ur060H2fh7MDXlsdipO5wCLMjAv8hZXm04jpOw2tzYjDQOBxJ9rQmaw6TOPGyQ2PPnDGTwYdFM1lqUSPBbsSBtPGIOEmppVz1/s400/Web+Dev.jpeg&quot; style=&quot;cursor: pointer; display: block; height: 70px; margin: 0px auto 10px; text-align: center; width: 400px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
HTML export of mind map is here:&lt;br /&gt;
&lt;br /&gt;
Web Dev&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;HTML&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Structure of the web page, which is rendered by browser&lt;/li&gt;
&lt;li&gt;Static pages&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Navigation is linked by anchor/href tag&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Dynamic pages&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;HTML Content is generated based on the database content&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Actions are through buttons, which will submit the form&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;server is responsible to handle the request and respond back&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;JavaScript&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Client side scripting&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;to avoid the load on the server&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Used for client side validation&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;used for AJAX&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Used to generate the dynamic web page&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;CSS&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;used for the styling of the web pages&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Browser applies the CSS while rendering the web page&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;for common style across the application&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;helps to keep the HTML code clean&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Improves maintainability&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Improves readability&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Server Side Scripting&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;br /&gt;
executed at the server side to generate the dynamic HTML content&lt;br /&gt;
&lt;br /&gt;
Example: JSP, ASP, Velocity, DJango, etc&lt;br /&gt;
&lt;br /&gt;
Scriplet and HTML are placed in the same file and     &lt;br /&gt;
scriplet is executed just before server sends the HTML response     &lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;AJAX&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;     &lt;br /&gt;
Instead of form submit, a XMLHTTP call is made to the server and      &lt;br /&gt;
based on the result, part of the HTML page is rendered.     &lt;br /&gt;
In Traditional web dev, the response replaces whole HTML page,      &lt;br /&gt;
but in AJAX, part of the HTML can be updated based on the        XMLHTTP response     &lt;br /&gt;
can make syncronous or asynchronous XMLHTTP calls&lt;br /&gt;
&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/5270868499256990251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/5270868499256990251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/5270868499256990251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/5270868499256990251'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2009/07/brief-introduction-about-web.html' title='Brief Introduction about web development'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlcUQJzc4w0EtNPJE96LLrmOysEXErA3yZ400ur060H2fh7MDXlsdipO5wCLMjAv8hZXm04jpOw2tzYjDQOBxJ9rQmaw6TOPGyQ2PPnDGTwYdFM1lqUSPBbsSBtPGIOEmppVz1/s72-c/Web+Dev.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-5402943751005346238</id><published>2009-01-13T06:41:00.000-08:00</published><updated>2009-01-13T06:52:56.298-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BetterDesign"/><title type='text'>Path Ways Design</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieIj3zh5x5tzfbFvijL_o8oJMccIUnYfwhh805x_4Y0uypNDe-RGUchKDKAblp0VyxW_cAbOhIKABrrToRzyC8SIrOenHQ3T4Ft0CKXe33wHPRLUv8fH-r6fx74t6kaiVNckiQ/s1600-h/door-ways.JPG&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 335px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieIj3zh5x5tzfbFvijL_o8oJMccIUnYfwhh805x_4Y0uypNDe-RGUchKDKAblp0VyxW_cAbOhIKABrrToRzyC8SIrOenHQ3T4Ft0CKXe33wHPRLUv8fH-r6fx74t6kaiVNckiQ/s400/door-ways.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5290791180138115378&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Recently, our office shifted to new location. The floor area in each floor is quite big and number of people in a floor is little high, so the frequency to the rest room is little high. The path ways are not designed in a conventional way, which does not suit well for a high frequency. They would have designed little better to avoid the crossing of the people who are going in and people who are coming out. I have drawn my thought on the better design of the path ways.</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/5402943751005346238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/5402943751005346238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/5402943751005346238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/5402943751005346238'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2009/01/path-ways-design.html' title='Path Ways Design'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieIj3zh5x5tzfbFvijL_o8oJMccIUnYfwhh805x_4Y0uypNDe-RGUchKDKAblp0VyxW_cAbOhIKABrrToRzyC8SIrOenHQ3T4Ft0CKXe33wHPRLUv8fH-r6fx74t6kaiVNckiQ/s72-c/door-ways.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-5270069012658169071</id><published>2008-12-31T00:44:00.000-08:00</published><updated>2008-12-31T00:58:26.886-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="New Technologies"/><title type='text'>OPENID &amp; GRAVATAR</title><content type='html'>Enough of those old days of creating different login account for each website, where you want to create an account.&lt;br /&gt;&lt;br /&gt;These days, many of the website uses the &lt;a href=&quot;http://openid.net/what/&quot;&gt;openID&lt;/a&gt; as their login system and uses &lt;a href=&quot;http://www.gravatar.com/&quot;&gt;GRavatar&lt;/a&gt; (Globally Recognized Avatar) for your profile.&lt;br /&gt;&lt;br /&gt;One of the website that uses both the open ID and GRavatar  is &lt;a href=&quot;http://stackoverflow.com/&quot;&gt;stackoverflow&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, on your next website, if your login system is simpler, used only for login authentication  and if you don&#39;t have any role based data acess, you can use openID and GRavatar instead of creating your own user account management.</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/5270069012658169071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/5270069012658169071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/5270069012658169071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/5270069012658169071'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2008/12/openid-gravatar.html' title='OPENID &amp; GRAVATAR'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-3557432024997919534</id><published>2008-12-30T23:08:00.000-08:00</published><updated>2009-10-17T20:12:05.089-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Movie Reviews"/><title type='text'>Rab ne Bana di Jodi</title><content type='html'>Recently, I saw the movie &quot;Rab ne Bana di Jod&quot;. I would like to say couple of points about the movie.&lt;br /&gt;1) Identify an activity that you love to do , try to indulge you in  that, and cultivate as an habit.&lt;br /&gt;This will save you when you are too low at times  in your journey  of life.&lt;br /&gt;&lt;br /&gt;In the movie, Director has shown this clearly.&lt;br /&gt;When Anushka Sharma feels that nothing is left in her life, she stays in the closed room for few days, and then she does only the basic activity for the sake of passing the days...&lt;br /&gt;Only the dance, which she loves a lot, brings her back into life.&lt;br /&gt;When you feel nothing is left in your life, you will never ever want to do anything. Only such an activity, where you forget about yourself, can bring you back to the life, ofcourse it takes its own time, some times in months, some times in years.&lt;br /&gt;You can choose the activity that is feasible for you. it could be dance, GYM, Arts, Photography, etc. It is better to choose an activity that can stand broader age band. You never know when you&#39;ll hit the abyss in your life.&lt;br /&gt;&lt;br /&gt;2) Try to see the situation from other&#39;s perspective.&lt;br /&gt;&lt;br /&gt;Although Sharukh Khan loves Anuksha Sharma on the first sight, he understands the mind of the Anuksha Sharma , allows her to take her time to recover from the abyss, finds all the ways to attract her attention on her own way.</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/3557432024997919534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/3557432024997919534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/3557432024997919534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/3557432024997919534'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2008/12/rab-ne-bana-di-jodi.html' title='Rab ne Bana di Jodi'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-3587662208526899839</id><published>2008-08-31T09:42:00.000-07:00</published><updated>2008-08-31T09:43:06.881-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="entrepreneur"/><title type='text'>Brain-driven Email Editor</title><content type='html'>Couple of days back, I thought of sending a mail to colleague about some task.&lt;br /&gt; Since the team is virtually located across the globe, sometimes it matters to send a email&lt;br /&gt; before the COB, so that I&#39;ll get the reply from the person across the globe (say in US) and&lt;br /&gt; start my next day activity. But, Unfortunately I forgot to send that mail.&lt;br /&gt; In the sleep, I got a dream that I typed the email with better facts.&lt;br /&gt; As usual, When I woke up, I forgot what was the thought that i drafted in the email.&lt;br /&gt; So...., I was thinking it would be very gratefull to have some kind of Email composer driven by brain thoughts.&lt;br /&gt; On the otherhand, It may cause some disaster sometimes.&lt;br /&gt; Say If I had a long arguement with my boss and was not satisfied with the boss decision and&lt;br /&gt; it was some kind of fight, I may end up sending some email in my un-consious mind.&lt;br /&gt;As we always workaround for the issues..., we can configure the so called &quot;Brain-driven Email Editor&quot; to save all the mails in the draft :)&lt;br /&gt; So that we can capture the dream thoughts and we can review in the morning, scrap some mails, edit some mails, and send it...&lt;br /&gt; What do you think...</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/3587662208526899839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/3587662208526899839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/3587662208526899839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/3587662208526899839'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2008/08/brain-driven-email-editor.html' title='Brain-driven Email Editor'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12302789.post-8648175339097668135</id><published>2008-08-31T09:39:00.000-07:00</published><updated>2010-01-30T00:25:45.841-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Life"/><category scheme="http://www.blogger.com/atom/ns#" term="MyStuff"/><title type='text'>Few things I try to follow...</title><content type='html'>I thought of sharing few things that I call as my Philosopies...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Have faith on U, If you don&#39;t have faith on U, Nobody will.&lt;/li&gt;
&lt;li&gt;Think whether you can complete before taking up any activity.&lt;/li&gt;
&lt;li&gt;Don&#39;t believe on words, Believe on actions.&lt;/li&gt;
&lt;li&gt;Treat people as you expect them to treat you.&lt;/li&gt;
&lt;li&gt;Same rule can neither be applied everywhere nor for everything.&lt;/li&gt;
&lt;li&gt;Avoid dependencies until it is worth.&lt;/li&gt;
&lt;li&gt;If you have problem in taking decisions, ask questions yourself to narrow down.&lt;/li&gt;
&lt;li&gt;Observe yourself as a 3rd person and evaluate. U can&#39;t change few habits, but you&#39;ll know U better. If possible, try to improve yourself.&lt;/li&gt;
&lt;li&gt;Fitness is lifestyle.&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtstoblog.blogspot.com/feeds/8648175339097668135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/12302789/8648175339097668135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/8648175339097668135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12302789/posts/default/8648175339097668135'/><link rel='alternate' type='text/html' href='http://thoughtstoblog.blogspot.com/2008/08/few-things-i-try-to-follow.html' title='Few things I try to follow...'/><author><name>Raffi</name><uri>http://www.blogger.com/profile/05546426924484991618</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>