<?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-1626845557003550679</id><updated>2012-01-31T17:28:51.529-08:00</updated><category term='linux'/><category term='mobile'/><category term='location'/><category term='android'/><category term='javascript'/><category term='agile'/><category term='software'/><category term='QA'/><category term='unix'/><category term='map'/><category term='WP7'/><category term='.net'/><category term='network'/><category term='agile offshore'/><category term='eclipse'/><category term='iOS'/><category term='lbs'/><category term='Symbian'/><category term='hardware'/><title type='text'>JohnsonSolutions</title><subtitle type='html'>Simple Solutions for Complex Problems</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-3683826415644749793</id><published>2012-01-02T21:23:00.000-08:00</published><updated>2012-01-12T13:30:07.551-08:00</updated><title type='text'>ptrace: Operation not permitted</title><content type='html'>I got above error when try to use Eclipse CDT to attach an running process for debugging.&lt;br /&gt;&lt;br /&gt;It because of the ptrace protection since Ubuntu 10.10.&lt;br /&gt;&lt;br /&gt;Here is the link to more detail explain&lt;br /&gt;&lt;a href="https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace%20Protection"&gt;https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace%20Protection&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To work around:&lt;br /&gt;first need to enable root account&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&amp;gt;sudo passwd root&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&amp;gt;su&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&amp;gt;echo 0 &amp;gt; /proc/sys/kernel/yama/ptrace_scope&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&amp;gt;exit&lt;/span&gt;&lt;br /&gt;re-disable root account for security reason&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&amp;gt;sudo passwd -dl root&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, it works&lt;br /&gt;&lt;br /&gt;To permanently allow it edit /etc/sysctl.d/10-ptrace.conf and change the line to:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;kernel.yama.ptrace_scope = 0&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-3683826415644749793?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/3683826415644749793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=3683826415644749793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3683826415644749793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3683826415644749793'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2012/01/ptrace-operation-not-permitted.html' title='ptrace: Operation not permitted'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-597929178137484791</id><published>2011-06-20T07:33:00.000-07:00</published><updated>2011-06-20T07:44:24.744-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Git   ---- denied: You cannot push changes not committed by you</title><content type='html'>If you get the PERMISSION DENIED error when try to push to a remote server, check the followings:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The author name and email should be the same as your git profile.&lt;/li&gt;&lt;/ul&gt;Expecially, the author name is &lt;span style="font-weight: bold;"&gt;FULL NAME&lt;/span&gt; of your profile on git server.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If you are using Linux, you also need to setup committer name and email to the same as git profile. otherwise, it will be youid@your_linux_host by default&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;To fix the permission problem:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&gt;export GIT_COMMITTER_NAME="Your Fullname"&lt;br /&gt;&gt;export GIT_COMMITTER_EMAIL="Your Email"&lt;br /&gt;&gt;export GIT_AUTHOR_NAME="Your Fullname"&lt;br /&gt;&gt;export GIT_AUTHOR_EMAIL="Your Email"&lt;br /&gt;&lt;br /&gt;//to back out the commit and index&lt;br /&gt;&gt;git reset HEAD^&lt;br /&gt;//recommit and push again&lt;br /&gt;&gt;git commit&lt;br /&gt;&gt;git push&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-597929178137484791?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/597929178137484791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=597929178137484791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/597929178137484791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/597929178137484791'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2011/06/git-denied-you-cannot-push-changes-not.html' title='Git   ---- denied: You cannot push changes not committed by you'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-2265037688647261096</id><published>2011-06-13T19:59:00.000-07:00</published><updated>2011-06-16T07:39:05.301-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>Tutorial: Developing Windows Phone7 games using XNA</title><content type='html'>&lt;div style="width:425px" id="__ss_8299121"&gt;&lt;strong style="display:block;margin:12px 0 4px"&gt;&lt;a href="http://www.slideshare.net/JohnsonMa/developing-games-for-windows-phone7-using-xna" title="Developing games for Windows Phone7 using XNA"&gt;Developing games for Windows Phone7 using XNA&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse8299121" height="355" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=xnaintro-110613214753-phpapp01&amp;amp;stripped_title=developing-games-for-windows-phone7-using-xna&amp;amp;userName=JohnsonMa"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed name="__sse8299121" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=xnaintro-110613214753-phpapp01&amp;amp;stripped_title=developing-games-for-windows-phone7-using-xna&amp;amp;userName=JohnsonMa" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="padding:5px 0 12px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/JohnsonMa"&gt;JohnsonMa&lt;/a&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/1626845557003550679-2265037688647261096?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/2265037688647261096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=2265037688647261096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/2265037688647261096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/2265037688647261096'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2011/06/developing-games-for-windows-phone7.html' title='Tutorial: Developing Windows Phone7 games using XNA'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-208309154307760298</id><published>2011-05-24T23:25:00.000-07:00</published><updated>2011-06-16T07:13:20.840-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><category scheme='http://www.blogger.com/atom/ns#' term='iOS'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>Forecast on Windows Phone market share and revenue in 2013</title><content type='html'>The global mobile phone market has changed, since the day Apple enters the market on January 9, 2007.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-0MhRsxwbLRc/TdyiYiv29lI/AAAAAAAACNI/48Kqz_MqXEA/s1600/400px-Smart_phone_market_share.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/-0MhRsxwbLRc/TdyiYiv29lI/AAAAAAAACNI/48Kqz_MqXEA/s320/400px-Smart_phone_market_share.jpg" alt="" id="BLOGGER_PHOTO_ID_5610537778324895314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In Q4, 2007, Nokia has more than 50% of global market share on smart phone with SymbianOS.&lt;br /&gt;&lt;br /&gt;By Q1 2011, Google's Android has more than 50% of global market share, and Apple's iOS has 25% share.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-tZIfOIBC7GU/TdyjBwpZ_7I/AAAAAAAACNQ/BT7MFgLnuNQ/s1600/226339-smartphone-recent_original.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 286px;" src="http://3.bp.blogspot.com/-tZIfOIBC7GU/TdyjBwpZ_7I/AAAAAAAACNQ/BT7MFgLnuNQ/s320/226339-smartphone-recent_original.png" alt="" id="BLOGGER_PHOTO_ID_5610538486430564274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Furthermore, Android grows from zero to 50% market share in just two and half years. This kind of technology evolution and adoption never happened in such a short time before.&lt;br /&gt;&lt;br /&gt;With Microsoft and Nokia works together later this year, what are market shares in 2013?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-ZEyFZXRd9zc/TdysS4RtIMI/AAAAAAAACNY/zVgNJEjON0s/s1600/2013_mobile_marketshare.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 290px;" src="http://3.bp.blogspot.com/-ZEyFZXRd9zc/TdysS4RtIMI/AAAAAAAACNY/zVgNJEjON0s/s320/2013_mobile_marketshare.PNG" alt="" id="BLOGGER_PHOTO_ID_5610548676141064386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I think what happened to Symbian in the past two years, will also happen to RIM. Microsoft and Nokia will also get some market share from Android as well. Also, from operators point of view, they don't like that internet giant dominating the mobile echo system.&lt;br /&gt;&lt;br /&gt;According to some forecast, there will be 80&lt;span&gt;&lt;span class="content"&gt;0 million units&lt;/span&gt;&lt;/span&gt; smart phone shipped in 2013.  In that case, it will be 200 million Windows Phone, plus $15 per unit, the revenue for Microsoft will be 3billon dollar.&lt;br /&gt;&lt;br /&gt;However, in fiscal year 2010,  Microsoft recorded $62.5 billion of revenue and $18.8 billion of net income.  If my forecast is correct, the revenue from phone will only be less than 5% of 2010's annual revenue.&lt;br /&gt;&lt;br /&gt;Seems Microsoft needs to do more to boost the revenue from smart-phone area. Buying smartphone segment from Nokia to create a counterpart with Apple's IPhone? It do make sense, since XBox is doing great. why not create a XPhone then?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-208309154307760298?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/208309154307760298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=208309154307760298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/208309154307760298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/208309154307760298'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2011/05/forecast-on-windows-phone-market-share.html' title='Forecast on Windows Phone market share and revenue in 2013'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-0MhRsxwbLRc/TdyiYiv29lI/AAAAAAAACNI/48Kqz_MqXEA/s72-c/400px-Smart_phone_market_share.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-733762895310832863</id><published>2011-05-19T21:07:00.000-07:00</published><updated>2011-05-19T21:19:24.417-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Script to install Apache, PHP and MySql on Ubuntu</title><content type='html'>Here is a shell script i wrote to download and install LAMP on Ubuntu.&lt;br /&gt;&lt;div nowrap="true"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;echo "current OS information:"&lt;br /&gt;cat /etc/lsb-release&lt;br /&gt;&lt;br /&gt;echo "install patches"&lt;br /&gt;sudo apt-get install update&lt;br /&gt;&lt;br /&gt;echo  "install apache2 and php5..."&lt;br /&gt;sudo apt-get install apache2 php5 libapache2-mod-php5&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo "create test.php at /var/www/test.php"&lt;br /&gt;echo "&lt;?php phpinfo(); ?&gt;" | sudo tee /var/www/test.php&lt;br /&gt;&lt;br /&gt;echo "restart apache2"&lt;br /&gt;sudo /etc/init.d/apache2 restart&lt;br /&gt;&lt;br /&gt;echo "start firefox to check the test page"&lt;br /&gt;firefox "http://localhost/test.php" &amp;&lt;br /&gt;&lt;br /&gt;echo "install mysql"&lt;br /&gt;sudo apt-get install mysql-server mysql-client php5-mysql&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo "install PhpMyAdmin"&lt;br /&gt;sudo apt-get install phpmyadmin&lt;br /&gt;&lt;br /&gt;sudo echo "Include /etc/phpmyadmin/apache.conf" &gt;&gt; /etc/apache2/apache2.conf&lt;br /&gt;sudo /etc/init.d/apache2 restart&lt;br /&gt;&lt;br /&gt;firefox "http://localhost/phpmyadmin" &amp;&lt;br /&gt;&lt;br /&gt;#need to set the default character to gb2312 to support chinese character&lt;br /&gt;#mysql&gt; set names 'gb2312'&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;Strong&gt;Enjoy!&lt;/Strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-733762895310832863?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/733762895310832863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=733762895310832863' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/733762895310832863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/733762895310832863'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2011/05/script-to-install-apache-php-and-mysql.html' title='Script to install Apache, PHP and MySql on Ubuntu'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-6390533629618943750</id><published>2008-12-14T07:09:00.000-08:00</published><updated>2011-05-19T21:40:12.092-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QA'/><title type='text'>Software Testing MindMap</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-4y_Zhb2ezJI/TdXwm7q8aEI/AAAAAAAACMc/rurEiUMRLf8/s1600/testing_mindset.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 251px;" src="http://3.bp.blogspot.com/-4y_Zhb2ezJI/TdXwm7q8aEI/AAAAAAAACMc/rurEiUMRLf8/s320/testing_mindset.png" alt="" id="BLOGGER_PHOTO_ID_5608653462603327554" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Software Testing is not an easy topic, because of mass considerations.&lt;br /&gt;&lt;br /&gt;So I just created a mindmap for software testing to cover most perspectives around testing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-6390533629618943750?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/6390533629618943750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=6390533629618943750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6390533629618943750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6390533629618943750'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2008/12/software-testing-mindmap.html' title='Software Testing MindMap'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-4y_Zhb2ezJI/TdXwm7q8aEI/AAAAAAAACMc/rurEiUMRLf8/s72-c/testing_mindset.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-5955564793176496023</id><published>2008-11-07T18:50:00.000-08:00</published><updated>2011-05-19T21:31:10.639-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>Reasons for project failure</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-zx2rA_VlL98/TdXtRud2W0I/AAAAAAAACMU/jPpmnuXFYTw/s1600/failure.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 129px; height: 88px;" src="http://4.bp.blogspot.com/-zx2rA_VlL98/TdXtRud2W0I/AAAAAAAACMU/jPpmnuXFYTw/s200/failure.jpg" alt="" id="BLOGGER_PHOTO_ID_5608649799746607938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;During the past 15 years, i have worked on various projects. I must say that some projects are not as successful as expected.&lt;br /&gt;&lt;br /&gt;Here are most common reasons for project fail:&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight: bold;font-size:85%;" &gt;Project Initiation &amp;amp; Planning Issues&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;  Unclear or unconvincing business case&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;         Insufficient or non-existent approval process&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;         Poor definition of project scope and objectives&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;         Insufficient time or money given to project&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;         Lack of business ownership and accountability&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;         Insufficient and/or over-optimistic planning&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;         Poor estimating&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;         Long or unrealistic timescales; forcing project end dates despite best estimates&lt;/li&gt;&lt;/ul&gt;         Lack of thoroughness and diligence in the project startup phases&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight: bold;"&gt;Technical &amp;amp; Requirements Issues&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;         Lack of user involvement (resulting in expectation issues)&lt;/li&gt;&lt;/ul&gt;         Product owner unclear or consistently not available&lt;br /&gt;       Scope creep; lack of adequate change control&lt;br /&gt;       Poor or no requirements definition; incomplete or changing requirements&lt;br /&gt;       Wrong or inappropriate technology choices&lt;br /&gt;       Unfamiliar or changing technologies; lack of required technical skills&lt;br /&gt;       Integration problems during implementation&lt;br /&gt;       Poor or insufficient testing before go-live&lt;br /&gt;       Lack of QA for key deliverables&lt;br /&gt;       Long and unpredictable bug fixing phase at end of project&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight: bold;"&gt;Stakeholder Management &amp;amp; Team Issues&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;     * Insufficient attention to stakeholders and their needs; failure to manage expectations&lt;br /&gt;     * Lack of senior management/executive support; project sponsors not 100% committed to the objectives; lack understanding of the project and not actively involved&lt;br /&gt;     * Inadequate visibility of project status&lt;br /&gt;     * Denial adopted in preference to hard truths&lt;br /&gt;     * People not dedicated to project; trying to balance too many different priorities&lt;br /&gt;     * Project team members lack experience and do not have the required skills&lt;br /&gt;     * Team lacks authority or decision making ability&lt;br /&gt;     * Poor collaboration, communication and teamwork&lt;br /&gt;&lt;br /&gt; Project Management Issues&lt;br /&gt;&lt;br /&gt;     * No project management best practices&lt;br /&gt;     * Weak ongoing management; inadequately trained or inexperienced project managers&lt;br /&gt;     * Inadequate tracking and reporting; not reviewing progress regularly or diligently enough&lt;br /&gt;     * Ineffective time and cost management&lt;br /&gt;     * Lack of leadership and/or communication skills&lt;br /&gt;&lt;br /&gt;&lt;Strong&gt;Agile Process can cure some of the problems, but not all&lt;/Strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-5955564793176496023?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/5955564793176496023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=5955564793176496023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/5955564793176496023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/5955564793176496023'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2008/11/reasons-for-project-failure.html' title='Reasons for project failure'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-zx2rA_VlL98/TdXtRud2W0I/AAAAAAAACMU/jPpmnuXFYTw/s72-c/failure.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-1942030362928989357</id><published>2008-09-27T03:34:00.000-07:00</published><updated>2011-06-13T20:04:19.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>big-endian UTF16 or little-endian UTF16?</title><content type='html'>I was working on generating configuration file for mobile device on PC today.&lt;br /&gt;From the example, I can tell that it is using two bytes Unicode.&lt;br /&gt;Thus I am using 'UTF-16' encoding for InputStreamReader and OutputStreamWriter.&lt;br /&gt;&lt;br /&gt;However, it seems that the server running on mobile device doesn't like my configuration file.&lt;br /&gt;By looking into the example and generated files, I notice that it was using little-endian UTF-16.&lt;br /&gt;So I changed to use the following statement to write content in little-endian UTF16 encoding.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;OutputStreamWriter out = new OutputStreamWriter(&lt;br /&gt;            new FileOutputStream(iniFile), "UTF-16LE");&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here are Unicode table for reference:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="2"&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;th&gt;Encoding&lt;/th&gt;&lt;br /&gt;&lt;th&gt;File initial signature&lt;/th&gt;&lt;br /&gt;&lt;th&gt;Java encoding name&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;UTF 8&lt;/td&gt;&lt;br /&gt;&lt;td&gt;FF BB BF&lt;/td&gt;&lt;br /&gt;&lt;td&gt;UTF8&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;UTF 16 Big-Endian&lt;/td&gt;&lt;br /&gt;&lt;td&gt;FE FF&lt;/td&gt;&lt;br /&gt;&lt;td&gt;UTF16-BE&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;UTF 16 Little-Endian&lt;/td&gt;&lt;br /&gt;&lt;td&gt;FF FE &lt;/td&gt;&lt;br /&gt;&lt;td&gt;UTF16-LE&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-1942030362928989357?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/1942030362928989357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=1942030362928989357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1942030362928989357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1942030362928989357'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2008/09/big-endian-utf16-or-little-endian-utf16.html' title='big-endian UTF16 or little-endian UTF16?'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-7521477398105671472</id><published>2008-08-26T23:00:00.000-07:00</published><updated>2008-08-27T02:15:33.787-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QA'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>AntSys -- lightweight and powerful system test framwork</title><content type='html'>&lt;h3&gt;&lt;strong&gt;&lt;a href="http://code.google.com/p/antsys/"&gt;AntSys&lt;/a&gt;&lt;/strong&gt;&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Why write AntSys&lt;/h1&gt;&lt;br /&gt;I was looking for a well-know and easy to use open source tool for our system testing.&lt;br /&gt;My requirements are:&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Test Model, provides the concept of test suite, test case and test result&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Test Method: launch command line application, check the outputs. which means should be easy to&lt;br /&gt;* configure parameters&lt;br /&gt;* setup environment variables&lt;br /&gt;* able to redirect stand input, output, and error&lt;br /&gt;* get back the process exit code&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Test Assertions: should built-in with the following assertions:&lt;br /&gt;* check if output file is created as expect&lt;br /&gt;* check the content of output file against expected file.&lt;br /&gt;* check process exit code&lt;br /&gt;* check the content of system.ouput.&lt;br /&gt;* check the content of system.error.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Test Result:It should generate XML and HTML report&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Test Language/API: the test language should provide rich API to help users write test case:&lt;br /&gt;such as create/delete directory, copy files, and even xml processing. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Extensibility: the test lanauge can be extended by end users. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;Although the requirements are quite generic, I can't find a well-known OSS project. Most companies are&lt;br /&gt;using their own home-grow system test framework.&lt;br /&gt;Let's create a OSS tool to solve this problem then!&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;What is AntSys&lt;/h1&gt;&lt;br /&gt;AntSys is a lightweight and powerful system test framwork built on top of Ant.&lt;br /&gt;It is designed to be easy to work and user can create system/function test cases in xml file without writing single line of code.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;AntSys Tasks&lt;/h2&gt;&lt;br /&gt;AntSys provides the following Ant tasks to write a system test:&lt;br /&gt;&lt;li&gt;tastsuite: is used to aggregate tests into groups of test cases that should be run together. &lt;/li&gt;&lt;br /&gt;&lt;li&gt;testcase: is a set of conditions under which a tester will determine if a requirement or use case upon an application is partially or fully satisfied.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;assertfileexist: check if the output file is exist as expected.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;assertfileequal: check the content of output file is the same as expected test result.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;assertfilegrep: check the content of output file contains expected string defined in regular expression&lt;br /&gt;&lt;/li&gt;&lt;li&gt;assertpropertyequals: check the ant property against expected value. This is offened used after 'exec' task to check the process exit code.&lt;/li&gt;&lt;br /&gt;&lt;h2&gt;Example test script&lt;/h2&gt;&lt;br /&gt;Here is one example of test script to test echo command.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;project name=&amp;quot;antsys-systemtest&amp;quot; basedir=&amp;quot;.&amp;quot; default=&amp;quot;systemtest&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;target name=&amp;quot;systemtest&amp;quot;&amp;gt;&lt;br /&gt;          &amp;lt;!-- this test suite is using AntSys to test echo shell commands --&amp;gt; &lt;br /&gt;         &amp;lt;testsuite name=&amp;quot;CommandTestSuite&amp;quot; failonerror=&amp;quot;false&amp;quot; todir=&amp;quot;./report&amp;quot; htmlreport=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;              &amp;lt;!-- test echo command output --&amp;gt;&lt;br /&gt;              &amp;lt;testcase name=&amp;quot;echo_test&amp;quot;&amp;gt;&lt;br /&gt;                  &amp;lt;!-- create working dir for testing --&amp;gt;&lt;br /&gt;                  &amp;lt;mkdir dir=&amp;quot;work&amp;quot;/&amp;gt;&lt;br /&gt;                  &amp;lt;!-- use echo to create a test file --&amp;gt;&lt;br /&gt;                  &amp;lt;exec vmlauncher=&amp;quot;false&amp;quot; executable=&amp;quot;echo&amp;quot; output=&amp;quot;work/test.dat&amp;quot;&amp;gt;&lt;br /&gt;                       &amp;lt;arg value=&amp;quot;testmessage&amp;quot;/&amp;gt;&lt;br /&gt;                  &amp;lt;/exec&amp;gt;&lt;br /&gt;                  &amp;lt;!-- check the file exists or not --&amp;gt;&lt;br /&gt;                  &amp;lt;assertfileexist file=&amp;quot;./work/test.dat&amp;quot; errormsg=&amp;quot;should generate test.dat&amp;quot; /&amp;gt;&lt;br /&gt;                  &amp;lt;assertfilegrep file=&amp;quot;./work/test.dat&amp;quot; regexp=&amp;quot;^test&amp;quot; errormsg=&amp;quot;should start with test&amp;quot; /&amp;gt;&lt;br /&gt;                  &amp;lt;assertfileequal expectedfile=&amp;quot;./work/test.dat&amp;quot; actualfile=&amp;quot;./work/test.dat&amp;quot;/&amp;gt;&lt;br /&gt;                  &amp;lt;delete dir=&amp;quot;work&amp;quot;/&amp;gt;&lt;br /&gt;              &amp;lt;/testcase&amp;gt;&lt;br /&gt;   &amp;lt;/target&amp;gt;&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-7521477398105671472?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/7521477398105671472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=7521477398105671472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/7521477398105671472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/7521477398105671472'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2008/08/antsys-lightweight-and-powerful-system.html' title='AntSys -- lightweight and powerful system test framwork'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-3781429091429792395</id><published>2008-06-29T06:33:00.000-07:00</published><updated>2008-08-27T02:16:02.377-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Something big is right around the corner!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sC2LOdJbjPE/SGeP-PFSsvI/AAAAAAAAA5Y/STqMd8VOUkc/s1600-h/nokia_connecting_people.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: center; cursor: pointer;" src="http://4.bp.blogspot.com/_sC2LOdJbjPE/SGeP-PFSsvI/AAAAAAAAA5Y/STqMd8VOUkc/s320/nokia_connecting_people.png" alt="" id="BLOGGER_PHOTO_ID_5217296992695399154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sC2LOdJbjPE/SGeP-dL-csI/AAAAAAAAA5g/-XAMMZrggzc/s1600-h/symbianos_03.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sC2LOdJbjPE/SGeP-dL-csI/AAAAAAAAA5g/-XAMMZrggzc/s320/symbianos_03.gif" alt="" id="BLOGGER_PHOTO_ID_5217296996481528514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Symbian Foundation announcement this week will change the business strategy&lt;br /&gt;for mobile space in the following years.&lt;br /&gt;&lt;br /&gt;Android from Google is one big part of the reason for Nokia to pay 400M to buy Symbian and donate it to open source.&lt;br /&gt;Thinking about the Symbian/Nokia relation, this is the milestone in the use of open source by large tech companies like Nokia,&lt;br /&gt;&lt;br /&gt;Nine years ago, when i worked for Nokia, I found it is a company always ready to big change. I really respect to that.&lt;br /&gt;&lt;br /&gt;However, things are not clear to some related parties yet:&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-weight: bold; color: rgb(51, 102, 255);"&gt;&lt;li&gt;Employee&lt;/li&gt;&lt;/ul&gt;In such big move to open source, Some teams in Symbian and Nokia will be cut (like what happened for UIQ).&lt;br /&gt;some time will shrink to fit the community driven mobel (How those managers find there position in community&lt;br /&gt;model?). &lt;span style="font-weight: bold; font-style: italic; color: rgb(204, 0, 0);"&gt;As a symbianer, Do i want to wait for the special bonus?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="color: rgb(51, 102, 255);"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Microsoft&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;M$ will be the only company, who charge $ for mobile phone vendor. Let's see what will happen for them.&lt;br /&gt;&lt;br /&gt;&lt;ul style="color: rgb(51, 102, 255);"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Apple&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Will iPhone be the most popular mobile device like iPod did for mp3? Can the company fight with foundation&lt;br /&gt;supported by major vendors and operators?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-3781429091429792395?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/3781429091429792395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=3781429091429792395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3781429091429792395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3781429091429792395'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2008/06/something-big-is-right-around-corner.html' title='Something big is right around the corner!'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sC2LOdJbjPE/SGeP-PFSsvI/AAAAAAAAA5Y/STqMd8VOUkc/s72-c/nokia_connecting_people.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-6427992360074657482</id><published>2008-06-23T23:50:00.000-07:00</published><updated>2011-06-13T20:04:30.876-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>Symbian Fundation</title><content type='html'>Big news again today.&lt;br /&gt;&lt;br /&gt;Nokia to acquire Symbian Limited to enable evolution of the leading open mobile platform&lt;br /&gt;June 24, 2008&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Visionary move embraces openness and accelerates innovation &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.symbianfoundation.org/"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-6427992360074657482?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/6427992360074657482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=6427992360074657482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6427992360074657482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6427992360074657482'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2008/06/symbian-fundation.html' title='Symbian Fundation'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-8556666083283150953</id><published>2008-02-17T19:32:00.000-08:00</published><updated>2008-02-17T19:40:55.106-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Config Idle Timeout for openSSH Fedora</title><content type='html'>With some ssh servers, you can config the time out in /etc/ssh/sshd_config like&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;IdleTimeOut=10m&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; However, the openssh shipped with Fedora doesn't support this option.&lt;br /&gt;Two workarounds are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Apply openssh watchdog patch&lt;/li&gt;&lt;/ul&gt;http://www.sc.isc.tohoku.ac.jp/~hgot/sources/openssh-watchdog.html&lt;br /&gt;&lt;ul&gt;&lt;li&gt;use TMOUT for shell&lt;/li&gt;&lt;/ul&gt;In /etc/profile&lt;br /&gt;#set the idle timeout for ssh to 10minutes&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;TMOUT=600&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;readonly TMOUT&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;export TMOUT&lt;/span&gt;&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Notice here, need to set the TMOUT to readonly, otherwise users can override it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-8556666083283150953?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/8556666083283150953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=8556666083283150953' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8556666083283150953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8556666083283150953'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2008/02/config-idle-timeout-for-openssh-fedora.html' title='Config Idle Timeout for openSSH Fedora'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-4806105273454295567</id><published>2008-01-31T18:31:00.001-08:00</published><updated>2011-06-16T07:15:50.843-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='map'/><category scheme='http://www.blogger.com/atom/ns#' term='location'/><category scheme='http://www.blogger.com/atom/ns#' term='lbs'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>On The Road -- Google Map Mashup</title><content type='html'>Just Created a google map mashup page to show those places i have visited.&lt;br /&gt;The page is hosted on google &lt;a href="http://multiroute.googlepages.com/ajaxGoogleMapsMashup.html"&gt;http://multiroute.googlepages.com/ajaxGoogleMapsMashup.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The draft version only show the list of places in the right side, and show marker and zoom in once you click the location.&lt;br /&gt;&lt;br /&gt;Plan to add more stuff when have time:&lt;br /&gt;&lt;li&gt;polish the site&lt;br /&gt;&lt;/li&gt;&lt;li&gt;show to pictures for each trip (Already in Picasa Web Albums)&lt;/li&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-4806105273454295567?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/4806105273454295567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=4806105273454295567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4806105273454295567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4806105273454295567'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2008/01/google-map-mashup.html' title='On The Road -- Google Map Mashup'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-4161557890924715531</id><published>2008-01-24T17:50:00.000-08:00</published><updated>2008-01-24T18:07:27.963-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>SOA Trends</title><content type='html'>&lt;center&gt;&lt;strong&gt;&lt;font size="1" color="blue"&gt;SOA Trend on the web&lt;/font&gt;&lt;/strong&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sC2LOdJbjPE/R5lA9WI4IFI/AAAAAAAAAuE/fhLx7RPROCo/s1600-h/soa_trend.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_sC2LOdJbjPE/R5lA9WI4IFI/AAAAAAAAAuE/fhLx7RPROCo/s320/soa_trend.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5159226270788624466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;strong&gt;&lt;font size="1" color="blue"&gt;Trends compare between SOAP/REST&lt;/font&gt;&lt;/strong&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sC2LOdJbjPE/R5lCbGI4IGI/AAAAAAAAAuM/8Mtk9tK7HDA/s1600-h/soap_rest.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_sC2LOdJbjPE/R5lCbGI4IGI/AAAAAAAAAuM/8Mtk9tK7HDA/s320/soap_rest.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5159227881401360482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Looks like people are more favorite REST than SOAP now. interesting...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-4161557890924715531?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/4161557890924715531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=4161557890924715531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4161557890924715531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4161557890924715531'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2008/01/soa-trends.html' title='SOA Trends'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sC2LOdJbjPE/R5lA9WI4IFI/AAAAAAAAAuE/fhLx7RPROCo/s72-c/soa_trend.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-1989506038906430487</id><published>2008-01-08T06:46:00.000-08:00</published><updated>2008-01-08T06:50:33.616-08:00</updated><title type='text'>localization360</title><content type='html'>&lt;Strong&gt;&lt;a href="http://www.localization360.com"&gt;www.localization360.com&lt;/a&gt;&lt;/Strong&gt;&lt;br /&gt;&lt;br /&gt;A good portal site for localization industry. Keep me up to date with the industry news, blogs, hot  topics, jobs and resources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-1989506038906430487?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/1989506038906430487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=1989506038906430487' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1989506038906430487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1989506038906430487'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2008/01/localization360.html' title='localization360'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-6610486274893815127</id><published>2007-12-20T19:26:00.000-08:00</published><updated>2007-12-20T19:41:32.132-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Open Source "Best Practices"</title><content type='html'>Check out the &lt;a href="http://www.open.collab.net/scdocs/bestpractices.html.en"&gt;Best Practices for Open Source project&lt;/a&gt; from collab.net.&lt;br /&gt;&lt;br /&gt;Most of the "Best Practices" are also followed by in-house agile development team.&lt;br /&gt;Such as:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Technical Communication&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Version Control, Document Management, and Distribution&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Build and Test Management&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Project Management&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Knowledge Management&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;I can't agree more that open source products have achieved a remarkable degree of quality with very low cost because of the following reason.&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;   &lt;li&gt;  Developers are self-selected by their interest and knowledge of the application domain.&lt;/li&gt;&lt;br /&gt;   &lt;li&gt; Requirements are tacitly understood by developers who are themselves users of the software. &lt;/li&gt;&lt;br /&gt;   &lt;li&gt; Technical communications (including bug reports) are conducted in public. The public nature of open source helps developers take pride in their successes and think twice before releasing faulty code. &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-6610486274893815127?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/6610486274893815127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=6610486274893815127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6610486274893815127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6610486274893815127'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/12/open-source-best-practices.html' title='Open Source &quot;Best Practices&quot;'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-8482577686678955712</id><published>2007-12-15T05:15:00.000-08:00</published><updated>2007-12-18T18:49:01.972-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Installed Ubuntu 6.1 on my new flash drive today</title><content type='html'>Installed Ubuntu linux on flashdrive (2G) today.&lt;br /&gt;Thus I can still keep my Fedora on harddisk, and switch back later.&lt;br /&gt;&lt;br /&gt;Even better, I can boot and run the popular Ubuntu anywhere as long as i plug-in the flash driver.&lt;br /&gt;&lt;br /&gt;What is the difference before Operation System and application software then?  &lt;br /&gt;&lt;br /&gt;The more we use web apps, such as google doc, salesforce, the less we care about Operation System.&lt;br /&gt;&lt;br /&gt;Here is the &lt;a href="http://www.debuntu.org/how-to-install-ubuntu-linux-on-usb-bar-p2"&gt;link&lt;/a&gt; to follow&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-8482577686678955712?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/8482577686678955712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=8482577686678955712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8482577686678955712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8482577686678955712'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/12/installed-ubuntu-61-on-my-new-flash.html' title='Installed Ubuntu 6.1 on my new flash drive today'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-5567707541554605647</id><published>2007-12-10T06:47:00.000-08:00</published><updated>2007-12-18T18:49:29.282-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Google doc has everything except macro</title><content type='html'>I have created a spreadsheet for my wife's portfolio today.&lt;br /&gt;The spreadsheet has three sections:&lt;br /&gt;1. US Stock&lt;br /&gt;It is dynamic table, since i can use googlefinance() cell function to retrieve real time quote for us stocks&lt;br /&gt;&lt;br /&gt;2. Mainland Fund&lt;br /&gt;Keep tracking the fund investment in china.&lt;br /&gt;However, the googlefinance function doesn't support get stock/fund price for hongkong or china market yet.&lt;br /&gt;&lt;br /&gt;3. Bank Investment.&lt;br /&gt;Bank money market account.&lt;br /&gt;&lt;br /&gt;I feel that google doc is really handy. It allows me to finish this complicated document for less than an hour. What is the most wanted feature for me then?&lt;br /&gt;Macro! Macro! Macro!&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;iframe width='500' height='300' frameborder='0' src='http://spreadsheets.google.com/pub?key=pEcXFyYpIjPfaM8NhUEmmWg&amp;output=html&amp;gid=6&amp;single=true&amp;widget=true'&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-5567707541554605647?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/5567707541554605647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=5567707541554605647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/5567707541554605647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/5567707541554605647'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/12/google-doc-has-everything-except-macro.html' title='Google doc has everything except macro'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-8651462492637542809</id><published>2007-12-06T01:18:00.000-08:00</published><updated>2007-12-18T18:49:42.164-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>cannot restore segment prot after reloc: Permission denied</title><content type='html'>That is SELinux policy problem.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;System -&gt; Administration -&gt; Security Level and Firewall -&gt; SELinux Tab. Change&lt;br /&gt;&lt;strong&gt;"Enforce"&lt;/strong&gt; to &lt;strong&gt;"Permisive"&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Or we can config to only allow this policy&lt;br /&gt;&lt;span style="font-style:italic;"&gt;System -&gt; Administration -&gt; Security Level and Firewall-&gt; SELinux tab -&gt;Modify SELinux Policy -&gt;Compatibility -&gt; &lt;strong&gt;Allow the use of shared libraries with Text Relocation &lt;/strong&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/1626845557003550679-8651462492637542809?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/8651462492637542809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=8651462492637542809' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8651462492637542809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8651462492637542809'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/12/cannot-restore-segment-prot-after-reloc.html' title='cannot restore segment prot after reloc: Permission denied'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-8611509874878969719</id><published>2007-12-02T17:36:00.000-08:00</published><updated>2007-12-18T18:49:57.639-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>PHP tempalte +  CSS = new website in one day</title><content type='html'>Just created a new website last night. How can i do that in one day? Here is the answer:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;CSS:&lt;/strong&gt;Separate the presentation with content by using CSS stylesheet &lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;PHP template:&lt;/strong&gt;Define website structure using PHP template --all the headers, footer, main menu, sidebar...etc are added by php include&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;Contents:&lt;/strong&gt;the contents dir will only keep clean page content without any presentation, and site structure. &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-8611509874878969719?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/8611509874878969719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=8611509874878969719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8611509874878969719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8611509874878969719'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/12/php-tempalte-css-new-website-in-one-day.html' title='PHP tempalte +  CSS = new website in one day'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-7691283561735581547</id><published>2007-11-16T01:29:00.000-08:00</published><updated>2007-12-18T18:50:15.757-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>javascript include workaround</title><content type='html'>While i am working on a server side javascript framework, i realize that javascript doesn't support include. that means, you can't directly include another javascript.&lt;br /&gt;&lt;br /&gt;If you are write web application, this can be done by&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;document.write('&amp;lt;script language=&amp;quot;javascript&amp;quot; src=&amp;quot;' + baseHref &lt;br /&gt;+ 'variables.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, i want to separate my javascripts into libraries, and called on the server side.&lt;br /&gt;In the end, i write a include function as work around.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;usage:&lt;/span&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;...&lt;br /&gt;var includes = "";&lt;br /&gt;...&lt;br /&gt; include("another.js");&lt;br /&gt; eval(includes);&lt;br /&gt; includes = "";&lt;br /&gt;...&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;include function:&lt;/span&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;function include(filename){&lt;br /&gt;&lt;br /&gt;      length = filename.length;&lt;br /&gt;&lt;br /&gt;      if (filename.indexOf(".js") &lt; 0) {&lt;br /&gt;            filename = filename + ".js";&lt;br /&gt;       }&lt;br /&gt;      reader  = new java.io.BufferedReader(new java.io.FileReader(filename));&lt;br /&gt;      while((chunkread = reader.readLine()) != null)  {&lt;br /&gt;      includes = includes + chunkread + "\n";&lt;br /&gt;      }&lt;br /&gt;      reader.close();&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-7691283561735581547?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/7691283561735581547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=7691283561735581547' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/7691283561735581547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/7691283561735581547'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/11/javascript-include-workaround.html' title='javascript include workaround'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-6902406796953588699</id><published>2007-10-31T06:11:00.000-07:00</published><updated>2007-12-18T18:50:15.757-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>How to solve the connection refuse error for php script on Linux</title><content type='html'>I am trying to use Magpie RSS parser to parse RSS feed in my PHP scripts today. However, I always got 'unable to connect to www.google.com:80 (Permission denied)' error messages.&lt;br /&gt;&lt;br /&gt;In php.ini, the &lt;span style="font-weight:bold;"&gt;allow_url_fopen&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt; is set to on.&lt;br /&gt;Then it must has something to do with my Apache or network configurations.&lt;br /&gt;&lt;br /&gt;After fighting for one hour, I finally found the problem that it was disabled by my network policy.&lt;br /&gt;To fix this, &lt;span style="font-weight:bold;"&gt;Desktop &gt; System &gt; Administration &gt; Security Level &gt; SELinux &gt; httpd &gt; &lt;font color="blue"&gt;check&lt;/font&gt; &lt;span style="font-style:italic;"&gt;the HTTPD scripts to connect to the network&lt;/span&gt;. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-6902406796953588699?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/6902406796953588699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=6902406796953588699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6902406796953588699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6902406796953588699'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/10/how-to-solve-connection-refuse-error.html' title='How to solve the connection refuse error for php script on Linux'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-1707986027213397742</id><published>2007-09-27T19:50:00.000-07:00</published><updated>2007-12-18T18:51:06.188-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Building auto-translator based on google translate API (3)</title><content type='html'>Finished &lt;a href="http://eobjectsoft.com/product/productTranslate.htm"&gt;the ETranslator plugin&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Since machine translation is getting more mature year over year, it can be used for localization vendors to cut the translation cost.&lt;br /&gt;Even more, if we can mash-up related technologies together, we can create &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&lt;br /&gt;Interpreter Robot&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-style: italic;"&gt;Speech-to-Text, to input English&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-style: italic;"&gt;machine translation, to translate to Franch&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-style: italic;"&gt;Text-to-Speech, to speak out in Franch&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-1707986027213397742?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/1707986027213397742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=1707986027213397742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1707986027213397742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1707986027213397742'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/09/building-auto-translator-based-on.html' title='Building auto-translator based on google translate API (3)'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-2361579212437619492</id><published>2007-08-23T00:26:00.000-07:00</published><updated>2007-08-23T00:32:06.495-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>How to find out which process is listening on a port</title><content type='html'>for example, we want to find out which process is running on port 8005&lt;br /&gt;&lt;li&gt;First, use the following command to find if the port is is use or not&lt;br /&gt;&lt;span style="font-style: italic;"&gt;netstat -an |grep 8005&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Then, use the following command to find which process is using the port&lt;br /&gt;&lt;span style="font-style: italic;"&gt;fuser -n tcp 8005&lt;/span&gt;&lt;br /&gt;the return will be something like '8005/tcp:             9113'. &lt;br /&gt;it shows pid.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;After that, we can find the full process information.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ps -ef |grep 9113&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In the end. I wrote a script to put all those steps together&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:180%;" &gt;ps_port.sh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);font-size:130%;" &gt;#!/bin/sh&lt;br /&gt;status=`netstat -an |grep $1`&lt;br /&gt;if [ "$status" == "" ]; then&lt;br /&gt;   echo "port $1 is free"&lt;br /&gt;   exit&lt;br /&gt;fi&lt;br /&gt;ps -ef |grep `fuser -n tcp $1`&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-2361579212437619492?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/2361579212437619492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=2361579212437619492' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/2361579212437619492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/2361579212437619492'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/08/how-to-find-out-which-process-is.html' title='How to find out which process is listening on a port'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-2388492828936130074</id><published>2007-08-14T23:25:00.000-07:00</published><updated>2007-08-14T23:41:45.622-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Setup Outlook Mobile for Gmail account</title><content type='html'>Just got a smart phone with windows mobile 5 installed. &lt;br /&gt;It comes with Intel 520MHz cpu and 640*480 VGA.&lt;br /&gt;&lt;br /&gt;Here are the steps to setup Outlook Mobile for my Gmail account on windows mobile.&lt;br /&gt;1. Select to create new Outlook E-mail&lt;br /&gt;2. E-mail Setup (1/4)&lt;br /&gt;   Enter e-mail address: you@gmail.com&lt;br /&gt;3. E-mail Setup (2/4)&lt;br /&gt;   User Infomration&lt;br /&gt;   Your name: Johnson&lt;br /&gt;   User name:you@gmail.com&lt;br /&gt;   password: you_gmail_password&lt;br /&gt;4. E-mail Setup(3/4)&lt;br /&gt;   Account Type: select Pop3&lt;br /&gt;5. E-mail Setup(4/4)&lt;br /&gt;   Server Information&lt;br /&gt;   Incoming mail:pop.gmail.com:995&lt;br /&gt;   Outgoing mail:smtp.gmail.com:465&lt;br /&gt;   Click 'Options' button&lt;br /&gt;6. Options (1/3)&lt;br /&gt;   Use default&lt;br /&gt;7. Options (2/3)&lt;br /&gt;   Check 'Require SSL connection'&lt;br /&gt;   Check 'Outgoing mail requires authentication' (Since gmail needs auth for sending email)&lt;br /&gt;8. Options (3/3)&lt;br /&gt;   Use default&lt;br /&gt;&lt;br /&gt;Until here, you are read to send and receive emails using Gmail&lt;br /&gt;Actually, i did not have a lot of time to play with it yet. will post more experience about this baby later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-2388492828936130074?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/2388492828936130074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=2388492828936130074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/2388492828936130074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/2388492828936130074'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/08/setup-outlook-mobile-for-gmail-account.html' title='Setup Outlook Mobile for Gmail account'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-5596154390791384229</id><published>2007-08-11T06:48:00.000-07:00</published><updated>2007-08-11T18:37:51.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Building auto-translator based on google translate API (2)</title><content type='html'>Got the draft version of the eclipse resource auto-translator works.&lt;br /&gt;For a input resource file in English below:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;action1=File&lt;br /&gt;action2=Open&lt;br /&gt;action3=Save&lt;br /&gt;action4=Johnson&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The output resource file in Simplified Chinese looks really stupid.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sC2LOdJbjPE/Rr2_ntXCrnI/AAAAAAAAAHk/8SkSzkVQDdg/s1600-h/translate_result.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_sC2LOdJbjPE/Rr2_ntXCrnI/AAAAAAAAAHk/8SkSzkVQDdg/s320/translate_result.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5097441042165313138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Need to find a way to let google translate to use IT dictionary!&lt;br /&gt;&lt;br /&gt;[Updated 08/12]&lt;br /&gt;Here are more info after digging into this problem.&lt;br /&gt;From &lt;a href="http://www.google.com/help/faq_translation.html#whatis"&gt;Google Translate FAQ:&lt;/a&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;"&lt;br /&gt;Most state-of-the-art, commercial machine-translation systems in use today have been developed using a rules-based approach, and require a lot of work by linguists to define vocabularies and grammars.&lt;br /&gt;&lt;br /&gt;Our system takes a different approach: we feed the computer billions of words of text, both monolingual text in the target language, and aligned text consisting of examples of human translations between the languages. We then apply statistical learning techniques to build a translation model. We've achieved very good results in research evaluations"&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;However, it can't be used to translate single word. since the algorithm needs context words to match for result.&lt;br /&gt;&lt;br /&gt;In our application, for example, menu labels are single word. such as "File", "Open"...etc.&lt;br /&gt;For workaround, I need to use an online dictionary for single word translation.&lt;br /&gt;One good candidate is &lt;a href="http://www1.worldlingo.com/en/products_services/worldlingo_translator.html"&gt;worldlingo&lt;/a&gt;&lt;br /&gt;It is handy. allow you to select from list of dictionary, including computer/IT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-5596154390791384229?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/5596154390791384229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=5596154390791384229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/5596154390791384229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/5596154390791384229'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/08/building-auto-translator-based-on_11.html' title='Building auto-translator based on google translate API (2)'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_sC2LOdJbjPE/Rr2_ntXCrnI/AAAAAAAAAHk/8SkSzkVQDdg/s72-c/translate_result.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-733447504028355782</id><published>2007-08-09T02:10:00.000-07:00</published><updated>2007-08-09T02:15:38.533-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>editing binary file using VI</title><content type='html'>Not using VI as HEX editor for quite long time. nearly forgot how to do it.&lt;br /&gt;&lt;br /&gt;Here are the commands:&lt;br /&gt;&lt;br /&gt;&lt;font color="green"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;vi ~/myBinary.so&lt;br /&gt;[esc]:%!xxd&lt;br /&gt;[esc]:%!xxd -r&lt;br /&gt;[esc]:wq!&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-733447504028355782?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/733447504028355782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=733447504028355782' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/733447504028355782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/733447504028355782'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/08/editing-binary-file-using-vi.html' title='editing binary file using VI'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-5660742158253191619</id><published>2007-08-08T23:16:00.000-07:00</published><updated>2007-08-08T23:23:45.887-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>XML Transformer indent doesn't work with jdk5</title><content type='html'>The below code works fine with jdk1.4, i can get nice formatted xml document.&lt;br /&gt;&lt;FONT COLOR="green"&gt;&lt;br /&gt;&lt;CODE&gt;&lt;br /&gt;&lt;br /&gt; TransformerFactory transFactory = TransformerFactory.newInstance();&lt;br /&gt; Transformer transformer = transFactory.newTransformer();&lt;br /&gt; transformer.setOutputProperty(OutputKeys.INDENT, "yes");&lt;br /&gt; transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");&lt;br /&gt; DOMSource source = new DOMSource(document);&lt;br /&gt; StreamResult stream = new StreamResult(os);&lt;br /&gt; transformer.transform(source, stream);&lt;br /&gt;&lt;/CODE&gt;&lt;br /&gt;&lt;/FONT&gt;&lt;br /&gt;&lt;br /&gt;However, found it doesn't work on jdk5.&lt;br /&gt;I need to change to the following work around code&lt;br /&gt;&lt;br /&gt;&lt;FONT COLOR="green"&gt;&lt;br /&gt;&lt;CODE&gt;&lt;br /&gt;TransformerFactory transFactory = TransformerFactory.newInstance();&lt;br /&gt;transFactory.setAttribute("indent-number", &lt;br /&gt;    new Integer(2));&lt;br /&gt;Transformer transformer =  transFactory.newTransformer();&lt;br /&gt;transformer.setOutputProperty(OutputKeys.INDENT, "yes");&lt;br /&gt;transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");&lt;br /&gt;transformer.transform(new DOMSource(document),&lt;br /&gt;   new StreamResult(new OutputStreamWriter(os, "utf-8")));&lt;br /&gt;&lt;/CODE&gt;&lt;br /&gt;&lt;/FONT&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-5660742158253191619?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/5660742158253191619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=5660742158253191619' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/5660742158253191619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/5660742158253191619'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/08/xml-transformer-indent-doesnt-work-with.html' title='XML Transformer indent doesn&apos;t work with jdk5'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-1599508363030406439</id><published>2007-08-08T20:39:00.000-07:00</published><updated>2007-08-09T02:17:36.063-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Building auto-translator based on google translate API (1)</title><content type='html'>I am writing an auto-translator plug-in. which will do the i18n for eclipse plugins and application automatically. After evaluate several online translating engine, i think google translate is more accurate. Although google does no provide an official API for their translate yet. &lt;br /&gt;&lt;br /&gt;Here is the translation mode definition class. It lists all translation directions supported by google so far.&lt;br /&gt;&lt;FONT COLOR="green"&gt;&lt;br /&gt;&lt;CODE&gt;&lt;br /&gt;public final class TranslateMode {&lt;br /&gt;        public static final TranslateMode ARABIC2ENGLISH= new TranslateMode("ar|en");&lt;br /&gt;        public static final TranslateMode CHINESE2ENGLISH = new TranslateMode("zh|en");&lt;br /&gt;        public static final TranslateMode CHINESECN2CHINESETW = new TranslateMode("zh-CN|zh-TW");&lt;br /&gt;        public static final TranslateMode CHINESETW2CHINESECN = new TranslateMode("zh-TW|zh-CN");&lt;br /&gt;        public static final TranslateMode ENGLISH2ARABIC = new TranslateMode("en|ar");&lt;br /&gt;        public static final TranslateMode ENGLISH2CHINESECN = new TranslateMode("en|zh-CN");&lt;br /&gt;        public static final TranslateMode ENGLISH2CHINESETW = new TranslateMode("en|zh-TW");&lt;br /&gt;        public static final TranslateMode ENGLSISH2FRENCH = new TranslateMode("en|fr");&lt;br /&gt;        public static final TranslateMode ENGLISH2GERMAN= new TranslateMode("en|de");&lt;br /&gt;        public static final TranslateMode ENGLISH2ITALIAN= new TranslateMode("en|it");&lt;br /&gt;        public static final TranslateMode ENGLISH2JAPANESE= new TranslateMode("en|ja");&lt;br /&gt;        public static final TranslateMode ENGLISH2KOREAN= new TranslateMode("en|ko");&lt;br /&gt;        public static final TranslateMode ENGLISH2PORTUGUESE= new TranslateMode("en|pt");&lt;br /&gt;        public static final TranslateMode ENGLISH2RUSSIAN = new TranslateMode("en|ru");&lt;br /&gt;        public static final TranslateMode ENGLISH2SPANISH = new TranslateMode("en|es");&lt;br /&gt;        public static final TranslateMode FRANCH2ENGLISH = new TranslateMode("fr|en");&lt;br /&gt;        public static final TranslateMode FRENCH2GERMAN = new TranslateMode("fr|de");&lt;br /&gt;        public static final TranslateMode GERMAN2ENGLISH = new TranslateMode("de|en");&lt;br /&gt;        public static final TranslateMode GERMAN2FRANCH = new TranslateMode("de|fr");&lt;br /&gt;        public static final TranslateMode ITALIAN2ENGLISH = new TranslateMode("it|en");&lt;br /&gt;        public static final TranslateMode JAPANESE2ENGLISH= new TranslateMode("ja|en");&lt;br /&gt;        public static final TranslateMode KOREAN2ENGLISH = new TranslateMode("ko|en");&lt;br /&gt;        public static final TranslateMode PORTUGUESE2ENGLISH = new TranslateMode("pt|en");&lt;br /&gt;        public static final TranslateMode RUSSIAN2ENGLISH = new TranslateMode("ru|en");&lt;br /&gt;        public static final TranslateMode SPANISH2ENGLISH = new TranslateMode("es|en");&lt;br /&gt;&lt;br /&gt;        public String toString() {&lt;br /&gt;            return langpair;&lt;br /&gt;          }&lt;br /&gt;&lt;br /&gt;        private final String langpair;&lt;br /&gt;&lt;br /&gt;        private TranslateMode(String mode) {&lt;br /&gt;            langpair = mode;&lt;br /&gt;          }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/CODE&gt;&lt;br /&gt;&lt;/FONT&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-1599508363030406439?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/1599508363030406439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=1599508363030406439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1599508363030406439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1599508363030406439'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/08/building-auto-translator-based-on.html' title='Building auto-translator based on google translate API (1)'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-4593384963630902036</id><published>2007-07-22T16:09:00.000-07:00</published><updated>2008-08-27T02:16:36.549-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>unix shell is still one of my favorite</title><content type='html'>unix shell is so easy and powerful, just like vi.&lt;br /&gt;It is always my favorite.&lt;br /&gt;the following example shows how to change variable in unix shell to lower case and remove file extension&lt;br /&gt;&lt;code&gt;&lt;br /&gt;for f in *.shp&lt;br /&gt;do&lt;br /&gt;#change to lower case&lt;br /&gt;file_name=`echo $f | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`&lt;br /&gt;#remove file extension to use as table name&lt;br /&gt;table_name=${file_name%\.*}&lt;br /&gt;echo "table name: $table_name"&lt;br /&gt;done&lt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-4593384963630902036?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/4593384963630902036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=4593384963630902036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4593384963630902036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4593384963630902036'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/07/unix-shell-is-still-one-of-my-favorite.html' title='unix shell is still one of my favorite'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-3517340284839005978</id><published>2007-07-03T18:56:00.000-07:00</published><updated>2007-08-09T02:19:12.326-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Production GIS map system all based on open source components</title><content type='html'>During the past weeks, I was designing a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;GIS&lt;/span&gt; map system similar to Google map for a company.&lt;br /&gt;On the server side, they want a spatial database, which support &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ESRI&lt;/span&gt; format Sharp files. Also needs a map server, which handle client request, query the database...etc.&lt;br /&gt;&lt;br /&gt;On the client side, they want a standalone client instead of AJAX based web app.&lt;br /&gt;&lt;br /&gt;I have some experience on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;GIS&lt;/span&gt; stuff five years ago. We used a open source map server at that time, but it was quite slow.&lt;br /&gt;&lt;br /&gt;When looking into open source area for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;GIS&lt;/span&gt; system again after five years, i found that we can build &lt;span style="font-weight: bold;"&gt;PRODUCTION&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;GIS&lt;/span&gt; system by integrating all the latest and best from open source community.&lt;br /&gt;&lt;br /&gt;Here is the solution in the end:&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255); font-weight: bold;"&gt;S&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 255); font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;erver&lt;/span&gt; side:&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt; &lt;/span&gt;&lt;a href="http://postgis.refractions.net/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Postgis&lt;/span&gt;&lt;/a&gt; + &lt;a href="http://geoserver.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;GeoServer&lt;/span&gt;&lt;/a&gt; + &lt;a href="http://www.squid-cache.org/"&gt;squid cache&lt;/a&gt;.&lt;br /&gt;  No development work is needed .&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold; color: rgb(51, 51, 255);"&gt;Client side:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;  Web-based client, can be built on top of &lt;a href="http://openlayers.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;OpenLayers&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;  standalone client, can be built by extending from &lt;a href="http://udig.refractions.net/confluence/display/UDIG/Home"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;udig&lt;/span&gt;&lt;/a&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;udig&lt;/span&gt; is an eclipse &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;RCP&lt;/span&gt; application! &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-3517340284839005978?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/3517340284839005978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=3517340284839005978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3517340284839005978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3517340284839005978'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/07/production-gis-map-system-all-based-on.html' title='Production GIS map system all based on open source components'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-8037748783933243337</id><published>2007-06-26T19:33:00.000-07:00</published><updated>2007-06-26T19:38:24.573-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>The 'E' Day</title><content type='html'>&lt;span style="color: rgb(51, 51, 255); font-weight: bold;font-size:130%;" &gt;Tomorrow will be the 'E' Day -- Eclipse Europa Release.&lt;br /&gt;&lt;br /&gt;All the hard work for the past months will pay off.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" id="europa" align="middle" height="140" width="160"&gt;&lt;br /&gt;&lt;param name="allowScriptAccess" value="sameDomain"&gt;&lt;br /&gt;&lt;param name="movie" value="http://www.eclipse.org/europa/images/europa.swf"&gt;&lt;param name="quality" value="high"&gt;&lt;param name="scale" value="noscale"&gt;&lt;param name="bgcolor" value="#ffffff"&gt;&lt;embed src="http://www.eclipse.org/europa/images/europa.swf" quality="high" scale="noscale" bgcolor="#ffffff" name="europa" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" align="middle" height="140" width="160"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-8037748783933243337?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/8037748783933243337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=8037748783933243337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8037748783933243337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8037748783933243337'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/06/e-day.html' title='The &apos;E&apos; Day'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-5296335568951093980</id><published>2007-06-04T00:51:00.000-07:00</published><updated>2007-08-09T02:18:16.885-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>4G Momory limitation for 32bit Windows?</title><content type='html'>I was been asked today :"my 32bit windows box has 8G memory. As we know, the max memory for 32-bit windows is 4G. are we wasting memory then?"&lt;br /&gt;&lt;br /&gt;Good question. But the 4G limitation is only for one process during memory addressing. The OS can manage lager memory than 4G.&lt;br /&gt;&lt;br /&gt;Here is the table&lt;br /&gt;&lt;Table border="1" rules="all"&gt;&lt;br /&gt;&lt;TR&gt;&lt;TH&gt;OS&lt;/TH&gt;&lt;TH align="center"&gt;MAX MEM&lt;/TH&gt;&lt;/TR&gt;&lt;br /&gt;&lt;TR&gt;&lt;td&gt;Windows XP Professional&lt;/td&gt;&lt;td align="center"&gt;4G&lt;/td&gt;&lt;TR&gt;&lt;br /&gt;&lt;TR&gt;&lt;td&gt;Windows Server 2003&lt;/td&gt;&lt;td align="center"&gt;4G&lt;/td&gt;&lt;TR&gt;&lt;br /&gt;&lt;TR&gt;&lt;td&gt;Windows Server 2003 Enterprise Edition&lt;/td&gt;&lt;td align="center"&gt;32G&lt;/td&gt;&lt;TR&gt;&lt;br /&gt;&lt;TR&gt;&lt;td&gt;Windows Server 2003 Datacenter Edition&lt;/td&gt;&lt;td align="center"&gt;64G&lt;/td&gt;&lt;TR&gt;&lt;br /&gt;&lt;TR&gt;&lt;td&gt;Windows 2000 Professional&lt;/td&gt;&lt;td align="center"&gt;4G&lt;/td&gt;&lt;TR&gt;&lt;br /&gt;&lt;TR&gt;&lt;td&gt;Windows 2000 Advanced Serve&lt;/td&gt;&lt;td align="center"&gt;8G&lt;/td&gt;&lt;TR&gt;&lt;br /&gt;&lt;TR&gt;&lt;td&gt;Windows 2000 Datacenter Edition&lt;/td&gt;&lt;td align="center"&gt;32G&lt;/td&gt;&lt;TR&gt;&lt;br /&gt;&lt;/Table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-5296335568951093980?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/5296335568951093980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=5296335568951093980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/5296335568951093980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/5296335568951093980'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/06/4g-momory-limitation-for-32bit-windows.html' title='4G Momory limitation for 32bit Windows?'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-9198872682956054646</id><published>2007-05-24T03:28:00.000-07:00</published><updated>2007-12-18T18:51:06.188-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Post some eclipse interview questions</title><content type='html'>Since i have worked for eclipse during the past three years. i did quite a few interviews.&lt;br /&gt;&lt;br /&gt;Each time i need to prepare some questions in advance.&lt;br /&gt;However there isn't any eclipse interview Q&amp;amp;A on internet so far.&lt;br /&gt;So i decided to post some generic questions to share within community.&lt;br /&gt;&lt;br /&gt;I will add more questions such as emf, pattern, views... when have time. (I am crazy busy recently for the Eclipse Europa release.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.eobjectsoft.com/product/EclipseInterviewQuestions.htm"&gt;http://www.eobjectsoft.com/product/EclipseInterviewQuestions.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-9198872682956054646?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/9198872682956054646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=9198872682956054646' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/9198872682956054646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/9198872682956054646'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/05/post-some-eclipse-interview-questions.html' title='Post some eclipse interview questions'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-3338969264035383477</id><published>2007-05-13T20:06:00.000-07:00</published><updated>2007-05-13T20:10:02.492-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile offshore'/><title type='text'>Agile Offshore discussion on theserverside.com</title><content type='html'>There is a very interested discuss going on at theserverside.com&lt;br /&gt;about agile offshore.&lt;br /&gt;&lt;br /&gt;From those post, some are not memories from the offshore dev.&lt;br /&gt;My point in the thread is:&lt;br /&gt;As i always said, you are agile team locally and want to go offshore.&lt;br /&gt;then first step is the find an agile offshore team, then build long team releationship.&lt;br /&gt;this will lead a success in long run&lt;br /&gt;&lt;br /&gt;http://www.theserverside.com/news/thread.tss?m=c.reply&amp;amp;thread_id=45367#232704&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-3338969264035383477?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/3338969264035383477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=3338969264035383477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3338969264035383477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3338969264035383477'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/05/agile-offshore-discussion-on.html' title='Agile Offshore discussion on theserverside.com'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-2222632249558780896</id><published>2007-05-08T15:30:00.000-07:00</published><updated>2007-05-08T15:34:07.536-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>The swt event logger/debugger (1)</title><content type='html'>Since Eclipse GUI is also event driven, it is good to be able to monitor the SWT event at runtime. It will be even better if we can setup event logger filter by widget. &lt;br /&gt;&lt;br /&gt;I still remember that M$ DevStudio do provide tools to inspecting windows and tracing events. That is really useful when deal with some tough problems. I am thinking about building a similar plugin for eclipse platform , which can find the widget using mouse and trace all events (or any type of events) on that widget.&lt;br /&gt;&lt;br /&gt;Based on that plug-in, we can build event breakpoint feature for Eclipse platform. In the new Eclipse 3.3, there is a new class loading breakpoint feature, which will pause the debugging session when loading a particular class into Eclipse jvm. The event breakpoint is similar to the above. it will break when user selected event occurs on particular widget.&lt;br /&gt;If you are doing a lot of bug fixing on other code not wrote by yourself, you will also want this feature really hard!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-2222632249558780896?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/2222632249558780896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=2222632249558780896' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/2222632249558780896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/2222632249558780896'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/05/swt-event-loggerdebugger-1.html' title='The swt event logger/debugger (1)'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-6402739259238416815</id><published>2007-04-25T21:58:00.000-07:00</published><updated>2007-04-25T22:04:31.406-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Google Gadget Eclipse plugin (3)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sC2LOdJbjPE/RjAytuLCUeI/AAAAAAAAAEM/s3OMZV5D_7A/s1600-h/download_map.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_sC2LOdJbjPE/RjAytuLCUeI/AAAAAAAAAEM/s3OMZV5D_7A/s320/download_map.JPG" alt="" id="BLOGGER_PHOTO_ID_5057598142606889442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here are some updates about the Google Gadget Eclipse plugin.&lt;br /&gt;It has been uploaded to the website for about one week. We have 200 daily download so far. I really feel that "The world is flat", since the users are coming from around the world.&lt;br /&gt;I even see a user from South Africa. Amazing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-6402739259238416815?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/6402739259238416815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=6402739259238416815' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6402739259238416815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6402739259238416815'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/04/google-gadget-eclipse-plugin-3.html' title='Google Gadget Eclipse plugin (3)'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_sC2LOdJbjPE/RjAytuLCUeI/AAAAAAAAAEM/s3OMZV5D_7A/s72-c/download_map.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-1540825346334382066</id><published>2007-04-18T18:38:00.000-07:00</published><updated>2007-04-18T18:54:36.355-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Google Gadget Eclipse plugin (2)</title><content type='html'>Uploaded the Google Gadget plugin to &lt;br /&gt;&lt;a href="http://eobjectsoft.com/product/productEclipse.htm"&gt; my Website&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also listed on the &lt;br /&gt;&lt;a href="http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-932.html"&gt;eclipseplugincentral&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are 20+ downloads so far. More than half of those visitors are from eclipseplugincentral.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sC2LOdJbjPE/RibLS5LCbBI/AAAAAAAAAEE/g4J1A7-LP30/s1600-h/google_eclipse_access.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_sC2LOdJbjPE/RibLS5LCbBI/AAAAAAAAAEE/g4J1A7-LP30/s400/google_eclipse_access.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5054951157215161362" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-1540825346334382066?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/1540825346334382066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=1540825346334382066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1540825346334382066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1540825346334382066'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/04/google-gadget-eclipse-plugin-2.html' title='Google Gadget Eclipse plugin (2)'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_sC2LOdJbjPE/RibLS5LCbBI/AAAAAAAAAEE/g4J1A7-LP30/s72-c/google_eclipse_access.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-3251635298663229828</id><published>2007-04-08T07:58:00.000-07:00</published><updated>2007-04-08T08:12:30.786-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Google Gadget Eclipse plugin (1)</title><content type='html'>Just wrote a plugin to integrate Google gadgets into Eclipse platform.&lt;br /&gt;Reason:&lt;br /&gt;I am working on eclipse for the past three years. At the same time, i am enjoy google gadgets very much.&lt;br /&gt;Since both of them are based on open standard and free to use, why not combine them together.&lt;br /&gt;&lt;br /&gt;Here it comes &lt;a href="http://www.eobjectsoft.com/"&gt;Google Gadgets plugin for Eclipse&lt;/a&gt;, which is integrated with Google Map, Google Talk, Google Calendar out of box. It can be extend to support &lt;a href="http://www.google.com/ig/directory?synd=open&amp;amp;source=gapi"&gt;any Google Gadgets&lt;/a&gt;&lt;br /&gt;you want by just modify the plugin.xml file.&lt;br /&gt;&lt;br /&gt;Here is the screenshot&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sC2LOdJbjPE/RhkF5DWGQiI/AAAAAAAAAD8/A7x2YIxLIco/s1600-h/google_gadget_for_eclipse_screenshot.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_sC2LOdJbjPE/RhkF5DWGQiI/AAAAAAAAAD8/A7x2YIxLIco/s400/google_gadget_for_eclipse_screenshot.JPG" alt="" id="BLOGGER_PHOTO_ID_5051074934781395490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I will upload the plugin and give more detail information/instruction later on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-3251635298663229828?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/3251635298663229828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=3251635298663229828' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3251635298663229828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3251635298663229828'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/04/google-gadget-eclipse-plugin-1.html' title='Google Gadget Eclipse plugin (1)'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_sC2LOdJbjPE/RhkF5DWGQiI/AAAAAAAAAD8/A7x2YIxLIco/s72-c/google_gadget_for_eclipse_screenshot.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-6482309503918805831</id><published>2007-03-27T16:32:00.000-07:00</published><updated>2007-03-28T00:52:56.856-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>my blog can't access again from china</title><content type='html'>Since i am maintain this blog from china. looks like blogger has been blocked in china.&lt;br /&gt;&lt;br /&gt;I know google will be blocked some time, and it will last for one or two days in the worst case.&lt;br /&gt;But the blogger is down for a week.&lt;br /&gt;&lt;br /&gt;The temp solution is:&lt;br /&gt;add '72.14.219.190 johnsonsoultions.blogspot.com' to&lt;br /&gt;c:\windows\system32\drivers\etc\hosts file&lt;br /&gt;&lt;br /&gt;More detail about that:&lt;br /&gt;if you do nslookup for johnsonsolutins.blogspot.com,&lt;br /&gt;you will get the ipaddress from dns as&lt;br /&gt;72.14.207.191&lt;br /&gt;&lt;br /&gt;But if you tracert for that ip, you will find it has been locked at chinese operator before going to the outside world.&lt;br /&gt;&lt;br /&gt;We can't do anything here, just wait......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-6482309503918805831?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/6482309503918805831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=6482309503918805831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6482309503918805831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6482309503918805831'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/03/my-blog-cant-access-again-from-china.html' title='my blog can&apos;t access again from china'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-1845349592891488646</id><published>2007-03-27T16:10:00.000-07:00</published><updated>2007-03-28T00:54:01.166-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile offshore'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>How to add your website to google and other search engines</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sC2LOdJbjPE/RgmmF6ZSQBI/AAAAAAAAABY/_bihWNeYWmw/s1600-h/eobject_screenshot.bmp"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_sC2LOdJbjPE/RgmmF6ZSQBI/AAAAAAAAABY/_bihWNeYWmw/s320/eobject_screenshot.bmp" alt="" id="BLOGGER_PHOTO_ID_5046747477950218258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After create a new website, our problem is how to list that site in google and other search engines.&lt;br /&gt;There are two steps here:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Submit you url to google&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.google.com/addurl.html"&gt;http://www.google.com/addurl.html&lt;/a&gt;&lt;br /&gt;it will take severl days, or even one month for google to record your new website. to speed up the process, you need take more action.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;add extenal links to you website&lt;/li&gt;&lt;/ul&gt;For those website with high PR value, googlebot will visit it everyday.&lt;br /&gt;So you can add links to you website.&lt;br /&gt;The easy way to do it is put some posts in bbs, email list with link to you site. Then you new site have chance to showup in several days&lt;br /&gt;Links to other search engines:&lt;br /&gt;* yahoo&lt;br /&gt;https://login.yahoo.com/config/login_verify2?.src=siteex&amp;.intl=us&amp;amp;.done=http%3A%2F%2Fsiteexplorer.search.yahoo.com%2Fsubmit&lt;br /&gt;&lt;br /&gt;*dmoz.org&lt;br /&gt;It is Open Directory Org. provider content to most search engine&lt;br /&gt;http://dmoz.org/add.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-1845349592891488646?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/1845349592891488646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=1845349592891488646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1845349592891488646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1845349592891488646'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/03/how-to-add-your-website-to-google-and.html' title='How to add your website to google and other search engines'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sC2LOdJbjPE/RgmmF6ZSQBI/AAAAAAAAABY/_bihWNeYWmw/s72-c/eobject_screenshot.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-8976066945139006858</id><published>2007-03-26T10:47:00.000-07:00</published><updated>2007-03-26T10:54:16.261-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile offshore'/><title type='text'>Agile Offshore -- EObject Software</title><content type='html'>I am following agile development for the past three years. Our team was setup as a small distributed team in a global development organization.&lt;br /&gt;&lt;br /&gt;Since i am more and more involved in open source development, i really see the best fit between agile process and offshore/distributed development.&lt;br /&gt;&lt;br /&gt;Then i ask myself: why not setup an agile offshore team to help those small/mid companies outside  there.  It is a flat world!&lt;br /&gt;&lt;br /&gt;My  answer is  &lt;a href="http://www.eobjectsoft.com"&gt;&lt;span style="color: rgb(51, 0, 153); font-weight: bold;"&gt;EObject Software&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-8976066945139006858?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/8976066945139006858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=8976066945139006858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8976066945139006858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/8976066945139006858'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/03/agile-offshore-eobject-software.html' title='Agile Offshore -- EObject Software'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-4376878089683969872</id><published>2007-03-26T10:38:00.000-07:00</published><updated>2007-03-28T00:55:57.375-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile offshore'/><title type='text'>Find a good webhosting provider</title><content type='html'>It hard to find a good web hosting provider.&lt;br /&gt;some sites offer web hosting ranks you can check out. But from my experience, those ranks can only work as a reference. You need to check out the feature, price, and performance by yourself.&lt;br /&gt;&lt;br /&gt;For my case, i just created a&lt;a href="http://www.eobjectsoft.com/"&gt; website&lt;/a&gt;, which is hosting on IX WebHosting.&lt;br /&gt;I am happy with the features set and price (7.95/month) of their biz plus plan. The only problem&lt;br /&gt;to me is they are really really slow when access from china.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Don't konw how to deal with that yet. Most of our customers will in US or europe anyway.&lt;br /&gt;&lt;br /&gt;Here are some review sites&lt;br /&gt;&lt;a href="http://www.top10webhosting.com/"&gt;&lt;span style="font-style: italic;"&gt;http://www.top10webhosting.com/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.web-hosting-top.com/"&gt;http://www.web-hosting-top.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-4376878089683969872?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/4376878089683969872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=4376878089683969872' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4376878089683969872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4376878089683969872'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/03/find-good-webhosting-provider.html' title='Find a good webhosting provider'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-3825642524828597107</id><published>2007-03-22T02:18:00.000-07:00</published><updated>2007-03-28T00:56:33.232-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>GUI guideline</title><content type='html'>I always feel need to remind myself every couple of months about those basic GUI guideline:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 153);font-size:100%;" &gt;user in control, directness, consistency, forgiveness, feedback, aesthetics, and simplicity.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-3825642524828597107?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/3825642524828597107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=3825642524828597107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3825642524828597107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/3825642524828597107'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/03/gui-guideline.html' title='GUI guideline'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-4524089335791612125</id><published>2007-03-20T20:10:00.000-07:00</published><updated>2007-03-28T00:56:47.241-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>McAfee VirusScan Enterprise block irc by default</title><content type='html'>Was trying to add eclipse irc today. got error when try to connect to serverr.&lt;br /&gt;Finally found out that the McAfee VirusScan is blocking IRC protocol by default.&lt;br /&gt;&lt;br /&gt;Enable it, then reconnect, everything works fine now.&lt;br /&gt;&lt;br /&gt;What is the point to block IRC?&lt;br /&gt;It is sound quite safe to me, need to check the risk later on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-4524089335791612125?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/4524089335791612125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=4524089335791612125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4524089335791612125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4524089335791612125'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/03/mcafee-virusscan-enterprise-block-irc.html' title='McAfee VirusScan Enterprise block irc by default'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-6213683216179809028</id><published>2007-02-28T00:18:00.000-08:00</published><updated>2007-03-28T00:57:18.700-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>Goolgle site itself is not robot friendly</title><content type='html'>Just checked&lt;br /&gt;&lt;a href="http://www.google.com/robots.txt"&gt;google site search engine setting&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is 1st search engine in the world, but it only allow other agent to read from  news.&lt;br /&gt;Really Funny!!!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;User-agent: *&lt;br /&gt;Allow: /searchhistory/&lt;br /&gt;Disallow: /news?output=xhtml&amp;amp;&lt;br /&gt;Allow: /news?output=xhtml&lt;br /&gt;Disallow: /search&lt;br /&gt;Disallow: /groups&lt;br /&gt;Disallow: /images&lt;br /&gt;Disallow: /catalogs&lt;br /&gt;Disallow: /catalogues&lt;br /&gt;Disallow: /news&lt;br /&gt;Disallow: /nwshp&lt;/span&gt;&lt;br /&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-6213683216179809028?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/6213683216179809028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=6213683216179809028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6213683216179809028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6213683216179809028'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/02/goolgle-site-itself-is-not-robot.html' title='Goolgle site itself is not robot friendly'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-1554891415127742410</id><published>2007-02-27T05:37:00.000-08:00</published><updated>2007-03-28T00:58:14.657-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>Add Google Analytics to your Blogger</title><content type='html'>Since the blogspot doesn't provide traffic monitor by default. need to install some counters by youself.&lt;br /&gt;&lt;br /&gt;I found the easy way is to use Google Analytics.&lt;br /&gt;But the problem is, you need to register on google analytics first,&lt;br /&gt;then login to blogger to update the template manually.&lt;br /&gt;&lt;br /&gt;Need to check if the process can be done automatically from script.&lt;br /&gt;Since they share same google id anyway.&lt;br /&gt;Can you modify blog template using GData API?&lt;br /&gt;&lt;br /&gt;Need to check it out this week!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-1554891415127742410?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/1554891415127742410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=1554891415127742410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1554891415127742410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1554891415127742410'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/02/add-google-analytics-to-your-blogger.html' title='Add Google Analytics to your Blogger'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-9107747265168248019</id><published>2007-02-27T05:12:00.000-08:00</published><updated>2007-03-28T00:58:43.082-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Disable Flash plugin on Firefox</title><content type='html'>I don't like most flash from internet.&lt;br /&gt;Since the took at least 50% CPU from my computer.&lt;br /&gt;So i installed the flashblocker, that will not download&lt;br /&gt;flash content by default at all. You can click the empty picture to&lt;br /&gt;enable the flash when needed.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flashblock.mozdev.org/"&gt;FlashBlocker&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is also a similar one called AdsBlock. one guy said it is event better than flashblocker&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-9107747265168248019?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/9107747265168248019/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=9107747265168248019' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/9107747265168248019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/9107747265168248019'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/02/disable-flash-plugin-on-firefox.html' title='Disable Flash plugin on Firefox'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-6213286442556086868</id><published>2007-02-07T18:08:00.000-08:00</published><updated>2007-03-28T00:58:53.027-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Bus speed of USB, 1393, IDE, SATA and FC</title><content type='html'>&lt;table border="1"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;th&gt;Device&lt;/th&gt;&lt;br /&gt;&lt;th&gt;Speed&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;USB 1.1&lt;/td&gt;&lt;br /&gt;&lt;td&gt;12Mbps&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;USB2.0&lt;/td&gt;&lt;br /&gt;&lt;td&gt;480Mbps&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;IEEE1394a&lt;/td&gt;&lt;br /&gt;&lt;td&gt;400Mbps&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;IEEE1394b&lt;/td&gt;&lt;br /&gt;&lt;td&gt;800Mbps&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;IDE HardDisk ATA66&lt;/td&gt;&lt;br /&gt;&lt;td&gt;66MB/s&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;IDE HardDisk ATA100&lt;/td&gt;&lt;br /&gt;&lt;td&gt;100MB/s&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;SATA1 HardDisk&lt;/td&gt;&lt;br /&gt;&lt;td&gt;150MB/s&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;SATA2 HardDisk&lt;/td&gt;&lt;br /&gt;&lt;td&gt;300MB/s&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;FC (Fibre Channel)HardDisk&lt;/td&gt;&lt;br /&gt;&lt;td&gt;2Gbits/s - 4Gbits/s&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-6213286442556086868?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/6213286442556086868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=6213286442556086868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6213286442556086868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6213286442556086868'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/02/bus-speed-of-usb-1393-harddisk.html' title='Bus speed of USB, 1393, IDE, SATA and FC'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-591982005420419286</id><published>2007-02-07T02:49:00.000-08:00</published><updated>2007-03-28T00:59:02.167-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>msnim in HTML code</title><content type='html'>Here are some new Hyperlink Command Codes  for MSN  IM&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;msnim:add&lt;/strong&gt; - Allow your visitors to add you to their MSN  contacts immediately. Example: &lt;em&gt;&lt;a href="msnim:add?contact=email@address.com%20"&gt;Add me to your MSN Messenger  contact list&lt;/a&gt;&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;msnim:chat &lt;/strong&gt;- Clicking this link will open a conversation  with email@address.com and allows instant chatting. Example: &lt;em&gt;&lt;a href="msnim:chat?contact=email@address.com%20"&gt;Click here to  chat&lt;/a&gt;&lt;/em&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;msnim:voice&lt;/strong&gt; - Allow your visitors to start Voice chatting  with you in just one click. Example: &lt;em&gt;&lt;a href="msnim:voice?contact=email@address.com%20"&gt;Start a Voice chat with  me&lt;/a&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;msnim:video &lt;/strong&gt;- Launches a Video conversation straight from a  web page. Example: &lt;em&gt;&lt;a href="msnim:video?contact=email@address.com%20%20"&gt;Start a Video chat with me&lt;/a&gt;.&lt;/em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-591982005420419286?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/591982005420419286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=591982005420419286' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/591982005420419286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/591982005420419286'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/02/msnim-in-html-code.html' title='msnim in HTML code'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-1853404853661204363</id><published>2007-01-09T23:07:00.000-08:00</published><updated>2007-03-28T00:59:23.202-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>delete ^M in vi</title><content type='html'>Need to delete ^M again in some schema files.&lt;br /&gt;Why it always  happen,  why can't those softwares handle it internally.&lt;br /&gt;&lt;br /&gt;Hope the M$ and Novel deal will help to eliminate those small and big difference between Unix and Windows world.&lt;br /&gt;&lt;br /&gt;Anyway, here is the step to delete ^M suing VI.&lt;br /&gt;%S/^V^M//g&lt;br /&gt;The ^V is CONTROL-V and ^M is CONTROL-M&lt;br /&gt;&lt;br /&gt;'ga' command in vi can show the hex value of current character.&lt;br /&gt;If you move cursor to ^M, and give 'ga' command. it will show:&lt;br /&gt;&lt;^M&gt; 13, Hex 0d,  Octal 015&lt;br /&gt;&lt;br /&gt;This is actual value of ^M we dislike&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-1853404853661204363?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/1853404853661204363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=1853404853661204363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1853404853661204363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/1853404853661204363'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/01/delete-m-in-vi.html' title='delete ^M in vi'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-4379851362654050130</id><published>2007-01-05T01:44:00.000-08:00</published><updated>2007-03-28T00:59:42.869-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Google Desktop Hack -- add two clocks for two different timezones</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sC2LOdJbjPE/RZ4iUxgNJ8I/AAAAAAAAAAU/-sZmEaAl5Rk/s1600-h/my_windows_desktop.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_sC2LOdJbjPE/RZ4iUxgNJ8I/AAAAAAAAAAU/-sZmEaAl5Rk/s400/my_windows_desktop.JPG" alt="" id="BLOGGER_PHOTO_ID_5016484775218456514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Just hacked the Google Desktop to start two clocks for two different time zooms.&lt;br /&gt;I need this feature really hard, since some of my co-workers are located in Dublin office (8 hours from my time).&lt;br /&gt;Do not need to calculate the time difference by myself anymore!&lt;br /&gt;&lt;br /&gt;I will become an idiot one day since i am more and more depending on computers to do all stuff.&lt;br /&gt;Anyway, check out my current  desktop  screen shot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-4379851362654050130?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/4379851362654050130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=4379851362654050130' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4379851362654050130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/4379851362654050130'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/01/google-desktop-hack-add-two-clocks-for.html' title='Google Desktop Hack -- add two clocks for two different timezones'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sC2LOdJbjPE/RZ4iUxgNJ8I/AAAAAAAAAAU/-sZmEaAl5Rk/s72-c/my_windows_desktop.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-6141251817426224527</id><published>2007-01-04T00:01:00.000-08:00</published><updated>2007-03-28T01:00:25.696-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Enable Virtualization on dell laptop</title><content type='html'>&lt;a href="http://www.intel.com/technology/virtualization/"&gt;Virtualization&lt;/a&gt; is the next big thing in PC industry. The intel  Core2 cpu already support that.&lt;br /&gt;&lt;br /&gt;However, the virtualization is disabled at BIOS level by default on dell laptop.&lt;br /&gt;For my case, sometime, i am running WinXP and Linux together , So i want the WinXP running on one CPU and Linux running on the other CPU separately.&lt;br /&gt;By disable this feature, the VMPlayer can still work. But it will give you warning message during start up.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To check out if the virtualization is enabled or not.&lt;br /&gt;use the following command:&lt;br /&gt;'$cat /proc/cpuinfo'&lt;br /&gt;Check the flags section of the output. If there is vmx flag, that means the vmx has been enabled.&lt;br /&gt;&lt;br /&gt;To enable virtualization in BIOS for Dell 9400,&lt;br /&gt;"Post behavior-&gt;Virtualization-&gt;Enable"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-6141251817426224527?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/6141251817426224527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=6141251817426224527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6141251817426224527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6141251817426224527'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/01/enable-virtualization-on-dell-laptop.html' title='Enable Virtualization on dell laptop'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1626845557003550679.post-6899392532352297738</id><published>2007-01-03T23:52:00.000-08:00</published><updated>2007-03-28T01:00:29.311-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Dell 9400, Overclock, BIOS</title><content type='html'>Just got a new laptop two weeks ago.&lt;br /&gt;&lt;br /&gt;Here are some information about it&lt;br /&gt;1. hadware configuration for dell 9400&lt;br /&gt;17inch LCD, Inter Core2 T7200 CPU, 2G 667 RAM, 100G HDD at 7200rpm.&lt;br /&gt;ATI X1400 video card with 128M RAM.&lt;br /&gt;&lt;br /&gt;It is really fast laptop, indeed i use it as my workstation now.&lt;br /&gt;Alrough it is really heavy (4kg+), i still carry it between home and office everyday.&lt;br /&gt;&lt;br /&gt;However, i must say that the quality for dell insprion product line is poor compare with the latitude ones. I already replaced the keyboard.&lt;br /&gt;&lt;br /&gt;2. BIOS&lt;br /&gt;I think nobody like those BIOS comes from DELL or HP. Since they locked the front side buses. That means you can't overclock the system. For my case, the T7200 should be easy to run with 2.13GHz speed without any problem.&lt;br /&gt;&lt;br /&gt;The Bios's version is A04, i updated with latest version (A06) from  dell support site&lt;br /&gt;&lt;br /&gt;Here are some interesting configurations in the BIOS&lt;br /&gt;* All FSB related information are read only&lt;br /&gt;* The Multiple Core Support has enalbed by default&lt;br /&gt;* HDD Actoustic Mode: it is set to bypass by default, i changed to 'Performance', which can get faster HDD but noisier. That is ok to me, I don't think laptop is noise at all since i used to work with those big HP. Solaris box before.&lt;br /&gt;* Virtualization: See the next post&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1626845557003550679-6899392532352297738?l=johnsonsolutions.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://johnsonsolutions.blogspot.com/feeds/6899392532352297738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1626845557003550679&amp;postID=6899392532352297738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6899392532352297738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1626845557003550679/posts/default/6899392532352297738'/><link rel='alternate' type='text/html' href='http://johnsonsolutions.blogspot.com/2007/01/dell-9400-overclock-bios.html' title='Dell 9400, Overclock, BIOS'/><author><name>Johnson Ma</name><uri>http://www.blogger.com/profile/10100628391841679690</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://1.bp.blogspot.com/-QzXgHGDoIMI/Tfby2_Ctf4I/AAAAAAAACNw/CQbdNVQZpZ4/s220/mobile_home.jpg'/></author><thr:total>0</thr:total></entry></feed>
