<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C0EARHk9fCp7ImA9WhRWF0w.&quot;"><id>tag:blogger.com,1999:blog-7253982</id><updated>2012-01-04T13:14:05.764-08:00</updated><category term="ruby" /><category term="linux" /><category term="tour" /><category term="rational" /><category term="emf" /><category term="java" /><category term="apple" /><category term="aix" /><category term="x86" /><category term="multi-core" /><category term="asm" /><category term="life" /><category term="C++" /><category term="git" /><category term="publish" /><category term="python" /><category term="spring" /><category term="rails" /><category term="mac" /><category term="stock" /><category term="parallel" /><category term="performance" /><category term="vim" /><category term="eclipse" /><category term="newzealand" /><category term="ubuntu" /><category term="jee" /><category term="openmp" /><category term="svn" /><category term="gmf" /><title>Gan, Zhi</title><subtitle type="html">My current interests:
1. Multi-threaded programming
2. Performance tuning
3. Programming language and tools.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://ganzhi.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>163</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/GanZhi" /><feedburner:info uri="ganzhi" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkECR38_fyp7ImA9WhRWE00.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-6156538014835775158</id><published>2011-12-30T20:11:00.000-08:00</published><updated>2011-12-30T20:11:06.147-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-30T20:11:06.147-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="mac" /><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title>How to install python package to your home directory with easy_install</title><content type="html">&lt;br /&gt;
If you are a cautious python user like me, &amp;nbsp;who is not very keen to pollute global package hierarchy, this article is for you! This is pretty easy, but it takes me sometime to figure it out. Firstly, Mac OS &lt;b&gt;&lt;i&gt;Lion&lt;/i&gt;&lt;/b&gt; already has Python 2.7 installed. And it already support locating packages inside one special directory under user's home. So we only need to create a file named .pydistutils.cfg under user's home directory and put following content into it:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="color: #990000;"&gt;[install]&lt;br /&gt;install_lib = /Users/ganzhi/Library/Python/2.7/lib/python/site-packages&lt;br /&gt;install_scripts = ~/Application/bin&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
After that, easy_install will install packages to the location specified by "&lt;i&gt;install_lib&lt;/i&gt;" property. In my case, it's "/Users/ganzhi/Library/Python/2.7/lib/python/site-packages". We should assign a path, which allows "write" operation and is a part of PATH environment environment, to "&lt;i&gt;install_scripts&lt;/i&gt;"property. After that, we can install python packages by following command:&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="color: #990000;"&gt;easy_install jinja2&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #990000;"&gt;easy_install PIL&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-6156538014835775158?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/6156538014835775158/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=6156538014835775158" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/6156538014835775158?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/6156538014835775158?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/I-XogX9PrJM/how-to-install-python-package-to-your.html" title="How to install python package to your home directory with easy_install" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/12/how-to-install-python-package-to-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAHQX4-fyp7ImA9WhRQFUU.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-7937774005939200108</id><published>2011-12-10T23:02:00.001-08:00</published><updated>2011-12-10T23:15:30.057-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-10T23:15:30.057-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="newzealand" /><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>搬到新屋子了</title><content type="html">经过两个周末的忙碌之后，我搬到了一个新的房子里面。主要原因是为了准备儿子的入学，不得不去到一个好学校的附近。在之前的房子住了一个多月，走的时候也颇为留恋。房子住得非常舒服，首先要感谢Mike和Emily的诸多照顾。在Remuera房子里，什么都不用操心，水、电、宽带一应俱全。今天搬过来之后，一切都需要自己负责了，麻烦啊...&lt;br /&gt;
&lt;br /&gt;
说太多也没用，还是上图吧&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-XtiwYYPr1ZA/TuRXgqFkqLI/AAAAAAAACNQ/-lZdxnuCNhU/s1600/IMG_1534.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" src="http://4.bp.blogspot.com/-XtiwYYPr1ZA/TuRXgqFkqLI/AAAAAAAACNQ/-lZdxnuCNhU/s320/IMG_1534.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
房子后面有一小片花园&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-mm1-X5KBed0/TuRX6ylZ7UI/AAAAAAAACNY/WWRYloIowiA/s1600/IMG_1602.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="238" src="http://3.bp.blogspot.com/-mm1-X5KBed0/TuRX6ylZ7UI/AAAAAAAACNY/WWRYloIowiA/s320/IMG_1602.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
今天刚申请了Telecom的宽带，这个不用说太必要了，接下来是水、电和气了...&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-7937774005939200108?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/7937774005939200108/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=7937774005939200108" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/7937774005939200108?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/7937774005939200108?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/ezAwA863N_Q/blog-post_10.html" title="搬到新屋子了" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-XtiwYYPr1ZA/TuRXgqFkqLI/AAAAAAAACNQ/-lZdxnuCNhU/s72-c/IMG_1534.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/12/blog-post_10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IHQHY8eSp7ImA9WhRRF04.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-2592447638926350094</id><published>2011-12-01T01:10:00.001-08:00</published><updated>2011-12-01T01:25:31.871-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-01T01:25:31.871-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="newzealand" /><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>新公司工作一月体会</title><content type="html">到新公司报道已经一个月有余了，这个过程怎么说呢，痛并快乐着吧。新公司让我喜欢的有以下几点：&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;基本没有政治斗争，小公司没精力搞这些。老板大权在握，员工之间利益没有冲突，没有必要搞政治。&lt;/li&gt;
&lt;li&gt;用的工具非常顺手，都是小而精的工具。小公司怎么选择工具呢，最大的考量是员工的工作效率，其次是成本。基于互联网的服务在这方面非常有优势。基本不会出现由于工具原因造成效率降低的现象。&lt;/li&gt;
&lt;li&gt;不用加班。由于公司文化的原因，基本不会有加班。这一个月来的经验，德国人真的很敬业。&lt;/li&gt;
&lt;li&gt;对人比较尊重，人情味相对浓厚一些。&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
目前来说，还没有适应的地方也有很多：&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;语言问题，由于英语现在是第一语言，所以使用频率更高，要求也更高了。目前还是感觉障碍很多。&lt;/li&gt;
&lt;li&gt;需要了解的技术和产品很多，由于小公司人少，所以每个人需要多了解一些。这个无可厚非了，只是需要改变一下学习习惯。&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
希望能尽快度过这个过渡时期，尽早进入得心应手的时代 :)&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-2592447638926350094?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/2592447638926350094/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=2592447638926350094" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/2592447638926350094?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/2592447638926350094?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/Pg8ePjolP24/blog-post.html" title="新公司工作一月体会" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/12/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEARXc8cSp7ImA9WhdaGE0.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-2025536947639476102</id><published>2011-10-28T04:17:00.000-07:00</published><updated>2011-10-28T04:17:24.979-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-28T04:17:24.979-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="newzealand" /><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>寻访Justices of Peace</title><content type="html">&lt;span class="Apple-style-span" style="background-color: white; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
Justices of Peace是我来新西兰之后才了解到的。就我粗略的理解来讲，Justices of Peace是当地有声望的一些志愿者，他们充当公证员的角色。当你需要证明你某些方面的承诺，例如支持你的直系亲属拿到新西兰的visa时，会需要Justices of Peace来签字认证。有点类似于中国的公证员。但是Justices of Peace不收取任何费用和礼物。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;wbr&gt;&lt;/wbr&gt;昨天我上Google找到了周围的几个JP的地址和联系方式，&lt;wbr&gt;&lt;/wbr&gt;不过心里一直在犹豫。一来觉得自己英文不好担心解释不清楚，&lt;wbr&gt;&lt;/wbr&gt;二来觉得冒昧打扰别人不太好。有点举棋不定，&lt;wbr&gt;&lt;/wbr&gt;是要去图书馆找那种责任在身的JP还是找在家的JP呢？&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
不过随后我想到要尽早让家人过来，所以就下定决心给人家(Mr. Gover)打电话了。在一阵令人紧张的沟通之后，&lt;wbr&gt;&lt;/wbr&gt;对方终于弄懂了我的意思，然后非常慷慨的承诺帮忙。&lt;wbr&gt;&lt;/wbr&gt;我随后确认时间，对方说你现在过来就可以。于是，我就激动的拎着书包就冲了过去。首先经历了找路一关，&lt;wbr&gt;&lt;/wbr&gt;由于我的新SIM卡这一阵不能用（可能是电话被联通锁机了），&lt;wbr&gt;&lt;/wbr&gt;所以我就只好一边找路一边前行了。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
靠着我那奇差的找路天赋，&lt;wbr&gt;&lt;/wbr&gt;最后终于在天黑之前找到了Mr. Gover的家，还好这里天黑得晚。Mr. Gover的家签名的铭牌上刻了Justices of Peace的字样。主人家对这个称号还是非常自豪的。&lt;wbr&gt;&lt;/wbr&gt;在一阵自我介绍和我表达了希望和家人尽早团聚的心情之后，&lt;wbr&gt;&lt;/wbr&gt;JP非常爽快的帮我签名了。Mr. Gover人非常好，非常和蔼。&lt;wbr&gt;&lt;/wbr&gt;在签字盖章之后，他还表示以后有事情随时找他帮忙。结束之后，Mr. Gover拿出一个本子记录我的一些信息，&lt;wbr&gt;&lt;/wbr&gt;因为新西兰移民局会找他验证这个。&lt;wbr&gt;&lt;/wbr&gt;他的本子上满满的都是找他帮忙的人的记录，相当多！&lt;wbr&gt;&lt;/wbr&gt;我想他肯定花了很多自己的空闲时间来做这个Justices of Peace。做完这个之后，我很快就和主人道别离开了，&lt;wbr&gt;&lt;/wbr&gt;因为不希望过多的占用他的休息时间。回来的路更黑了，&lt;wbr&gt;&lt;/wbr&gt;不过这时的心情已经不一样了。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
有点感慨，在一个陌生的国家，一个陌生人都能这样愿意帮助你。&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
BTW，这里有个Justices of Peace的列表：&lt;span class="Apple-style-span" style="background-color: #fdf6e5; color: #009933; font-family: arial, sans-serif; font-size: x-small; line-height: 15px;"&gt;www.yellow.co.nz/&lt;b style="color: #009933; font-style: normal;"&gt;justices&lt;/b&gt;_of_the_&lt;b style="color: #009933; font-style: normal;"&gt;peace&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-2025536947639476102?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/2025536947639476102/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=2025536947639476102" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/2025536947639476102?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/2025536947639476102?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/yQ6yDDVxW6o/justices-of-peace.html" title="寻访Justices of Peace" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/10/justices-of-peace.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkABQ30zeip7ImA9WhdaF00.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-6743603457489133858</id><published>2011-10-27T02:45:00.000-07:00</published><updated>2011-10-27T02:45:52.382-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-27T02:45:52.382-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="newzealand" /><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>新西兰游记 (2)</title><content type="html">上班两天了，我上班的地方在Surrey Crescent，住的地方在Ladies Mile。开车过去非常快，只需要14分钟，不过坐公车就非常不方便了。充分体会到了新西兰公共交通的不完善，跟国内比完全不是一个数量级的！公交车半小时才有一趟，还相当的昂贵。现在每天上班都需要1个半小时。不过坐公车的人也不多，这几天我还没有见过有人站立的。更不要说北京的城铁比了。&lt;br /&gt;
&lt;br /&gt;
上了两天班，大致上什么也没干，光看文档了。周围的同事都是5～6点准时下班，真是太让人舒心了。在这里，项目经理会把时间安排得相对合理，不会把人压榨得非常厉害。嗯，不管世界怎么变，不加班才应该是常态。&lt;br /&gt;
&lt;br /&gt;
新西兰风光优美，城市整洁。据说很多人家里都有小船。这是在公车上拍到的帆船俱乐部的港口，停靠着一排排的小船。生活真够愉快的。&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-TFtMdSgMQbY/TqkkRlsWmCI/AAAAAAAACMM/6MSL5ZSenMY/s1600/IMG_1102.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/-TFtMdSgMQbY/TqkkRlsWmCI/AAAAAAAACMM/6MSL5ZSenMY/s320/IMG_1102.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
天空永远都是那么蓝，而且直到晚上8点多才天黑，很适合小孩放学之后玩耍：&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-W2VDCQdmBVI/Tqkl2fv4yNI/AAAAAAAACMc/-QFUIuemths/s1600/IMG_1067.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://1.bp.blogspot.com/-W2VDCQdmBVI/Tqkl2fv4yNI/AAAAAAAACMc/-QFUIuemths/s320/IMG_1067.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
在countdown超市看到的的青岛啤酒：&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/--3pqodauOvA/TqklCMgymCI/AAAAAAAACMU/q1lN5eyhpjo/s1600/IMG_1090.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://4.bp.blogspot.com/--3pqodauOvA/TqklCMgymCI/AAAAAAAACMU/q1lN5eyhpjo/s320/IMG_1090.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
最大的担心，现在英语有点不够用了，希望能早点提升上来吧。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-6743603457489133858?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/6743603457489133858/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=6743603457489133858" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/6743603457489133858?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/6743603457489133858?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/YFKyq5G0HrM/2.html" title="新西兰游记 (2)" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-TFtMdSgMQbY/TqkkRlsWmCI/AAAAAAAACMM/6MSL5ZSenMY/s72-c/IMG_1102.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/10/2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8EQXs9eip7ImA9WhdaF00.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-6216090110805292526</id><published>2011-10-24T13:33:00.000-07:00</published><updated>2011-10-27T02:46:40.562-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-27T02:46:40.562-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="newzealand" /><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>新西兰游记 (1)</title><content type="html">今天是到达新西兰的第二天，对新西兰还没有什么感觉。从北京经香港转机到Auckland，一路上大概花了20个小时。其实从北京有直飞的飞机，不过不是每天都有。因为周一是这边的劳动节，所以在家里过完周六才走的。&lt;br /&gt;
&lt;div&gt;
有朋友问我怎么过来的新西兰，我这边的大致经过如下：&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;拿到Job Offer，这一步会比较难。如果没有新西兰的朋友帮忙介绍。&lt;/li&gt;
&lt;li&gt;办理工作签证，在北京的新西兰有一个专门的机构办理，在东直门附近。我办理的是Work to Resident签证，20天就拿到了。签证机构会联系给你offer的雇主来确认工作的真实性。现在IT算是新西兰的短缺机能，所以签证比较好办。&lt;/li&gt;
&lt;li&gt;买机票，单程的机票大概在5000人民币左右。&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
由于刚住下没多久，所以对Auckland还没有什么感觉。不过房东Mike和Emily两人都很好，相信应该会相处的比较愉快。&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-6216090110805292526?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/6216090110805292526/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=6216090110805292526" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/6216090110805292526?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/6216090110805292526?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/6yAAo6AnDbc/1.html" title="新西兰游记 (1)" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/10/1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEMQH8zeSp7ImA9WhdUEkw.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-7490445092802461589</id><published>2011-09-28T06:48:00.000-07:00</published><updated>2011-09-28T06:48:01.181-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-28T06:48:01.181-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="spring" /><category scheme="http://www.blogger.com/atom/ns#" term="jee" /><title>It's very easy to create GWT projects with Spring Roo</title><content type="html">Spring Roo is a very cool open source tool, which can great reduce the time for forging a workable application. After executing below steps, a website can be established:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;project --topLevelPackage com.ibm.sde --projectName FeatureManagement --java 6&lt;br /&gt;
persistence setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY&lt;br /&gt;
enum type --class ~.domain.FeatureStatus&lt;br /&gt;
enum constant --name ENABLE&lt;br /&gt;
enum constant --name DISABLE&lt;br /&gt;
entity --class ~.domain.Feature --testAutomatically &lt;br /&gt;
field string --fieldName displayName --notNull&lt;br /&gt;
focus --class com.ibm.sde.domain.Feature&lt;br /&gt;
field date --fieldName created --type java.util.Date&lt;br /&gt;
field enum --fieldName status --type com.ibm.sde.domain.FeatureStatus&lt;br /&gt;
gwt setup&lt;br /&gt;
logging setup --level INFO&lt;/blockquote&gt;After that, execute "mvn gwt:run" to execute the application. Spring Roo is still very young, so it has several problems:&lt;br /&gt;
&lt;blockquote&gt; It has no support to multiple module project yet&lt;br /&gt;
If you move classes to a new folder in Eclipse, it brings a little chaos&lt;/blockquote&gt;But still, this tool looks promising. When it become 2.0, 3.0, or 4.0, it can be a very handy tool for java software developers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-7490445092802461589?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/7490445092802461589/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=7490445092802461589" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/7490445092802461589?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/7490445092802461589?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/Wye_-sNv8GQ/its-very-easy-to-create-gwt-projects.html" title="It's very easy to create GWT projects with Spring Roo" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/09/its-very-easy-to-create-gwt-projects.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQDQ3s4fCp7ImA9WhdWF0w.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-5369514195411162075</id><published>2011-09-10T20:53:00.000-07:00</published><updated>2011-09-10T20:56:12.534-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-10T20:56:12.534-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>"How can I keep from singing" - 儿子诗歌朗诵的题目</title><content type="html">&amp;nbsp; 我挺喜欢的一首诗歌，为了儿子的诗歌朗诵，又找了个中午翻译版，稍微改了改：&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&amp;nbsp; 我的生命在无尽的歌声中流淌&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 尽管人世间仍然充满了忧伤&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 我听见了那来自远方的声音&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 那清晰的歌声带来了新生的曙光&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 虽然生活中充斥着争吵和喧嚷&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 那音乐却始终在我耳边回响&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 她早已进入了我的灵魂深处&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 没有什么东西能让我停止歌唱&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 虽然那暴风雨在我身边隆隆作响&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 我心中的真理却仍和从前一样&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 虽然那黑暗正悄悄吞噬着大地&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 我心中的歌声却把整个世界照亮&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 再大的风暴也不会让我惊慌&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 只要我能坚持自己的理想&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 既然爱是整个世界的主宰&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; 那还有什么能让我停止歌唱？&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-5369514195411162075?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/5369514195411162075/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=5369514195411162075" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/5369514195411162075?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/5369514195411162075?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/RImDYyInM1Q/how-can-i-keep-from-singing.html" title="&quot;How can I keep from singing&quot; - 儿子诗歌朗诵的题目" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/09/how-can-i-keep-from-singing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUNSHk8cCp7ImA9WhdTEk8.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-6244536359038635139</id><published>2011-07-09T07:04:00.000-07:00</published><updated>2011-07-09T07:04:59.778-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-09T07:04:59.778-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tour" /><title>夏威夷旅行记 （4）</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-cw2Qv6KIzi4/ThhbyVVeo3I/AAAAAAAACJU/_Hi6Yonoo08/s1600/DSC_3535.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-cw2Qv6KIzi4/ThhbyVVeo3I/AAAAAAAACJU/_Hi6Yonoo08/s320/DSC_3535.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-J5NeAv-fJAs/Thhb_o5VOMI/AAAAAAAACJY/A78_gDKZffY/s1600/DSC_3536.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://2.bp.blogspot.com/-J5NeAv-fJAs/Thhb_o5VOMI/AAAAAAAACJY/A78_gDKZffY/s320/DSC_3536.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-SN0WXuZI0AI/ThhcJyfLEgI/AAAAAAAACJc/1QjFEazBKf8/s1600/DSC_3537.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://2.bp.blogspot.com/-SN0WXuZI0AI/ThhcJyfLEgI/AAAAAAAACJc/1QjFEazBKf8/s320/DSC_3537.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-xkZvLsMgxqM/ThhcWCnKSbI/AAAAAAAACJg/Bpps8zibpe4/s1600/DSC_3538.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-xkZvLsMgxqM/ThhcWCnKSbI/AAAAAAAACJg/Bpps8zibpe4/s320/DSC_3538.JPG" width="212" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-U5zMmFmHuL8/ThhchzUWkSI/AAAAAAAACJk/YBVZqFY1io4/s1600/DSC_3539.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-U5zMmFmHuL8/ThhchzUWkSI/AAAAAAAACJk/YBVZqFY1io4/s320/DSC_3539.JPG" width="212" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-6244536359038635139?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/6244536359038635139/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=6244536359038635139" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/6244536359038635139?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/6244536359038635139?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/wSONHJSXZ7g/4.html" title="夏威夷旅行记 （4）" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-cw2Qv6KIzi4/ThhbyVVeo3I/AAAAAAAACJU/_Hi6Yonoo08/s72-c/DSC_3535.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/07/4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8HSXoyeip7ImA9WhdTEkw.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-8689666005696751150</id><published>2011-07-09T06:38:00.000-07:00</published><updated>2011-07-09T06:40:38.492-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-09T06:40:38.492-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tour" /><title>夏威夷旅行记 （3）</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-bhMANC_taso/ThhUaSpojkI/AAAAAAAACIU/mgJ2h8XO5mc/s1600/DSC_3343.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-bhMANC_taso/ThhUaSpojkI/AAAAAAAACIU/mgJ2h8XO5mc/s320/DSC_3343.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-xPRThdVEA0E/ThhVWoyz9hI/AAAAAAAACIc/gyFA38URosc/s1600/DSC_3372.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/-xPRThdVEA0E/ThhVWoyz9hI/AAAAAAAACIc/gyFA38URosc/s320/DSC_3372.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Rhweita94ZQ/ThhV1cev8xI/AAAAAAAACIg/HSz2z7VuxKE/s1600/DSC_3376.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/-Rhweita94ZQ/ThhV1cev8xI/AAAAAAAACIg/HSz2z7VuxKE/s320/DSC_3376.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-YXIednwO2VE/ThhWOjR-gVI/AAAAAAAACIk/OUkqpbvf63c/s1600/DSC_3380.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://2.bp.blogspot.com/-YXIednwO2VE/ThhWOjR-gVI/AAAAAAAACIk/OUkqpbvf63c/s320/DSC_3380.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-w3HVSDz4t4A/ThhWbU_ld3I/AAAAAAAACIo/sJ3sj5ia6aw/s1600/DSC_3395.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-w3HVSDz4t4A/ThhWbU_ld3I/AAAAAAAACIo/sJ3sj5ia6aw/s320/DSC_3395.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-T9WVXBK3p08/ThhWkmDM4YI/AAAAAAAACIs/HSUG6Lxnbkg/s1600/DSC_3410.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-T9WVXBK3p08/ThhWkmDM4YI/AAAAAAAACIs/HSUG6Lxnbkg/s320/DSC_3410.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ikyKltfNUQ0/ThhWwud0w8I/AAAAAAAACIw/ZpqEXIwFODY/s1600/DSC_3417.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/-ikyKltfNUQ0/ThhWwud0w8I/AAAAAAAACIw/ZpqEXIwFODY/s320/DSC_3417.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-IHs9iqCjdSw/ThhW8qi4McI/AAAAAAAACI0/FU2P6OULcps/s1600/DSC_3426.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-IHs9iqCjdSw/ThhW8qi4McI/AAAAAAAACI0/FU2P6OULcps/s320/DSC_3426.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-DnArfuP0fWM/ThhXFVnZRBI/AAAAAAAACI4/zWdS3hbooJc/s1600/DSC_3446.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://2.bp.blogspot.com/-DnArfuP0fWM/ThhXFVnZRBI/AAAAAAAACI4/zWdS3hbooJc/s320/DSC_3446.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6Yi2ZBrdAFc/ThhXQshAzJI/AAAAAAAACI8/ZooRtMmPcbQ/s1600/DSC_3522.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://2.bp.blogspot.com/-6Yi2ZBrdAFc/ThhXQshAzJI/AAAAAAAACI8/ZooRtMmPcbQ/s320/DSC_3522.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-2M8X6wwnVbk/ThhX431jJPI/AAAAAAAACJA/vN1N12obaec/s1600/DSC_3525.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-2M8X6wwnVbk/ThhX431jJPI/AAAAAAAACJA/vN1N12obaec/s320/DSC_3525.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-BlxyOFJVXVA/ThhYfK6AOsI/AAAAAAAACJE/r9Y2ZmkQdEU/s1600/DSC_3526.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-BlxyOFJVXVA/ThhYfK6AOsI/AAAAAAAACJE/r9Y2ZmkQdEU/s320/DSC_3526.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-0VFMKr1S_uA/ThhZFTYCy3I/AAAAAAAACJI/A6ZXFLySZXw/s1600/DSC_3528.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://1.bp.blogspot.com/-0VFMKr1S_uA/ThhZFTYCy3I/AAAAAAAACJI/A6ZXFLySZXw/s320/DSC_3528.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-SwCmjbUplK0/ThhZowbVn6I/AAAAAAAACJM/DhJQL0JPVNY/s1600/DSC_3529.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-SwCmjbUplK0/ThhZowbVn6I/AAAAAAAACJM/DhJQL0JPVNY/s320/DSC_3529.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-8689666005696751150?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/8689666005696751150/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=8689666005696751150" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/8689666005696751150?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/8689666005696751150?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/kIw9gyjUUBo/3.html" title="夏威夷旅行记 （3）" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-bhMANC_taso/ThhUaSpojkI/AAAAAAAACIU/mgJ2h8XO5mc/s72-c/DSC_3343.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/07/3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYFSHs-fyp7ImA9WhdTEkw.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-2017252361615163585</id><published>2011-07-09T06:11:00.000-07:00</published><updated>2011-07-09T06:11:59.557-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-09T06:11:59.557-07:00</app:edited><title>夏威夷旅行记 （2）</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-zbKxRndv5ms/ThhBA00jepI/AAAAAAAACHs/0Y1fjj0BLI4/s1600/DSC_3122.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-zbKxRndv5ms/ThhBA00jepI/AAAAAAAACHs/0Y1fjj0BLI4/s320/DSC_3122.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-0aX7US3xPCs/ThhBXn_byJI/AAAAAAAACHw/pGYuvQBH8aE/s1600/DSC_3155.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/-0aX7US3xPCs/ThhBXn_byJI/AAAAAAAACHw/pGYuvQBH8aE/s320/DSC_3155.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-UCUOZTTPX0Q/ThhRN6__RnI/AAAAAAAACH4/aOq1kAovv0I/s1600/DSC_3180.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/-UCUOZTTPX0Q/ThhRN6__RnI/AAAAAAAACH4/aOq1kAovv0I/s320/DSC_3180.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ox682FmT-5k/ThhRYok8oEI/AAAAAAAACH8/4FvDmDGl0r0/s1600/DSC_3181.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://1.bp.blogspot.com/-ox682FmT-5k/ThhRYok8oEI/AAAAAAAACH8/4FvDmDGl0r0/s320/DSC_3181.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-xN_QIDklk2U/ThhRmfW19wI/AAAAAAAACIA/r6WMKkqxBZs/s1600/DSC_3184.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/-xN_QIDklk2U/ThhRmfW19wI/AAAAAAAACIA/r6WMKkqxBZs/s320/DSC_3184.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BkGdCHiunWw/ThhR-L0DZCI/AAAAAAAACIE/k7NGjpNm2os/s1600/DSC_3246.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/-BkGdCHiunWw/ThhR-L0DZCI/AAAAAAAACIE/k7NGjpNm2os/s320/DSC_3246.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-lMtMtyecInw/ThhTFsd8acI/AAAAAAAACIM/6-95UrPzbkU/s1600/DSC_3228.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/-lMtMtyecInw/ThhTFsd8acI/AAAAAAAACIM/6-95UrPzbkU/s320/DSC_3228.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-2017252361615163585?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/2017252361615163585/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=2017252361615163585" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/2017252361615163585?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/2017252361615163585?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/uXvgy6OjE6w/2.html" title="夏威夷旅行记 （2）" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-zbKxRndv5ms/ThhBA00jepI/AAAAAAAACHs/0Y1fjj0BLI4/s72-c/DSC_3122.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/07/2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AFQn84cSp7ImA9WhdTEkw.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-7426793645635614107</id><published>2011-07-09T04:27:00.000-07:00</published><updated>2011-07-09T04:41:53.139-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-09T04:41:53.139-07:00</app:edited><title>夏威夷旅行记 （1）</title><content type="html">&lt;div class="mobile-photo"&gt;&lt;/div&gt;今年我非常幸运的获得了公司的Best Of IBM大奖，获得了去夏威夷的机会。 &lt;br /&gt;
&lt;br /&gt;
发图片吧： &lt;br /&gt;
&lt;br /&gt;
夏威夷的机场很小：&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5627313920344592178" src="http://1.bp.blogspot.com/-asDsa0xP7vY/Thg8Mh3ADzI/AAAAAAAACHU/bPJAUFMpHec/s320/IMG_0337-721566.JPG" style="margin-left: auto; margin-right: auto;" /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;机场入口&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="mobile-photo"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="mobile-photo"&gt;Honolulu的酒店很好，给我们免费升级到了海景房： &lt;/div&gt;&lt;div class="mobile-photo"&gt;&lt;/div&gt;&lt;div class="mobile-photo"&gt;&lt;/div&gt;&lt;div class="mobile-photo"&gt;&lt;/div&gt;&lt;div class="mobile-photo"&gt;&lt;/div&gt;&lt;div class="mobile-photo"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-9wNB7WVOXSg/Thg8M6XTiPI/AAAAAAAACHc/ZWjMG_AZJrI/s1600/IMG_0340-722902.JPG" style="margin-left: auto; margin-right: auto;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5627313926922537202" src="http://1.bp.blogspot.com/-9wNB7WVOXSg/Thg8M6XTiPI/AAAAAAAACHc/ZWjMG_AZJrI/s320/IMG_0340-722902.JPG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;海景&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="mobile-photo"&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-BYD4FMGrxhs/Thg8NkFFarI/AAAAAAAACHk/4MYSh0AHxqs/s1600/IMG_0341-725456.jpg" style="margin-left: auto; margin-right: auto;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5627313938120403634" src="http://2.bp.blogspot.com/-BYD4FMGrxhs/Thg8NkFFarI/AAAAAAAACHk/4MYSh0AHxqs/s320/IMG_0341-725456.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;传说中的火烈鸟&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-7426793645635614107?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/7426793645635614107/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=7426793645635614107" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/7426793645635614107?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/7426793645635614107?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/s1ZIAz5ubeE/1.html" title="夏威夷旅行记 （1）" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-asDsa0xP7vY/Thg8Mh3ADzI/AAAAAAAACHU/bPJAUFMpHec/s72-c/IMG_0337-721566.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/07/1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcMRXk8fSp7ImA9WhZXFE0.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-4228394500748325022</id><published>2011-05-03T00:34:00.000-07:00</published><updated>2011-05-03T00:34:44.775-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-03T00:34:44.775-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="apple" /><title>从Lotus Notes同步联系人到Gmail的简易方法</title><content type="html">周末买了iPhone 4，又面临从就手机同步“联系人”到新手机上的工作。网上查了一下，发现很多收费的工具，看上去都很不靠谱。随后研究了一下Lotus Notes和Gmail，找到了一个很简单的方法。&lt;br /&gt;
1. 首先，进入到Lotus Notes的Contacts功能里面，然后export所有的联系人到一个.csv文件里&lt;br /&gt;
2. 随后，在Gmail的Contact管理页面，Import这个.csv文件&lt;br /&gt;
3. 设置iPhone4使得其和Google同步calendar和contacts：&lt;br /&gt;
&lt;blockquote&gt;在iphone（ipad）的设置中将Exchange账号设置为Gmail账号的话，可以实现iphone自带日历和此Gmail账号的Google Calendar同步。&lt;/blockquote&gt;完成！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-4228394500748325022?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/4228394500748325022/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=4228394500748325022" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/4228394500748325022?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/4228394500748325022?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/IRpolq12P4w/lotus-notesgmail.html" title="从Lotus Notes同步联系人到Gmail的简易方法" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2011/05/lotus-notesgmail.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cNRX84fSp7ImA9Wx5UEU0.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-182671160237830003</id><published>2010-10-14T18:01:00.000-07:00</published><updated>2010-10-14T18:11:34.135-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-14T18:11:34.135-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="parallel" /><title>一个多线程Java程序的潜在bug</title><content type="html">多线程编程的难点就在于程序的正确性难以判断。Jeremy Manson发现了今天我们要介绍的这个在多线程环境下有bug的程序。首先，下面的Java代码在多线程环境下是正确的吗？&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class String {&lt;br /&gt;  private int hashcode;&lt;br /&gt;  public static int hashcode() {&lt;br /&gt;      if (this.hashcode == 0) {&lt;br /&gt;               int h = ... compute hash ...&lt;br /&gt;               this.hashcode = h;&lt;br /&gt;       }&lt;br /&gt;       return this.hashcode;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;初看上去似乎没有什么问题。尽管有一个data race存在，两个线程可能同时计算并保存hash值，但应该不影响正确性。&lt;br /&gt;&lt;br /&gt;问题在于编译器可能进行把以上代码翻译成为如下所示：&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class String {&lt;br /&gt;   private int hashcode;&lt;br /&gt;   public static int hashcode() {&lt;br /&gt;       int h = this.hashcode;&lt;br /&gt;       if (this.hashcode == 0) {&lt;br /&gt;           h = ... compute hash ...&lt;br /&gt;           this.hashcode = h;&lt;br /&gt;       }&lt;br /&gt;       return h;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;上面代码中我们用h来缓存了hashcode，随后，我们判断如果hashcode不等于0，那么就返回h。问题在于，在做第二个判断之前，hashcode的值可能已经被另外的线程改变，因此这个程序有可能返回一个0。这种错误即使是有多年经验的程序员也很难发现。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-182671160237830003?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/182671160237830003/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=182671160237830003" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/182671160237830003?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/182671160237830003?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/ZX_wRX3NzlA/javabug.html" title="一个多线程Java程序的潜在bug" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2010/10/javabug.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIMQnc8eSp7ImA9Wx5VF0w.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-4565008580687900613</id><published>2010-10-10T05:08:00.000-07:00</published><updated>2010-10-10T05:26:23.971-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-10T05:26:23.971-07:00</app:edited><title>IBM中国的新家</title><content type="html">Google Earth上的盘古大观模型:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_BswWlutyN3g/TLGtXOvLhBI/AAAAAAAACFI/I3P1W30mg9I/s1600/pangu.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 357px;" src="http://3.bp.blogspot.com/_BswWlutyN3g/TLGtXOvLhBI/AAAAAAAACFI/I3P1W30mg9I/s400/pangu.png" alt="" id="BLOGGER_PHOTO_ID_5526388832364889106" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-4565008580687900613?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/4565008580687900613/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=4565008580687900613" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/4565008580687900613?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/4565008580687900613?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/Mu9Q8650fM4/ibm.html" title="IBM中国的新家" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_BswWlutyN3g/TLGtXOvLhBI/AAAAAAAACFI/I3P1W30mg9I/s72-c/pangu.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2010/10/ibm.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQCQ3kzeCp7ImA9Wx5VEk0.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-246486877074811431</id><published>2010-10-04T07:56:00.001-07:00</published><updated>2010-10-04T07:59:22.780-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-04T07:59:22.780-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>乐高的火龙积木(II)</title><content type="html">这是乐高积木的另一个形态，儿子花了一个晚上完成的&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_BswWlutyN3g/TKnrPR5sSFI/AAAAAAAACEM/jG5yzQIyROg/s1600/FireDraggon.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 208px;" src="http://1.bp.blogspot.com/_BswWlutyN3g/TKnrPR5sSFI/AAAAAAAACEM/jG5yzQIyROg/s400/FireDraggon.jpg" alt="" id="BLOGGER_PHOTO_ID_5524205065682569298" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-246486877074811431?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/246486877074811431/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=246486877074811431" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/246486877074811431?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/246486877074811431?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/kYUHoVgVctk/ii.html" title="乐高的火龙积木(II)" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_BswWlutyN3g/TKnrPR5sSFI/AAAAAAAACEM/jG5yzQIyROg/s72-c/FireDraggon.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2010/10/ii.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMAQXY4fCp7ImA9Wx5WGUU.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-7506572841917964077</id><published>2010-10-01T19:53:00.000-07:00</published><updated>2010-10-01T20:00:40.834-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-10-01T20:00:40.834-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>乐高的火龙积木</title><content type="html">儿子对乐高积木相当的有兴趣。玩的过程很有乐趣，而且成就感是相当巨大的。&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_BswWlutyN3g/TKafeRoHYmI/AAAAAAAACEA/gTkifevkt2g/s1600/DSC_1195.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://1.bp.blogspot.com/_BswWlutyN3g/TKafeRoHYmI/AAAAAAAACEA/gTkifevkt2g/s400/DSC_1195.JPG" alt="" id="BLOGGER_PHOTO_ID_5523277335493042786" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-7506572841917964077?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/7506572841917964077/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=7506572841917964077" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/7506572841917964077?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/7506572841917964077?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/PWxiWqCnszI/blog-post.html" title="乐高的火龙积木" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_BswWlutyN3g/TKafeRoHYmI/AAAAAAAACEA/gTkifevkt2g/s72-c/DSC_1195.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2010/10/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IAQnkyfip7ImA9Wx5WFkg.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-1212334411630437697</id><published>2010-09-27T18:30:00.000-07:00</published><updated>2010-09-27T22:25:43.796-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-27T22:25:43.796-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="asm" /><category scheme="http://www.blogger.com/atom/ns#" term="parallel" /><category scheme="http://www.blogger.com/atom/ns#" term="aix" /><title>ABA问题为什么在Power平台上不存在</title><content type="html">大体上，亲自做过无锁编程的程序员会知道&lt;a href="http://en.wikipedia.org/wiki/ABA_problem"&gt;ABA问题&lt;/a&gt;的存在。在无锁编程中做CompareAndSwap时，它会在一个原子操作中完成以下步骤：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;检查某个内存地址的值是否等于某个时间以前的值&lt;/li&gt;&lt;li&gt;如果相等，那么对这个内存地址进行一个赋值操作&lt;/li&gt;&lt;li&gt;否则，不进行任何修改，直接返回失败信号标记&lt;/li&gt;&lt;/ol&gt;以上逻辑其实对于某些情况来说是有bug的。这发生在内存被修改多次之后，恰好又回到了原先某个时间的旧值。这个时候，CompareAndSwap指令会成功并修改内存中的值。Wikipedia有一个很好的&lt;a href="http://en.wikipedia.org/wiki/ABA_problem"&gt;Stack的例子&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;有趣的是，这个问题对于Power平台不存在。Power芯片并没有CompareAndSwap指令，它是用Linked-Load和Store-Conditional两个操作来进行无锁编程的：&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Load-Link: 读取某个内存地址，并设置一个特殊标志位。只要这个内存地址被修改，那么这个标志位就会被清除&lt;/li&gt;&lt;li&gt;Store-Conditional：当特殊标志位被设置时，进行赋值；否则，直接返回失败信号&lt;/li&gt;&lt;/ol&gt;也就是说只要对内存地址进行过修改，那么Store-Conditional就会失败。即使这块内存中保存的值和之前没有变化，Store-Conditional也不会成功。&lt;br /&gt;&lt;br /&gt;在Power平台上，Load-Link对应的指令是lwarx, 而Store-Conditional对应的指令是stwcx.这个指令(注意指令中的句号是必须的)。另外，标志位的清除并不精确，对于指定地址附近的写操作也可能造成标志位的清除。&lt;br /&gt;&lt;br /&gt;BTW，ABA问题对Java程序员来说也近乎不存在。这是由于Java中没有&lt;a href="http://en.wikipedia.org/wiki/Dangling_pointer"&gt;dangling pointer&lt;/a&gt;，而两个对象的地址不可能一样。而通常，ABA问题对于整数的原子操作是benign的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-1212334411630437697?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/1212334411630437697/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=1212334411630437697" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/1212334411630437697?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/1212334411630437697?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/CqcZCavClEY/abapower.html" title="ABA问题为什么在Power平台上不存在" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2010/09/abapower.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAEQ3wzfyp7ImA9WxFbE00.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-5369249913220516825</id><published>2010-07-04T21:13:00.000-07:00</published><updated>2010-07-04T21:21:42.287-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-04T21:21:42.287-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>Can't logon after installing wine on Ubuntu 10.4</title><content type="html">Today an interesting thing happened. After I installed wine into my Ubuntu box, the system began to reject my login requests. At first, I assumed that I used the wrong password cause I often had a bad memory.&lt;br /&gt;&lt;br /&gt;After several times of retry all passwords that I remembered, I finally gave up and decided to &lt;a href="http://www.redhat.com/docs/manuals/linux/RHL-7.3-Manual/custom-guide/s1-rescuemode-booting-single.html"&gt;boot into "single mode"&lt;/a&gt;. And I succeeded on this. But when I try to change password of my normal user account, the "passwd" program prompts "Authentication Token Manipulation Error". That makes me realized other thing rather than my password is wrong.&lt;br /&gt;&lt;br /&gt;The solution is simple, I entered into the "/etc/pam.d" and use backup file replaced all files updated by my wine installation. Several files are modified for enabling pam_winbind components. After I revoke these modifications, the system come back to work again. Anyway, I didn't need pam_winbind :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-5369249913220516825?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/5369249913220516825/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=5369249913220516825" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/5369249913220516825?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/5369249913220516825?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/keCxoH4XAwo/cant-logon-after-installing-wine-on.html" title="Can't logon after installing wine on Ubuntu 10.4" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2010/07/cant-logon-after-installing-wine-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQGSXgyeyp7ImA9WxFRFkw.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-4358852617975853343</id><published>2010-04-19T20:45:00.000-07:00</published><updated>2010-04-30T00:42:08.693-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-30T00:42:08.693-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="performance" /><category scheme="http://www.blogger.com/atom/ns#" term="openmp" /><category scheme="http://www.blogger.com/atom/ns#" term="parallel" /><category scheme="http://www.blogger.com/atom/ns#" term="multi-core" /><title>使用OpenMP实现自定义的reduction方式</title><content type="html">OpenMP的一个限制是reduction只能对内置数据类型进行有限的几种操作。如果希望操作非内置类型，可以采用如下代码：&lt;br /&gt;&lt;br /&gt;#pragma omp parallel for&lt;br /&gt;for( int i=0; i&amp;lt;N; i++ ){&lt;br /&gt;  int thread_rank = omp_get_max_threads()();&lt;br /&gt;  local_res[thread_rank]+=i;&lt;br /&gt;  local_res[thread_rank]/=2;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;for(int i=0;i &amp;lt; omp_get_max_threads()();i++)&lt;br /&gt;    res += local_res[i];&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-4358852617975853343?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/4358852617975853343/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=4358852617975853343" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/4358852617975853343?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/4358852617975853343?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/Ip9SvV3wDIU/openmpreduction.html" title="使用OpenMP实现自定义的reduction方式" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2010/04/openmpreduction.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcFQHg5fCp7ImA9WxFSF04.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-3409655730799973489</id><published>2010-04-18T23:07:00.000-07:00</published><updated>2010-04-19T20:10:11.624-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-19T20:10:11.624-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="git" /><title>Git-revert is cool!</title><content type="html">It's a pleasure to use Git ...&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;git revert&lt;/span&gt;: This command is really cool. Assume I committed some bad code into the repository several days ago,  now I found it makes trouble for me. So I can delete just that "bad" commit with this command. Very convenient! I don't know SVN has similar feature. BTW, --no-commit option should be used if you don't want the auto-commit behavior of git-reverse.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;git status&lt;/span&gt;: My favoriate option is "git status -uno", which means don't show any untracked files. This is really useful when you compiler generated a lot of ".o" and ".so" file for you automatically.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-3409655730799973489?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/3409655730799973489/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=3409655730799973489" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/3409655730799973489?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/3409655730799973489?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/lS5jywfpuMc/git-reverse-is-cool.html" title="Git-revert is cool!" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2010/04/git-reverse-is-cool.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcAQXY_eCp7ImA9WxBRFE4.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-3545064341067415467</id><published>2010-01-02T02:58:00.000-08:00</published><updated>2010-01-02T03:00:40.840-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-02T03:00:40.840-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>儿子编的非常曲折的故事</title><content type="html">有一个大老虎想吃鱼肉，有一个小女孩不让它吃鱼肉，让它吃别的。最后，大老虎把小女孩给吃了。&lt;br /&gt;后来，来了一个大象，它把大老虎给踩扁了。然后，有一只小狐狸想吃大象，结果，小狐狸被大象卷了起来。大象把小狐狸给甩了出去&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-3545064341067415467?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/3545064341067415467/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=3545064341067415467" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/3545064341067415467?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/3545064341067415467?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/S9_d9kLIcYQ/blog-post.html" title="儿子编的非常曲折的故事" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2010/01/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4CQ3syeip7ImA9WxNQFkQ.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-208825045116710271</id><published>2009-09-23T01:29:00.001-07:00</published><updated>2009-09-23T01:36:02.592-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-23T01:36:02.592-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>回龙观的彩虹</title><content type="html">在回龙观公园春游时拍的，今天翻照片的时候看到了，非常赞！&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_BswWlutyN3g/SrnctOAYM6I/AAAAAAAAB9w/O1ALCNbtWP8/s1600-h/100_0047.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_BswWlutyN3g/SrnctOAYM6I/AAAAAAAAB9w/O1ALCNbtWP8/s400/100_0047.JPG" alt="" id="BLOGGER_PHOTO_ID_5384577498910045090" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-208825045116710271?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/208825045116710271/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=208825045116710271" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/208825045116710271?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/208825045116710271?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/7p6ti-1AcAQ/blog-post.html" title="回龙观的彩虹" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_BswWlutyN3g/SrnctOAYM6I/AAAAAAAAB9w/O1ALCNbtWP8/s72-c/100_0047.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2009/09/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcAR30zfip7ImA9WxNSEk0.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-7039480939846952671</id><published>2009-08-25T05:35:00.000-07:00</published><updated>2009-08-25T05:40:46.386-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-25T05:40:46.386-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>又一个乐高玩具</title><content type="html">儿子的生日礼物，胜利完成：&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_BswWlutyN3g/SpPbhv6vgNI/AAAAAAAAB7k/coEr4nj5hsc/s1600-h/DSC_5605.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://3.bp.blogspot.com/_BswWlutyN3g/SpPbhv6vgNI/AAAAAAAAB7k/coEr4nj5hsc/s400/DSC_5605.JPG" alt="" id="BLOGGER_PHOTO_ID_5373880153228148946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_BswWlutyN3g/SpPbg-gurrI/AAAAAAAAB7c/j0n_Qx1BSEc/s1600-h/DSC_5604.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 266px;" src="http://3.bp.blogspot.com/_BswWlutyN3g/SpPbg-gurrI/AAAAAAAAB7c/j0n_Qx1BSEc/s400/DSC_5604.JPG" alt="" id="BLOGGER_PHOTO_ID_5373880139965705906" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-7039480939846952671?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/7039480939846952671/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=7039480939846952671" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/7039480939846952671?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/7039480939846952671?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/LLfl5r8a7xY/blog-post.html" title="又一个乐高玩具" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_BswWlutyN3g/SpPbhv6vgNI/AAAAAAAAB7k/coEr4nj5hsc/s72-c/DSC_5605.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2009/08/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IGQ3k9fip7ImA9WxNTEEo.&quot;"><id>tag:blogger.com,1999:blog-7253982.post-5418645330674355897</id><published>2009-08-12T04:08:00.000-07:00</published><updated>2009-08-12T04:12:02.766-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-12T04:12:02.766-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="ubuntu" /><title>外接显示器的分辨率在Ubuntu 9.04下终于正常了</title><content type="html">自从升级到Ubuntu 9.04之后，外接显示器一直都只能运行在1280x1024下，尽管实际的最高分辨率是1680x1050。上网搜了一下并尝试了如下命令：&lt;br /&gt;&lt;blockquote&gt;sudo dpkg-reconfigure -phigh xserver-xorg&lt;/blockquote&gt;&lt;br /&gt;重启动X之后，一切正常!终于不用看模糊的屏幕了，感动！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7253982-5418645330674355897?l=ganzhi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ganzhi.blogspot.com/feeds/5418645330674355897/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7253982&amp;postID=5418645330674355897" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/5418645330674355897?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7253982/posts/default/5418645330674355897?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/GanZhi/~3/VPheLjV1W6I/ubuntu-904.html" title="外接显示器的分辨率在Ubuntu 9.04下终于正常了" /><author><name>James Gan</name><uri>https://profiles.google.com/112591441221677169312</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh5.googleusercontent.com/-R1FfhZgwZ6o/AAAAAAAAAAI/AAAAAAAACOs/KcNFfnWGHyA/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://ganzhi.blogspot.com/2009/08/ubuntu-904.html</feedburner:origLink></entry></feed>

