<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6167409060720238089</id><updated>2012-02-16T01:07:33.144-08:00</updated><category term='install'/><category term='logging'/><category term='calendar'/><category term='postgres'/><category term='collaboration'/><category term='gridview'/><category term='gwt'/><category term='algorithms'/><category term='dbus'/><category term='preparedstatement'/><category term='Seven'/><category term='PagingToolbar'/><category term='awk'/><category term='numberfield'/><category term='configuration'/><category term='iphone 4'/><category term='grep'/><category term='web service'/><category term='requestfactory'/><category term='traceroute'/><category term='scp'/><category term='developer'/><category term='0x81b8c63b'/><category term='remote copy'/><category term='timectrl'/><category term='solaris'/><category term='review'/><category term='c++'/><category term='usb hid'/><category term='facebook'/><category term='xml'/><category term='table'/><category term='virtualbox'/><category term='foreign key'/><category term='existing database'/><category term='java'/><category term='prime number'/><category term='authentication'/><category term='datatable'/><category term='wxpython'/><category term='DatePickerCtrl'/><category term='format'/><category term='start date'/><category term='libusb'/><category term='sendmail'/><category term='game'/><category term='compile'/><category term='rotate'/><category term='preview'/><category term='loading image'/><category term='libconfuse'/><category term='windows 8'/><category term='Netbeans'/><category term='socket'/><category term='problems'/><category term='custom'/><category term='errors'/><category term='Eclipse'/><category term='asp.net'/><category term='ubuntu'/><category term='extjs'/><category term='jailbreak'/><category term='ios 4.1'/><category term='setup'/><category term='virtual functions'/><category term='2.10.04'/><category term='gridpanel'/><category term='smtp'/><category term='javascript'/><category term='connection'/><category term='debugging'/><category term='pcre'/><category term='perl'/><category term='treepanel'/><category term='sdl'/><category term='map'/><category term='environment'/><category term='IDE'/><category term='help'/><category term='confuse'/><category term='TurboGears'/><category term='find'/><category term='magtek'/><category term='python'/><category term='ganglia'/><category term='remote access'/><category term='animation'/><category term='crosstab'/><category term='Yii'/><category term='Social games'/><category term='SQLObject'/><category term='ld'/><category term='JSON'/><category term='vector'/><category term='cross domain'/><category term='database'/><category term='Windows 7'/><category term='cellcontent'/><category term='apache'/><category term='linux'/><category term='date time'/><category term='iphone4'/><category term='guide'/><category term='soap'/><category term='basic'/><category term='php'/><category term='mount'/><category term='PSQLException'/><category term='videos'/><category term='ajast'/><category term='viewport'/><category term='board games'/><category term='tcp'/><category term='jquery'/><category term='cgi'/><category term='datepicker'/><category term='unix'/><category term='unlock'/><category term='apr'/><category term='gcc'/><category term='MySql'/><category term='end date'/><category term='spidvid'/><category term='libusb-win'/><title type='text'>Tech talk!</title><subtitle type='html'>Discussing my experiences with technology!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-3492006956124505105</id><published>2011-10-15T15:21:00.000-07:00</published><updated>2011-10-15T15:24:30.295-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requestfactory'/><category scheme='http://www.blogger.com/atom/ns#' term='gwt'/><category scheme='http://www.blogger.com/atom/ns#' term='logging'/><title type='text'>Problem  - GWT logging not working</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;When you inherit certain modules in .gwt.xml file, it disables GWT logging. This happened to me when I tried inheriting Requestfactory. Some modules inherit &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;com.google.gwt.logging.LoggingDisabled&lt;/span&gt;&amp;nbsp; internally and thus affect your logging.&lt;br /&gt;&lt;br /&gt;To fix this you should explicitly enable logging after you have inherited all your modules. At the end of your list of inherits add the following to your .gwt.xml file-&lt;br /&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;set-property name="gwt.logging.enabled" value="TRUE"/&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;set-property name="gwt.logging.enabled" value="TRUE"&gt;&lt;/set-property&gt;&lt;/b&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;set-property name="gwt.logging.enabled" value="TRUE"&gt;&lt;/set-property&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-3492006956124505105?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/3492006956124505105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=3492006956124505105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3492006956124505105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3492006956124505105'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2011/10/problem-gwt-logging-not-working.html' title='Problem  - GWT logging not working'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Sunnyvale, CA 94086, USA</georss:featurename><georss:point>37.36883 -122.0363496</georss:point><georss:box>37.318357000000006 -122.1153136 37.419303 -121.9573856</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-3140481918772962767</id><published>2011-10-15T15:07:00.000-07:00</published><updated>2011-10-15T15:07:13.416-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='crosstab'/><category scheme='http://www.blogger.com/atom/ns#' term='gwt'/><category scheme='http://www.blogger.com/atom/ns#' term='preparedstatement'/><category scheme='http://www.blogger.com/atom/ns#' term='postgres'/><category scheme='http://www.blogger.com/atom/ns#' term='PSQLException'/><title type='text'>Executing Postgres crosstab query as a prepared statement</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;I was executing a crosstab query as a prepared statement in Java(in a GWT app) and getting the following error -&lt;br /&gt;&lt;br /&gt;&lt;b&gt;PSQLException &lt;/b&gt;-Can't use query methods that take a query string on a PreparedStatement.&lt;br /&gt;&lt;br /&gt;With some helpful folks from stackflow, I was able to resolve the error with the following code -&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;String query = "SELECT * FROM crosstab(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'SELECT rowid, a_name, value &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; FROM test WHERE a_name = ''att2'' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OR a_name = ''att3''&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ORDER BY 1,2'&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;) AS ct(row_name text, cat_1 text, cat_2 text, cat_3 text);";&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PreparedStatement stat = conn.prepareStatement(query);&lt;br /&gt;ResultSet rs = stat.getResultSet();&lt;/b&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;//Note that, it is executeQuery() and not executeQuery(query)&lt;/b&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;stat.executeQuery();&lt;br /&gt;rs = stat.getResultSet();&lt;br /&gt;while (rs.next()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //TODO&lt;br /&gt;}&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/b&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/b&gt;&lt;br /&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Thanks!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-3140481918772962767?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/3140481918772962767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=3140481918772962767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3140481918772962767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3140481918772962767'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2011/10/executing-postgres-crosstab-query-as.html' title='Executing Postgres crosstab query as a prepared statement'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Sunnyvale, CA 94086, USA</georss:featurename><georss:point>37.36883 -122.0363496</georss:point><georss:box>37.3183525 -122.1153136 37.4193075 -121.9573856</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-8733754412273865386</id><published>2011-10-15T14:49:00.000-07:00</published><updated>2011-10-15T14:51:19.392-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crosstab'/><category scheme='http://www.blogger.com/atom/ns#' term='rotate'/><category scheme='http://www.blogger.com/atom/ns#' term='table'/><category scheme='http://www.blogger.com/atom/ns#' term='postgres'/><title type='text'>PostgreSQL crosstab query - Rotate a table about a pivot</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;An interesting feature of relational databases(postgres in this case) is the ability to rotate the table about a pivot. So if you have data like this-&lt;br /&gt;&amp;nbsp;id | rowid | key | value &lt;br /&gt;---+------+----+-------&lt;br /&gt;&amp;nbsp; 1 | test1 | key1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | val1&lt;br /&gt;&amp;nbsp; 2 | test1 | key2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | val2&lt;br /&gt;&amp;nbsp; 3 | test1 | key3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | val3&lt;br /&gt;&amp;nbsp; 4 | test1 | key4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | val4&lt;br /&gt;&amp;nbsp; 5 | test2 | key1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | val5&lt;br /&gt;&amp;nbsp; 6 | test2 | key2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | val6&lt;br /&gt;&amp;nbsp; 7 | test2 | key3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | val7&lt;br /&gt;&amp;nbsp; 8 | test2 | key4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | val8&lt;br /&gt;&lt;br /&gt;And want to have a result set like this -&lt;br /&gt;&lt;br /&gt;rowid | key1 | key2 | key3 | key4 &lt;br /&gt;------+------+-----+-----+------&lt;br /&gt;&amp;nbsp;test1&amp;nbsp; | val1&amp;nbsp; | val2&amp;nbsp; | val3&amp;nbsp; | val4&lt;br /&gt;&amp;nbsp;test2&amp;nbsp; | val5&amp;nbsp; | val6&amp;nbsp; | val7&amp;nbsp; | val8&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It can be achieved by a "crosstab" query in a postgres database -&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;SELECT * FROM crosstab(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'SELECT rowid, key, value &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM test WHERE key= ''key1'' OR key = ''key2''&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OR key = ''key3'' OR key = ''key4''&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ORDER BY 1,2'&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ) AS ct(rowid text, key1 text, key2 text,&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; key3 text, key4 text);&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-8733754412273865386?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/8733754412273865386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=8733754412273865386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/8733754412273865386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/8733754412273865386'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2011/10/postgresql-crosstab-query-rotate-table.html' title='PostgreSQL crosstab query - Rotate a table about a pivot'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Sunnyvale, CA 94086, USA</georss:featurename><georss:point>37.371859 -122.0212337</georss:point><georss:box>37.346621 -122.0607157 37.397097 -121.98175169999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-8146058795913191243</id><published>2011-09-15T22:19:00.000-07:00</published><updated>2011-09-16T23:34:01.309-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='developer'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='0x81b8c63b'/><category scheme='http://www.blogger.com/atom/ns#' term='windows 8'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualbox'/><category scheme='http://www.blogger.com/atom/ns#' term='errors'/><category scheme='http://www.blogger.com/atom/ns#' term='preview'/><title type='text'>Virtualbox-Windows 8 developer preview installation error</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Downloaded the Windows 8 developers preview yesterday but only to find I could not get it installed on a Oracle Virtualbox. I tried both 32-bit and 64 bit version on a Win 7 64 bit machine(HP EliteBook 8440p). The 32-bit got stuck at the following screen. I need to look for help on this error 0x81B8C63B&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sHv8aX0uYuQ/TnLcHhR9DaI/AAAAAAAABLA/myRSfWUSebQ/s1600/win8Capture.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="146" src="http://1.bp.blogspot.com/-sHv8aX0uYuQ/TnLcHhR9DaI/AAAAAAAABLA/myRSfWUSebQ/s320/win8Capture.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;EDIT&lt;/u&gt;: From "Smiley"'s comments below, after I turned the Virtualization option ON from the BIOS menu at startup, I was able to install windows 8. Thanks.&lt;br /&gt;Surprisingly, I have a Ubuntu virtual machine and it runs fine without turning on the Vitualization option.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-8146058795913191243?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/8146058795913191243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=8146058795913191243' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/8146058795913191243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/8146058795913191243'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2011/09/virtualbox-windows-8-developer-preview.html' title='Virtualbox-Windows 8 developer preview installation error'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-sHv8aX0uYuQ/TnLcHhR9DaI/AAAAAAAABLA/myRSfWUSebQ/s72-c/win8Capture.PNG' height='72' width='72'/><thr:total>5</thr:total><georss:featurename>215 Charles Ave, Sunnyvale, CA 94086, USA</georss:featurename><georss:point>37.371859 -122.0212337</georss:point><georss:box>37.346621 -122.0607157 37.397097 -121.98175169999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-2268822551454051290</id><published>2011-03-17T13:06:00.000-07:00</published><updated>2011-03-17T13:06:43.904-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wxpython'/><category scheme='http://www.blogger.com/atom/ns#' term='timectrl'/><category scheme='http://www.blogger.com/atom/ns#' term='date time'/><category scheme='http://www.blogger.com/atom/ns#' term='DatePickerCtrl'/><title type='text'>Wxpython snippet - A date time control</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-xjkexh0u5SQ/TYJpRSKxAHI/AAAAAAAABDg/e7TUuSdM7Bo/s1600/datimeCapture.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-xjkexh0u5SQ/TYJpRSKxAHI/AAAAAAAABDg/e7TUuSdM7Bo/s1600/datimeCapture.PNG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Make sure you have installed &lt;a href="http://www.wxwidgets.org/downloads/"&gt;wxwidgets&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Create date control&lt;br /&gt;self.dateCtrl = wx.DatePickerCtrl(panel, -1, pos=(130, 70))&lt;br /&gt;&lt;br /&gt;#create time control&lt;br /&gt;self.timeCtrl = wx.lib.masked.timectrl.TimeCtrl(panel,display_seconds=False,&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fmt24hr=False, id=-1, name='timeCtrl',&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;style=0,useFixedWidthFont=True,&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value=datetime.now().strftime('%X'), pos = (250,70))&lt;br /&gt;&lt;br /&gt;To get values -&lt;br /&gt;&lt;br /&gt;self.timeCtrl.GetValue()&lt;br /&gt;&lt;br /&gt;self.dateCtrl.GetValue())&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-2268822551454051290?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/2268822551454051290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=2268822551454051290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2268822551454051290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2268822551454051290'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2011/03/wxpython-snippet-date-time-control.html' title='Wxpython snippet - A date time control'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-xjkexh0u5SQ/TYJpRSKxAHI/AAAAAAAABDg/e7TUuSdM7Bo/s72-c/datimeCapture.PNG' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Clemson, SC, USA</georss:featurename><georss:point>34.6834382 -82.8373654</georss:point><georss:box>34.6128587 -82.9540949 34.7540177 -82.72063589999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-4202345532155558643</id><published>2011-03-07T23:20:00.000-08:00</published><updated>2011-03-07T23:23:02.529-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='virtual functions'/><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><title type='text'>C++ - Virtual functions</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I came across an interesting question in an interview today. It was about virtual functions. I wanted to improve my understanding of virtual functions, so here are some interesting findings, some new and some already known to me.&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Destructors&amp;nbsp;are called in the order - derived to base(if base destructor is virtual)&lt;/li&gt;&lt;li&gt;A virtual function is member function of a class , whose functionality can be&amp;nbsp;overridden by its derived class.&lt;/li&gt;&lt;li&gt;The virtual function call is resolved at run time. Unlike non-virtual member functions which are resolved at compile time.(static binding/dynamic binding)&lt;/li&gt;&lt;li&gt;If a same 'name' function is implemented in both base class and derived class, the base class function would be called.&lt;/li&gt;&lt;li&gt;A class with one or more pure virtual functions becomes an abstract base class. This means that it has to be inherited.&lt;/li&gt;&lt;li&gt;An interface class&amp;nbsp;has no members variables, and all of the functions are pure virtual.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-4202345532155558643?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/4202345532155558643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=4202345532155558643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/4202345532155558643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/4202345532155558643'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2011/03/c-virtual-functions.html' title='C++ - Virtual functions'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Central, SC 29630, USA</georss:featurename><georss:point>34.7242749 -82.7812526</georss:point><georss:box>34.6890029 -82.8396176 34.7595469 -82.7228876</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-2432728886693368421</id><published>2011-02-04T15:11:00.000-08:00</published><updated>2011-02-04T15:15:47.622-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='soap'/><category scheme='http://www.blogger.com/atom/ns#' term='web service'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='Yii'/><title type='text'>Yii web service and php soap client</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A &lt;a href="http://www.yiiframework.com/doc/guide/1.1/en/topics.webservice"&gt;web service&lt;/a&gt; is a method of communication between two machines. The web methods are exposed for world wide access. &lt;a href="http://www.yiiframework.com/doc/guide/1.1/en/topics.webservice"&gt;Yii&lt;/a&gt; has support for implementing web services. It uses SOAP as its foundation layer.&lt;br /&gt;&lt;br /&gt;To create a web service-&lt;br /&gt;&lt;br /&gt;1. Create a web app using Yii console application.&lt;br /&gt;2. Inside the controllers folder, create a file lets say 'ServiceController.php'.&lt;br /&gt;3. Add the following code, which implements two functions. One adds a session variable and the other returns it back.&lt;br /&gt;&amp;lt;?php&lt;br /&gt;class ServiceController extends CController&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; public function actions()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'wreader' =&amp;gt; array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'class' =&amp;gt; 'CWebServiceAction',&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; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param string username&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return float&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @soap&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public function getauth($uname)&lt;br /&gt;&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;&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;&amp;nbsp; $session = Yii::app()-&amp;gt;session;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $session['u_id'] = 1111;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @param string username&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @return float&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * @soap&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public function getemp($uname)&lt;br /&gt;&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; $session = Yii::app()-&amp;gt;session;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return isset($session['u_id'])?$session['u_id']:999;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;* Remember to mark the web methods with the tag &lt;code&gt;@soap&lt;/code&gt; in its doc comment. Yii relies on doc comment to specify the data type of the web method's input parameters and return value.&lt;br /&gt;&lt;br /&gt;Create a php file and enter the following code which consumes the web service.&lt;br /&gt;&amp;lt;?php&lt;br /&gt;$client=new SoapClient('http://127.0.0.1/s/index.php/service/wreader'); &lt;br /&gt;echo "\n".$client-&amp;gt;getauth('harpreet'); &lt;br /&gt;echo "\n".$client-&amp;gt;getemp('harpreet'); &lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;Execute the php script in a terminal to check out your web service.&lt;br /&gt;&lt;br /&gt;Open to suggests/improvements.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-2432728886693368421?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/2432728886693368421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=2432728886693368421' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2432728886693368421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2432728886693368421'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2011/02/yii-web-service-and-php-soap-client.html' title='Yii web service and php soap client'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total><georss:featurename>Central, SC 29630, USA</georss:featurename><georss:point>34.7242749 -82.7812526</georss:point><georss:box>34.6890029 -82.8396176 34.7595469 -82.7228876</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-4198590541067058287</id><published>2011-02-04T14:26:00.000-08:00</published><updated>2011-02-04T14:26:58.288-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libusb-win'/><category scheme='http://www.blogger.com/atom/ns#' term='usb hid'/><category scheme='http://www.blogger.com/atom/ns#' term='magtek'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='libusb'/><title type='text'>Read from Magtek card swipe reader in HID mode using libusb-win</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;This post deals with reading card swipe information from a &lt;a href="http://www.magtek.com/"&gt;Magtek&lt;/a&gt; USB Swipe Reader when set in HID mode. I used Visual Studio C++ Express Edition for a windows development environment. I installed libusb-win32 from &lt;a href="http://www.libusb.org/wiki/libusb-win32"&gt;http://www.libusb.org/wiki/libusb-win32&lt;/a&gt;&lt;br /&gt;Create a C++ project in Visual studio, include the usb.h file and link the project with libusb.lib. Both of these are included in the libusb package.&lt;br /&gt;&lt;br /&gt;The following can be used to read the card information-&lt;br /&gt;&lt;br /&gt;// magtekusbhidcardswipe.cpp : Defines the entry point for the console application. &lt;br /&gt;// &lt;br /&gt;#include &lt;cstdlib&gt; &lt;br /&gt;#include &lt;conio.h&gt; &lt;br /&gt;&lt;br /&gt;#include "stdafx.h" &lt;br /&gt;#include "usb.h" &lt;br /&gt;&lt;br /&gt;int _tmain(int argc, _TCHAR* argv[]) &lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct usb_bus *busses; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct usb_bus *bus;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct usb_device *dev;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int c, i, res; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char data[337]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; char idata[10]; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; usb_init(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; usb_find_busses(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; usb_find_devices(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; busses = usb_get_busses(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (bus = busses; bus; bus = bus-&amp;gt;next) { &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (dev = bus-&amp;gt;devices; dev; dev = dev-&amp;gt;next) {&amp;nbsp;&amp;nbsp;&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; if(dev-&amp;gt;descriptor.idProduct == 2 &amp;amp;&amp;amp; dev-&amp;gt;descriptor.idVendor == 0x801) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Product id: %04hx" ,dev-&amp;gt;descriptor.idProduct); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Vendor id: %04hx \n" ,dev-&amp;gt;descriptor.idVendor); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; usb_dev_handle *l_Handle = usb_open( dev); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if( NULL == l_Handle ){ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf( "usb_open(): no handle to device\n" ); &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; res = usb_claim_interface(l_Handle, 0); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(res&amp;nbsp; &amp;lt; -EBUSY) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Device interface not available to be claimed! \n"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; exit(0); &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; if(res &amp;lt; -ENOMEM) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Insufficient Memory! \n"); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; exit(0); &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; printf( "\nPlease swipe your card\n",res ); &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; res = usb_interrupt_read(l_Handle, 0x81, data, 337, -1); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf( "\nusb_interrupt_read %d \n",res );&amp;nbsp; &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; c=-1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //I am interested in only 10 characters in this range &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; for(i=1;i&amp;lt;10;i++) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; idata[++c] = data[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; c=atoi(idata); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; printf( "\nMy data : %d\n",c); &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; usb_release_interface(l_Handle, 0);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; usb_close(l_Handle);&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; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; getchar(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0; &lt;br /&gt;} &lt;br /&gt;&amp;nbsp;&lt;/conio.h&gt;&lt;/cstdlib&gt;&lt;br /&gt;&lt;br /&gt;Suggestions/improvements are welcome as always.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-4198590541067058287?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/4198590541067058287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=4198590541067058287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/4198590541067058287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/4198590541067058287'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2011/02/read-from-magtek-card-swipe-reader-in.html' title='Read from Magtek card swipe reader in HID mode using libusb-win'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Central, SC 29630, USA</georss:featurename><georss:point>34.7242749 -82.7812526</georss:point><georss:box>34.6890029 -82.8396176 34.7595469 -82.7228876</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-7731687242162252041</id><published>2011-02-01T20:52:00.000-08:00</published><updated>2011-03-07T21:06:52.990-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone 4'/><category scheme='http://www.blogger.com/atom/ns#' term='dbus'/><category scheme='http://www.blogger.com/atom/ns#' term='mount'/><category scheme='http://www.blogger.com/atom/ns#' term='errors'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Iphone 4 does not mount on Ubuntu after  iOS 4.2 upgrade - DBus Error</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;After I upgraded my iphone to iOS 4.2, I was not longer able to mount it on Ubuntu 10.10. Whenever I got plugged it in, I would get an error message -&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px;"&gt;DBus error org.freedesktop.DBus.Error.NoReply: Message did not receive a reply (timeout by message bus)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Tahoma; font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I looked it up and found a workaround, seems like I need to update to a newer version of&amp;nbsp;libimobiledevice.&lt;br /&gt;&lt;br /&gt;Here is how I did it-&lt;br /&gt;&lt;br /&gt;Unplug the iPhone and execute the following in the terminal window.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;sudo add-apt-repository ppa:pmcenery/ppa&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;sudo apt-get update&lt;br /&gt;sudo apt-get upgrade&lt;br /&gt;&lt;br /&gt;sudo apt-get install libimobiledevice-utils&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After the above install, plug in the iphone and execute -&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;idevicepair unpair&lt;br /&gt;idevicepair pair&lt;br /&gt;idevicepair validate&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That was it and we are back with Iphone on Ubuntu.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-7731687242162252041?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/7731687242162252041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=7731687242162252041' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/7731687242162252041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/7731687242162252041'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2011/02/iphone-4-does-not-mount-on-ubuntu-after.html' title='Iphone 4 does not mount on Ubuntu after  iOS 4.2 upgrade - DBus Error'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Central, SC 29630, USA</georss:featurename><georss:point>34.7242749 -82.7812526</georss:point><georss:box>34.6890029 -82.8396176 34.7595469 -82.7228876</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-4071705587004535546</id><published>2011-01-17T13:12:00.000-08:00</published><updated>2011-03-17T13:21:36.319-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='algorithms'/><category scheme='http://www.blogger.com/atom/ns#' term='prime number'/><title type='text'>C++ - prime numbers</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I was reading about algorithms the other day and came to know of a faster algorithm to find prime numbers. It is called the Sieve of Eratosthenes. When I compared the execution times of this algorithm to the one I coded, the times were remarkably faster. A very simple and impressive algorithm to find prime numbers less than a number n.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;#include &amp;lt;iostream&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;#include &amp;lt;ctime&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;using namespace std;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;//interesting method of finding primes&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;// saw this one in one of the algorithm books&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;void sieve_of_eratosthenes(int n) {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;int a[n+1];&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;for(int i =0 ; i&amp;lt;=n;i++) {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;a[i] = 1;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;for(int i = 2; i&amp;lt;=n/2;i++)&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;for(int j = 2 ; j&amp;nbsp;&amp;lt;=n/i ; i++)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;a[i*j] = 0;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;for(int i = 2; i&amp;nbsp;&amp;lt;= n; i++)&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if(a[i]) {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;cout&amp;lt;&amp;lt; i &amp;lt;&amp;lt;" is prime" &amp;lt;&amp;lt; endl;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;// the one I coded&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;void sieve_of_harpreet(int n) {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;bool p;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;for(int i=2;i&amp;nbsp;&amp;lt;&amp;nbsp;n;i++) {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;p=true;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;for(int j = 2 ;j*j&amp;nbsp;&amp;lt;&amp;nbsp;i; j++) { // optimized by checking only until sqrt of the number&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;if(i%j == 0) {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;p = false;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;break;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;if(p) {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;cout&amp;lt;&amp;lt; i &amp;lt;&amp;lt;" is prime" &amp;lt;&amp;lt; endl;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;int main() {&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;unsigned int start = clock();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;sieve_of_harpreet(30000000);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;std::cout &amp;lt;&amp;lt; "Time taken: " &amp;lt;&amp;lt; clock()-start &amp;lt;&amp;lt; endl;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;start = clock();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;sieve_of_eratosthenes(30000000);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;std::cout &amp;lt;&amp;lt; "Time taken: " &amp;lt;&amp;lt; clock()-start &amp;lt;&amp;lt; endl;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;return 0;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-4071705587004535546?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/4071705587004535546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=4071705587004535546' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/4071705587004535546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/4071705587004535546'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2011/01/c-prime-numbers.html' title='C++ - prime numbers'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total><georss:featurename>Clemson, SC, USA</georss:featurename><georss:point>34.6834382 -82.8373654</georss:point><georss:box>34.6128587 -82.9540949 34.7540177 -82.72063589999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-160284120696008121</id><published>2010-12-15T20:49:00.000-08:00</published><updated>2010-12-15T20:49:20.941-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone4'/><category scheme='http://www.blogger.com/atom/ns#' term='2.10.04'/><category scheme='http://www.blogger.com/atom/ns#' term='jailbreak'/><category scheme='http://www.blogger.com/atom/ns#' term='ios 4.1'/><category scheme='http://www.blogger.com/atom/ns#' term='unlock'/><title type='text'>How to unlock Iphone 4 iOS 4.1 at baseband 2.10.04?</title><content type='html'>I have an iPhone 4 with iOS 4.1 at baseband 2.10.04. I want to use the iPhone on a different network as I am traveling out of country? Can anyone point me in the right direction?&lt;br /&gt;I will write a how-to tutorial once I can do it on my iPhone 4.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-160284120696008121?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/160284120696008121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=160284120696008121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/160284120696008121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/160284120696008121'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/12/how-to-unlock-iphone-4-ios-41-at.html' title='How to unlock Iphone 4 iOS 4.1 at baseband 2.10.04?'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Rajpura, Punjab, India</georss:featurename><georss:point>30.481731 76.598595</georss:point><georss:box>30.407763 76.4818655 30.555699 76.71532450000001</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-1458496599508302956</id><published>2010-11-19T11:54:00.000-08:00</published><updated>2010-11-19T11:54:49.815-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='sdl'/><category scheme='http://www.blogger.com/atom/ns#' term='animation'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='game'/><title type='text'>Bouncing Orbs</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/RLlwMWxXonY/0.jpg"&gt;&lt;param name="movie" value="http://www.youtube.com/v/RLlwMWxXonY?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" /&gt;&lt;param name="bgcolor" value="#FFFFFF" /&gt;&lt;embed width="320" height="266" src="http://www.youtube.com/v/RLlwMWxXonY?f=user_uploads&amp;c=google-webdrive-0&amp;app=youtube_gdata" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;I recently finished a major milestone for a C++/SDL game development course. It is my first mini-game/animation. It was an awesome programming&amp;nbsp; experience. It was amazing to learn things like parallax scrolling, creating explosions, save/restore of animation state in Xml(expat). Thank you Dr. Malloy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-1458496599508302956?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/1458496599508302956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=1458496599508302956' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/1458496599508302956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/1458496599508302956'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/11/bouncing-orbs.html' title='Bouncing Orbs'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Clemson, SC, USA</georss:featurename><georss:point>34.6834382 -82.8373654</georss:point><georss:box>34.6128587 -82.9540949 34.7540177 -82.72063589999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-7411558420705960816</id><published>2010-11-02T09:41:00.000-07:00</published><updated>2011-09-15T22:27:26.642-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='socket'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='traceroute'/><title type='text'>Python - Writing a traceroute using sockets</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I recently learned, how to write a traceroute using socket programming in python. I am sharing it below. I don't take any credit for the code. I may have picked bits and pieces from various different resources on the Internet, as a part of my learning process. It's not very elegant but demonstrates the purpose. Perhaps, some day I can improve it and add few enhancements to it.&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;#!/usr/bin/python&lt;br /&gt;import sys&lt;br /&gt;import socket&lt;br /&gt;&lt;br /&gt;def traceroute(dest_name):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dest_addr = socket.gethostbyname(dest_name)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; port = 33434&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; max_hops = 30&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print dest_name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; icmp = socket.getprotobyname('icmp')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; udp = socket.getprotobyname('udp')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ttl = 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while True:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; print ttl,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; recv_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; send_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, udp)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; send_socket.setsockopt(socket.SOL_IP, socket.IP_TTL, ttl)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; recv_socket.bind(("", port))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; send_socket.sendto("", (dest_name, port))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; curr_addr = None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; curr_name = None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; _, curr_addr = recv_socket.recvfrom(512)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; curr_addr = curr_addr[0]&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; try:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; curr_name = socket.gethostbyaddr(curr_addr)[0]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; except socket.error:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; curr_name = curr_addr&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; except socket.error:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pass&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; finally:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; send_socket.close()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; recv_socket.close()&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if curr_addr is not None:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; curr_host = "%s (%s)" % (curr_name, curr_addr)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; curr_host = "*"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; print "%d\t%s" % (ttl, curr_host)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ttl += 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if curr_addr == dest_addr or ttl &amp;gt; max_hops:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; traceroute(sys.argv[1])&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Can be executed as -&lt;br /&gt;&lt;br /&gt;&amp;gt;sudo ./traceroute.py xharpreetx.com&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-7411558420705960816?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/7411558420705960816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=7411558420705960816' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/7411558420705960816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/7411558420705960816'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/11/python-writing-traceroute-using-sockets.html' title='Python - Writing a traceroute using sockets'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total><georss:featurename>Clemson, SC, USA</georss:featurename><georss:point>34.6834382 -82.8373654</georss:point><georss:box>34.6128587 -82.9540949 34.7540177 -82.72063589999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-3567087667216227465</id><published>2010-10-07T00:57:00.000-07:00</published><updated>2010-10-27T01:25:34.676-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='map'/><category scheme='http://www.blogger.com/atom/ns#' term='vector'/><title type='text'>C++ - Maps and Vectors</title><content type='html'>&amp;nbsp;I have been learning something really exciting this semester. It is a grad course called Object oriented software development using C++. Apart from learning the pillars of object orientation i.e. encapsulation, inheritance and polymorphism, I have got a chance to delve into game programming. It is a challenging domain and I will post some of my animation/game videos sometime soon.&lt;br /&gt;The other day, I was writing some code to familiarize myself with vectors and maps. Here it goes -&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &amp;lt;iostream&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;map&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#include &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;vector&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;using std::string;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;using std::cout;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;using std::endl;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;using std::vector;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;//Todo: check how to use overloading for 'print' function&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;void print(std::map&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;string,int&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;amp;m) {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; std::map&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;string,int&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;::const_iterator it;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; for(it=m.begin();it!=m.end();++it) {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout &amp;lt;&amp;lt; (it)-&amp;gt;first &amp;lt;&amp;lt; " = " &amp;lt;&amp;lt; (it)-&amp;gt;second &amp;lt;&amp;lt; std::endl;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;//Todo: check how to use overloading for 'print' function&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;void print(vector&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; v) {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vector&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;::const_iterator it;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; for(it=v.begin();it!=v.end();++it) {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; std::cout&amp;lt;&amp;lt; (*it) &amp;lt;&amp;lt; std::endl;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;void initializevec(vector&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;amp;vec) {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; for (unsigned int i = 0 ; i &amp;lt; 20; ++i) {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vec.push_back(i);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //demonstrates how capacity grows as size of vector increases&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cout &amp;lt;&amp;lt; "size = " &amp;lt;&amp;lt; vec.size() &amp;lt;&amp;lt; " capacity = " &amp;lt;&amp;lt; vec.capacity() &amp;lt;&amp;lt; endl;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int main() {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; cout&amp;lt;&amp;lt; " MAP " &amp;lt;&amp;lt; endl;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; std::map&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;string,int&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; mymap;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; mymap["b"] = 1;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; mymap["a"] = 2;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; mymap["c"] = 5;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; mymap["d"] = 3;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; print(mymap);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; cout &amp;lt;&amp;lt; "size = " &amp;lt;&amp;lt; mymap.size() &amp;lt;&amp;lt; endl;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; std::map&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;string,int&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;::iterator it = mymap.find("c");&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; cout&amp;lt;&amp;lt; "Deleting 'c' ... " &amp;lt;&lt;endl;&gt;&lt;/endl;&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; mymap.erase(it);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; print(mymap);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; cout &amp;lt;&amp;lt; "size = " &amp;lt;&amp;lt; mymap.size() &amp;lt;&amp;lt; endl;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; std::cout &amp;lt;&amp;lt; std::endl;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; cout&amp;lt;&amp;lt; " VECTOR " &amp;lt;&amp;lt; endl;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vector&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; vec;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; initializevec(vec);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vec.push_back(13);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; print(vec);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; return 0;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Compile using -&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;g++ -W -Wall -Weffc++ -ggdb -O0 filename.cpp&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;It demonstrates some basic operations of maps and vectors. It was nice to understand how vectors increase their 'capacity' to accommodate new elements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-3567087667216227465?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/3567087667216227465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=3567087667216227465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3567087667216227465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3567087667216227465'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/10/c-maps-and-vectors.html' title='C++ - Maps and Vectors'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>Clemson, SC, USA</georss:featurename><georss:point>34.6834382 -82.8373654</georss:point><georss:box>34.6128587 -82.9540949 34.7540177 -82.72063589999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-669502072950830280</id><published>2010-09-17T07:53:00.000-07:00</published><updated>2010-09-17T07:53:18.293-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='custom'/><category scheme='http://www.blogger.com/atom/ns#' term='format'/><category scheme='http://www.blogger.com/atom/ns#' term='date time'/><category scheme='http://www.blogger.com/atom/ns#' term='cellcontent'/><category scheme='http://www.blogger.com/atom/ns#' term='gridview'/><category scheme='http://www.blogger.com/atom/ns#' term='Yii'/><title type='text'>Yii - data grid view with some customization of cell content format</title><content type='html'>Lets start by creating a simple table&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CREATE TABLE IF NOT EXISTS `users` (&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; `id` int(10) unsigned NOT NULL AUTO_INCREMENT,&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; `username` varchar(20) NOT NULL,&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; `password` varchar(128) NOT NULL,&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; `activationKey` varchar(128) NOT NULL DEFAULT '',&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; `createtime` int(10) NOT NULL DEFAULT '0',&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; `lastvisit` int(10) NOT NULL DEFAULT '0',&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; `superuser` int(1) NOT NULL DEFAULT '0',&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; `status` int(1) NOT NULL DEFAULT '0',&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; PRIMARY KEY (`id`),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; UNIQUE KEY `username` (`username`),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; KEY `status` (`status`),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; KEY `superuser` (`superuser`)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;) ENGINE=InnoDB&amp;nbsp; DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Configure the database connection as shown in one of the &lt;a href="http://rowsandcolumns.blogspot.com/2010/06/yii-mysql-wamp.html"&gt;earlier&lt;/a&gt; posts.&lt;br /&gt;&lt;br /&gt;Generate the corresponding model for the table in your database by executing the following commands&lt;br /&gt;&amp;gt;protected\yiic shell&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt; model *&lt;br /&gt;&lt;br /&gt;Now, I want to create a data grid view to show the details of the table.&lt;br /&gt;&lt;br /&gt;To show a link to the new "users" page(with a data grid) on navigation bar, open the file ..\mytestapp\protected\views\layouts\main.php&lt;br /&gt;&lt;br /&gt;and add the following entry, in the "mainmenu" div.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div id="mainmenu"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;widget('zii.widgets.CMenu',array(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 'items'=&amp;gt;array(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;array('label'=&amp;gt;'Home', 'url'=&amp;gt;array('/site/index')),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;array('label'=&amp;gt;'Users', 'url'=&amp;gt;array('/site/users')),&amp;nbsp; &lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;//####### new entry&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;array('label'=&amp;gt;'About', 'url'=&amp;gt;array('/site/page', 'view'=&amp;gt;'about')),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;array('label'=&amp;gt;'Contact', 'url'=&amp;gt;array('/site/contact')),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;array('label'=&amp;gt;'Login', 'url'=&amp;gt;array('/site/login'), 'visible'=&amp;gt;Yii::app()-&amp;gt;user-&amp;gt;isGuest),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;array('label'=&amp;gt;'Logout ('.Yii::app()-&amp;gt;user-&amp;gt;name.')', 'url'=&amp;gt;array('/site/logout'), 'visible'=&amp;gt;!Yii::app()-&amp;gt;user-&amp;gt;isGuest)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;)); ?&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;!-- mainmenu --&gt;&lt;br /&gt;&lt;br /&gt;The site controller needs information about where to render the new "users" page.&lt;br /&gt;This can be done by adding the following method in the ..\mytestapp\protected\controllers\SiteController.php file&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;public function actionUsers()&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $dataProvider=new CActiveDataProvider('Users');&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;render('users',array('dataProvider'=&amp;gt;$dataProvider,&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ));&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you would notice that these methods should begin with "action" prefix.&lt;br /&gt;&lt;br /&gt;Create a new file "users.php" at this location&lt;br /&gt;..\mytestapp\protected\views\site\users.php&lt;br /&gt;&lt;br /&gt;The contents of this file would look something like this-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$this-&amp;gt;pageTitle=Yii::app()-&amp;gt;name . ' - Users';&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$this-&amp;gt;breadcrumbs=array(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Users',&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;h1&amp;gt;Users&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;div class="form"&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;beginWidget('CActiveForm', array(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'id'=&amp;gt;'members-form',&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'enableAjaxValidation'=&amp;gt;true,&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;)); ?&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;widget('zii.widgets.grid.CGridView', array(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'dataProvider'=&amp;gt;$dataProvider,&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'columns'=&amp;gt;array(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; array(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'name'=&amp;gt;'id',&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'value'=&amp;gt;'CHtml::encode($data-&amp;gt;id)'&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; ),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; array(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'name'=&amp;gt;'username',&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'value'=&amp;gt;'CHtml::encode($data-&amp;gt;username)'&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; ),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; array(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'name'=&amp;gt;'createtime',&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'value'=&amp;gt;'CHtml::encode(date(\'Y-m-d\', $data-&amp;gt;createtime))'&amp;nbsp; //this will format the unix timestamp to a custom date format&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; ),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; array(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'name'=&amp;gt;'lastvisit',&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; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'value'=&amp;gt;'CHtml::encode(date(\'Y-m-d\', $data-&amp;gt;lastvisit))'&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // format the cell with date format&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; ),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; array(&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; 'name'=&amp;gt;'status',&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'value'=&amp;gt;'CHtml::encode($data-&amp;gt;status==1 ? \'Active\': \'Inactive\' )'&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;// to render the gridview cell with a particular value&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ),&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;)); ?&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;endWidget(); ?&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;!-- form --&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The page should be hosted at&lt;br /&gt;http://localhost/mytestapp/index.php/site/users&lt;br /&gt;or&lt;br /&gt;http://localhost/mytestapp/index.php/?r=site/users&lt;br /&gt;&lt;br /&gt;depending on the url manager setting in the config file.&lt;iframe align="left" frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm.amazon.com/e/cm?t=tech0b65-20&amp;amp;o=1&amp;amp;p=8&amp;amp;l=bpl&amp;amp;asins=1847199585&amp;amp;fc1=000000&amp;amp;IS2=1&amp;amp;lt1=_blank&amp;amp;m=amazon&amp;amp;lc1=0000FF&amp;amp;bc1=000000&amp;amp;bg1=FFFFFF&amp;amp;f=ifr" style="height: 245px; padding-right: 10px; padding-top: 5px; width: 131px;"&gt;&lt;/iframe&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-669502072950830280?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/669502072950830280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=669502072950830280' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/669502072950830280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/669502072950830280'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/09/yii-data-grid-view-with-some.html' title='Yii - data grid view with some customization of cell content format'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total><georss:featurename>Clemson, SC, USA</georss:featurename><georss:point>34.6834382 -82.8373654</georss:point><georss:box>34.6128587 -82.9540949 34.7540177 -82.72063589999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-2792247739143641585</id><published>2010-09-09T10:57:00.000-07:00</published><updated>2010-09-09T10:57:38.420-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDE'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><category scheme='http://www.blogger.com/atom/ns#' term='environment'/><category scheme='http://www.blogger.com/atom/ns#' term='Yii'/><category scheme='http://www.blogger.com/atom/ns#' term='Netbeans'/><title type='text'>Setup and debug an Yii app in Netbeans IDE</title><content type='html'>After using Eclipse for a while I switched to Netbeans IDE for Yii development. It seems faster and easier to setup. Following is my experience of setting up the development environment.&lt;br /&gt;&lt;br /&gt;Create a project stub using the following command -&lt;br /&gt;&amp;gt;&amp;gt; yii-1.1.3.r2247\framework\yiic webapp mytestapp&lt;br /&gt;&lt;br /&gt;Open Netbeans IDE and proceed with the following steps -&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;1. Click on File-&amp;gt; New Project&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This will open up a dialog box. Select "PHP" under "Categories" and under "Projects" select "PHP Applications with Existing Sources".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_v3JuT94f8zI/TIkdn1_c6NI/AAAAAAAABBM/B4z61Opjdfc/s1600/ScreenShot002.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="242" src="http://1.bp.blogspot.com/_v3JuT94f8zI/TIkdn1_c6NI/AAAAAAAABBM/B4z61Opjdfc/s400/ScreenShot002.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span id="goog_1696525990"&gt;&lt;/span&gt;&lt;span id="goog_1696525991"&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; Click Next.&lt;br /&gt;2. In the "Sources Folder", input the path of "mytestapp" folder on your machine.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Assign a project name. "mytestapp" for my case.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select a PHP version.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_v3JuT94f8zI/TIkdqC6clJI/AAAAAAAABBU/YIv5p5VfMPE/s1600/ScreenShot001.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="243" src="http://4.bp.blogspot.com/_v3JuT94f8zI/TIkdqC6clJI/AAAAAAAABBU/YIv5p5VfMPE/s400/ScreenShot001.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Click Next&lt;br /&gt;3. The options in this form should be set up automatically like below.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span id="goog_1696526000"&gt;&lt;/span&gt;&lt;span id="goog_1696526001"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_v3JuT94f8zI/TIkdqn3O0BI/AAAAAAAABBY/qarmhSx4uqY/s1600/ScreenShot003.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="243" src="http://1.bp.blogspot.com/_v3JuT94f8zI/TIkdqn3O0BI/AAAAAAAABBY/qarmhSx4uqY/s400/ScreenShot003.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Click Finish&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This should set up your Yii project in Netbeans IDE.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;4. Go to "Debug" menu on the top bar on Netbeans IDE. Select "Debug Project(mytestapp)" and you should be able to debug your project.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_v3JuT94f8zI/TIkdp96YF1I/AAAAAAAABBQ/sPDJTU4lWKU/s1600/ScreenShot004.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="153" src="http://1.bp.blogspot.com/_v3JuT94f8zI/TIkdp96YF1I/AAAAAAAABBQ/sPDJTU4lWKU/s400/ScreenShot004.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;5. "Continue(F5)" option in Debug can be used to resume a stopped debug session.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-2792247739143641585?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/2792247739143641585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=2792247739143641585' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2792247739143641585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2792247739143641585'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/09/setup-and-debug-yii-app-in-netbeans-ide.html' title='Setup and debug an Yii app in Netbeans IDE'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_v3JuT94f8zI/TIkdn1_c6NI/AAAAAAAABBM/B4z61Opjdfc/s72-c/ScreenShot002.PNG' height='72' width='72'/><thr:total>6</thr:total><georss:featurename>Clemson, SC, USA</georss:featurename><georss:point>34.6834382 -82.8373654</georss:point><georss:box>34.6128587 -82.9540949 34.7540177 -82.72063589999999</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-8792166796274866303</id><published>2010-08-24T14:37:00.000-07:00</published><updated>2010-08-24T14:37:44.862-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySql'/><category scheme='http://www.blogger.com/atom/ns#' term='authentication'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='Yii'/><title type='text'>Yii - Authentication from mysql database using a md5 password</title><content type='html'>Before proceeding make sure the database has been connected to Yii application. (see &lt;a href="http://rowsandcolumns.blogspot.com/2010/06/yii-mysql-wamp.html"&gt;previous post&lt;/a&gt;)&lt;br /&gt;For this example, the passwords are stored in the database as md5 hash.&lt;br /&gt;You may be required to change the password encoding scheme.&lt;br /&gt;&lt;br /&gt;Edit the authenticate method in ../my_app/protected/components/&lt;wbr&gt;&lt;/wbr&gt;UserIdentity.php to look like this - &lt;br /&gt;&lt;br /&gt;public function authenticate()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //$users=array(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // username =&amp;gt; password&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //'demo'=&amp;gt;'demo',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //'admin'=&amp;gt;'admin',&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $user = myUsersTable::model()-&amp;gt;&lt;wbr&gt;&lt;/wbr&gt;findByAttributes( array( 'my_&lt;wbr&gt;&lt;/wbr&gt;userid_column_name' =&amp;gt; $this-&amp;gt;&lt;wbr&gt;&lt;/wbr&gt;username));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ($user===null) { // No user was found!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;errorCode=self::ERROR_&lt;wbr&gt;&lt;/wbr&gt;USERNAME_INVALID;&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; // $user-&amp;gt;Password refers to the "password" column name from the database&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; else if($user-&amp;gt;Password !== md5("my_salt1".$this-&amp;gt;&lt;wbr&gt;&lt;/wbr&gt;password))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&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; $this-&amp;gt;errorCode=self::ERROR_&lt;wbr&gt;&lt;/wbr&gt;PASSWORD_INVALID;&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; else { // User/pass match &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $this-&amp;gt;errorCode=self::ERROR_&lt;wbr&gt;&lt;/wbr&gt;NONE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return !$this-&amp;gt;errorCode;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;Enter the username/password pair on the login page and you should be good to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-8792166796274866303?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/8792166796274866303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=8792166796274866303' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/8792166796274866303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/8792166796274866303'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/08/yii-authentication-from-mysql-database.html' title='Yii - Authentication from mysql database using a md5 password'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-7444172676287792003</id><published>2010-08-06T10:27:00.000-07:00</published><updated>2010-08-06T10:27:15.159-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awk'/><category scheme='http://www.blogger.com/atom/ns#' term='help'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='find'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><category scheme='http://www.blogger.com/atom/ns#' term='scp'/><category scheme='http://www.blogger.com/atom/ns#' term='remote copy'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='guide'/><category scheme='http://www.blogger.com/atom/ns#' term='basic'/><title type='text'>A UNIX survival guide for students</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_v3JuT94f8zI/TFxDXfXJ4_I/AAAAAAAABBA/L7q86zCrIsE/s1600/unix.JPG" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="113" src="http://2.bp.blogspot.com/_v3JuT94f8zI/TFxDXfXJ4_I/AAAAAAAABBA/L7q86zCrIsE/s200/unix.JPG" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;1. Basic UNIX commands&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; ls&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; List the contents in current directory.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; ls -alF&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; List the contents in long format in the current directory.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; cd directoryname&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Change current directory to another directory.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; mkdir directoryname&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Create a directory.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt; cp file1.txt file2.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Make a copy of file1.txt.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt; mv /home/harpreet/file1.txt /tmp/file2.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Move the file to different location or can be used for renaming a file.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt; rm filename.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Delete a file.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;gt; rm -R directoryname&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Delete the contents of a directory.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;gt; head -20 filename.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Get 20 lines from the top of the file. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt; tail -30 filename.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Get 30 lines from the bottom of the file.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;2. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;vi filename.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Edit a file.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a. Esc dd&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Deletes the current line&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; b. Esc u&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Undo the last action&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; c. Esc :0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (zero)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Move cursor to first line of file&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; d. Esc $&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Move to end of current line&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; e. Esc Shift+g&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Move to end of file&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; f. Esc yy&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Copy the current line&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Esc y3y&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Copy the next three lines&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; g. Esc p&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Paste the copied line(s)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; h. Esc :35&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Moves the cursor to line number 35&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; i. Esc /wordtofind&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Find the word within the file. Press 'n' to move to the next occurrence.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;3. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; grep 'wordtofind' filename.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Finds the line containing a string from the file&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; grep -i 'wordtofind' filename.txt&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Case-insensitive find.&lt;br /&gt;&lt;br /&gt;4. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; find /tmp/directoryname -name test.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Find a file with name 'test.txt' in the given path.&lt;br /&gt;&lt;br /&gt;5.&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt; find . -type f -exec grep -i Row2 {} \; -print&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Find the word 'row2' from all the files in current path.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Also, shows the line containing an occurrence of the word.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;6. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; scp harpreet@hostname.edu:/tmp/file.txt .&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Copy a file located on another server to the current directory on the present server.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;gt; scp file.txt harpreet@hostname.edu:.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Copy a file from current server to another server into your home directory.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; scp file.txt harpreet@hostname.edu:/home/directory/file.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Copy a file from one machine to another.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;7.&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt; tar cvzf new_tar_file.tar.gz file1.txt file2.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Create a tar file new_tar_file.tar.gz containing file1.txt and file2.txt&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; tar xvzf abc.tar.gz&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Untar the contents of a file abc.tar.gz to the current directory&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;8.&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; awk - &lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Let us create a file 'test.txt' with these contents&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Row1-column1 Row1-column2 Row1-column3 Row1-column4&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; Row2-column1 Row2-column2-HARPREET Row2-column3 Row2-column4&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; Row3-column1 Row3-column2 Row3-column3 Row3-column4-SINGH&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Observe the output for various commands&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt;&amp;nbsp; awk '{print $2}' test.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; Row1-column2&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Row2-column2-HARPREET&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Row3-column2&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; The above command prints the second column&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String matching using awk :&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &amp;gt;&amp;nbsp; awk '{if ( $4 ~ /SINGH/ ) { print $2 $3}}' test.txt&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; Row3-column2Row3-column3&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; The above command matches the string 'SINGH' and prints column 2 and 3.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Corrections/improvements/questions are welcome :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-7444172676287792003?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/7444172676287792003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=7444172676287792003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/7444172676287792003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/7444172676287792003'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/08/unix-survival-guide-for-students.html' title='A UNIX survival guide for students'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_v3JuT94f8zI/TFxDXfXJ4_I/AAAAAAAABBA/L7q86zCrIsE/s72-c/unix.JPG' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.3178537 -122.20058060000001 37.454249700000005 -121.9671216</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-2443633543122800921</id><published>2010-07-30T20:52:00.000-07:00</published><updated>2010-08-06T14:47:01.860-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='libconfuse'/><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='ganglia'/><category scheme='http://www.blogger.com/atom/ns#' term='ld'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='pcre'/><category scheme='http://www.blogger.com/atom/ns#' term='errors'/><category scheme='http://www.blogger.com/atom/ns#' term='confuse'/><category scheme='http://www.blogger.com/atom/ns#' term='compile'/><category scheme='http://www.blogger.com/atom/ns#' term='apr'/><title type='text'>Compiling Ganglia - Errors and problems</title><content type='html'>&lt;span style="font-size: small; font-weight: bold;"&gt;Some errors and problems:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;My install directory was /opt/ganglia.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Error -&lt;/i&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;checking for gcc... no&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;checking for cc... no&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;checking for cl.exe... no&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;configure: error: no acceptable C compiler found in $PATH&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;See `config.log' for more details.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br /&gt;&lt;i&gt;Solution -&lt;/i&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Add gcc bin path to PATH environment variable&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Error - &lt;/i&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;checking for pcre.h... no&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;checking for pcre_compile in -lpcre... no&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;libpcre not found, specify --with-libpcre=no to build without PCRE support&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Solution -&lt;/i&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;PCRE is not installed.&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# wget ftp://ftp.sunfreeware.com/pub/freeware/SOURCES/pcre-8.10.tar.gz&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# /usr/local/bin/tar -xzf pcre-8.10.tar.gz&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# cd pcre-8.10&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# ./configure --prefix=/opt/ganglia&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Make sure you add, -I/opt/ganglia/include to CFLAGS environment variable&lt;br /&gt;and -L/opt/ganglia/lib to LDFLAGS after this.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small; font-style: italic;"&gt;Problem -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Graphs not shown in ganglia or images not shown on ganglia front end.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small; font-style: italic;"&gt;Reason &lt;/span&gt;&lt;span style="font-size: small;"&gt;-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;php-gd may not have been installed. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;You can do so by ( as root) -&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# yum install php-gd&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;Another reason could be front-end can't find RRD path. Make sure it is set in conf.php&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small; font-style: italic;"&gt;Error -&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;checking for apr-1-config... no&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;configure: error: apr-1-config binary not found in path&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small; font-style: italic;"&gt;Reason - &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;APR is not installed or path of apr-1-config is not available through the PATH environment variable.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small; font-style: italic;"&gt;Error -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: small;"&gt;libgcc_s.so.1: open failed: No such file or directory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small; font-style: italic;"&gt;Solution-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Execute the following:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: small;"&gt;# ldd gmond&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: small;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: small;"&gt;libgcc_s.so.1 =&amp;gt;         (file not found)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: small;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;So gmond can link to libgcc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Add the following to you LDFLAGS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: small;"&gt;# setenv LDFLAGS $LDFLAGS:-R/yourgccpath/gcc-4.0.3/lib&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;-R records the runtime search path.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Install again&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: small;"&gt;# ./configure --prefix=/opt/ganglia --sysconfdir=/opt/ganglia/etc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; font-size: small;"&gt;# make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;Error -&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;After installation, while executing gmond&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;apr_pollset_create failed: Invalid argument&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Solution -&lt;/i&gt;&lt;br /&gt;In your config file gmond.conf, if there is no udp_recv_channel or tcp_accept_channel&lt;br /&gt;defined, gmond fails to run with this error.&lt;br /&gt;Set "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;deaf = yes&lt;/span&gt; " under "globals"&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Error -&lt;/i&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/usr/bin/ld: cannot find -lpython2.3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;collect2: ld returned 1 exit status&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make[4]: *** [modpython.la] Error 1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br /&gt;&lt;i&gt;Solution -&lt;/i&gt;&lt;br /&gt;I dont remember exactly how i resolved it.&lt;br /&gt;Most likely it was the linker not being able to find python.&lt;br /&gt;Probably by setting library flags this error was resolved.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Error -&lt;/i&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;false cru libgetopthelper.a getopt1.o getopt.o getopt_init.o&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make[2]: *** [libgetopthelper.a] Error 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Solution -&lt;/i&gt;&lt;br /&gt;Add /&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;usr/ccs/bin&lt;/span&gt; to PATH environment variable.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;In case of dependency not found errors, you  could configure options, like --with-libapr, --with-libconfuse to point  to dependency paths.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Error -&lt;/i&gt;&lt;br /&gt;Some &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;gm_protocol_xdr.c&lt;/span&gt; related warnings and finally build fails with this error &lt;br /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ld: fatal: relocations remain against allocatable but non-writable sections&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;collect2: ld returned 1 exit status&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Solution -&lt;/i&gt;&lt;br /&gt;Uninstall the dependency 'confuse' and install it by setting CFLAGS="-O3 -fPIC"&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; cd ../confuse-2.7/&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; make uninstall&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; make clean&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; env CFLAGS="-O3 -fPIC" ./configure --prefix=/opt/ganglia&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;gt; make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do a configure, make and make install and you should be good.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-2443633543122800921?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/2443633543122800921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=2443633543122800921' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2443633543122800921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2443633543122800921'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/07/compiling-ganglia-errors-and-problems.html' title='Compiling Ganglia - Errors and problems'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.3178537 -122.20058060000001 37.454249700000005 -121.9671216</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-3682536835129489548</id><published>2010-07-30T20:34:00.000-07:00</published><updated>2010-07-30T20:34:59.288-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='start date'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='datatable'/><category scheme='http://www.blogger.com/atom/ns#' term='datepicker'/><category scheme='http://www.blogger.com/atom/ns#' term='calendar'/><category scheme='http://www.blogger.com/atom/ns#' term='end date'/><category scheme='http://www.blogger.com/atom/ns#' term='loading image'/><title type='text'>jQuery - Start  date/end date datepicker calendar and datatable</title><content type='html'>This post is basically a snippet of code to address the following -&lt;br /&gt;1. Attach jQuery (datepicker) calendar to start date and end date inputs.&lt;br /&gt;2. Create a jQuery datatable&lt;br /&gt;3. On page submit, hide submit button and show a loading image instead. &lt;br /&gt;&lt;br /&gt;After you have downloaded jQuery and extracted it to appropriate folders,&lt;br /&gt;create a php file with these contents -&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;class InitPage {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $jscript = "&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=\"text/javascript\" src=\"js/jquery-1.4.2.min.js\"&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=\"text/javascript\" src=\"ui/jquery.ui.core.js\"&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=\"text/javascript\" src=\"ui/jquery.ui.widget.js\"&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=\"text/javascript\" src=\"ui/jquery.ui.datepicker.js\"&amp;gt;&amp;lt;/script&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=\"text/javascript\" src=\"js/jquery.dataTables.js\"&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;script type=\"text/javascript\" src=\"js/myjscript.js\"&amp;gt;&amp;lt;/script&amp;gt;";&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $css = &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; " &amp;lt;link type=\"text/css\" href=\"themes/redmond/jquery.ui.all.css\" rel=\"stylesheet\" /&amp;gt;";&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $header = "&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;Random Information&amp;lt;/title&amp;gt;";&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $body = "&amp;lt;/head&amp;gt;&amp;lt;body &amp;gt;&amp;lt;h1 &amp;gt;Random Information&amp;lt;/h1&amp;gt;";&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public $footer = &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;lt;div id=\"footer\"&amp;gt;&amp;lt;p&amp;gt;&amp;lt;a href=\"http://rowsandcolumns.blogspot.com\"&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; http://rowsandcolumns.blogspot.com&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/body&amp;gt; &amp;lt;/html&amp;gt;";&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public function print_page($v_header,$v_jscript,$contents,$v_footer="") {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(!$v_header) {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $v_header = $this-&amp;gt;header.$this-&amp;gt;jscript.$this-&amp;gt;css.$this-&amp;gt;body;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(!$v_footer) {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $v_footer = $this-&amp;gt;footer;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; echo $v_header.$contents.$v_footer;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function is_date( $str )&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; $stamp = strtotime( $str );&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if (!is_numeric($stamp)) {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return FALSE;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; $month = date( 'm', $stamp );&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; $day&amp;nbsp;&amp;nbsp; = date( 'd', $stamp );&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; $year&amp;nbsp; = date( 'Y', $stamp );&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if (checkdate($month, $day, $year)) {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;return TRUE;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; return FALSE;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;}&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;$table_contents = "";&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;if(isset($_POST) &amp;amp;&amp;amp; !empty($_POST)) { //On submit enter here&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;$bp = new InitPage();&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;// Get dates and validate if &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;//start date and end date are in proper format&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (isset($_POST["start-date"]) &amp;amp;&amp;amp;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $bp-&amp;gt;is_date($_POST["start-date"]) &amp;amp;&amp;amp;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; isset($_POST["end-date"]) &amp;amp;&amp;amp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $bp-&amp;gt;is_date($_POST["end-date"])&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ){&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; list($start_date_m, $start_date_d, $start_date_Y)=&lt;/span&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt; explode("/",$_POST["start-date"]);&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; list($end_date_m, $end_date_d, $end_date_Y)=&lt;/span&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt; explode("/",$_POST["end-date"]);&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $start_date = &lt;/span&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;date("Y-m-d H:i:s", mktime(8, 0, 0, $start_date_m, &lt;/span&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;$start_date_d, $start_date_Y)); &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $end_date = date("Y-m-d H:i:s", mktime(8, 0, 0, $end_date_m, &lt;/span&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;$end_date_d, $end_date_Y)); &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($end_date &amp;lt;= $start_date) {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $table_contents.= "&amp;lt;font size=\"2\" color=\"red\"&amp;gt;Start date should be &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; less than end date!&amp;lt;/font&amp;gt;";&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $bp-&amp;gt;print_page("","",$table_contents,"");&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; die;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Time to hide submit button and show loading image&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sleep(3);&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $table_contents = "&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;div style=\"width:500;\" &amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;table border=\"1\" width=\"500\" id=\"reading\"&amp;gt; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;thead&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Serial #&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Count&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/thead&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tbody&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 1 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Managers &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Engineers &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 50 &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Interns &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 4 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Executives &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Facilities &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 2 &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tbody&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tfoot&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Serial #&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;th&amp;gt;Count&amp;lt;/th&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tfoot&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/table&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br/&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ";&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $table_contents.= "&amp;lt;font size=\"2\" color=\"red\"&amp;gt;Start date/End date &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; is not valid!&amp;lt;/font&amp;gt;";&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $bp-&amp;gt;print_page("","",$table_contents,"");&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; die;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;}&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;else { // On first page load&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;$bp = new InitPage();&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;$select_cb = "&amp;lt;form action=\"index.php\" method=\"post\"&amp;gt;Please select start and&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; end date...&amp;lt;br/&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;br/&amp;gt;&amp;lt;label for=\"start-date\"&amp;gt;Start date:&amp;lt;/label&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=\"text\" name=\"start-date\" id=\"start-date\"/&amp;gt;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;label for=\"end-date\"&amp;gt;End date:&amp;nbsp;&amp;lt;/label&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=\"text\" name=\"end-date\" id=\"end-date\"/&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;&amp;lt;input type=\"submit\" id=\"submit_button\" name=\"submit_button\" &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; value=\"Submit\"&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span id=\"spanloader\" style=\"display: none;\"&amp;gt;&amp;lt;img src=\"images/loading1.gif\"&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; alt=\"Please wait...\"&amp;gt; Please wait...&amp;lt;/span&amp;gt;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt; ";&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;$bp-&amp;gt;print_page("","",$select_cb,"");&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;}&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create javascript file (js/myscript.js) with these contents:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;//attach datepicker to start date&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;$(function() {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("#start-date").datepicker();&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;});&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;//attach datepicker to end date&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;$(function() {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $("#end-date").datepicker();&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;});&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;$().ready(function() {&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $('#submit_button').show();&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;//hide the submit button after click and show loading image&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $('[id$=submit_button]').click(function() {&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $('#spanloader').show();&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $('#submit_button').hide();&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;});&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;//set datatable&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;$(document).ready(function() {&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $('#reading').dataTable({&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "bJQueryUI": true,&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; "sPaginationType": "full_numbers"});&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;span style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;} );&lt;/span&gt;&lt;br style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;" /&gt;&lt;br /&gt;This should get you started with a data table and start date end date datepicker using jquery.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-3682536835129489548?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/3682536835129489548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=3682536835129489548' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3682536835129489548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3682536835129489548'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/07/jquery-start-dateend-date-datepicker.html' title='jQuery - Start  date/end date datepicker calendar and datatable'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total><georss:featurename>Mountain View, CA, USA</georss:featurename><georss:point>37.3860517 -122.0838511</georss:point><georss:box>37.3178537 -122.20058060000001 37.454249700000005 -121.9671216</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-1771017402870632772</id><published>2010-07-27T20:38:00.048-07:00</published><updated>2010-07-30T20:47:34.614-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='ganglia'/><category scheme='http://www.blogger.com/atom/ns#' term='setup'/><category scheme='http://www.blogger.com/atom/ns#' term='errors'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Ganglia - Basic installation and configuration guide</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;After playing around, with both Zabbix and Ganglia, I decided to go ahead with Ganglia. The installation is tricky but once it is installed, configuring and adding hosts is easy. Here I will discuss, installation and configuration of Ganglia. Both the client and server daemon will be installed on the same machine.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Ganglia is a monitoring system for high-performance computing systems. Ganglia comprises of two daemons. The daemon gmond, acts like a client and sends machine information( as xml fomat), to daemon gmetad which stores these statistics in a round robin database.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;A PHP-based web frontend is used to dispay the graphs in near real time.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Before starting Ganglia a few dependencies are required to be installed.&lt;/span&gt;&lt;br /&gt;&lt;div face="&amp;quot;"&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# tcsh&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# setenv INSTALL_DIR /opt/rrdtool-1.4.4&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# setenv BUILD_DIR /opt/build/rrdbuild&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# cd $BUILD_DIR &lt;/span&gt; &lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.4.tar.gz&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;# gunzip -c rrdtool-1.4.4.tar.gz | tar xf –&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;# cd rrdtool-1.4.4&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# ./configure --prefix=$INSTALL_DIR &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;This would have installed round robin database. It is required only on the head node. The head node (server) would be the one where you want to install gmetad daemon.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Another dependency required for Ganglia is libconfuse.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# cd /opt/build&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# wget http://bzero.se/confuse/confuse-2.6.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# /bin/tar -xzf confuse-2.6.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# cd confuse-2.6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# ./configure --prefix=/opt/ganglia&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# env CFLAGS="-O3 -fPIC" ./configure --prefix=/opt/ganglia&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# make&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# make install&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Now we download Ganglia source package and begin installation.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;; font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# cd /opt/build/&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# wget http://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/3.1.7/ganglia-3.1.7.tar.gz/download&lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# tar -xzf ganglia-3.1.7.tar.gz&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# cd ganglia-3.1.7&lt;/span&gt;&lt;span style="font-size: small;"&gt;  &lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# setenv CFLAGS "-I/opt/ganglia/include/ -I/opt/rrdtool-1.4.4/include"&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# setenv LDFLAGS "-L/opt/ganglia/lib/ -L/opt/rrdtool-1.4.4/lib"&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# ./configure --prefix=/opt/ganglia --with-gmetad --sysconfdir=/etc/ganglia&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# make&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# make install&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;Make sure the permissions are appropriate on path /opt/ganglia/rrds. This is the path where I have my round robin database.&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# cd /opt/ganglia/sbin/&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# ./gmond --default-config &amp;gt; gmond.conf&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# ./gmetad --default-config &amp;gt; gmetad.conf&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Setup config files for gmetad and gmond.conf &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# vi gmond.conf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;Set up your &lt;/span&gt;&lt;span style="font-size: small;"&gt;udp_send_channel to look like this:&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;udp_send_channel {&lt;br /&gt;&amp;nbsp; host = masterhostname &lt;br /&gt;&amp;nbsp; port = 8650&lt;br /&gt;&amp;nbsp; ttl = 1&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# vi gmetad.conf&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: Times,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;span style="font-size: small;"&gt;Modify directives as:&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;data_source "MyCluster" localhost &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;rrd_rootdir "/opt/ganglia/rrds" &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# cp gmond.conf /etc/ganglia/.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# cp gmetad.conf /etc/ganglia/.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# cd $BUILD_DIR&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# cp gmond/gmond.init /etc/rc.d/init.d/gmond&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# vi /etc/rc.d/init.d/gmond&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;Set this variable as&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;; font-size: small;"&gt;  &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;GMOND=/opt/ganglia/sbin/gmond&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Optional &lt;/b&gt;(this would enable running the daemons as an automated service) :&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# chkconfig --add gmond&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# chkconfig --list gmond&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;gmond     0:off   1:off   2:on    3:on    4:on    5:on    6:off&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# /etc/rc.d/init.d/gmond start&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Starting GANGLIA gmond:                              [  OK  ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# cd /opt/build/ganglia-3.1.7/gmetad&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# cp gmetad.init /etc/rc.d/init.d/gmetad&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# vi /etc/rc.d/init.d/gmetad&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;GMETAD=/opt/ganglia/sbin/gmetad&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# chkconfig --add gmetad&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# chkconfig --list gmetad&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;gmetad    0:off   1:off   2:on    3:on    4:on    5:on    6:off&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;# /etc/rc.d/init.d/gmetad start&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Starting GANGLIA gmetad: [ OK ]&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;Edit httpd.conf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Add the following lines if they are not a part of your config file.&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;LoadModule php5_module modules/libphp5.so&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Times,&amp;quot;; font-size: small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: Times,&amp;quot;; font-size: small;"&gt;Edit  DirectoryIndex  like&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;DirectoryIndex index.html index.html.var index.php&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Addtype application/x-httpd-php .php&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;AddType application/x-httpd-php-source .phps&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;Copy “web” folder to httpd document root location&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Edit conf.php in web folder:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;; font-size: small;"&gt;    &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;define("RRDTOOL", "/opt/rrdtool-1.4.4/bin/rrdtool");&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;RRDTOOL should point to rrdtool path&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;# /sbin/service httpd restart&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;You can point your browser to the web front end location and it should display you the graphs.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-1771017402870632772?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/1771017402870632772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=1771017402870632772' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/1771017402870632772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/1771017402870632772'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/07/ganglia-basic-installation-and.html' title='Ganglia - Basic installation and configuration guide'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total><georss:featurename>Fremont, CA, USA</georss:featurename><georss:point>37.5482697 -121.9885719</georss:point><georss:box>37.4121687 -122.22203139999999 37.684370699999995 -121.7551124</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-6908637081681823909</id><published>2010-07-25T19:57:00.003-07:00</published><updated>2010-07-26T20:43:01.521-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='viewport'/><category scheme='http://www.blogger.com/atom/ns#' term='gridpanel'/><category scheme='http://www.blogger.com/atom/ns#' term='treepanel'/><category scheme='http://www.blogger.com/atom/ns#' term='extjs'/><category scheme='http://www.blogger.com/atom/ns#' term='numberfield'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='PagingToolbar'/><title type='text'>Extjs + PHP - How to embed Treepanel, Gridpanel and Formpanel in a page?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_v3JuT94f8zI/TEz_IiYcutI/AAAAAAAABA4/2K_5Q1rCo-0/s1600/extjs1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" src="http://3.bp.blogspot.com/_v3JuT94f8zI/TEz_IiYcutI/AAAAAAAABA4/2K_5Q1rCo-0/s400/extjs1.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_v3JuT94f8zI/TEz_RVTyBWI/AAAAAAAABA8/Y3has0TOeC8/s1600/extjs2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="202" src="http://1.bp.blogspot.com/_v3JuT94f8zI/TEz_RVTyBWI/AAAAAAAABA8/Y3has0TOeC8/s400/extjs2.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Here is a step by step procedure to get started with a basic extjs application. It covers handling data rendering in gridpanel as well.&lt;br /&gt;&lt;br /&gt;1. Download ExtJS and unzip it to your web path.&lt;br /&gt;&lt;br /&gt;2. Create an html file (say test_page.html) with these contents. This will be used to render the page.&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt; Main Page &amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" /&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="ext/adapter/ext/ext-base.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="ext/ext-all.js"&amp;gt; &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="javascripts/test_ext_widget.js"&amp;gt; &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;div id="header"&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;3. Create php file (extjs.php) with the following contents. This file return a JSON object which will be rendered by extjs.&lt;br /&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;$start  = @$_REQUEST["start"];&lt;br /&gt;$limit = @$_REQUEST["limit"];&lt;br /&gt;&lt;br /&gt;$start = $start ? $start : 0;&lt;br /&gt;$limit = $limit ? $limit : 5;&lt;br /&gt;&lt;br /&gt;$data = array(&lt;br /&gt;array("first"=&amp;gt;'Jack', "last"=&amp;gt;'Shephard',"bpay"=&amp;gt;7.75,"cpay"=&amp;gt;8.75,"email"=&amp;gt;'jackx@clemsonx.edu',"uid"=&amp;gt;'jackx', "hiredate"=&amp;gt;'8/1 12:00am'),&lt;br /&gt;array("first"=&amp;gt;'James', "last"=&amp;gt;'Ford',"bpay"=&amp;gt;7.75,"cpay"=&amp;gt;8.75, "email"=&amp;gt;'jamesx@clemson.edu',"uid"=&amp;gt;'jamesx', "hiredate"=&amp;gt;'9/1 12:00am'),&lt;br /&gt;array("first"=&amp;gt;'Kate',"last"=&amp;gt;'Austen', "bpay"=&amp;gt;7.75,"cpay"=&amp;gt;8.75, "email"=&amp;gt;'katex@clemson.edu',"uid"=&amp;gt;'katex', "hiredate"=&amp;gt;'10/1 12:00am'),&lt;br /&gt;array("first"=&amp;gt;'Juliet',"last"=&amp;gt;'Burke',"bpay"=&amp;gt;7.75,"cpay"=&amp;gt;8.75, "email"=&amp;gt;'julietx@clemson.edu',"uid"=&amp;gt;'julietx', "hiredate"=&amp;gt;'9/1 10:00am'),&lt;br /&gt;array("first"=&amp;gt;'Sayid',"last"=&amp;gt;'Jarrah',"bpay"=&amp;gt;7.75,"cpay"=&amp;gt;8.75, "email"=&amp;gt;'sayidx@clemson.edu',"uid"=&amp;gt;'sayidx', "hiredate"=&amp;gt;'9/1 11:00am'),&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;$a = array();&lt;br /&gt;for($i = $start; $i &amp;lt; 5; $i++) {&lt;br /&gt;$a[] = $data[$i];&lt;br /&gt;}&lt;br /&gt;$o = array(&lt;br /&gt;"success"=&amp;gt;true&lt;br /&gt;,"totalCount"=&amp;gt;sizeof($data)&lt;br /&gt;,"rows"=&amp;gt;$a&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;echo json_encode($o);&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br /&gt;4. Finally a js file (say test_ext_widget.js) which will contain the javascript to render the page. This would render a page with three panel objects (gridpanel, formpanel, treepanel).&lt;br /&gt;&lt;br /&gt;Ext.ns('app_harpreet');&lt;br /&gt;&lt;br /&gt;Ext.BLANK_IMAGE_URL = 'ext/resources/images/default/s.gif';&lt;br /&gt;&lt;br /&gt;var item_list = [     {xtype : 'textfield', fieldLabel : 'First name'},&lt;br /&gt;{xtype : 'textfield', fieldLabel : 'Last name'},&lt;br /&gt;{xtype : 'textfield', fieldLabel : 'Email'},&lt;br /&gt;{xtype : 'textfield', fieldLabel : 'Student ID'},&lt;br /&gt;{xtype : 'textfield', fieldLabel : 'Current Pay'},&lt;br /&gt;{xtype : 'textfield', fieldLabel : 'Base Pay'},&lt;br /&gt;{xtype : 'datefield', fieldLabel : 'Hire Date'}&lt;br /&gt;];&lt;br /&gt;&lt;br /&gt;var final_cbox = new Ext.form.Checkbox( {&lt;br /&gt;name : 'final_question',&lt;br /&gt;id : 'final_question',&lt;br /&gt;inputValue : 1,&lt;br /&gt;fieldLabel : 'Suspended',&lt;br /&gt;checked : true&lt;br /&gt;&lt;br /&gt;});&lt;br /&gt;item_list.push(final_cbox);&lt;br /&gt;&lt;br /&gt;var btns = [];&lt;br /&gt;btns.push( {text : 'Save', scope : this});&lt;br /&gt;btns.push( {text : 'Cancel', scope : this});&lt;br /&gt;&lt;br /&gt;// now the actual form&lt;br /&gt;var uForm = new Ext.form.FormPanel( {&lt;br /&gt;id:'u_form', region:'center', bodyStyle:'padding:30px',    items:item_list, buttons:btns});&lt;br /&gt;&lt;br /&gt;var window1 = new Ext.Window( {&lt;br /&gt;id : 'user_edit_win',&lt;br /&gt;title : 'Edit',&lt;br /&gt;width : 900,&lt;br /&gt;height : 650,&lt;br /&gt;minWidth : 500,&lt;br /&gt;minHeight : 600,&lt;br /&gt;layout : 'border',&lt;br /&gt;plain : true,&lt;br /&gt;modal : true,&lt;br /&gt;bodyStyle : 'padding:55px;',&lt;br /&gt;items : [ uForm ]&lt;br /&gt;});&lt;br /&gt;// Custom grid pre-configured class&lt;br /&gt;app_harpreet.Grid = Ext.extend(Ext.grid.GridPanel, {&lt;br /&gt;//double click on user row opens a pop up window which can be used for updating record&lt;br /&gt;_user_row_click : function() {window1.show();},&lt;br /&gt;&lt;br /&gt;initComponent : function() {&lt;br /&gt;var config = {&lt;br /&gt;store : new Ext.data.JsonStore( {&lt;br /&gt;id : 'members',&lt;br /&gt;totalProperty : 'totalCount',&lt;br /&gt;root : 'rows',&lt;br /&gt;url : 'extjs.php',&lt;br /&gt;fields : [ {name : 'first'},&lt;br /&gt;{name : 'last'},&lt;br /&gt;{name : 'email'},&lt;br /&gt;{name : 'uid'},&lt;br /&gt;{name : 'cpay',    type : 'float'},&lt;br /&gt;{name : 'bpay',    type : 'float'},&lt;br /&gt;{name : 'hiredate',    type : 'date', dateFormat : 'n/j h:ia'}&lt;br /&gt;]&lt;br /&gt;}),&lt;br /&gt;listeners : {&lt;br /&gt;rowdblclick : this._user_row_click,&lt;br /&gt;scope : this&lt;br /&gt;},&lt;br /&gt;columns : [  {&lt;br /&gt;id : 'uid',&lt;br /&gt;header : "UID",&lt;br /&gt;width : 40,&lt;br /&gt;sortable : true,&lt;br /&gt;dataIndex : 'uid'&lt;br /&gt;},{&lt;br /&gt;id : 'first',&lt;br /&gt;header : "First",&lt;br /&gt;width : 40,&lt;br /&gt;sortable : true,&lt;br /&gt;dataIndex : 'first'&lt;br /&gt;},{&lt;br /&gt;id : 'last',&lt;br /&gt;header : "Last",&lt;br /&gt;width : 40,&lt;br /&gt;sortable : true,&lt;br /&gt;dataIndex : 'last'&lt;br /&gt;}, {&lt;br /&gt;id : 'base',&lt;br /&gt;header : "Base Pay",&lt;br /&gt;width : 40,&lt;br /&gt;sortable : true,&lt;br /&gt;renderer: Ext.util.Format.usMoney,&lt;br /&gt;dataIndex : 'bpay'&lt;br /&gt;}, {&lt;br /&gt;id : 'pay',&lt;br /&gt;header : "Current Pay",&lt;br /&gt;width : 40,&lt;br /&gt;sortable : true,&lt;br /&gt;renderer: Ext.util.Format.usMoney,&lt;br /&gt;dataIndex : 'cpay'&lt;br /&gt;},{&lt;br /&gt;id : 'email',&lt;br /&gt;header : "Email",&lt;br /&gt;width : 40,&lt;br /&gt;sortable : true,&lt;br /&gt;dataIndex : 'email'&lt;br /&gt;}, {&lt;br /&gt;header : "Hire Date",&lt;br /&gt;width : 20,&lt;br /&gt;sortable : true,&lt;br /&gt;renderer : Ext.util.Format.dateRenderer('m/d/Y'),&lt;br /&gt;dataIndex : 'hiredate'&lt;br /&gt;},{&lt;br /&gt;id : 'suspend',&lt;br /&gt;header : "Suspend Until",&lt;br /&gt;width : 40,&lt;br /&gt;sortable : true,&lt;br /&gt;dataIndex : 'suspend'&lt;br /&gt;}],&lt;br /&gt;viewConfig : {forceFit : true}&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;// apply config&lt;br /&gt;Ext.apply(this, Ext.apply(this.initialConfig, config));&lt;br /&gt;&lt;br /&gt;this.bbar = new Ext.PagingToolbar( {&lt;br /&gt;store : this.store,&lt;br /&gt;displayInfo : true,&lt;br /&gt;pageSize : 10,&lt;br /&gt;items : [ {    xtype : 'textfield'    } ]&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;// call parent&lt;br /&gt;app_harpreet.Grid.superclass.initComponent.apply(this, arguments);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;,&lt;br /&gt;onRender : function() {&lt;br /&gt;// call parent&lt;br /&gt;app_harpreet.Grid.superclass.onRender.apply(this, arguments);&lt;br /&gt;// load the store&lt;br /&gt;this.store.load( {params : {start : 0,limit : 10}});&lt;br /&gt;}});&lt;br /&gt;&lt;br /&gt;Ext.reg('membergrid', app_harpreet.Grid);&lt;br /&gt;var item_list1 = [ {xtype : 'textfield',fieldLabel : 'First name'},&lt;br /&gt;{xtype : 'textfield',fieldLabel : 'Last name'},&lt;br /&gt;{xtype : 'textfield', fieldLabel : 'Email'},&lt;br /&gt;{xtype : 'textfield', fieldLabel : 'Student ID'} ];&lt;br /&gt;&lt;br /&gt;var btns1 = [];&lt;br /&gt;btns1.push( { text : 'Edit'    });&lt;br /&gt;&lt;br /&gt;Ext.onReady(function() {&lt;br /&gt;var viewport = new Ext.Viewport( {&lt;br /&gt;layout : 'border',&lt;br /&gt;items : [ { //left tree panel&lt;br /&gt;xtype : 'treepanel',&lt;br /&gt;region : 'west',&lt;br /&gt;collapsible : true,&lt;br /&gt;title : 'Navigation',&lt;br /&gt;id : 'tpNavigation',&lt;br /&gt;root : new Ext.tree.AsyncTreeNode( {&lt;br /&gt;expanded : true,&lt;br /&gt;text : 'Home',&lt;br /&gt;children : [ {text : 'User',leaf : true},&lt;br /&gt;{text : 'Manage users',leaf : true},&lt;br /&gt;{text : 'Clients',leaf : true}]&lt;br /&gt;}),&lt;br /&gt;rootVisible : false,&lt;br /&gt;width : 200&lt;br /&gt;// the west region uses a TreePanel with Accordion layout&lt;br /&gt;}, { //bottom panel&lt;br /&gt;region : 'south',&lt;br /&gt;title : 'Search',&lt;br /&gt;collapsible : true,&lt;br /&gt;height : 200,&lt;br /&gt;minHeight : 200,&lt;br /&gt;items : [ {&lt;br /&gt;xtype : 'form',&lt;br /&gt;items : item_list1,&lt;br /&gt;buttons : btns1&lt;br /&gt;} ]&lt;br /&gt;}, { // main panel to dispay records&lt;br /&gt;region : 'center',&lt;br /&gt;layout : 'fit',&lt;br /&gt;title : 'Center',&lt;br /&gt;xtype : 'membergrid'&lt;br /&gt;} ]&lt;br /&gt;});&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;Now you can point your browser to your html page to render the treepanel, formpanel and gridpanel. The page would make a call to extjs.php, to retrieve the data, as a Json object.&lt;br /&gt;You can double click on the rows to open a pop up window, which can be used to update the data in the row.(row update is not accomplished in the above code)&lt;br /&gt;&lt;br /&gt;Please let me know of any improvements/corrections.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-6908637081681823909?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/6908637081681823909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=6908637081681823909' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6908637081681823909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6908637081681823909'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/07/extjs-php-how-to-embed-treepanel.html' title='Extjs + PHP - How to embed Treepanel, Gridpanel and Formpanel in a page?'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_v3JuT94f8zI/TEz_IiYcutI/AAAAAAAABA4/2K_5Q1rCo-0/s72-c/extjs1.PNG' height='72' width='72'/><thr:total>5</thr:total><georss:featurename>Fremont, CA, USA</georss:featurename><georss:point>37.5482697 -121.9885719</georss:point><georss:box>37.4121687 -122.22203139999999 37.684370699999995 -121.7551124</georss:box></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-5553180748046259229</id><published>2010-07-25T15:25:00.001-07:00</published><updated>2010-07-25T15:25:44.398-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tcp'/><category scheme='http://www.blogger.com/atom/ns#' term='socket'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Perl - How to create a tcp socket?</title><content type='html'>The following program can be used to create a tcp connection to a host on a specified port. &lt;br /&gt;The program attempts connection at a periodic interval, which is passed as 'execution_interval'.&lt;br /&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;use IO::Socket;&lt;br /&gt;use POSIX qw/strftime/;&lt;br /&gt;if (@ARGV != 4)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; usage();&amp;nbsp; &lt;br /&gt;&amp;nbsp; exit;&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; &lt;br /&gt;}&lt;br /&gt;my $hostname = $ARGV[0];&lt;br /&gt;my $port = $ARGV[1];&lt;br /&gt;my $timeout = $ARGV[2];&lt;br /&gt;my $interval = $ARGV[3];&lt;br /&gt;&lt;br /&gt;my $logdir = "/tmp/";&lt;br /&gt;my $datestamp = strftime('%m-%d-%y_%H:%M:%S',localtime);&lt;br /&gt;$mday = (localtime(time))[3];&lt;br /&gt;&lt;br /&gt;my $logfile = $logdir."$hostname\_$port\_tcp_socket\_$datestamp.log";&lt;br /&gt;open LOG, "&amp;gt;&amp;gt;","$logfile" or die $!;&lt;br /&gt;LOG-&amp;gt;autoflush(1);&lt;br /&gt;while(1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; my $sock = new IO::Socket::INET (PeerAddr =&amp;gt; $hostname,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;PeerPort =&amp;gt; $port, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Proto =&amp;gt; 'tcp',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Timeout =&amp;gt; $timeout);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $cur_datestamp = strftime('%m-%d-%y_%H:%M:%S',localtime);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $cur_mday = (localtime(time))[3];&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!$sock) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; print LOG "\n$cur_datestamp : Error - Could not create socket to $hostname on $port: $!";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sleep $interval;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; next;&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; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($cur_mday != $mday) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; close(LOG);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $logfile = $logdir."$hostname\_$port\_tcp_socket\_$datestamp.log";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; open LOG, "&amp;gt;&amp;gt;","$logfile" or die $!;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LOG-&amp;gt;autoflush(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $mday = $cur_mday;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print LOG "\n$cur_datestamp : Socket created to $hostname on $port";&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; close($sock);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sleep $interval;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;close(LOG);&lt;br /&gt;&lt;br /&gt;sub usage&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; print "Invalid parameters \nUsage: ./tcp_socket.pl &lt;hostname&gt;  &lt;port&gt; &lt;timeout&gt; &lt;execution_interval&gt;\n";&lt;br /&gt;}&lt;/execution_interval&gt;&lt;/timeout&gt;&lt;/port&gt;&lt;/hostname&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please let me know, of any corrections/improvements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-5553180748046259229?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/5553180748046259229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=5553180748046259229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/5553180748046259229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/5553180748046259229'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/07/perl-how-to-create-tcp-socket.html' title='Perl - How to create a tcp socket?'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-6578785826344999094</id><published>2010-07-25T14:57:00.001-07:00</published><updated>2010-07-25T14:57:35.538-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smtp'/><category scheme='http://www.blogger.com/atom/ns#' term='sendmail'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>Perl - send email without using sendmail</title><content type='html'>In a recent exercise, I was required to write a script which would attempt sending email through an smtp server instead of sendmail. At a periodic interval, the script would check if the smtp server is able to send emails or not. Basically, this script ran as a background process.&lt;br /&gt;&lt;br /&gt;#!/usr/bin/perl&lt;br /&gt;&lt;br /&gt;use Net::SMTP;&lt;br /&gt;use POSIX qw/strftime/;&lt;br /&gt;if (@ARGV != 5)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; usage();&amp;nbsp; &lt;br /&gt;&amp;nbsp; exit;&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; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;my $smtpmailhost = $ARGV[0];&lt;br /&gt;my $from_address = $ARGV[1];&lt;br /&gt;my $to_address = $ARGV[2];&lt;br /&gt;my $timeout = $ARGV[3];&lt;br /&gt;my $interval = $ARGV[4];&lt;br /&gt;&lt;br /&gt;my $logdir = "/tmp/email_logs/";&lt;br /&gt;&lt;br /&gt;my $datestamp = strftime('%m-%d-%y_%H:%M:%S',localtime);&lt;br /&gt;$mday = (localtime(time))[3];&lt;br /&gt;&lt;br /&gt;my $logfile = $logdir."$smtpmailhost\_email_log\_$datestamp.log";&lt;br /&gt;open LOG, "&amp;gt;&amp;gt;","$logfile" or die $!;&lt;br /&gt;LOG-&amp;gt;autoflush(1);&lt;br /&gt;while(1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $smtp = Net::SMTP-&amp;gt;new($smtpmailhost,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Timeout =&amp;gt; $timeout);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $cur_datestamp = strftime('%m-%d-%y_%H:%M:%S',localtime);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $cur_mday = (localtime(time))[3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!$smtp) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; print LOG "\n$cur_datestamp : Error creating smtp object for $smtpmailhost: $!";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; sleep $interval;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; next;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($cur_mday != $mday) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; close(LOG);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $logfile = $logdir."$smtpmailhost\_email_log\_$cur_datestamp.log";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; open LOG, "&amp;gt;&amp;gt;","$logfile" or die $!;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; LOG-&amp;gt;autoflush(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $mday = $cur_mday;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $smtp-&amp;gt;mail($from_address);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $smtp-&amp;gt;to($to_address);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $smtp-&amp;gt;data();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $smtp-&amp;gt;datasend("Subject: $smtpmailhost - Test email message\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $smtp-&amp;gt;datasend("\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $smtp-&amp;gt;datasend("Test email has been sent successfully at $cur_datestamp!");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $smtp-&amp;gt;dataend();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $smtp-&amp;gt;quit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print LOG "\n$cur_datestamp : Test Email sent via $smtpmailhost!";&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sleep $interval;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;close(LOG);&lt;br /&gt;sub usage&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; print "Invalid parameters \nUsage: ./smtpemail_send.pl &lt;smtpmailhost&gt; &lt;from_address&gt; &lt;to_address&gt; &lt;timeout&gt; &lt;execution_interval&gt;\n";&lt;br /&gt;} &lt;/execution_interval&gt;&lt;/timeout&gt;&lt;/to_address&gt;&lt;/from_address&gt;&lt;/smtpmailhost&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please let me know, of any corrections/improvements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-6578785826344999094?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/6578785826344999094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=6578785826344999094' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6578785826344999094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6578785826344999094'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/07/perl-send-email-without-using-sendmail.html' title='Perl - send email without using sendmail'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-7995029144537820598</id><published>2010-06-20T23:30:00.007-07:00</published><updated>2010-06-21T00:13:20.916-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySql'/><category scheme='http://www.blogger.com/atom/ns#' term='foreign key'/><category scheme='http://www.blogger.com/atom/ns#' term='Yii'/><title type='text'>Yii + MySql + Wamp</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_v3JuT94f8zI/TB8LnDdsRBI/AAAAAAAABAw/-a_5Jecm9sQ/s1600/yiidemoCapture.PNG"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 174px;" src="http://2.bp.blogspot.com/_v3JuT94f8zI/TB8LnDdsRBI/AAAAAAAABAw/-a_5Jecm9sQ/s400/yiidemoCapture.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5485115636733199378" /&gt;&lt;/a&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;First, I installed WampServer, which is a package of Apache, Php and MySql coupled into one. In the httpd.conf file I pointed the “DocumentRoot” and “Directory” configurations to the directory, where I would have my application and Yii framework. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I copied the Yii framwork in "d:/workspace/app_demo/”&lt;/p&gt;&lt;p&gt;To create the stub application from yii, I executed these commands for my setup:&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt;cd D:\workspace\app_demo&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt;yii\framework\yiic webapp myapp&lt;/span&gt;&lt;/p&gt;&lt;p&gt;-------&lt;/p&gt;&lt;p&gt;This created an application “myapp” under “app_demo” folder.&lt;/p&gt;&lt;p&gt;The “/app_demo/myapp/protected/config/main.php” file contains the database configurations. By default the database was pointed to an sqlite database. I changed that, to point to Mysql database. So I had these settings for my mysql database.&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;/* 'db'=&gt;array(&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'connectionString' =&gt; 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;),*/&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'db'=&gt;array(&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'connectionString' =&gt; 'mysql:host=localhost;dbname=pages_db',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'emulatePrepare' =&gt; true,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'username' =&gt; 'root',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'password' =&gt; '',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'charset' =&gt; 'utf8',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;),&lt;/span&gt;&lt;/p&gt;&lt;p&gt;I also enabled logging through this file to look like this: &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'log'=&gt;array(&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'class'=&gt;'CLogRouter',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'routes'=&gt;array(&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;array('class'=&gt;'CFileLogRoute',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;     &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'levels'=&gt;'error, warning',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;),&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;array('class'=&gt;'CWebLogRoute',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;),&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;),  &lt;/span&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;),&lt;/span&gt;&lt;/p&gt;&lt;p&gt;-------&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;My database had two tables (user and address). The sql is shown below: &lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;CREATE TABLE IF NOT EXISTS `address` (&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `addressid` int(11) NOT NULL AUTO_INCREMENT,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `firstline` varchar(45) DEFAULT NULL,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `secondline` varchar(45) DEFAULT NULL,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `city` varchar(45) DEFAULT NULL,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `state` varchar(45) DEFAULT NULL,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `country` varchar(45) DEFAULT NULL,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  PRIMARY KEY (`addressid`)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;) ENGINE=InnoDB  DEFAULT CHARSET=latin1;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;CREATE TABLE IF NOT EXISTS `user` (&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `userid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'This contains the userid of the user',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `fname` varchar(128) NOT NULL COMMENT 'This contains the first name of the user',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `lname` varchar(128) DEFAULT NULL COMMENT 'This contains the last name of the user',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `sex` varchar(1) NOT NULL COMMENT 'This contains the sex of the user',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `age` int(100) DEFAULT NULL COMMENT 'This contains the age of the user',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'This contains the user account creation',&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  `user_addressid` int(11) DEFAULT NULL,&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  PRIMARY KEY (`userid`),&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  KEY `fk_user_address` (`user_addressid`)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;) ENGINE=InnoDB  DEFAULT CHARSET=latin1;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;ALTER TABLE `user` ADD CONSTRAINT `fk_user_address` FOREIGN KEY &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;(`user_addressid`) REFERENCES `address` (`addressid`) ON DELETE NO ACTION ON &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;UPDATE NO ACTION;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;-------&lt;/p&gt;&lt;p&gt;I had to create corresponding models for the tables. After the database configuration, I ran the following commands to create the models in my app. &lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;cd app_demo\myapp &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;D:\workspace\app_demo\myapp&gt;protected\yiic shell index.php&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;This opened the Yii Interactive Tool.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Yii Interactive Tool v1.1 (based on Yii v1.1.2)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Please type 'help' for help. Type 'exit' to quit.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt;&gt; model *&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The following model classes (tables) match your criteria:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;1. Address (address)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;2. User (user)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Do you want to generate the above classes? [Yes|No] yes &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   generate models/Address.php&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   generate fixtures/address.php&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   generate unit/AddressTest.php&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   generate models/User.php&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   generate fixtures/user.php&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;   generate unit/UserTest.php &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;The following model classes are successfully generated:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    Address, User &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;If you have a 'db' database connection, you can test these models now with:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    $model=User::model()-&gt;find();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    print_r($model); &lt;/span&gt;&lt;/p&gt;&lt;p&gt;-------&lt;/p&gt;&lt;p&gt;After this, I edited the actionIndex function in SiteController.php to look like this:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;public function actionIndex()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;{&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;// renders the view file 'protected/views/site/index.php'&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;// using the default layout 'protected/views/layouts/main.php'&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;$this-&gt;render('index', array(&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;            'user' =&gt; User::model()-&gt;findAll()&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        )); &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;In the index.php, I added the following table to display the records from the database:&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt; &lt;div&gt; &lt;/div&gt; &lt;div id="codeSnippetWrapper"&gt; &lt;div style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id="codeSnippet"&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;foreach($user AS $us):?&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt; echo $us-&gt;fname;?&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;echo $us-&gt;lname;?&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;echo $us-&gt;age;?&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;echo $us-&gt;user_address-&gt;city;?&gt; &lt;/pre&gt;&lt;!--CRLF--&gt;&lt;pre style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt; endforeach;?&gt;&lt;/pre&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"   style="  line-height: 16px; white-space: pre; font-family:'Courier New', Courier, monospace;font-size:11px;"&gt;&lt;/span&gt;Then I pointed my browser to http://localhost/myapp/index.php and this generated a table with the results.&lt;/p&gt;&lt;p&gt;More on this later...&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div id="codeSnippetWrapper"&gt;&lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-7995029144537820598?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/7995029144537820598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=7995029144537820598' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/7995029144537820598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/7995029144537820598'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/06/yii-mysql-wamp.html' title='Yii + MySql + Wamp'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_v3JuT94f8zI/TB8LnDdsRBI/AAAAAAAABAw/-a_5Jecm9sQ/s72-c/yiidemoCapture.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-6861885824275560912</id><published>2010-04-11T08:39:00.007-07:00</published><updated>2010-04-12T20:28:00.490-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='videos'/><category scheme='http://www.blogger.com/atom/ns#' term='collaboration'/><category scheme='http://www.blogger.com/atom/ns#' term='spidvid'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Spidvid: Let's create better videos!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_v3JuT94f8zI/S8KXLcCvQEI/AAAAAAAABAg/yXvaQWnAxuk/s1600/logo.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 153px; height: 62px;" src="http://1.bp.blogspot.com/_v3JuT94f8zI/S8KXLcCvQEI/AAAAAAAABAg/yXvaQWnAxuk/s320/logo.gif" alt="" id="BLOGGER_PHOTO_ID_5459091921088495682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span xmlns=""&gt;&lt;p&gt;The start-up scene is always sprawling with action. Individuals keep coming up with brilliant ideas to tackle a problem at hand. If you ever heard of Youtube, you can relate to the fact, that the online video sharing platform is filled with low quality videos. Enter the new service round the corner - Spidvid. It is a platform which brings together video creators and professionals, who would ultimately produce quality entertaining videos. It doesn't end here; they go further, distribute the videos and generate compensation for their contribution to the effort.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;It is an inventive concept accented by a beautiful user interface. It is easy to use and very responsive. You can choose any role you want on the video creation life cycle. You may be a video creator, a professional who can act, write, edit or even an amateur who has video ideas which, you would like to be created by others. This way you get in touch with people with similar interests and learn from their experiences.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Spidvid will raise the bar for online videos. It brings together people from different corners of the planet, with a common goal of producing quality videos. Right now, Spidvid is offered as a beta service. As more and more users join the bandwagon, the talent pool will get richer, as you have more contributors. &lt;/p&gt;&lt;p&gt;Getting content onto the website is a task which the marketing team needs to pay attention to. I would like to have a section to see some clips of the &lt;em&gt;videos&lt;/em&gt; created on Spidvid.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Overall, it is a good beginning to a new frontier in video collaboration. Spidvid has given users the tools which they need to connect and develop videos outside a single fortified studio. By making it open to public, the content will cross the geographical boundaries and be enjoyed by a wide range of viewers.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;So, let's get started and create some &lt;em&gt;video&lt;/em&gt;s&lt;em&gt;!&lt;/em&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-6861885824275560912?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.spidvid.com/' title='Spidvid: Let&apos;s create better videos!'/><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/6861885824275560912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=6861885824275560912' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6861885824275560912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6861885824275560912'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2010/04/spidvid-lets-create-better-videos.html' title='Spidvid: Let&apos;s create better videos!'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_v3JuT94f8zI/S8KXLcCvQEI/AAAAAAAABAg/yXvaQWnAxuk/s72-c/logo.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-6194034996331732161</id><published>2009-10-20T14:52:00.005-07:00</published><updated>2009-10-20T18:59:21.286-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Seven'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>Windows - the Seventh</title><content type='html'>&lt;b&gt;“And the SEVENTH angel poured out his vial into  the air; and there came a great voice out of the temple of  heaven, from the throne saying, It is DONE.” (Revelation  16 : 17)&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;The number '&lt;span style="font-style: italic;"&gt;Seven&lt;/span&gt;' has a lot of significance. There are seven days in a week and it was on the seventh day that the world was completed. 'Seven' symbolizes &lt;span style="font-style: italic;"&gt;completeness&lt;/span&gt; or &lt;span style="font-style: italic;"&gt;perfection&lt;/span&gt;. Perfection is only divine. At an earthly level, I would attribute &lt;span style="font-style: italic;"&gt;seven &lt;/span&gt;to &lt;span style="font-style: italic;"&gt;refinement. &lt;/span&gt;In that respect, Microsoft has achieved elegance with W7. A few things I like about W7 are:&lt;br /&gt;1. The annoying UAC has become much more placid. Introduced in Vista, as a security measure, it turned out to irritate the users with its frequent pop-ups.&lt;br /&gt;2. The boot performance is significantly faster. Windows 7 should have achieved a 15-sec boot up by the time it is up for final release.&lt;br /&gt;3. W7 lets the users connect to wireless networks instantly with fewer clicks which will prove to be of lot of help, for users without much technical know-how.&lt;br /&gt;4. The footprint of the OS is much lighter compared to Vista. It installs faster and occupies lesser space on the hard disk. Some of additional software like Windows Mail have been made optional downloads instead of default installations.&lt;br /&gt;5. The new OS uses lesser battery power and is known to save energy by 20%. That is a very good news for netbook makers as, Windows 7 will prove to be the OS for netbooks, too.&lt;br /&gt;6. There are some cool mouse gestures included: Aero Peek and Aero Shake. Aero Peek makes all the open windows transparent and lets the users peek through their desktop revealing hidden gadgets and icons while, Aero Shake lets the users minimize unnecessary windows from the desktop by shaking the required window.&lt;br /&gt;7. The OS supports backward compatibility. Legacy applications can run in a Windows XP mode, inside of Window 7.&lt;br /&gt;&lt;br /&gt;And, something I don't like about W7:&lt;br /&gt;1. Microsoft failed to come up with a suitable strategy for integrating the cloud. With  computing being the talk of the town, and Microsoft itself working on &lt;span style="font-style: italic;"&gt;Azure&lt;/span&gt;, the Software as a Service(Saas) integration seems to have been lost in translation. Microsoft could have &lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Charpreet%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Charpreet%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Charpreet%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin-top:0in; 	mso-para-margin-right:0in; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  amalgamated its Live Mesh with Windows 7 for data backup.&lt;br /&gt;2. W7 still lives on to the concept of one partition OS. I would have liked this to change. The data like Documents, Music, Pictures and other user settings should reside on a different partition than the OS itself. This would be of great value in case of a system crash or an OS reinstall.&lt;br /&gt;&lt;br /&gt;Overall, W7 is a nice compact mixture of niceties and removes some of the nuisances of Vista.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-6194034996331732161?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/6194034996331732161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=6194034996331732161' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6194034996331732161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6194034996331732161'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2009/10/windows-seventh.html' title='Windows - the Seventh'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-3356949122327909572</id><published>2009-07-03T10:27:00.009-07:00</published><updated>2009-09-04T10:37:33.167-07:00</updated><title type='text'>Opera innovations</title><content type='html'>When I read about Opera's "Reinvent the Web" campaign on Techcrunch, I was a bit excited and a bit cynical about it's legitimacy. Similar tall claims have been made earlier but with little success. Initially, I thought it was a mere marketing gimmick but, Opera did excite me on June 16, 2009. Some of the innovative features by Opera are:&lt;br /&gt;&lt;br /&gt;1. &lt;b&gt;Appearance:&lt;/b&gt; The Opera browser has a very polished look. It is very much a Windows 7 product. Firefox looks too XPed, IE never excited me and I have never used an Apple.&lt;br /&gt;&lt;br /&gt;2. &lt;b&gt;Mouse Gestures: &lt;/b&gt;One of the first things I tried to experiment was mouse gestures. Hold your right mouse in the tab and flick it to left, it performs the "Back" functionality of the browser.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3. &lt;b&gt;Speed Dial:&lt;/b&gt; This is such a handy feature which has been there on mobile phones for years, but nobody thought of incorporating it in the browser.&lt;br /&gt;&lt;br /&gt;4. &lt;b&gt;Closed tabs: &lt;/b&gt;If you close any of your tabs accidentally, Opera lets you open them instantly. More important is the accessibility of this button. It is right there where I would want it to be.&lt;br /&gt;&lt;br /&gt;5. &lt;b&gt;Unite:&lt;/b&gt; This is something which has a potential to change the way the web works. It allows you to share files from your system rather than some third party service. By giving the user, control of his information, Opera makes the user, the master of his information. But I feel it is little too early for something like this to become an instant hit. Poor Internet speeds, limited hardware resources would be some key limitations for Unite's success. Nevertheless the idea deserves credit.&lt;br /&gt;&lt;br /&gt;6. &lt;b&gt;Widgets:&lt;/b&gt; These are web applications which run in the browser but without showing the browser controls. They are very easy to use and also very easy to build using client side programming languages. I have been playing around with them and will write more about how to create your own widgets, but that is later.&lt;br /&gt;&lt;br /&gt;7. &lt;b&gt;Anti Cloud:&lt;/b&gt; Yes Opera is anti-cloud. The world has been focusing on centralizing services across the Internet for quite some time now. With a few big names in the fray, the race has heated up. But, Opera has different plans. By providing an individual to host his own web server inside a browser, Opera has de-centralized information.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-3356949122327909572?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/3356949122327909572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=3356949122327909572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3356949122327909572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3356949122327909572'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2009/07/opera-innovations.html' title='Opera innovations'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-2394325054167385080</id><published>2009-06-23T06:01:00.017-07:00</published><updated>2010-03-27T10:57:14.999-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='ajast'/><category scheme='http://www.blogger.com/atom/ns#' term='cross domain'/><title type='text'>Cross domain calls</title><content type='html'>&lt;p&gt;The XMLHTTPRequest object is used to make an http request directly to a web server and load the server response data back into the scripting language. But this techniques works only when you are making a request to the same web server with in the same domain. Here is how to make a call from &lt;a href="http://www.site1.com/user.html"&gt;www.site1.com/user.html&lt;/a&gt; to &lt;a href="http://www.site2.com/usercheck.aspx"&gt;www.site2.com/usercheck.aspx&lt;/a&gt; :&lt;/p&gt;  &lt;p&gt;1. Create a web page on &lt;a href="http://www.site1.com/"&gt;www.site1.com&lt;/a&gt; which would make a call to another server &lt;a href="http://www.site2.com/"&gt;www.site2.com&lt;/a&gt;. Documentation available inline.&lt;/p&gt;&lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" lang="en-US"&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;Check username availability&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;form id="form1" runat="server"&amp;gt;&lt;br /&gt;&amp;lt;div&amp;gt;&lt;br /&gt;  Enter Username:&lt;br /&gt;  &amp;lt;!-- Check if username exists already or not --&amp;gt;&lt;br /&gt;  &amp;lt;input type="text" name="user" onchange="createScriptTag(this); return false;"/&amp;gt; &lt;br /&gt;  &amp;lt;span id="outputmessage"&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;  &amp;lt;input id='submit_button' name='submit_button' type='submit' value='submit' /&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script language="javascript" type="text/javascript"&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;//Create a script tag which loads javascript from a remote source&lt;br /&gt;function createScriptTag(e){&lt;br /&gt;var headElement;&lt;br /&gt;var scriptTag;&lt;br /&gt;var inputValue = e.value;&lt;br /&gt;var url = 'http://www.site2.com/usercheck.aspx?username=' + inputValue + '&amp;amp;rnd=' + new Date().getTime();&lt;br /&gt;headElement = document.getElementsByTagName("head").item(0);&lt;br /&gt;scriptTag = document.createElement("script");&lt;br /&gt;scriptTag.setAttribute("id", "user_script");&lt;br /&gt;scriptTag.setAttribute("type", "text/javascript");&lt;br /&gt;scriptTag.setAttribute("src", url);&lt;br /&gt;headElement.appendChild(scriptTag);&lt;br /&gt;&lt;br /&gt;// Creates issue with IE so remove the script tag later at an appropriate place&lt;br /&gt;//headElement.removeChild(scriptTag);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//function to be executed on callback from the above request. The callback returns a response similar to "isAvailable({'status':1})"&lt;br /&gt;function isAvailable(response){&lt;br /&gt;if (response.status == 1){&lt;br /&gt;     document.getElementById("outputmessage").innerHTML = "Username is still available";&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt; document.getElementById("outputmessage").innerHTML = "Username already exists";&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;2. The &lt;/span&gt;&lt;a href="http://www.site2.com/usercheck.aspx"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;www.site2.com/usercheck.aspx&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt; page accepts querystring parameters, &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;implements a business logic and returns the function to be executed on client side as response.&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;using System;&lt;br /&gt;using System.Collections;&lt;br /&gt;using System.Configuration;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Web;&lt;br /&gt;using System.Web.Security;&lt;br /&gt;using System.Web.UI;&lt;br /&gt;using System.Web.UI.HtmlControls;&lt;br /&gt;using System.Web.UI.WebControls;&lt;br /&gt;using System.Web.UI.WebControls.WebParts;&lt;br /&gt;&lt;br /&gt;public partial class keygenerator : System.Web.UI.Page&lt;br /&gt;{&lt;br /&gt;protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;  {&lt;br /&gt;  Response.ContentType = "text/plain";&lt;br /&gt;  if (Request.QueryString.Count &amp;gt; 0)&lt;br /&gt;  {&lt;br /&gt;      string username = Request.QueryString[0];&lt;br /&gt;&lt;br /&gt;      //array of names to check against&lt;br /&gt;      ArrayList arlExistingUsernames = new ArrayList();&lt;br /&gt;      arlExistingUsernames.Add("harpreet");&lt;br /&gt;      arlExistingUsernames.Add("singh");&lt;br /&gt;&lt;br /&gt;      if (!arlExistingUsernames.Contains(username))&lt;br /&gt;      {&lt;br /&gt;          Response.Write("isAvailable({'status':1})");&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      else&lt;br /&gt;      {&lt;br /&gt;          Response.Write("isAvailable({'status':0})");&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;  else&lt;br /&gt;  {&lt;br /&gt;      Response.Write("isAvailable({'status':0})");&lt;br /&gt;  }&lt;br /&gt;  Response.End();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;p&gt;For more cross domain calling options check out:&lt;/p&gt;&lt;p&gt;&lt;a title="http://snook.ca/archives/javascript/cross_domain_aj/" href="http://snook.ca/archives/javascript/cross_domain_aj/"&gt;http://snook.ca/archives/javascript/cross_domain_aj/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a title="http://ox.no/posts/ajast-cross-domain-rest-calls-using-json-injection" href="http://ox.no/posts/ajast-cross-domain-rest-calls-using-json-injection"&gt;http://ox.no/posts/ajast-cross-domain-rest-calls-using-json-injection&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a title="http://developer.yahoo.com/javascript/howto-proxy.html" href="http://developer.yahoo.com/javascript/howto-proxy.html"&gt;http://developer.yahoo.com/javascript/howto-proxy.html&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:633cf838-9e17-4801-933b-ab2d0958bd42" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Cross+domain" rel="tag"&gt;Cross domain&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ajast" rel="tag"&gt;ajast&lt;/a&gt;,&lt;a href="http://technorati.com/tags/javascript" rel="tag"&gt;javascript&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-2394325054167385080?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/2394325054167385080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=2394325054167385080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2394325054167385080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2394325054167385080'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2009/06/cross-domain-calls.html' title='Cross domain calls'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-6203522429698709383</id><published>2009-06-20T00:44:00.007-07:00</published><updated>2009-06-23T00:59:17.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TurboGears'/><category scheme='http://www.blogger.com/atom/ns#' term='Eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='debugging'/><title type='text'>Turbogears debugging in Eclipse</title><content type='html'>&lt;p&gt;Setting up debug enabled environment for a Turbogears application in Eclipse is not really straightforward. I struggled a lot before I could set it up. Initially I wasnt even sure if I could set up break points and debug the application like in microsoft visual studio. It is very much possible although some of the things are not very obvious. Here is a list of things to check up, if you are facing problems.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. You can install Pydev by following the instructions mentioned on &lt;a href="http://www.aptana.com/python"&gt;pydev website&lt;/a&gt;. You can also have a look at this&lt;a href="http://www.ibm.com/developerworks/opensource/library/os-ecant/"&gt; ibm site&lt;/a&gt; which helps you make the necessary settings in Eclipse.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. You can patch the Decorators file from pydev blog. If you are facing any problems drop your email id I will send you the patched file.&lt;br /&gt;&lt;/p&gt;3. Pydev gives problems with certain turbojson package versions. You may try to downgrade and install a previous version of turbojson package. Use the following command to do so:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;easy_install -U turbojson==1.1.4&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;&gt;easy_install -U DecoratorTools==1.4 &lt;/span&gt;&lt;/p&gt;&lt;p&gt;4. Remember, you will still see the following error when you start the debug session.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;PYDEV DEBUGGER WARNING:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;sys.settrace() should not be used when the debugger is being used.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;This may cause the debugger to stop working correctly.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;If this is needed, please check: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;http://pydev.blogspot.com/2007/06/why-cant-pydev-debugger-work-with.html&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;to see how to restore the debug tracing back correctly.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;Call Location:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0);"&gt;  File "C:\Python24\lib\site-packages\decoratortools-1.4-py2.4.egg\peak\util\decorators.py", line 562, in uninstall&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="color:#cc0000;"&gt;&lt;/span&gt;&lt;span style="color:#cc0000;"&gt;&lt;br /&gt;&lt;/span&gt;But, wait for a few seconds and eclipse will start the debug session after the error message.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-6203522429698709383?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/6203522429698709383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=6203522429698709383' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6203522429698709383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6203522429698709383'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2009/06/turbogears-debugging-in-eclipse.html' title='Turbogears debugging in Eclipse'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-2692980260742182198</id><published>2009-06-16T11:23:00.010-07:00</published><updated>2009-06-18T02:12:14.368-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='asp.net'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='cgi'/><title type='text'>Asp.Net and Python-cgi communication</title><content type='html'>&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:a1b658b5-c9bb-4b2a-a20a-732ea9b0107b" style="margin: 0px; padding: 0px; display: inline; float: none; text-align: left;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/python" rel="tag"&gt;python&lt;/a&gt;,&lt;a href="http://technorati.com/tags/cgi" rel="tag"&gt;cgi&lt;/a&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;p style="text-align: left;"&gt;I recently had my first shot at writing cgi scripts in python. It was an altogether different experience having come from a .Net and Turbogears background. I also got my hands on a Linux server. Infact, it was the first time I got to use vi, ls, cat, cp etc, since college. It is really amazing how much you can do with just the shell commands on Linux. &lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p style="text-align: left;"&gt;  &lt;br /&gt;The Linux machine had an apache server which ran some cgi scripts to do some basic tasks like creating a new user record in the database, deleting, editing etc. I think that was the reason they did not go beyond cgi. These tasks were manually done by an admin after logging into the application. Now, these scripts were required to be made callable from an asp.net web application.&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p style="text-align: left;"&gt;  &lt;br /&gt;ASP.NET application &amp;lt;===========&amp;gt; Python cgi scripts    &lt;br /&gt;CreateDemo.aspx _____________ create_demo.cgi    &lt;br /&gt;(collects user info    &lt;br /&gt;for demo record) _____________ (requires authentication)    &lt;br /&gt;  &lt;br /&gt;So, we decided to create another script, let us say 'authenticate.cgi', in which we used urllib python library to by pass the authentication on create_demo.cgi and then CreateDemo.aspx would call authenticate.cgi. Here is the new flow-    &lt;br /&gt;  &lt;br /&gt;CreateDemo.aspx --&amp;gt; authenticate.cgi --&amp;gt; create_demo.cgi    &lt;br /&gt;  &lt;br /&gt;This write-up addresses two key areas:    &lt;br /&gt;1. How to communicate with a python cgi script from an asp.net web page?&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:green;"   &gt;//Request url and request method &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style="color: rgb(43, 145, 175);font-family:&amp;quot;;font-size:10;"  &gt;HttpWebRequest&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt; httpRequest = &lt;span style="color: rgb(43, 145, 175);"&gt;HttpWebRequest&lt;/span&gt;)&lt;span style="color: rgb(43, 145, 175);"&gt;WebRequest&lt;/span&gt;.Create(&lt;span style="color: rgb(163, 21, 21);"&gt;"http://192.1.1.1/no_auth/authenticate.cgi?name=harpreet”&lt;/span&gt;); &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;httpRequest.KeepAlive = &lt;span style="color:blue;"&gt;false&lt;/span&gt;; &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;httpRequest.Method = &lt;span style="color: rgb(163, 21, 21);"&gt;"GET"&lt;/span&gt;; &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:green;"   &gt;//Read the web response from the URI &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;string&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt; strResponse =&lt;span&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;string&lt;/span&gt;.Empty; &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;using&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt; (&lt;span style="color: rgb(43, 145, 175);"&gt;WebResponse&lt;/span&gt; webResponse = (&lt;span style="color: rgb(43, 145, 175);"&gt;WebResponse&lt;/span&gt;)httpRequest.GetResponse()) &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;{&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;          System.Text.&lt;span style="color: rgb(43, 145, 175);"&gt;Encoding&lt;/span&gt; enc = System.Text.&lt;span style="color: rgb(43, 145, 175);"&gt;Encoding&lt;/span&gt;.GetEncoding(1252); &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;&lt;span style="color:blue;"&gt;          using&lt;/span&gt; (&lt;span style="color: rgb(43, 145, 175);"&gt;StreamReader&lt;/span&gt; srResponseStream = &lt;span style="color:blue;"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43, 145, 175);"&gt;StreamReader&lt;/span&gt;(webResponse.GetResponseStream(), enc)) &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;          { &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;&lt;span style="color:green;"&gt;                //Read the response into a string or you could use XML also&lt;/span&gt; &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;                strResponse = srResponseStream.ReadToEnd(); &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;           } &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; text-align: left;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;} &lt;/span&gt;   &lt;br /&gt;  &lt;br /&gt;2. How to by pass basic authentication on cgi script using urllib?&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=";color:green;" &gt;#!/usr/bin/env /usr/local/bin/python &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=";color:blue;" &gt;import&lt;/span&gt;&lt;span style=""&gt; urllib2,urllib&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=";color:blue;" &gt;import&lt;/span&gt;&lt;span style=""&gt; sys,os,cgi,cgitb &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=";color:blue;" &gt;import&lt;/span&gt;&lt;span style=""&gt; re,datetime &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=";color:blue;" &gt;import&lt;/span&gt;&lt;span style=""&gt; base64 &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=";color:blue;" &gt;from&lt;/span&gt;&lt;span style=""&gt; urlparse &lt;span style="color:blue;"&gt;import&lt;/span&gt; urlparse&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=";color:blue;" &gt;def&lt;/span&gt;&lt;span style=""&gt; handler(): &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  form = cgi.FieldStorage() &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  if&lt;/span&gt; form.list: &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  data = {}&lt;/span&gt;&lt;span style=""&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  for&lt;/span&gt; field &lt;span style="color:blue;"&gt;in&lt;/span&gt; flds: &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;   data[field]=form.getvalue(field,&lt;span style="color:maroon;"&gt;''&lt;/span&gt;)&lt;/span&gt;&lt;span style=""&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  theurl = &lt;span style="color:maroon;"&gt;'http://localhost/admin/create_demo.cgi’ &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:green;"&gt;  # you'll need to supply a protected page with your username and password &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  username = &lt;span style="color:maroon;"&gt;'scott' &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  password = &lt;span style="color:maroon;"&gt;'tiger'&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;span style="color:green;"&gt;# a very bad password&lt;/span&gt;&lt;/span&gt;&lt;span style=";color:green;" &gt; &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  req = urllib2.Request(theurl) &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  try&lt;/span&gt;: &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;     handle = urllib2.urlopen(req, urllib.urlencode(data)) &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  except&lt;/span&gt; IOError, e:&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:green;"&gt;  # do whatever you want to handle the exception here, 'pass' in this example &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;    pass &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  else&lt;/span&gt;:&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:green;"&gt;    # If we don't fail then the page isn't protected &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;    print&lt;/span&gt; &lt;span style="color:maroon;"&gt;"This page is not protected by any authentication." &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;    sys.exit(1)&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  if&lt;/span&gt; &lt;span style="color:blue;"&gt;not&lt;/span&gt; hasattr(e, &lt;span style="color:maroon;"&gt;'code'&lt;/span&gt;) &lt;span style="color:blue;"&gt;or&lt;/span&gt; e.code != 401: &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:green;"&gt;    # we got an error - but not a 401 error &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;    print&lt;/span&gt; &lt;span style="color:maroon;"&gt;"This page is not protected by any authentication." &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;    print&lt;/span&gt; &lt;span style="color:maroon;"&gt;'Some other reason for failure' &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;    sys.exit(1)&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  authheader = e.headers[&lt;span style="color:maroon;"&gt;'www-authenticate'&lt;/span&gt;] &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:green;"&gt;  # this gets the www-authenticate line from the headers &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:green;"&gt;  # which would contain the authentication scheme and realm &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  authobj = re.compile(&lt;span style="color:maroon;"&gt;r'''(?:\s*www-authenticate\s*:)?\s*(\w*)\s+realm=['"]([^'"]+)['"]'''&lt;/span&gt;,re.IGNORECASE) &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:green;"&gt;  # this RE is used to extract scheme and realm&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  matchobj = authobj.match(authheader) &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:green;"&gt;  # if the authheader isn't matched by the regular expression &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:green;"&gt;  # then there is probably some error in&lt;span&gt; &lt;/span&gt;the header&lt;span&gt; &lt;/span&gt;&lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  if&lt;/span&gt; &lt;span style="color:blue;"&gt;not&lt;/span&gt; matchobj: &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;    print&lt;/span&gt; &lt;span style="color:maroon;"&gt;'The authentication header is badly formed.' &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;    print&lt;/span&gt; authheader &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;    sys.exit(1)&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  scheme = matchobj.group(1) &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  realm = matchobj.group(2)&lt;/span&gt;&lt;span style=""&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:green;"&gt;  # check schem (this example works for basic authorization only &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  if&lt;/span&gt; scheme.lower() != &lt;span style="color:maroon;"&gt;'basic'&lt;/span&gt;: &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;    print&lt;/span&gt; &lt;span style="color:maroon;"&gt;'This example only works for BASIC Authorization.' &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;    sys.exit(1)&lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  base64string = base64.encodestring(&lt;span style="color:maroon;"&gt;'%s:%s'&lt;/span&gt; % (username, password))[:-1] &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  authheader =&lt;span&gt; &lt;/span&gt;&lt;span style="color:maroon;"&gt;"Basic %s"&lt;/span&gt; % base64string &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  req.add_header(&lt;span style="color:maroon;"&gt;"Authorization"&lt;/span&gt;, authheader) &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  try&lt;/span&gt;: &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;    handle = urllib2.urlopen(req,urllib.urlencode(data)) &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  except&lt;/span&gt; IOError, e:&lt;span&gt; &lt;/span&gt;&lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;    print&lt;/span&gt; &lt;span style="color:maroon;"&gt;"The username or password is not valid." &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;    sys.exit(1) &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;  thepage = handle.read() &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  print&lt;/span&gt; &lt;span style="color:maroon;"&gt;"Content-type: text/html; charset=utf-8" &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  print &lt;/span&gt;         &lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; font-family: courier new; text-align: left;"&gt;&lt;span style=""&gt;&lt;span style="color:blue;"&gt;  print&lt;/span&gt; thepage&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p class="MsoNormal" style="line-height: normal; text-align: left;"&gt;&lt;span style="font-family: courier new;font-family:&amp;quot;;" &gt;handler()&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;/span&gt;    &lt;/p&gt;&lt;div style="text-align: left;"&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p style="text-align: left;"&gt;Security was not really a major concern for this cgi, but an IP based security was added to limit unwanted access.&lt;/p&gt;&lt;div style="text-align: left;"&gt;  &lt;/div&gt;&lt;p style="text-align: left;"&gt;* The code snippets are not really tested but, will hopefully work :-) &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-2692980260742182198?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/2692980260742182198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=2692980260742182198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2692980260742182198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2692980260742182198'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2009/06/aspnet-and-python-cgi-communication.html' title='Asp.Net and Python-cgi communication'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-4522323068441265159</id><published>2009-05-01T14:22:00.005-07:00</published><updated>2010-04-10T14:58:03.474-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Social games'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='board games'/><title type='text'>Will the history repeat itself, with Grabbler?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_v3JuT94f8zI/S8DzTwb3WqI/AAAAAAAABAI/TSBihvjYLE4/s1600/Gboard.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 259px;" src="http://1.bp.blogspot.com/_v3JuT94f8zI/S8DzTwb3WqI/AAAAAAAABAI/TSBihvjYLE4/s320/Gboard.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5458630269117880994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Word games have been around the corner for quite some time now. Some give clues to guess the word, some give letters to make maximum possible words. Each one trying out a different strategy but to obtain a simple objective - form words. I remember to have played a few word games during my childhood days Scrabble, Word Crosswords being the notable ones. Well, times change, paper-pen games are remnants of the bygone days and now its an era of games on Facebook. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  On and off, I had been playing Scrabble on Facebook, until i found Grabbler. It is a multi-player game which tests your word making skills, with its unique cubes. Err...on second thoughts, not so unique cubes. Actually, the possiblity that you would get the same cube again in a game is 144 in 26!/20!  i.e. 1 in 1,151,150. Hence, the not so unique cubes. Over the last 45 days I have been hooked on to the game. I think I have even played a few moves in my sleep. And, tonight, I have decided I will stop playing it, at least for a few weeks. I would like to catch up more sleep in the coming few days. This decision has come after a lot of deliberations. The addict wanting to sniff more and the reasonable self in me wanting to shun it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  But, this does not stop me from appreciating the game. After a long time, a game caught my imagination. The game has a pleasant interface and has the right combination of skill and luck. It is well matched with a test of patience too. It has been fun, having beaten some very good players and remaining invincible. The eye catching feeds have been such a delight to post on the profile. Although, the game has been introduced very recently, I think this game will definitely climb the ladder pretty fast. Moreover, it is a good change for some one bored by the age old Scrabble.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  That reminds me of the fact that Scrabble was created by Alfred Mosher Butts during the Great Depression in the 1930s and the game went on to occupy space in every other household. Almost eight decades later, the world is going through another major economic slowdown and Grabbler has been created. Will the history repeat itself?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well that remains to be seen, but for now, it is adios Grabbler,for me.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-4522323068441265159?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://apps.facebook.com/grabbler/' title='Will the history repeat itself, with Grabbler?'/><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/4522323068441265159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=4522323068441265159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/4522323068441265159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/4522323068441265159'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2009/05/will-history-repeat-itself-with.html' title='Will the history repeat itself, with Grabbler?'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_v3JuT94f8zI/S8DzTwb3WqI/AAAAAAAABAI/TSBihvjYLE4/s72-c/Gboard.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-8123412346257179020</id><published>2009-03-07T05:07:00.007-08:00</published><updated>2009-03-07T11:10:42.308-08:00</updated><title type='text'>How I set up my Turbogears based development environment...</title><content type='html'>The start of 2009 brought along a new project for me. It was based on Turbogears 1.0.4.4 with Postgresql 8.3 as the database. Here is a list of steps I followed to setup my development environment.&lt;br /&gt;&lt;br /&gt;1. Installed &lt;a href="http://www.python.org/"&gt;&lt;span style="font-style: italic;"&gt;Python 2.4.4&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2. I was working on a windows platform and required support for it so I installed extensions for windows. &lt;a href="http://sourceforge.net/projects/pywin32/"&gt;&lt;span style="font-style: italic;"&gt;PyWin32&lt;/span&gt;&lt;/a&gt; is a collection of modules for advanced windows-specific support. These include utilities for COM, Win32 API calls, Registry, Event Log and MFC user interfaces.&lt;br /&gt;&lt;br /&gt;3. Installed &lt;a href="http://pypi.python.org/pypi/setuptools"&gt;&lt;span style="font-style: italic;"&gt;setuptools&lt;/span&gt;&lt;/a&gt;, so as to be able to build and distribute packages. It includes a utility &lt;span style="font-style: italic;"&gt;easy_install&lt;/span&gt;, which lets you automatically download, build, install, and manage Python packages and their dependencies.&lt;br /&gt;&lt;br /&gt;4. Installed the &lt;a href="http://turbogears.org/"&gt;&lt;span style="font-style: italic;"&gt;Turbogears&lt;/span&gt;&lt;/a&gt; web application framework by running the command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;&gt;easy_install-2.4 -f http://files.turbogears.org/ "TurboGears==1.0.4.4"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5. Installed &lt;a href="http://www.stickpeople.com/projects/python/win-psycopg/"&gt;&lt;span style="font-style: italic;"&gt;win-psycopg&lt;/span&gt;&lt;/a&gt;, a windows port of the &lt;span style="font-style: italic;"&gt;psycopg &lt;/span&gt;python-postgresql database interface.&lt;br /&gt;&lt;br /&gt;6. Installed &lt;a href="http://www.sqlobject.org/"&gt;&lt;span style="font-style: italic;"&gt;SQLObject&lt;/span&gt;&lt;/a&gt;, an Object Relational Manager which provides an object interface to your database, with tables as classes, rows as instances, and columns as attributes. Used the following command to install it:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;easy_install-2.4 "SQLObject==0.10.2"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;7. Installed other packages like &lt;a style="font-style: italic;" href="http://pybrary.net/pyPdf/"&gt;PyPDF 1.9&lt;/a&gt;, &lt;a style="font-style: italic;" href="http://effbot.org/zone/element-index.htm"&gt;ElementTree  1.2.6&lt;/a&gt;, &lt;a style="font-style: italic;" href="http://effbot.org/media/downloads/elementtidy-1.0-20050212.win32-py2.4.exe"&gt;ElementTidy&lt;/a&gt; and &lt;a style="font-style: italic;" href="http://downloads.osafoundation.org/PyLucene/windows/PyLucene-2.2.0-1.tar.gz"&gt;PyLucene&lt;/a&gt; for my text based application.&lt;br /&gt;&lt;br /&gt;8. Installed &lt;a style="font-style: italic;" href="http://tinymce.moxiecode.com/"&gt;TinyMCE 1.0.6&lt;/a&gt;, &lt;span style="font-size:100%;"&gt;a JavaScript HTML WYSIWYG editor control, using the following command:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt;easy_install-2.4 "TurboTinyMCE==1.0.6"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;9. Downloaded the &lt;a style="font-style: italic;" href="http://www.extjs.com/"&gt;ExtJS 2.2&lt;/a&gt; Library. It has some excellent built-in components ready to use.&lt;br /&gt;&lt;br /&gt;10. Installed &lt;a style="font-style: italic;" href="http://archive.eclipse.org/eclipse/downloads/drops/R-3.2-200606291905/index.php"&gt;Eclipse 3.2&lt;/a&gt; IDE and added the PyDev plugin using the &lt;a href="http://fabioz.com/pydev/manual_101_install.html"&gt;manual&lt;/a&gt; and &lt;a href="http://www.ibm.com/developerworks/library/os-ecant/"&gt;configured&lt;/a&gt; it accordingly.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;There I was, ready to play!&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-8123412346257179020?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/8123412346257179020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=8123412346257179020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/8123412346257179020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/8123412346257179020'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2009/03/how-i-set-up-my-turbogears-based.html' title='How I set up my Turbogears based development environment...'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-3681198735128388040</id><published>2009-03-06T07:08:00.007-08:00</published><updated>2009-03-06T10:00:02.259-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='connection'/><category scheme='http://www.blogger.com/atom/ns#' term='remote access'/><category scheme='http://www.blogger.com/atom/ns#' term='postgres'/><title type='text'>Remote access to PostgreSQL Server</title><content type='html'>&lt;span style="font-style: italic;"&gt;Error: "could not connect to Server: Connection refused"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The resolution is a five step process : -&lt;br /&gt;&lt;br /&gt;1. Firstly, check if your firewall allows the port (default is 5432) to establish a connection.&lt;br /&gt;&lt;br /&gt;2. By default, PostgreSQL does not allow remote incoming connections. This has been implemented in this way, because of security concerns. You need to enable incoming TCP/IP connection requests from the client. This can be done by adding&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;listen_addresses = '*'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;in the configuration file &lt;span style="font-family: courier new;"&gt;postgresql.conf&lt;/span&gt;. This configuration is valid for postgresql 8.x.&lt;br /&gt;&lt;br /&gt;3. You will have to inform Postgresql who can connect to the server. This has to be done by modifying the configuration file &lt;span style="font-family: courier new;"&gt;pg_hba.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;host all all 127.0.0.1/32 trust&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;host all all 192.168.0.0/16 trust&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This would allow any user on the local network to access all the databases on the server in "trust" mode.&lt;br /&gt;&lt;br /&gt;4. After you have saved the configuration files you will have to restart the server. Remember, these configuration files are read on server startup.&lt;br /&gt;&lt;br /&gt;5. Test your config. Go to the command prompt and run the following command.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&gt;psql -h serverIP -U postgresUser -d postgresdb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And, you should be set for remote access to postgresql server.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-3681198735128388040?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/3681198735128388040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=3681198735128388040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3681198735128388040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/3681198735128388040'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2009/03/remote-access-to-postgresql-server.html' title='Remote access to PostgreSQL Server'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-4908117030498008148</id><published>2009-03-05T11:09:00.016-08:00</published><updated>2009-04-12T05:03:44.868-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><title type='text'>JSON</title><content type='html'>&lt;span style="font-family:Arial;"&gt;&lt;span style="font-weight: bold;font-family:georgia;" &gt;JSON &lt;/span&gt;&lt;span style="font-family:georgia;"&gt;is an acronym for &lt;/span&gt;&lt;span style="font-weight: bold;font-family:georgia;" &gt;JavaScript Object Notation&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;. It is a means of transferring serialized JavaScript objects so that a JavaScript application can evaluate them and transform them into JavaScript objects which, the application can utilize to perform its operations. In short, JSON is a data interchange format. It is easy to parse and generate in almost any language.   &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;A sample JSON:-   &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;  &lt;pre&gt;&lt;span style=";font-family:courier new;font-size:100%;"  &gt;{"continents": {&lt;br /&gt;             "asia":[{"country": "india",&lt;br /&gt;                      "code": "101"&lt;br /&gt;                     },&lt;br /&gt;                     {"country": "japan",&lt;br /&gt;                      "code": "102"&lt;br /&gt;                     }],&lt;br /&gt;             "europe":[{"country": "france",&lt;br /&gt;                        "code": "401"&lt;br /&gt;                     }]&lt;br /&gt;                  }&lt;br /&gt;}&lt;/span&gt;&lt;span style="font-family:georgia,serif;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-family: georgia;font-size:100%;" &gt;The most notable features of JSON are:-&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-family: georgia;"&gt;1&lt;/span&gt;&lt;/span&gt;. &lt;/span&gt;&lt;span style="font-family: georgia;font-size:100%;" &gt;It is basically a collection of name-value pairs ("key": "value") se&lt;span style="font-size:100%;"&gt;parated by a &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: georgia;font-size:100%;" &gt;colon.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;2&lt;/span&gt;.&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;&lt;span style="font-family:georgia;"&gt; It is not only easy to read for humans but also easy to parse by the machines.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;3. Values can be a string, an integer, an object or an array.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;    Standard literals like True, False, null are also acceptable.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;4. Each object is placed between {...}.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;5. Arrays are place between [...] and are comma separated.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;6. It can be passed using httpWebRequest.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;7. Reserved keywords from JavaScript are not allowed in JSON.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;8. JSON can be parsed using the &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://24ways.org/2005/dont-be-eval"&gt;eval()&lt;/a&gt;&lt;span style="font-family:georgia;"&gt; method in JavaScript.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;9. It uses Unicode.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Common errors like the "missing } after property list" can be corrected&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;using a JSON validator like &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://www.jsonlint.com/" target="_blank"&gt;www.jsonlint.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-4908117030498008148?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/4908117030498008148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=4908117030498008148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/4908117030498008148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/4908117030498008148'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2009/03/json.html' title='JSON'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-6666228344305638220</id><published>2009-03-03T08:55:00.007-08:00</published><updated>2009-04-11T12:17:43.538-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLObject'/><category scheme='http://www.blogger.com/atom/ns#' term='TurboGears'/><title type='text'>Existing database tables and SQLObject</title><content type='html'>Define the existing table "Bookmark" as a class in python:-&lt;br /&gt;&lt;br /&gt;class Bookmark(SQLObject):&lt;br /&gt;&lt;br /&gt;  _fromDatabase = True  # the table structure will be loaded from the database&lt;br /&gt;    BookmarkName = StringCol (dbName="bookmark_name") &lt;br /&gt;# &lt;span style="font-weight: bold;"&gt;dbName &lt;/span&gt;is the name of                                                                            the column in the database, BookmarkName is the name reference in code.&lt;br /&gt;ProjectId = IntCol(dbName="project_id")&lt;br /&gt;&lt;br /&gt;(Make sure the indentation is correct)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-6666228344305638220?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/6666228344305638220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=6666228344305638220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6666228344305638220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/6666228344305638220'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2009/03/existing-database-tables-and-sqlobject.html' title='Existing database tables and SQLObject'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-2451753116781450214</id><published>2009-03-03T08:55:00.003-08:00</published><updated>2009-03-03T10:16:28.653-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLObject'/><category scheme='http://www.blogger.com/atom/ns#' term='TurboGears'/><category scheme='http://www.blogger.com/atom/ns#' term='connection'/><category scheme='http://www.blogger.com/atom/ns#' term='existing database'/><category scheme='http://www.blogger.com/atom/ns#' term='postgres'/><title type='text'>Connecting to an existing database using TurboGears framework</title><content type='html'>Your application would need a DB connection to access the database. A connection is how you tell SQLObject to locate your database. SQLObject is an object relational mapper, a software layer that maps data stored in a relational database to an object model in an object-oriented programming language. The connection string resembles a URI in the following format:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;  &lt;pre face="times new roman"&gt;&lt;span style=""&gt;scheme://[user[:password]@]host[:port]/database[?parameters]&lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;For instance:&lt;br /&gt;&lt;/span&gt;&lt;span style=""&gt;postgres://user:pwd@localhost:5432/db&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;SQLObject provides a debug mechanism, which can be turned on easily by appending &lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;?debug=True&lt;/span&gt; to the end of your database URI in the &lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;dev.cfg&lt;/span&gt; file.&lt;br /&gt; &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span style=""&gt;postgres://user:pwd@localhost:5432/db?debug=True&lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;This would publish the query generated onto the console.&lt;/span&gt;&lt;span style="font-size: 12pt;"&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;            &lt;/span&gt;..........&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class="MsoNormal"&gt;Define the existing table &lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Bookmark&lt;/span&gt; as a class in &lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;model.py&lt;/span&gt;:-&lt;br /&gt;&lt;span style="font-size: 10pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;class Bookmark(SQLObject):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;_fromDatabase = True # the table schema be loaded from the database&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;BookmarkName = StringCol (dbName="bookmark_name")&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent: 0.5in;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;ProjectId = IntCol(dbName="project_id")&lt;br /&gt;&lt;br /&gt;# &lt;b&gt;dbName &lt;/b&gt;is the name of the column in the database, BookmarkName is the name reference in code.&lt;/span&gt;&lt;br /&gt;&lt;span style=""&gt;                                  &lt;/span&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;..........&lt;/span&gt;&lt;br /&gt;Using the following code in &lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;controller.py &lt;/span&gt;you should be able to retrieve the second record from the &lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Bookmark &lt;/span&gt;table&lt;/p&gt;  &lt;pre&gt;&lt;!--[if !supportEmptyParas]--&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size: 11pt;"&gt;b=Bookmark.select()&lt;br /&gt;print ":&lt;span style=""&gt;  &lt;/span&gt;%s " % b[2].BookmarkName&lt;br /&gt; &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt; &lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt; &lt;!--[endif]--&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-2451753116781450214?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/2451753116781450214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=2451753116781450214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2451753116781450214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/2451753116781450214'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2009/03/connecting-to-existing-database-using.html' title='Connecting to an existing database using TurboGears framework'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6167409060720238089.post-1164010631282806257</id><published>2008-09-03T07:24:00.001-07:00</published><updated>2010-04-10T15:03:32.457-07:00</updated><title type='text'>Chrome Finish</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_v3JuT94f8zI/S8D1HjMotoI/AAAAAAAABAY/5ZbOAmf_cOs/s1600/chrome.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_v3JuT94f8zI/S8D1HjMotoI/AAAAAAAABAY/5ZbOAmf_cOs/s320/chrome.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5458632258429171330" /&gt;&lt;/a&gt;&lt;div&gt;Woke up with sleepy eyes, rubbed them to clear my hazy vision. Opened my laptop and saw my news of the day. Google releases new web browser "Chrome". My mid-week holiday was certainly going to be busy. Putting on my "testing goggles" I started looking for the download link. Google made sure my hunt was easy. The link started downloading a 475 KB file. A web browser setup? 475 KB? Looking at it in disbelief, I let it continue. After all, who knows with Google.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The setup file when clicked started another download and installation process. So that was it. A 475 KB application to download the actual setup. The download failed at least a couple of time. It was disappointing. Few times it simply hung and the other times it returned me some weird exception message. The link on the error dialog, lead me to no help. Some divine intervention and all of a sudden it finished installation. Few clicks for importing favorites, history etc from my darling Firefox and I see my new browser.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There I am, greeted with the new interface which made my screen look larger. The Chrome certainly gives you a lot of web space, since it removes a lot of not-so-frequently used buttons and tool bars. It makes you forget that you are using a web browser. It keeps it simple and means business i.e. web browsing. The sole focus of the Chrome is the web application and not the browser itself.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I was expecting it to load a default homepage on the first run, which is kinda customary for other web browsers, on the contrary I see my recently visited sites and bookmarks nicely laid out. The address bar has the auto-complete feature, so my butter-fingers will get some rest. I was falling for it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Performed a few of my mundane tasks, checking emails, browsing, reading news, blogs, watching videos etc., most of the websites opened visibly fast. I wasn't sure but it did appear to be fast. I read about the technology behind Chrome, it certainly is impressive. It has the new Javascript virtual machine, V8, which is said to be a better solution for rich Web applications. So operations like "drag and drop" which were not very smooth earlier would be a breeze in the Chrome. Each tab is said to work inside a new process, which makes the life of malwares difficult. If a bad Java script was using lot of resources you can simply kill it. The Chrome has an all new task manager. Yes, a task manager(shift+esc) just like the windows to terminate a web application which is using lot of CPU/memory resource. Google has moved up, in this respect by treating each open tab as a different web application. With the Chrome, Web applications will now begin to be treated at par with desktop applications. 'One-tab one-process' also makes me believe, the web browser is a purely multi-threaded application. So, one slow web application should not affect loading the other.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of the cool features, I found was, I could tear a certain tab away from the rest of the tabs. This is particularly useful for some one like me, who doesn't close his tabs during my day. Only when the number comes to about 30-40 open tabs do I think of closing the ones not being used. Now, I can tear away the tabs I would still need(lesser in number), and close the rest(more in number) one-shot.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If I am not wrong the FF introduced the 'open in new tab', similarly the Chrome has a new right click context menu feature, 'Open link in new incognito window'. So my privacy has been taken care of. Anything I open in this window is not saved on the system. This window runs completed isolated from the system.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am contemplating a shift from FF to the Chrome, but it will take a while as I cant do without my darling FF's plug-ins and most important, the Chrome doesn't have a progress bar. How could you guys have missed it? My serious concern is over the amount of data Google would share with the advertisers. Google generates a lot of revenue from ads. I wonder, if they now get to know every site I open from the Chrome. Does it mean I would be spam-ed more? It raises my personal fear of, 'Google will control the world!'. Web search, Social networking, Email system, Document editing, Photo Storage, Video storage, Mobile platform and now a web browser? Whats next, an operating system? &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Keeping all this aside, I would continue to use the Chrome. I am a technology freak. I will continue to use and admire the innovation, as and when it comes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Final verdict, the Chrome has the shine but lacks the finish.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6167409060720238089-1164010631282806257?l=rowsandcolumns.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.google.com/chrome' title='Chrome Finish'/><link rel='replies' type='application/atom+xml' href='http://rowsandcolumns.blogspot.com/feeds/1164010631282806257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6167409060720238089&amp;postID=1164010631282806257' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/1164010631282806257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6167409060720238089/posts/default/1164010631282806257'/><link rel='alternate' type='text/html' href='http://rowsandcolumns.blogspot.com/2008/09/chrome-finish.html' title='Chrome Finish'/><author><name>Harpreet</name><uri>http://www.blogger.com/profile/00383461828045994668</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_v3JuT94f8zI/S8D1HjMotoI/AAAAAAAABAY/5ZbOAmf_cOs/s72-c/chrome.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
