<?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-24721846</id><updated>2012-01-30T14:22:20.805+11:00</updated><category term='tab'/><category term='linux'/><category term='install'/><category term='paper writing'/><category term='web application'/><category term='reference management'/><category term='research'/><category term='javascript'/><category term='php'/><category term='media center'/><category term='plug-in'/><category term='perl'/><category term='money management'/><category term='GAE'/><category term='UI'/><category term='Chinese'/><category term='wii'/><category term='syntax highlight'/><category term='blog'/><category term='pdf'/><category term='cvs command'/><category term='jquery'/><category term='find'/><category term='inbox'/><category term='upload'/><category term='grep'/><category term='geexbox'/><category term='search'/><category term='mobile phone'/><category term='programming language'/><category term='personal finance'/><category term='gmail'/><category term='substitution mode'/><category term='nokia n73'/><title type='text'>Tech Diary</title><subtitle type='html'>My Casual Technical Diary</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-24721846.post-972847174567596212</id><published>2011-06-29T17:11:00.000+10:00</published><updated>2011-06-29T17:11:09.223+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='web application'/><category scheme='http://www.blogger.com/atom/ns#' term='GAE'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><category scheme='http://www.blogger.com/atom/ns#' term='upload'/><title type='text'>Move Web Application to Google App Engine</title><content type='html'>Recently I started wondering how good the google app engine can support hosting web applications after I read the article &lt;a href="http://www.ibm.com/developerworks/java/library/j-paasshootout/?ca=drs-"&gt;Java Paas Shootout from IBM DW&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I gathered a few information about google app engine before i am going to make the move.&lt;br /&gt;&lt;br /&gt;The first thing is the JRE class white list from google. This is the&amp;nbsp;fundamental&amp;nbsp;consulting list&lt;br /&gt;&lt;a href="http://code.google.com/appengine/docs/java/jrewhitelist.html"&gt;http://code.google.com/appengine/docs/java/jrewhitelist.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;About how good is google app engine is compatible with some 3rd party libraries&lt;br /&gt;&lt;a href="http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1"&gt;http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine?pli=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;About how to do PDF generation on GAE&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/1765238/java-pdf-library-that-works-on-gae"&gt;http://stackoverflow.com/questions/1765238/java-pdf-library-that-works-on-gae&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;About how to upload image to GAE&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/1513603/how-to-upload-and-store-an-image-with-google-app-engine-java"&gt;http://stackoverflow.com/questions/1513603/how-to-upload-and-store-an-image-with-google-app-engine-java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It seems the option is to use Blob store the store the uploaded stuff. see the following:&lt;br /&gt;&lt;a href="http://code.google.com/appengine/docs/java/blobstore/overview.html"&gt;http://code.google.com/appengine/docs/java/blobstore/overview.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-972847174567596212?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/972847174567596212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=972847174567596212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/972847174567596212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/972847174567596212'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2011/06/move-web-application-to-google-app.html' title='Move Web Application to Google App Engine'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-3454041326490556211</id><published>2011-04-21T10:28:00.000+10:00</published><updated>2011-04-21T10:28:15.694+10:00</updated><title type='text'>DW: AIX commands you should not leave home without</title><content type='html'>The AIX commands that tell the hardware/system information are quite handy: &lt;a href="http://www.ibm.com/developerworks/aix/library/au-dutta_cmds.html"&gt;AIX commands you should not leave home without&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-3454041326490556211?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.ibm.com/developerworks/aix/library/au-dutta_cmds.html' title='DW: AIX commands you should not leave home without'/><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/3454041326490556211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=3454041326490556211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/3454041326490556211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/3454041326490556211'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2011/04/dw-aix-commands-you-should-not-leave.html' title='DW: AIX commands you should not leave home without'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-8864167653478271273</id><published>2011-03-28T14:46:00.000+11:00</published><updated>2011-03-28T14:46:09.869+11:00</updated><title type='text'>Top 10 SOA and web services tutorials and articles</title><content type='html'>The IBW DW website has compiled a list of articles on SOA and web services. &lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/webservices/library/ws-top10/index.html?ca=drs-"&gt;Top 10 SOA and web services tutorials and articles&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-8864167653478271273?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.ibm.com/developerworks/webservices/library/ws-top10/index.html?ca=drs-' title='Top 10 SOA and web services tutorials and articles'/><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/8864167653478271273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=8864167653478271273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/8864167653478271273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/8864167653478271273'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2011/03/top-10-soa-and-web-services-tutorials.html' title='Top 10 SOA and web services tutorials and articles'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-6987660472891328837</id><published>2011-03-25T14:57:00.000+11:00</published><updated>2011-03-25T14:57:42.158+11:00</updated><title type='text'>WebSphere Application Server V7: Understanding Class Loaders</title><content type='html'>This IBM redbook explains java class loading mechanism and it's related configuration in Websphere version 7.&lt;br /&gt;&lt;br /&gt;Those who are confused by the weird java exception in websphere (ClassCastException, ClassNotFoundException and etc) are encouraged to read this article.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://publib-b.boulder.ibm.com/abstracts/redp4581.html?Open"&gt;IBM Redbooks | WebSphere Application Server V7: Understanding Class Loaders&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-6987660472891328837?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://publib-b.boulder.ibm.com/abstracts/redp4581.html?Open' title='WebSphere Application Server V7: Understanding Class Loaders'/><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/6987660472891328837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=6987660472891328837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/6987660472891328837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/6987660472891328837'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2011/03/websphere-application-server-v7.html' title='WebSphere Application Server V7: Understanding Class Loaders'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-8724839267580649673</id><published>2011-03-25T14:49:00.000+11:00</published><updated>2011-03-25T14:49:10.673+11:00</updated><title type='text'>Dynamically Creating PDFs in a Web Application</title><content type='html'>This article illustrates how to use iText to dynamically create PDFs in a web application.&lt;br /&gt;&lt;a href="http://onjava.com/pub/a/onjava/2003/06/18/dynamic_files.html?page=1"&gt;Dynamically Creating PDFs in a Web Application - O'Reilly Media&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In addition to iText, FOP is also an option.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-8724839267580649673?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://onjava.com/pub/a/onjava/2003/06/18/dynamic_files.html?page=1' title='Dynamically Creating PDFs in a Web Application'/><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/8724839267580649673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=8724839267580649673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/8724839267580649673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/8724839267580649673'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2011/03/dynamically-creating-pdfs-in-web.html' title='Dynamically Creating PDFs in a Web Application'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-4473833822893147795</id><published>2011-02-23T15:11:00.003+11:00</published><updated>2011-02-23T15:13:50.337+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='find'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><title type='text'>Use find and grep on Linux</title><content type='html'>Sometimes, we need to find out what files in a folder contains a given pattern. Under Linux, this can be done by the following command:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;find &lt;path&gt; -name &lt;name&gt; -exec grep -l &lt;pattern&gt; {}\;&lt;/pattern&gt;&lt;/name&gt;&lt;/path&gt;&lt;/div&gt;&lt;br /&gt;For example, the following command find all the files named "Root" under current folder and its sub folders that contains "domain":&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;find . -name Root -exec grep -l domain {}\;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-4473833822893147795?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/4473833822893147795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=4473833822893147795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/4473833822893147795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/4473833822893147795'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2011/02/use-find-and-grep-on-linux.html' title='Use find and grep on Linux'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-323592250529426925</id><published>2011-02-22T15:33:00.001+11:00</published><updated>2011-02-22T15:34:30.383+11:00</updated><title type='text'>Cloud computing service models From IBM DW</title><content type='html'>The article from IBM DW talks about three levels of cloud computing services:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Infrastructure as a Service (IaaS),&lt;/li&gt;&lt;li&gt;Platform as a Service (PaaS),&lt;/li&gt;&lt;li&gt;Software as a Service (SaaS).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;SaaS as the high level service brings the following benefits:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Increased speed of deployment&lt;/li&gt;&lt;li&gt;Increased user adoption&lt;/li&gt;&lt;li&gt;Reduced support requirements&lt;/li&gt;&lt;li&gt;Lowered cost of implementation and upgrades&lt;/li&gt;&lt;/ul&gt;More details from IBM DW web site:&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.ibm.com/developerworks/cloud/library/cl-cloudservicemodels/index.html?ca=drs-"&gt;Cloud computing service models&lt;/a&gt;: "In this three-part series find straightforward, real-world examples of cloud computing to help eliminate the confusion around the concept. Each article in this series covers one of the three service models of cloud computing, beginning with infrastructure as a service, then moving to platform as a service, and finally software as a service. After reading this series, cloud computing will feel like much more than simply a buzzword."&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-323592250529426925?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/323592250529426925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=323592250529426925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/323592250529426925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/323592250529426925'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2011/02/cloud-computing-service-models-from-ibm.html' title='Cloud computing service models From IBM DW'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-7263082567062038013</id><published>2011-02-20T12:14:00.002+11:00</published><updated>2011-02-20T12:14:44.421+11:00</updated><title type='text'>Hands on HTML5 Canvas from IBM DW</title><content type='html'>&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;a href="http://www.ibm.com/developerworks/web/library/wa-html5canvas/index.html?ca=drs-"&gt;Create great graphics with the HTML5 canvas&lt;/a&gt;: "Enhance your web pages with canvas, a simple HTML5 element that packs a&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;punch. Entice visitors to your site over and over again by taking advantage of&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;its flexibility and variety."&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-7263082567062038013?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/7263082567062038013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=7263082567062038013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/7263082567062038013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/7263082567062038013'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2011/02/hands-on-html5-canvas-from-ibm-dw.html' title='Hands on HTML5 Canvas from IBM DW'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-115138961196315484</id><published>2010-11-17T11:19:00.000+11:00</published><updated>2010-11-17T11:19:18.476+11:00</updated><title type='text'>LaTeX GUI editors for latex file editing</title><content type='html'>The following lists some of Latex gui editors that I know. They all run on Windows&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.winedt.com/"&gt;WinEdt&lt;/a&gt;&lt;br /&gt;"WinEdt™ (shareware) is a powerful and versatile ASCII editor and shell for MS Windows with a strong predisposition towards the creation of [La]TeX documents..."&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.winshell.de/"&gt;WinShell&lt;/a&gt;&lt;br /&gt;"WinShell is a &lt;span style="font-weight: bold;"&gt;free &lt;/span&gt;multilingual integrated development environment (IDE) for LaTeX and TeX. The program includes a text editor, syntax highlighting, project management, spell checking, a table wizard, BibTeX support, Unicode support, different toolbars and user configuration options. It is not a LaTeX system; an additional LaTeX package is required. "&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.latexeditor.org/index.html"&gt;LED -- LaTeX Editor&lt;br /&gt;&lt;/a&gt;"LEd offers a project manager, powerful editor, integrated spellchecker and thesaurus, build-in DVI viewer, descriptive hints for LaTeX commands, code complete mechanism, word wrapping, code folding, multilingual environment, and more..." plus, it's &lt;span style="font-weight: bold;"&gt;free&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/texmakerx/"&gt;TexMakerX&lt;/a&gt;&lt;br /&gt;"TexMakerX is a platform-independent LaTeX editor. It provides  interactive spell checking, code folding and extended text navigation,  while it also includes the features of the LaTeX editor &lt;a href="http://www.xm1math.net/texmaker/"&gt;Texmaker&lt;/a&gt;, like  wizards, code completion and syntax highlighting". It's open source free software under GPL. It is actually a fork of another LaTeX editor: &lt;a href="http://www.xm1math.net/texmaker/"&gt;Texmaker.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Or you may want to use Emacs to do LaTex editing.  The following links to some tips.&lt;br /&gt;&lt;a class="l" href="http://www.math.aau.dk/%7Edethlef/Tips/"&gt;LaTeX, Emacs etc. for your PC&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.winshell.de/"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-115138961196315484?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/115138961196315484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=115138961196315484' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115138961196315484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115138961196315484'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2006/06/latex-gui-editors-for-latex-file.html' title='LaTeX GUI editors for latex file editing'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-7076715868386111475</id><published>2010-05-04T13:28:00.000+10:00</published><updated>2010-05-04T13:28:41.484+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='programming language'/><category scheme='http://www.blogger.com/atom/ns#' term='perl'/><title type='text'>How to install additional perl modules on linux</title><content type='html'>&lt;tt&gt;It can be as simple as this: &lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;perl -MCPAN -e 'install &lt;module::name&gt;'&lt;/module::name&gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;Some interaction may be required to proceed the installation such as confirmation of installing some dependent modules.&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt; &lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;It seems you need to have CPAN module installed first to be able to run this.&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;You can use yum (on fedora) or apt-get (on ubuntu) to install the module first.&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;More information on &lt;a href="http://www.cpan.org/misc/cpan-faq.html#How_install_Perl_modules"&gt;CPAN website&lt;/a&gt;.&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt;&lt;br /&gt;&lt;/tt&gt;&lt;br /&gt;&lt;tt&gt; &lt;/tt&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-7076715868386111475?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/7076715868386111475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=7076715868386111475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/7076715868386111475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/7076715868386111475'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2010/05/how-to-install-additional-perl-modules.html' title='How to install additional perl modules on linux'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-3801366370874412535</id><published>2010-04-21T17:15:00.001+10:00</published><updated>2010-04-21T17:16:23.204+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wii'/><category scheme='http://www.blogger.com/atom/ns#' term='geexbox'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='media center'/><title type='text'>How to turn wii into a media center</title><content type='html'>There is a piece of small linux-based media center software called geexbox. This software has been ported to wii. That means that the popular video game console - wii - can be turned into a decent media center. Please do not expect it can play full HD movies, as the hardware of wii is quite low profile compared to ps3 or xbox 360. However, it does cope with various media formats (e.g., avi, mkv, wmv, rm, rmvb and etc).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The following is a few tips to install the geexbox media center to wii.&lt;br /&gt;&lt;br /&gt;From the following link the information of geexbox for  wii - the media center on wii - can be found (including the setup instruction).&lt;br /&gt;&lt;a href="http://geexboxforwii.sourceforge.net/content/" target="_blank"&gt;http://geexboxforwii.&lt;wbr&gt;&lt;/wbr&gt;sourceforge.net/content/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;According to the setup instruction, to get geexbox work on wii, you  need to install HBC (The Homebrew Channel) on wii first. &lt;br /&gt;&lt;br /&gt;To  install HBC, you need to use a hacking tool which can be found at:&lt;br /&gt;&lt;a href="http://bannerbomb.qoid.us/" target="_blank"&gt;http://bannerbomb.qoid.us/&lt;/a&gt;&lt;br /&gt;There are two versions, and&amp;nbsp; the v2 should be used if the wii system menu version  is 4.2&lt;br /&gt;&lt;br /&gt;The following video tells you how to check wii system  menu:&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=c-LIM_o_i4I" target="_blank"&gt;http://www.youtube.com/watch?&lt;wbr&gt;&lt;/wbr&gt;v=c-LIM_o_i4I&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-3801366370874412535?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/3801366370874412535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=3801366370874412535' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/3801366370874412535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/3801366370874412535'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2010/04/how-to-turn-wii-into-media-center.html' title='How to turn wii into a media center'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-2458446320956619834</id><published>2010-02-22T16:52:00.000+11:00</published><updated>2010-02-22T16:52:04.952+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plug-in'/><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='syntax highlight'/><title type='text'>Post source code with syntax highlighted using wordpress plugin</title><content type='html'>It seems blogger.com does not support syntax highlighting when posting source code (for example java source code). When viewing some posts at wordpress.com, i found it does have support for syntax highlighting, which is quite convenient for programmers to communicate coding idea clearly. &lt;br /&gt;&lt;br /&gt;However, by default, the wordpress blogging software does not support source code syntax highlighting as i tried.So i assume that it should have some third-party plug-ins that support this syntax highlighting and formatting feature.&lt;br /&gt;&lt;br /&gt;What i found is the following useful plug-in: &lt;a href="http://wordpress.org/extend/plugins/syntaxhighlighter/"&gt;SyntaxHighlighter Evolved&lt;/a&gt;&lt;br /&gt;It seems that the wordpress.com also uses this plug-in. Actually, there are &lt;a href="http://wordpress.org/extend/plugins/tags/syntax-highlighting"&gt;more similar plug-ins&lt;/a&gt; available. However, i may just try the "SyntaxHighlighter Evolved" one first to see if it satisfies my need.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wordpress.org/extend/plugins/syntaxhighlighter/"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-2458446320956619834?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/2458446320956619834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=2458446320956619834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/2458446320956619834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/2458446320956619834'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2010/02/post-source-code-with-syntax.html' title='Post source code with syntax highlighted using wordpress plugin'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-651269983283351876</id><published>2010-02-12T16:28:00.001+11:00</published><updated>2010-02-12T16:32:03.357+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='tab'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='UI'/><title type='text'>JQuery UI Tabs: Updating URL with hash while clicking the tab</title><content type='html'>JQuery UI Tabs is a popular choice of multi-tab implementation on a simple web page. It provides a bookmarkable URL for each tab like "http://www.mydomain.com/mypage&lt;b&gt;#my-tab-1&lt;/b&gt;"&lt;br /&gt;&lt;br /&gt;However, but default, when you click a tab, the hash part ("#my-tab-1" as in the previous example) will not be updated to the browser's address bar. So here's a problem: If a user clicks a link in the panel of the second tab and goes to another page, he/she can not return immediately to that tab when the "back" button of the browser is hit. Instead, he/she will see the default tab (which is normally the first tab). This is somewhat inconvenient to the user.&lt;br /&gt;&lt;br /&gt;This problem is also described in the blog "&lt;a href="http://weblog.muledesign.com/2009/05/bookmarkable_tabs_with_jquery_ui.php"&gt;Bookmarkable Tabs with jQuery UI&lt;/a&gt;". It uses another JQuery plugin "scrollTo" to resolve the problem. However, I think there can be a simple solution by using the tab event.&lt;br /&gt;&lt;br /&gt;Here's my simple solution and it just solved the problem of updating the URL with the hash while clicking the tab. It updates the URL in the 'tabshow' event.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(function() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;$("#tabs").tabs();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;$("#tabs").bind('tabsshow',function(event, ui) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;window.location = ui.tab;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;})&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;script type="text/javascript"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; $(function() {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $("#tabs").tabs();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $("#tabs").bind('tabsshow',function(event, ui) {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; window.location = ui.tab;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; })&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/script&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;script type="text/javascript"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(function() {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $("#tabs").tabs();&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $("#tabs").bind('tabsshow',function(event, ui) {&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; window.location = ui.tab;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; })&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-651269983283351876?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/651269983283351876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=651269983283351876' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/651269983283351876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/651269983283351876'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2010/02/jquery-ui-tabs-updating-url-with-hash.html' title='JQuery UI Tabs: Updating URL with hash while clicking the tab'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-7972303204844233312</id><published>2010-02-04T12:04:00.000+11:00</published><updated>2010-02-04T12:22:52.552+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inbox'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><title type='text'>View the Unread Emails only in Gmail Inbox</title><content type='html'>Days after days, it is easy to accumulate hundreds of unread messages out of thousands in the Gmail Indox for a lazy person like me. &lt;br /&gt;&lt;br /&gt;Someday, I decided to do a cleaning to eliminate all the unread messages, either marking it read or deleting it. However, by default, Gmail does not seem to have a quick link to allow me to view all these unread emails in Inbox.&lt;br /&gt;&lt;br /&gt;Fortunately, Gmail does provide a search term combination to list only unread messages in Inbox. The magic search term is "&lt;span style="font-weight: bold;"&gt;is:unread in:inbox&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;More information on Gmail Search can be found at &lt;a href="http://mail.google.com/support/bin/answer.py?hl=en&amp;amp;answer=7190"&gt;http://mail.google.com/support/bin/answer.py?hl=en&amp;amp;answer=7190&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-7972303204844233312?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/7972303204844233312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=7972303204844233312' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/7972303204844233312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/7972303204844233312'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2010/02/view-unread-emails-only-in-gmail-inbox.html' title='View the Unread Emails only in Gmail Inbox'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-2779784952376216658</id><published>2009-07-07T17:21:00.000+10:00</published><updated>2009-07-07T17:28:17.606+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reference management'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='paper writing'/><title type='text'>Useful reference management tools for academic paper writing</title><content type='html'>Doing research often involves paper reading and writing. Referring to other papers is almost inevitable when writing papers. However, sometimes, the processing of writing a paper is frustrating just because you forget which exact papers to cite when it comes to the section of related works.&lt;br /&gt;&lt;br /&gt;So reference paper management is quite important for the academic life. There are of course various tools that help to make the job easier. Here is a few tools i've used or encountered.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Endnote&lt;/h2&gt;Endnote is not a bad choice if you write papers using Microsoft word, as it has plugins for MS word. Most online research databases offer the export format that can be imported into Endnote, and you can also enter your owns manually. Notes or comments of the reference paper can also added to keep track of your thinking. It provides a lot of formatting styles to choose when it comes to the last bibliography section, which saves a lot of time for tedious formatting. However, you probably need a few time to play around with it before you master it.&lt;br /&gt;&lt;br /&gt;Endnote is not free. The good thing is that students at some higher eduction institutes and universities can use it for free as the universities often have a volume license.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;JabRef&lt;/h2&gt;When I started to use Latex to write the papers, Endnote seemed helpless. Hopefully, &lt;a title="JabRef" href="http://jabref.sourceforge.net/" id="r3e:"&gt;JabRef&lt;/a&gt; came into my sight after a few search.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;"&lt;a title="JabRef" href="http://jabref.sourceforge.net/" id="io4-"&gt;JabRef&lt;/a&gt; is an open source       bibliography reference manager. The native file format used       by JabRef is BibTeX,       the standard LaTeX bibliography format.       JabRef runs on the Java VM (version       1.5 or newer), and should work equally well on Windows,       Linux and Mac OS X."&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;As most online research databases support BibTex exportation, so populating a JabRef database quite easy and straight forward.  It also allows you to add links to the papers, so a single click can open the paper and allows you to have a second read. It offers integration to several tools. When I used WinEdt for the latex paper editing, the integration works quite good.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;b&gt;Zotero&lt;/b&gt;&lt;/h2&gt;When i came across &lt;a title="Zotero" href="http://www.zotero.org/" id="u6mg"&gt;Zotero&lt;/a&gt;, i've already been out of university for a while. So i haven't got a chance to play around it with real research tasks. But from what it says, it seems quite promising. So i've recommended it to my friends who are still doing fun researches in the universities.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;&lt;a title="Zotero" href="http://www.zotero.org/" id="yjxn"&gt;Zotero&lt;/a&gt; is a free, easy-to-use &lt;b&gt;Firefox extension&lt;/b&gt;          to help you &lt;b&gt;collect, manage, and cite&lt;/b&gt; your research sources. It lives right where you do          your work—in the &lt;b&gt;web browser&lt;/b&gt; itself.    &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2&gt;Other tools&lt;/h2&gt; Of course, there are plenty other similar tools for this reference management tasks. You can find the more complete list and the comparison at&lt;br /&gt;&lt;a title="http://en.wikipedia.org/wiki/Comparison_of_reference_management_software" href="http://en.wikipedia.org/wiki/Comparison_of_reference_management_software" id="qaha"&gt;http://en.wikipedia.org/wiki/Comparison_of_reference_management_software&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-2779784952376216658?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/2779784952376216658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=2779784952376216658' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/2779784952376216658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/2779784952376216658'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2009/07/useful-reference-management-tools-for.html' title='Useful reference management tools for academic paper writing'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-6589420581889461579</id><published>2009-04-03T16:31:00.000+11:00</published><updated>2009-04-03T16:49:09.934+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='money management'/><category scheme='http://www.blogger.com/atom/ns#' term='personal finance'/><title type='text'>Personal Finance Software and online services for Money Management</title><content type='html'>Use a piece of software or a online service to consolidate all your financial information may help you better understand your money.&lt;br /&gt;&lt;br /&gt;Here is &lt;a href="http://robin.mytechtip.com/2009/04/03/list-of-personal-finance-software-websites-for-money-management/"&gt;a list of personal finance software and online services&lt;/a&gt; that could help you find a suitable choice to manage your money.&lt;br /&gt;&lt;br /&gt;A more detailed article on&lt;a href="http://www.pcworld.com/article/152734/personal_finance_20_a_wealth_of_new_web_apps.html"&gt; the personal finance 2.0 web applications&lt;/a&gt; could also be helpful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-6589420581889461579?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/6589420581889461579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=6589420581889461579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/6589420581889461579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/6589420581889461579'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2009/04/personal-finance-software-and-online.html' title='Personal Finance Software and online services for Money Management'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-1018503465936449845</id><published>2008-06-11T17:26:00.000+10:00</published><updated>2008-06-13T10:59:36.195+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='programming language'/><title type='text'>Using __autoload function in PHP 5</title><content type='html'>The magic function "&lt;a title="__autoload" href="http://www.php.net/autoload" id="o195"&gt;__autoload&lt;/a&gt;" is a new feature of PHP version 5. When this function is defined, it will be triggered when php can not find the class it is calling from the explicit "require", "include" statements.  The benefit of using this magic function can be as follows: &lt;ul id="n-g2"&gt;&lt;li id="n-g20"&gt;&lt;b id="n-g21"&gt;Improve performance:&lt;/b&gt; This lazy loading mechanism avoids loading unnecessary class files.&lt;/li&gt;&lt;li id="n-g22"&gt;&lt;b id="n-g23"&gt;Central control of including class files:&lt;/b&gt; You don't have to write "include xxx", "include_once xxx", "require xxx", and "require_once xxx" in every file.&lt;/li&gt;&lt;li id="n-g24"&gt;&lt;b id="n-g25"&gt;Encouraging naming convention for class name/files:&lt;/b&gt; the better way you name your classes and files, the easier for you to make the __autoload function.&lt;/li&gt;&lt;li id="n-g26"&gt;&lt;b id="mez-"&gt;Flexibility to relocate php class files:&lt;/b&gt; since file including is controlled centrally, it is very easy to change the path of the included class files. no need to change every files.&lt;/li&gt;&lt;/ul&gt; Here's one article that tells you &lt;a title="how to write the __autoload function to improve the performance" href="http://www.zillionbits.com/programming/improve-php-performance-try-php-__autoload/" id="ohc2"&gt;how to write the __autoload function to improve the performance&lt;/a&gt;. And also some one argues that this &lt;a title="__autoload function is evil" href="http://www.akbkhome.com/blog.php/View/77/is+__autoload+evil%3F.html" id="e3md"&gt;__autoload function might be evil&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-1018503465936449845?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/1018503465936449845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=1018503465936449845' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/1018503465936449845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/1018503465936449845'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2008/06/using-autoload-function-in-php-5-magic.html' title='Using __autoload function in PHP 5'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-182794503461214709</id><published>2008-02-27T17:09:00.000+11:00</published><updated>2008-02-28T17:24:26.822+11:00</updated><title type='text'>Configuring Tomcat Virtual Hosts and Making it Work with Apache</title><content type='html'>This job contains two parts, which are the following:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tomcat virtual hosts&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;Normally, deployment of web application under tomcat is quite easy. Just copy the 'war'ed application (for example app.war) to the webapps directory (e.g., /var/lib/tomcat5/webapps).&lt;br /&gt;&lt;br /&gt;However, if there are multiple virtual hosts that are hosted by tomcat, this may not work. The following actions need to be taken:&lt;br /&gt;&lt;br /&gt;1. Modify the server.xml (e.g., "/etc/tomcat5/server.xml" if you have tomcat installed via yum on Fedra Core 8,  aka FC8)  file to add virtual host in. The following is an example:&lt;br /&gt;&lt;blockquote&gt;&amp;lt;host name="www.mydomain.com" appbase="&lt;span style="color:#3333ff;"&gt;/var/www/hosts/mydomain/public_html&lt;/span&gt;"&lt;br /&gt;        unpackWARs="true" autoDeploy="true"&lt;br /&gt;        xmlValidation="false" xmlNamespaceAware="false"&amp;gt;&lt;br /&gt;&lt;br /&gt;        &amp;lt;Valve className="org.apache.catalina.valves.AccessLogValve"&lt;br /&gt;                 directory="&lt;span style="color:#3333ff;"&gt;/var/www/hosts/mydomain/logs&lt;/span&gt;"  prefix="&lt;span style="color:#3333ff;"&gt;mydoamin_access_log.&lt;/span&gt;" suffix=".txt"&lt;br /&gt;                 pattern="combined" resolveHosts="false"/&amp;gt;&lt;br /&gt;&amp;lt;/host&amp;gt;&lt;/blockquote&gt;NOTE: this section of configuration needs to be put in the RIGHT place in the file hiearachy (check the comments in the file). Otherwise, it will cause problem.&lt;br /&gt;&lt;br /&gt;2. Put your web app (i.e., app.war) in the the directory indicated by "appBase" (here it is '/var/www/hosts/mydomain/public_html').&lt;br /&gt;&lt;br /&gt;3. Restart tomcat (e.g., "/etc/init.d/tomcat5 restart") and access the web to test it (i.e., http://www.mydomain.com:8080/app)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Working with Apache&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;To allow users to access the web application without accessing 8080 port, Apache needs to be configured to work with tomcat. This actually requires a connector. By default in FC 8, proxy_ajp is used. It's quite easy to setup this connector. The following is an configuration example for a virtual host. All we need is to add a line.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;ServerName www.mydomain.com&lt;br /&gt;DocumentRoot /var/www/hosts/mydomain/public_html&lt;br /&gt;ErrorLog /var/www/hosts/mydomain/logs/error_log&lt;br /&gt;CustomLog /var/www/hosts/mydomain/logs/access_log combined&lt;br /&gt;DirectoryIndex index.html index.htm index.php index.php4 index.php5&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt; ProxyPass /app/ ajp://www.mydomain.com:8009/app/&lt;/span&gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-182794503461214709?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/182794503461214709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=182794503461214709' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/182794503461214709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/182794503461214709'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2008/02/configuring-tomcat-virtual-hosts-and.html' title='Configuring Tomcat Virtual Hosts and Making it Work with Apache'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-3908567986117492230</id><published>2007-12-20T13:48:00.000+11:00</published><updated>2007-12-20T13:56:14.333+11:00</updated><title type='text'>Java Regular Expression (regex): A Very Simple Example</title><content type='html'>Here's a very simple example of  using java builtin packages (java.util.regex) that deals with regular expression. I made this to remind me that using java regex is quite simple and easy.&lt;br /&gt;&lt;br /&gt;Sun web site has more details of this &lt;a title="java.util.regex package and regex patterns" href="http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html" id="y8i8"&gt;java.util.regex package and regex patterns&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt; java.util.regex.Matcher;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt; java.util.regex.Pattern;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;public&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt; TestRegex {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;      &lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;/**&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;       &lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;*&lt;/span&gt; &lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;@param&lt;/span&gt;&lt;/b&gt; &lt;span style=";font-family:&amp;quot;;" &gt;args&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;       &lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;*/&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;      &lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;public&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;static&lt;/span&gt;&lt;/b&gt; &lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;void&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt; main(String[] args) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;            &lt;/p&gt;  &lt;p class="MsoNormal"&gt;            &lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;// a test input string&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;            String input = &lt;/span&gt;&lt;span style=";font-family:&amp;quot;;" &gt;"This is a test string.nThis is a second line."&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;            &lt;/p&gt;  &lt;p class="MsoNormal"&gt;            &lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;// first compile a pattern with multiple-line enabled&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;            Pattern pn = Pattern.&lt;i&gt;compile&lt;/i&gt;(&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;" &gt;"(\w+)"&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;, Pattern.&lt;/span&gt;&lt;i&gt;&lt;span style=";font-family:&amp;quot;;" &gt;MULTILINE&lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;            &lt;/p&gt;  &lt;p class="MsoNormal"&gt;            &lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;// then get a matcher from the input string&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;            Matcher mr = pn.matcher(input);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;            &lt;/p&gt;  &lt;p class="MsoNormal"&gt;            &lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;// show group count (should be 1)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;            System.&lt;/span&gt;&lt;i&gt;&lt;span style=";font-family:&amp;quot;;" &gt;out&lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;.println(&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;" &gt;"Group Count: "&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt; + mr.groupCount());&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;            &lt;/p&gt;  &lt;p class="MsoNormal"&gt;            &lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;// print out all the words&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;            &lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;while&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt; (mr.find()) {&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;                  System.&lt;/span&gt;&lt;i&gt;&lt;span style=";font-family:&amp;quot;;" &gt;out&lt;/span&gt;&lt;/i&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;.println(mr.group(1));&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;            }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;      }&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;color:black;"  &gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-3908567986117492230?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/3908567986117492230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=3908567986117492230' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/3908567986117492230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/3908567986117492230'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2007/12/java-regular-expression-regex-very.html' title='Java Regular Expression (regex): A Very Simple Example'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-8544960571854409981</id><published>2007-12-04T16:57:00.000+11:00</published><updated>2007-12-04T17:04:50.250+11:00</updated><title type='text'>Using Java Desktop API to Launch System Browser</title><content type='html'>In Python, we have a module called "&lt;a title="webbrowser" href="http://docs.python.org/lib/module-webbrowser.html" id="i7jv"&gt;webbrowser&lt;/a&gt;" that allows us to open given URLs in most mainstream browsers (IE, Firefox, and etc).&lt;br /&gt;&lt;br /&gt;Recently, I found Java SE 6 has added new APIs that support the similar function. The new added Desktop APIs are reflected through a class called "java.awt.Desktop". For example, the following code opens a url in the system default browser (without considering exceptions).&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:Courier New;"&gt;...&lt;/span&gt; &lt;span style="font-family:Courier New;"&gt;&lt;br /&gt;import java.awt.Desktop;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;...&lt;/span&gt; &lt;span style="font-family:Courier New;"&gt;&lt;br /&gt;Desktop desktop = Desktop.getDesktop();&lt;/span&gt; &lt;span style="font-family:Courier New;"&gt;&lt;br /&gt;desktop.browse(new URI(''a_url"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;In addition to open urls in browsers, it also provides API that can also open files with their default associated applications. More detailed information and examples on this Desktop API can be found here:&lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/"&gt;Using the Desktop API in Java SE 6&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-8544960571854409981?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/8544960571854409981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=8544960571854409981' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/8544960571854409981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/8544960571854409981'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2007/12/using-java-desktop-api-to-launch-system.html' title='Using Java Desktop API to Launch System Browser'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-5850756249677424683</id><published>2007-11-22T14:55:00.000+11:00</published><updated>2007-12-03T17:37:06.369+11:00</updated><title type='text'>Making Linux (Fedora Core 8) as a Gateway and a DHCP Server</title><content type='html'>Making Linux (Fedora Core 8) as a Gateway and a DHCP Server&lt;br /&gt;&lt;br /&gt;Recently I configured a Linux computer as a gateway and a dhcp server for a friend. To prevent me from forgetting the things learned, I just make some notes here.&lt;br /&gt;&lt;br /&gt;The main jobs involved are the configurations of the network interface cards (NICs), iptables, and dhcpd.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;First, NICs. &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Normally, we have two NICs on the Linux machine:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;one connecting to the public internet via cable modem, DSL modem or whatever. We name it eth0; &lt;/li&gt;&lt;li&gt;the other connecting to an internal private network (usually a pub or a switch where all the internal computers are plugged in). We name it eth1.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;We need to assign IPs and default gateways of the two NICs PROPERLY. Normally, they fall in different networks(?). eth1 is often given a private IP like "192.168.1.1".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Then, iptables. &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Before setting up the iptables, ip forward should be enabled on this Linux machine. This can be done by add/change an entry in the file "/etc/sysctl.conf" to the following:&lt;br /&gt;&lt;blockquote&gt;net.ipv4.ip_forward = 1&lt;br /&gt;&lt;/blockquote&gt;(This works on Fedora Core 7 and 8. I am not sure if other Linux distributions have the same configuration file.)&lt;br /&gt;&lt;br /&gt;The "iptables" program is then configured to allow NAT. we need to enable computers behind the firewall (the linux machine) to access public internet transparently. For this requirement, SNAT is required. So the following rules are desirable:&lt;br /&gt;&lt;blockquote&gt;&lt;pre style="font-family: Garamond;"&gt;&lt;span style="font-size:78%;"&gt;# Forward all packets from eth1 (internal network) to eth0 (the public internet)&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-family: Garamond;font-size:78%;" &gt;iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre style="font-family: Garamond;"&gt;&lt;span style="font-size:78%;"&gt;# Forward packets that are part of existing and related connections from eth0 to eth1&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: Garamond;"&gt;&lt;pre&gt;&lt;span style="font-size:78%;"&gt;iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;pre style="font-family: Garamond;"&gt;&lt;span style="font-size:78%;"&gt;# Enable SNAT functionality on eth0. a.b.c.d are generally the ip of the eth0&lt;/span&gt;&lt;/pre&gt;&lt;pre style="font-family: Garamond;"&gt;&lt;pre&gt;&lt;span style="font-size:78%;"&gt;iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth0 -j SNAT --to-source a.b.c.d&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;There is a &lt;a title="Linux Example Fireware Script" href="http://oceanpark.com/notes/firewall_example.html" id="rxj4"&gt;Linux Example Fireware Script&lt;/a&gt; that provides more detailed description on how to configure the iptables for this function. Actually, we made our configuration based on it. And there are also some &lt;a title="useful explanations on using Linux firewall" href="http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables" id="mn_0"&gt;useful explanations on using Linux firewall&lt;/a&gt; at this web site: &lt;a title="Linux Home Networking" href="http://www.linuxhomenetworking.com/" id="cjj:"&gt;Linux Home Networking&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If we need to host a web server behind the firewall and allow people from the public internet to access it, I think we need to enable DNAT. I found the book "Linux Administration: A Beginner's Guide" (by Steve Shah and Wale Soyinka) has very nice figure illustrations on the two different situations (when to use SNAT or DNAT).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Finally, DHCP.&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Configuring DHCP seems quite straightforward. DHCP service program should be installed. And its configuration file ("/etc/dhcpd.conf") should be properly composed as there are no default configurations in the conf file. We referred to this howto tutorial: "&lt;a title="Configuring the DHCP Server" href="http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch08_:_Configuring_the_DHCP_Server" id="tzu1"&gt;Configuring the DHCP Server&lt;/a&gt;" to get our job done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-5850756249677424683?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/5850756249677424683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=5850756249677424683' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/5850756249677424683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/5850756249677424683'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2007/11/making-linux-fedora-core-8-as-gateway.html' title='Making Linux (Fedora Core 8) as a Gateway and a DHCP Server'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-4935233134036538268</id><published>2007-11-06T21:08:00.000+11:00</published><updated>2007-12-03T17:38:34.677+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nokia n73'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile phone'/><category scheme='http://www.blogger.com/atom/ns#' term='Chinese'/><title type='text'>Enabling N73 (English version) to display and input Chinese characters</title><content type='html'>Enabling N73 (English version) to display and input Chinese characters&lt;br /&gt;&lt;br /&gt;This is a downside point to buy a phone overseas. Although it was made in China, it doesn't have Chinese support (read/input or both) in most cases. And that happened to me when I bought a Nokia N73 phone in Australia.&lt;br /&gt;&lt;br /&gt;It is annoying sometimes as all the messages and file names in Chinese can not be displayed properly, especially when i used my phone in my home country China.&lt;br /&gt;&lt;br /&gt;So i persisted to look for a solution to this matter. And finally I got it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;First, enabling the display of Chinese characters.&lt;/b&gt;&lt;br /&gt;Since the OS in Nokia N73 is symbian s60 3rd edition, which fully supports Unicode, I believe the cause of disability of display Chinese on my N73 is only the lack of proper fonts. After numerous searching and study, my belief turned out to be true, and I found the way to use additional fonts to display Chinese characters.  Here's the trick:&lt;br /&gt;&lt;div style="margin-left: 40px;"&gt;1. Get some TTF fonts that have Chinese character supports. Here's a &lt;a title="link (in Chinese) that has some fonts for download" href="http://www.wda.com.cn/viewthread.php?tid=488821" id="j9_5"&gt;link (in Chinese) that has some fonts for download&lt;/a&gt;.&lt;br /&gt;2. Rename the font files properly. The &lt;a title="default font files in N73 (or maybe other s603rd)" href="http://www.mobile9.com/invboard/index.php?showtopic=33352" id="oeej"&gt;default font files in N73 (or maybe other s603rd)&lt;/a&gt; have the following names:&lt;br /&gt; nosnr60.ttf = Nokia Sans S60 Regular&lt;br /&gt; nssb60.ttf = Nokia Sans S60 SemiBold&lt;br /&gt; nstsb60.ttf = Nokia Sans S60 TitleSmBd S60&lt;br /&gt; S60ZDIGI.ttf = Series 60 ZDigi,  just LCD digits 0-9 plus .:,;*?&lt;br /&gt;So just use the corresponding names for the new font files.&lt;br /&gt;3. Make sure folder "/resource/fonts"  exists on the phone memory card (if not, just create it). put the font files in the folder.&lt;br /&gt;4. Maybe a restart of the phone is required.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Then it's done. the phone can display Chinese in messages, media players, ....&lt;br /&gt;&lt;a title="More detailed information on changing fonts can be found here" href="http://darlamack.blogs.com/darlamack/2007/05/changing_fonts_.html" id="b_z-"&gt;More detailed information on changing fonts can be found here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Some times you may still find messed characters in the phone media player when playing mp3 songs with Chinese titles. This is because the tags (ID3?) in mp3 files are not encoded in Unicode (UTF8), you can use tools like &lt;a title="mp3tag" href="http://mp3tag.de/en/" id="a1by"&gt;mp3tag&lt;/a&gt; to convert the tag info encoding (mostly from GBK or GB18030 to UTF8) before transferring mp3 files to the phone.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Then, enabling the input of Chinese characters.&lt;/b&gt;&lt;br /&gt;This could be even simpler. Installing a Chinese input method would get it done. And fortunately, I found this &lt;a title="A4 input method (in Chinese)" href="http://www.a4user.com/" id="d769"&gt;A4 input method (in Chinese)&lt;/a&gt; works quite well on my N73, plus it has a free version for personal use. The drawback is that this method only works for composing messages. However, this is enough for me!&lt;br /&gt;&lt;br /&gt;The above methods work quire well for my N73 phone. I hope this helps you if you have the similar situations. I think they are safer than some ROM reflashing methods that break the warranty conditions. However, I am not responsible if the methods cause any damage to your phone:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-4935233134036538268?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/4935233134036538268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=4935233134036538268' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/4935233134036538268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/4935233134036538268'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2007/11/enabling-n73-english-version-to-display.html' title='Enabling N73 (English version) to display and input Chinese characters'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-4412948466682905734</id><published>2007-03-14T15:25:00.000+11:00</published><updated>2007-03-14T15:27:46.910+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming language'/><title type='text'>Python: should I learn this language?</title><content type='html'>Recently, I got interested in this new language: Python, partially because of &lt;a href="http://contenthere.blogspot.com/2006/07/sean-kellys-better-web-application.html"&gt;an interesting screencast on web application development&lt;/a&gt;, which can be viewed from &lt;a href="http://www.jpl.nasa.gov/"&gt;NASA's Jet Propulsion Laboratory&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The first question that came into my mind was: What are the features of this "script language" compared to some other script languages such as Perl  and PHP.&lt;br /&gt;&lt;br /&gt;Perl is a popular script language, which  I learned a bit for a project. It's true that I felt uncomfortable with its code readability.&lt;br /&gt;&lt;br /&gt;PHP is a language that I've got known for  a long time and have used for several projects.  It's a good language to make dynamic web pages.  However, it's a shame that I sometime still forget to put $ before variables. This caused me a lot of debugging trouble when I used it at the very begining.&lt;br /&gt;&lt;br /&gt;Then,  the following article partially answered my question:&lt;br /&gt;&lt;a href="http://www.linuxjournal.com/article/3882"&gt;Why Python? from Linux Journal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So I've got more interested in Python...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-4412948466682905734?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/4412948466682905734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=4412948466682905734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/4412948466682905734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/4412948466682905734'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2007/03/python-should-i-learn-this-language.html' title='Python: should I learn this language?'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-115916062833025141</id><published>2006-09-25T15:03:00.000+10:00</published><updated>2006-09-25T15:07:25.650+10:00</updated><title type='text'>latex table: packages for Multirow and multicolumn spanning</title><content type='html'>Making table in latex is a tedious job for me.   You have to code it manually to set different parameters for different styles you want. Never as straightforward as  in  Word.&lt;br /&gt;&lt;br /&gt;I finnally find out that I can not do multiple column or multiple row spanning without additional packages.  Fortunately, I read  the following article, which quickly helped me out.&lt;br /&gt;&lt;br /&gt;Anyway, you need the &lt;span style="font-weight: bold;"&gt;multirow &lt;/span&gt;package, that is, to put&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;   \usepackage{multirow}&lt;/span&gt; in preamble of the latex file.&lt;br /&gt;&lt;br /&gt;More details, refer to&lt;br /&gt;&lt;a href="http://www.minds.nuim.ie/%7Epage/serendipity/index.php?/archives/43-Multirow-and-multicolumn-spanning-with-latex-tables.html"&gt;Multirow and multicolumn spanning with latex tables&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-115916062833025141?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/115916062833025141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=115916062833025141' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115916062833025141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115916062833025141'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2006/09/latex-table-packages-for-multirow-and.html' title='latex table: packages for Multirow and multicolumn spanning'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-115742844161351358</id><published>2006-09-05T13:54:00.000+10:00</published><updated>2006-09-05T13:54:01.663+10:00</updated><title type='text'>Html embedded WYSISWG text editor</title><content type='html'>Some blog and wiki websites allow users to edit their blogs or wiki articles with various formatting options such as bold, italic and even allowing hyperlink image insertion.  it looks like a lightweight "Word".&lt;br /&gt;&lt;br /&gt;Here are such text editors I found on the web. They can be integreated into your web application or some online content management systems (CMS) so that users can output beautiful texts&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fckeditor.net/"&gt;FCKeditor - The text editor for Internet&lt;/a&gt; (open souce, LGPL(?))&lt;br /&gt;&lt;br /&gt;And here's a long list:&lt;br /&gt;&lt;a href="http://www.htmlarea.com/directory/Web_Software_Components/WYSIWYG_Editors/"&gt;Web Software Components: WYSIWYG Editors at htmlArea.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-115742844161351358?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/115742844161351358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=115742844161351358' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115742844161351358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115742844161351358'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2006/09/html-embedded-wysiswg-text-editor.html' title='Html embedded WYSISWG text editor'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-115276816170683628</id><published>2006-07-13T15:22:00.000+10:00</published><updated>2006-07-13T15:22:41.773+10:00</updated><title type='text'>Update FC3 to FC4 (or FC5) Using Yum</title><content type='html'>The following article is quite helpful for those who want to upgrade Fedora core version3 to Fedora core version 4/5&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.roguewolves.com/update-fc3-to-fc4-using-yum"&gt;Update FC3 to FC4 Using Yum | Rogue Wolves&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-115276816170683628?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/115276816170683628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=115276816170683628' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115276816170683628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115276816170683628'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2006/07/update-fc3-to-fc4-or-fc5-using-yum.html' title='Update FC3 to FC4 (or FC5) Using Yum'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-115175888407334065</id><published>2006-07-01T23:01:00.000+10:00</published><updated>2006-07-01T23:01:24.090+10:00</updated><title type='text'>mod_write: rewrite the urls and make them user/search engine friendly</title><content type='html'>Here are topics describing how to use mod_write, one module of apache to rewrite the URLs, making them look pretty good and friendly for both human users and search engines.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.phpfreaks.com/tutorials/23/1.php"&gt;Search Engine Friendly URLs with mod_rewrite&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.biorust.com/tutorials/detail/226/en/"&gt;Using mod_rewrite with Apache and PHP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-115175888407334065?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/115175888407334065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=115175888407334065' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115175888407334065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115175888407334065'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2006/07/modwrite-rewrite-urls-and-make-them.html' title='mod_write: rewrite the urls and make them user/search engine friendly'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-115129035441556702</id><published>2006-06-26T12:52:00.000+10:00</published><updated>2009-08-31T16:12:33.068+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cvs command'/><category scheme='http://www.blogger.com/atom/ns#' term='substitution mode'/><title type='text'>Change text mode to binary in CVS</title><content type='html'>It's a common mistake to check in binary files in text mode in CVS.&lt;br /&gt;There are commands to correct this:&lt;br /&gt;cvs admin -kb thefile&lt;br /&gt;cvs update -A thefile&lt;br /&gt;&lt;br /&gt;Refer to the following for a script to do the job&lt;br /&gt;&lt;a href="http://www.ratrobot.com/programming/shell/page6.html"&gt;CVS binary script&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you are working with newer version of CVSNT, you may probably need to use the following command instead:&lt;br /&gt;&lt;pre class="screen"&gt;$ cvs update -kb thefile&lt;br /&gt;$ cvs commit -fm "Change substitution mode" thefile&lt;br /&gt;&lt;br /&gt;More information can be found in &lt;a href="http://www.cvsnt.org/manual/html/Substitution-modes.html"&gt;CVSNT Manual&lt;/a&gt;.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-115129035441556702?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/115129035441556702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=115129035441556702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115129035441556702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115129035441556702'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2006/06/change-text-mode-to-binary-in-cvs.html' title='Change text mode to binary in CVS'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-115102600091283103</id><published>2006-06-23T11:21:00.000+10:00</published><updated>2006-06-23T11:26:40.923+10:00</updated><title type='text'>create ISO image from CDROM/DVD in linux</title><content type='html'>It's very simple. just use the following command:&lt;br /&gt;dd if=/dev/hdc of=/home/username/cdcopy.iso&lt;br /&gt;&lt;br /&gt;remember to umount the cd-rom before using the above command.&lt;br /&gt;&lt;br /&gt;more information:&lt;br /&gt;&lt;a href="http://www.macosxhints.com/article.php?story=20031225124417353"&gt;macosxhints.com - Create an exact duplicate of a CD from the command line&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.macosxhints.com/archive/index.php/t-12403.html"&gt;howto create iso from cdrom? [Archive] - The macosxhints Forums&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.linuxdevcenter.com/linux/cmd/cmd.csp?path=d/dd"&gt;Linux Command Directory: dd&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-115102600091283103?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/115102600091283103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=115102600091283103' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115102600091283103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/115102600091283103'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2006/06/create-iso-image-from-cdromdvd-in.html' title='create ISO image from CDROM/DVD in linux'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-116082641881126944</id><published>2006-06-14T21:44:00.000+10:00</published><updated>2006-10-14T21:53:19.103+10:00</updated><title type='text'>LaTeX Editor - a GUI editor for latex file</title><content type='html'>Please refer to the following link:&lt;br /&gt;&lt;a href="http://chwang.blogspot.com/2006/06/latex-gui-editors-for-latex-file.html"&gt;Some well known GUI editors for Latex editing on Windows&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-116082641881126944?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/116082641881126944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=116082641881126944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/116082641881126944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/116082641881126944'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2006/06/latex-editor-gui-editor-for-latex-file.html' title='LaTeX Editor - a GUI editor for latex file'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-24721846.post-114715940233696479</id><published>2006-05-09T17:23:00.000+10:00</published><updated>2006-05-09T17:31:00.023+10:00</updated><title type='text'>Force English environment linux to use Chinese input methods</title><content type='html'>Force English environment linux to use Chinese input methods.&lt;br /&gt;So you can type Chinese in English environment. Here's the article about this topic:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.7xm.net/article/1/2006/03/2006032123043.html"&gt;让英文Linux系统显示和输入中文&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24721846-114715940233696479?l=chwang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chwang.blogspot.com/feeds/114715940233696479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=24721846&amp;postID=114715940233696479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/114715940233696479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/24721846/posts/default/114715940233696479'/><link rel='alternate' type='text/html' href='http://chwang.blogspot.com/2006/05/force-english-environment-linux-to-use.html' title='Force English environment linux to use Chinese input methods'/><author><name>Robin</name><uri>http://www.blogger.com/profile/09637936219678021859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
