<?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-18083698</id><updated>2012-01-23T13:40:21.300+08:00</updated><category term='mobile'/><category term='microsoft'/><category term='interview'/><category term='android'/><category term='tech'/><category term='opensource'/><category term='english'/><category term='blog'/><category term='web'/><category term='apple'/><category term='google'/><category term='life'/><title type='text'>zeaster</title><subtitle type='html'>yichao firstname, zeaster nickname, zhang lastname</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>84</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18083698.post-1388930940729070845</id><published>2009-07-25T19:28:00.002+08:00</published><updated>2009-07-25T20:21:42.744+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>test latex on blogspot</title><content type='html'>Method1,&lt;br /&gt;following &lt;a href="http://mathcache.appspot.com/static/docs.html"&gt;http://mathcache.appspot.com/static/docs.html&lt;/a&gt;&lt;br /&gt;use javascript to render latex&lt;br /&gt;$$ \pi = 4 \sum_{k=1}^{\infty} \frac{(-1)^{k+1}}{2k-1}$$&lt;br /&gt;&lt;br /&gt;Method2,&lt;br /&gt;edit on &lt;a href="http://www.codecogs.com/components/equationeditor/equationeditor.php"&gt;http://www.codecogs.com/components/equationeditor/equationeditor.php&lt;/a&gt;&lt;br /&gt;show generated image directly&lt;br /&gt;&lt;br /&gt;&lt;img src="http://latex.codecogs.com/gif.latex?\pi%20=%204%20\sum_{k=1}^{\infty}%20\frac{(-1)^{k+1}}{2k-1}" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-1388930940729070845?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/1388930940729070845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=1388930940729070845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/1388930940729070845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/1388930940729070845'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2009/07/test-latex-on-blogspot.html' title='test latex on blogspot'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-7976030755318312613</id><published>2009-01-08T01:19:00.001+08:00</published><updated>2009-01-08T01:21:52.224+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>tips on learning android</title><content type='html'>目前Android的源代码完全开放给了社区. 由于它的开放性, 易移植性, 它将不仅仅是一个手机操作系统, 近日社区中已经&lt;a href="http://www.engadget.com/2009/01/05/move-over-eee-android-now-running-on-hp-mini-note-2133/"&gt;有人把Android移植到Asus Eee PC 1000H以及HP mini note 2133上&lt;/a&gt;. 其中蓝牙和无线也可以正常驱动.&lt;br /&gt;&lt;br /&gt;可以预见的, Android将在更多的设备上生根发芽!&lt;br /&gt;&lt;br /&gt;对于那些希望锻炼技术的同学们, Android的源代码是一个难得的学习机会!&lt;br /&gt;整套Android源代码包括2部分, 一是platform部分, 另外一个是tools部分.&lt;br /&gt;git://android.git.kernel.org/platform/manifest.git&lt;br /&gt;git://android.git.kernel.org/tools/manifest.git&lt;br /&gt;&lt;br /&gt;整个Android系统是由OHA各个厂商贡献的小系统组成的一个大系统.&lt;br /&gt;Platform就是这个大系统, 目前它由16个核心系统, 61个外部系统, 21个内置的android应用程序或服务组成.每个小系统的功能简介可以参考&lt;a href="http://source.android.com/projects"&gt;http://source.android.com/projects&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;tools部分就是用来管理这些小系统的工具集, 可以方便小系统各自独立开发, 或者日后替换掉某个小系统, 又可以方便的把各个小系统集成到一起.&lt;br /&gt;它包括了一个repo工具, 用来更方便的管理git代码库. 一个基于&lt;a href="http://code.google.com/p/rietveld/"&gt;Rietveld&lt;/a&gt;的Gerrit代码review在线工具.&lt;br /&gt;&lt;br /&gt;'''我很想知道这2个工具名字的来历?!&lt;br /&gt;难度是为了纪念&lt;a href="http://en.wikipedia.org/wiki/Gerrit_Rietveld"&gt;Gerrit Rietveld&lt;/a&gt;, 这位荷兰家具设计师?!&lt;br /&gt;'''&lt;br /&gt;&lt;br /&gt;啰唆了这么多, 才回到主题上, 学习android的tips,&lt;br /&gt;一个tip就是善用这个Gerrit代码review在线工具. 通过它可以查看Android的code changes以及code review过程中的代码点评. 从中可以学习很多大师们的编程技巧. 所有open changes在这里&lt;br /&gt;&lt;a href="http://review.source.android.com/"&gt;http://review.source.android.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;比如change-6647, &lt;a href="http://review.source.android.com/6647"&gt;http://review.source.android.com/6647&lt;/a&gt;&lt;br /&gt;是memcached以及MogileFS的作者Brad Fitzpatrick提交的. 他希望把系统是否在24小时模式这个boolean变量缓存下来,而不是每次都调用开销比较大的方法去判断.&lt;br /&gt;这是代码的diff输出&lt;br /&gt;&lt;a href="http://review.source.android.com/6647/diff/1/za3656e3b0c4d095fd434b4c6a3dd70f07501f8f3"&gt;http://review.source.android.com/6647/diff/1/za3656e3b0c4d095fd434b4c6a3dd70f07501f8f3&lt;/a&gt;&lt;br /&gt;为了缓存这个boolean变量, Brad Fitzpatrick增加了2个static变量,&lt;br /&gt;private static Context m24HourLastContext = null;&lt;br /&gt;private static boolean mCached24HourMode;&lt;br /&gt;但Code reviewer Romain Guy 不同意这次change, 原因也记录到了Gerrit上.&lt;br /&gt;因为增加的static变量m24HourLastContext会造成内存泄露, 并且Romain给了一篇介绍类似内存泄露的blog.&lt;br /&gt;&lt;a href="http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/"&gt;http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/&lt;/a&gt;&lt;br /&gt;在这篇blog中, 可以看到更多的Android实现细节. 比如android.graphics.drawable.Drawable对象由于callback方法而对其所属android.view.View的引用, 可以更加清晰的理解为什么Android平台上会出现这种内存泄露.&lt;br /&gt;另外, Romain也说明了&lt;br /&gt;(a)Android内置的Home Screen应用程序是如何解决Drawable对象对View的引用问题的.&lt;br /&gt;(b)以及常见的2种避免类似内存泄露的方法.&lt;br /&gt;&lt;br /&gt;Romain Guy这个同学也是个UI高手, 他学生时代在SUN参与了JDK中Swing的开发, 毕业后去了Google.&lt;br /&gt;&lt;br /&gt;还有一些change可以反映出一些细节问题, 比如, &lt;a href="http://review.source.android.com/6601"&gt;http://review.source.android.com/6601&lt;/a&gt;&lt;br /&gt;在Reviewer的评语中看到, 他要求能重用StringBuilder的地方绝不新建一个StringBuilder对象. 可见其对代码控制之严, 之细.&lt;br /&gt;精致的软件就需要这样精致的控制.&lt;br /&gt;&lt;br /&gt;以上这些仅仅是我看过5,6个chagnes后总结的, 相信如果阅读更多, 可以从中学习到更多的tips.&lt;br /&gt;&lt;br /&gt;PS1,&lt;br /&gt;Steve Guo同学的blog中有数十篇其工作中对android底层代码的分析, 值得推荐&lt;br /&gt;&lt;a href="http://letsgoustc.spaces.live.com/"&gt;http://letsgoustc.spaces.live.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PS2,&lt;br /&gt;上面那个Dalvik中Drawable对象内存泄露的问题, 实际上是由于Dalvik默认就给Drawable增加了callback功能而引起的内存泄露.&lt;br /&gt;由此联想到Sun的JDK中java.io.ObjectOutputStream的一个设计问题.&lt;br /&gt;详见&lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4363937"&gt;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4363937&lt;/a&gt;&lt;br /&gt;其中也是由于ObjectOutputStream默认就认为其write的objects有依赖关系而将它们都保存到一个table中, 所以在传输大量对象时, 如果不间断的调用reset方法,就会导致OutOfMemoryError.&lt;br /&gt;这些JVM设计者默认就给这些类设计了超级完备的功能, 而实际上大多数情况并用不上这些功能, 比如, drawable的callback功能, ObjectOutputStream输出对象的依赖关系.&lt;br /&gt;如果默认使用最简单常用的功能, 而在特殊情况下, 由调用jdk的开发人员根据实际需要配置复杂的功能, 那么不仅可以提高运行效率, 也可以降低出现OutOfMemoryError的几率.&lt;br /&gt;那么为什么他们还都要往复杂上设计?!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-7976030755318312613?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/7976030755318312613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=7976030755318312613' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7976030755318312613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7976030755318312613'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2009/01/tips-on-learning-android.html' title='tips on learning android'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-7296708781536427616</id><published>2008-11-01T14:58:00.000+08:00</published><updated>2008-11-25T14:58:47.753+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Resolve grails jetty hangs problem caused by commons dbcp</title><content type='html'>Recently, I'm developing a website by grails.&lt;br /&gt;Few days ago, I found a problem, the web server hangs after requesting the homepage.&lt;br /&gt;The latest change is that the homepage is requesting 15+ articles instead of just 2 articles.&lt;br /&gt;For development environment, the articles are stored in mysql.&lt;br /&gt;The article is retrieved by requesting another link article controller,&lt;br /&gt;and the related code in ArticleController.groovy looks like this,&lt;br /&gt;&lt;code&gt;... ...&lt;br /&gt;def article = Article.get(id) //#1&lt;br /&gt;if(article){&lt;br /&gt;def info = articleService.retrieveInfo(article) //#2&lt;br /&gt;}&lt;br /&gt;... ...&lt;/code&gt;&lt;br /&gt;code #1, finds the article instance from mysql db.&lt;br /&gt;code #2, articleService is a grails service in grails-app/services directory.&lt;br /&gt;the retrieveInfo method retrieves some info from the given article instance without any db operation.&lt;br /&gt;The homepage should show 15+ articles, so the code above runs 15+ times in 15+ separate http request threads.&lt;br /&gt;&lt;br /&gt;And then the grails embedded web server jetty HANGS. no more response.&lt;br /&gt;After deploy the application in tomcat, tomcat hangs too.&lt;br /&gt;&lt;br /&gt;What's the problem?&lt;br /&gt;I guess it may due to thread deadlock, but how?&lt;br /&gt;First, I got the java thread dump,&lt;br /&gt;&lt;br /&gt;//redirect console output to a file&lt;br /&gt;&lt;code&gt;yichao src $ grails run-app &amp;gt; console.txt 2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;//after requesting homepage, press ctrl+\ (or kill -QUIT &amp;lt;pid&amp;gt;) to generate Java thread dump.&lt;br /&gt;I found many threads are waiting on and locked the same monitor 0x96c6de90.&lt;br /&gt;this is the code snippet, it's btpool0-15 thread, btpool0-14~2 threads are just the same.&lt;br /&gt;&lt;code&gt;&lt;br /&gt;"btpool0-15" prio=10 tid=0x08a76800 nid=0x22e4 in Object.wait() [0x8f2f2000..0x8f2f60c0]&lt;br /&gt;java.lang.Thread.State: WAITING (on object monitor)&lt;br /&gt;at java.lang.Object.wait(Native Method)&lt;br /&gt;- waiting on &amp;lt;0x96c6de90&amp;gt; (a org.apache.commons.pool.impl.GenericObjectPool)&lt;br /&gt;at java.lang.Object.wait(Object.java:485)&lt;br /&gt;at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:748)&lt;br /&gt;- locked &amp;lt;0x96c6de90&amp;gt; (a org.apache.commons.pool.impl.GenericObjectPool)&lt;br /&gt;at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)&lt;br /&gt;at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)&lt;br /&gt;at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)&lt;br /&gt;at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)&lt;br /&gt;......&lt;br /&gt;at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodN(ScriptBytecodeAdapter.java:170)&lt;br /&gt;at ArticleController.xxxx(ArticleController.groovy:85)&lt;br /&gt;......&lt;br /&gt;at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)&lt;br /&gt;at org.mortbay.jetty.Server.handle(Server.java:295)&lt;br /&gt;at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:503)&lt;br /&gt;at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:827)&lt;br /&gt;at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:511)&lt;br /&gt;at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:210)&lt;br /&gt;at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:379)&lt;br /&gt;at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:361)&lt;br /&gt;at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;the ArticleController.groovy:85 code is the code #2 above.&lt;br /&gt;This time, I found that in grails, when we define  "boolean transactional = true" in ArticleService.groovy.&lt;br /&gt;articleService.retrieveInfo() method opens a connection even if we have no db operation.&lt;br /&gt;&lt;br /&gt;so every single thread tries to open mysql connection twice by code #1 and #2 above.&lt;br /&gt;But we are just open connection and only select data from mysql, why hangs?&lt;br /&gt;The code waits at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:748)&lt;br /&gt;&lt;br /&gt;Thanks to apache, I can easily download the source code, and the line 748 is,&lt;br /&gt;&lt;code&gt;public Object borrowObject() throws Exception {&lt;br /&gt;........&lt;br /&gt;synchronized(this) {&lt;br /&gt;........&lt;br /&gt;switch(_whenExhaustedAction) {&lt;br /&gt;........&lt;br /&gt;case WHEN_EXHAUSTED_BLOCK:&lt;br /&gt;try {&lt;br /&gt;if(_maxWait &amp;lt;= 0) {&lt;br /&gt;wait();  //#line 748&lt;br /&gt;} else {&lt;br /&gt;wait(_maxWait);&lt;br /&gt;}&lt;br /&gt;...........&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;see #line 748, we got this, in GenericObjectPool.borrowObject() method, if connections in pool exhausted, it will block.&lt;br /&gt;The default active connections limit is 10, but we have 15+ thread, so all block!&lt;br /&gt;&lt;br /&gt;Actually it should not to be like this. And Indeed it's already filed bug for apache commons dbcp 1.2.1.&lt;br /&gt;The grails 1.0.3 is just using commons-dbcp-1.2.1.jar.&lt;br /&gt;you can find this bug at &lt;a href="https://issues.apache.org/jira/browse/DBCP-260"&gt;https://issues.apache.org/jira/browse/DBCP-260&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PS:&lt;br /&gt;&lt;br /&gt;In grails, calling any methods in transactional-enabled services will try to open a db connection.&lt;br /&gt;So only call methods in transactional-enabled services if they are related to db operation and really need transaction.&lt;br /&gt;Put all other methods in transactional-disabled services or normal groovy in src/groovy/*.groovy files.&lt;br /&gt;This resolves the problem above successfully.&lt;br /&gt;&lt;br /&gt;BTW, The transaction is enabled by default in grails 1.0.3.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-7296708781536427616?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/7296708781536427616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=7296708781536427616' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7296708781536427616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7296708781536427616'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2008/11/resolve-grails-jetty-hangs-problem.html' title='Resolve grails jetty hangs problem caused by commons dbcp'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-5159112913086482709</id><published>2008-05-13T14:57:00.000+08:00</published><updated>2008-11-25T14:57:52.321+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>中国地震2008</title><content type='html'>默哀...&lt;br /&gt;&lt;br /&gt;使用&lt;a href="http://www.bullog.cn/"&gt;牛博网&lt;/a&gt;捐款救助灾区&lt;br /&gt;详情请见&lt;br /&gt;&lt;a href="http://www.bullog.cn/blogs/liuyanban/archives/136782.aspx"&gt;http://www.bullog.cn/blogs/liuyanban/archives/136782.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;向军人致敬！&lt;br /&gt;空15军强行空降&lt;br /&gt;&lt;a href="http://blog.sina.com.cn/s/blog_4cdb2e8301009g42.html"&gt;http://blog.sina.com.cn/s/blog_4cdb2e8301009g42.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-5159112913086482709?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/5159112913086482709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=5159112913086482709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5159112913086482709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5159112913086482709'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2008/05/2008.html' title='中国地震2008'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-5814565852927678611</id><published>2008-04-24T14:56:00.000+08:00</published><updated>2008-11-25T14:57:14.379+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Google Android Custom Widget RichEdit - 1</title><content type='html'>I developed two custom  widgets for &lt;a href="http://infosword.com/zinfo/"&gt;ZInfo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One is called RichText that can show links with custom display text, rather than the link itself.&lt;br /&gt;The other is a more powerful dialog. It will be discussed later.&lt;br /&gt;&lt;br /&gt;Android provides a widget called TextView with auto link feature.&lt;br /&gt;That means you can show this:&lt;br /&gt;This is &lt;a href="http://zeaster.com/blog/"&gt;http://zeaster.com/blog/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;but, how to show this:&lt;br /&gt;This is &lt;a href="http://zeaster.com/blog/"&gt;my blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;How to show a link with custom display text?&lt;br /&gt;RichText helps us in this way:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;RichText rt = (RichText) findViewById(R.id.rich_text);&lt;br /&gt;StringBuilder sb = new StringBuilder();&lt;br /&gt;sb.append("This is a demo about how to use RichText.\n");&lt;br /&gt;sb.append("a custom android widegt show links with custom display text, rather than the link itself.\n");&lt;br /&gt;sb.append("This is &amp;lt;a href='http://zeaster.com/blog'&amp;gt;my blog&amp;lt;/a&amp;gt;\n");&lt;br /&gt;sb.append("This is &amp;lt;a href='http://infosword.com/zinfo'&amp;gt;ZInfo&amp;lt;/a&amp;gt;\n");&lt;br /&gt;rt.setRichText(sb.toString());&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;With this code, you got:&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/yichao.zhang/SA9r6PZYGWI/AAAAAAAAAGo/mTDyAvex4MQ/device.png" alt="http://lh4.ggpht.com/yichao.zhang/SA9r6PZYGWI/AAAAAAAAAGo/mTDyAvex4MQ/device.png" /&gt;&lt;br /&gt;&lt;br /&gt;SpannableString is used in RichText to show custom style.&lt;br /&gt;For more details, check its &lt;a href="http://blogsync-java.googlecode.com/files/AndroidCustomWidget.tar.gz"&gt;source code&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-5814565852927678611?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/5814565852927678611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=5814565852927678611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5814565852927678611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5814565852927678611'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2008/04/google-android-custom-widget-richedit-1.html' title='Google Android Custom Widget RichEdit - 1'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/yichao.zhang/SA9r6PZYGWI/AAAAAAAAAGo/mTDyAvex4MQ/s72-c/device.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-2082522620039111330</id><published>2008-04-18T14:54:00.000+08:00</published><updated>2008-11-25T14:56:08.232+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>ZInfo - Information sharing platfrom on Android</title><content type='html'>&lt;a title="ZInfo" href="http://infosword.com/zinfo/"&gt;ZInfo&lt;/a&gt; is finally released for &lt;a title="Android Developer Challenge" href="http://code.google.com/android/adc.html"&gt;Android Developer Challenge&lt;/a&gt; after our many hard working days.&lt;span class="nfakPe"&gt;&lt;br /&gt;It's&lt;/span&gt; an information sharing platform based on your contacts and location.&lt;br /&gt;The video demo can be found at &lt;a href="http://infosword.com/zinfo/video.html" target="_blank"&gt;http://infosword.com/&lt;span class="nfakPe"&gt;zinfo&lt;/span&gt;/video.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We gave a presentation about ZInfo on &lt;a href="http://www.beijing-open-party.org/index.php/2008/04/07/beijing-open-partybefore-the-rain/"&gt;Beijing Open Party - Before the Rain&lt;/a&gt;.&lt;br /&gt;It makes me the most excited that I meet a lot of open source followers.&lt;br /&gt;They are very friendly, full of passion, enjoy coding! I learned a lot from them.&lt;br /&gt;&lt;br /&gt;Special thanks to cleverpig!&lt;br /&gt;He is so kind and want to sponsor us a server to host ZInfo.&lt;br /&gt;And he understands us fully when we decided to put off releasing publicly recently.&lt;br /&gt;&lt;br /&gt;It's so great to meet you guys in the community!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-2082522620039111330?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/2082522620039111330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=2082522620039111330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2082522620039111330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2082522620039111330'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2008/04/zinfo-information-sharing-platfrom-on.html' title='ZInfo - Information sharing platfrom on Android'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-8674520056674995960</id><published>2008-03-16T14:53:00.000+08:00</published><updated>2008-11-25T14:54:35.448+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>most geek wordpress theme</title><content type='html'>&lt;div class="post-content"&gt;Never been more glad to find such wonderful wordpress theme - &lt;a href="http://code.google.com/p/wordpress-cli/"&gt;wordpress cli&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://zeaster.com/blog/index.php?wptheme=CLI"&gt;Have a try&lt;/a&gt; if you like unix.&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-8674520056674995960?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/8674520056674995960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=8674520056674995960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8674520056674995960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8674520056674995960'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2008/03/most-geek-wordpress-theme.html' title='most geek wordpress theme'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-4571432464434788208</id><published>2008-03-16T10:06:00.003+08:00</published><updated>2008-03-16T10:17:20.177+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>my blog moved to zeaster.com</title><content type='html'>my blog moved to this address&lt;br /&gt;&lt;a href="http://zeaster.com/blog/"&gt;http://zeaster.com/blog/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-4571432464434788208?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/4571432464434788208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=4571432464434788208' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4571432464434788208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4571432464434788208'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2008/03/my-blog-moved-to-zeastercom.html' title='my blog moved to zeaster.com'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-3740818767625152908</id><published>2007-11-28T14:17:00.000+08:00</published><updated>2007-11-28T15:40:45.682+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Inconvenienced when using Contact Content Provider on Android</title><content type='html'>These days, I've been developing an application that reads and writes entries from/into Android Contacts.&lt;br /&gt;Everything goes fine until I need to insert email entry into Android Contact by Contact Content Provider API.&lt;br /&gt;&lt;br /&gt;This is how to insert a people or phone entry into contact (people, phones table):&lt;br /&gt;getContentProvider().insert(People.CONTENT_URI, values);&lt;br /&gt;getContentProvider().insert(Phones.CONTENT_URI, values);&lt;br /&gt;&lt;br /&gt;That's fine according to&lt;br /&gt;http://code.google.com/android/devel/data/contentproviders.html&lt;br /&gt;&lt;br /&gt;However when I insert an email entry into contact (in contact_methods table) using:&lt;br /&gt;ContentURI uri = getContentProvider().insert(ContactMethods.CONTENT_URI, values);&lt;br /&gt;&lt;br /&gt;It just returns null, nothing inserted, and nothing shows up on logcat.&lt;br /&gt;Why? the link above says it should be fine!&lt;br /&gt;To find the answer, I post a thread in Google Group:&lt;br /&gt;http://groups.google.com/group/android-developers/browse_thread/thread/9ed4ff7fc1338b7c&lt;br /&gt;However no response.&lt;br /&gt;then I have been diving into build-in Contacts Application for 2 days to find how Google used their own api.&lt;br /&gt;Luckily, I got the key.&lt;br /&gt;see details on &lt;a href="http://zeaster.blogspot.com/2007/11/how-to-decompile-dex-file-on-android_28.html"&gt;my another post&lt;/a&gt;:&lt;br /&gt;http://zeaster.blogspot.com/2007/11/how-to-decompile-dex-file-on-android_28.html&lt;br /&gt;&lt;br /&gt;You should insert an email like this:&lt;br /&gt;ContentURI uri = People.CONTENT_URI.addId(user_id).addPath("contact_methods");&lt;br /&gt;ContentValues values = ...&lt;br /&gt;uri = getContentResolver().insert(uri, values);&lt;br /&gt;&lt;br /&gt;why? I guess Google should provide one same way to insert content.&lt;br /&gt;&lt;br /&gt;That's the main inconvenience.&lt;br /&gt;I guess what's even worse is Google does not provide enough docs or log warnings for this tip.&lt;br /&gt;Here are the others:&lt;br /&gt;&lt;br /&gt;2. &lt;br /&gt;when insert an email for a not-created-yet user id, It's still inserted successfully.&lt;br /&gt;when the user id created in the future, the user would have the email address.&lt;br /&gt;I guess Google should prevent this happen.&lt;br /&gt;Actually many checks Google need to do.That's really a beta SDK.&lt;br /&gt;&lt;br /&gt;3.&lt;br /&gt;The content provider API is not Object-Oriented enough.&lt;br /&gt;I feel it tedious to use.&lt;br /&gt;&lt;br /&gt;4.&lt;br /&gt;Maybe this is greedy.&lt;br /&gt;I hope there is API to manipulate database that's similar to ActiveRecord for Rails.&lt;br /&gt;Maybe I will implement one like that if time permits.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-3740818767625152908?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/3740818767625152908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=3740818767625152908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/3740818767625152908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/3740818767625152908'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/11/inconvenienced-when-using-contact.html' title='Inconvenienced when using Contact Content Provider on Android'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-8953162435330630446</id><published>2007-11-28T14:12:00.002+08:00</published><updated>2007-11-28T15:43:18.538+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>How to decompile .dex file on Android</title><content type='html'>Lucky to see the Google Android build-in Contacts is also developed by Android SDK.&lt;br /&gt;This article will take it for example and discuss these How-To's:&lt;br /&gt;&lt;br /&gt;1 How to find the Contacts App file on Google Android&lt;br /&gt;2 How to find the Contacts App's classes.dex on Google Android&lt;br /&gt;3 How to dump the Contacts App's classes&lt;br /&gt;4 How to decompile the dumped file&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;Actually, I think the Contacts Content Provider that Google provides has some inconvenience to use.&lt;br /&gt;And I will post another blog to list what's inconvenience and request some improvement from Google.&lt;br /&gt;The blog link is &lt;a href="http://zeaster.blogspot.com/2007/11/inconvenienced-when-using-contact.html"&gt;here&lt;/a&gt;:&lt;br /&gt;http://zeaster.blogspot.com/2007/11/inconvenienced-when-using-contact.html&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;1 How to find the Contacts App on Google Android&lt;br /&gt;Using adb tool&lt;br /&gt;&lt;br /&gt;$ adb shell&lt;br /&gt;# cd /system/app&lt;br /&gt;cd /system/app&lt;br /&gt;# ls&lt;br /&gt;ls&lt;br /&gt;-rw-r--r-- root     root        25519 2007-11-14 20:40 ContactsProvider.apk&lt;br /&gt;-rw-r--r-- root     root         7544 2007-11-14 20:40 GoogleAppsProvider.apk&lt;br /&gt;-rw-r--r-- root     root        16198 2007-11-14 20:40 ImProvider.apk&lt;br /&gt;-rw-r--r-- root     root        20308 2007-11-14 20:40 MediaProvider.apk&lt;br /&gt;-rw-r--r-- root     root        21272 2007-11-14 20:40 TelephonyProvider.apk&lt;br /&gt;-rw-r--r-- root     root        11809 2007-11-14 20:40 SettingsProvider.apk&lt;br /&gt;-rw-r--r-- root     root       418688 2007-11-14 20:41 Browser.apk&lt;br /&gt;-rw-r--r-- root     root        68077 2007-11-14 20:41 Contacts.apk&lt;br /&gt;-rw-r--r-- root     root        96287 2007-11-14 20:41 Development.apk&lt;br /&gt;-rw-r--r-- root     root        44790 2007-11-14 20:41 GoogleApps.apk&lt;br /&gt;-rw-r--r-- root     root         8637 2007-11-14 20:41 Fallback.apk&lt;br /&gt;-rw-r--r-- root     root        99431 2007-11-14 20:41 Home.apk&lt;br /&gt;-rw-r--r-- root     root       171614 2007-11-14 20:41 Maps.apk&lt;br /&gt;-rw-r--r-- root     root       424601 2007-11-14 20:41 Phone.apk&lt;br /&gt;-rw-r--r-- root     root       192119 2007-11-14 20:41 XmppService.apk&lt;br /&gt;-rw-r--r-- root     root         6614 2007-11-14 20:41 XmppSettings.apk&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;The Contacts.apk is the Contacts App and ContactsProvider.apk is the app that provides the Contact Content Provider for reading and writing "content://contacts/" resources.&lt;br /&gt;we can see many system apps developed by Android Java SDK are put here.&lt;br /&gt;However what is inside *.apk file. Actually it is a .zip file. It is easy to unzip and get the answer.&lt;br /&gt;take Contacts.apk for example, it contains:&lt;br /&gt;&lt;br /&gt;META-INF\&lt;br /&gt;res\&lt;br /&gt;AndroidManifest.xml&lt;br /&gt;classes.dex&lt;br /&gt;resources.arsc&lt;br /&gt;&lt;br /&gt;The classes.dex file contains all compiled Java code.&lt;br /&gt;&lt;br /&gt;2 How to find the Contacts App's classes.dex on Google Android&lt;br /&gt;No need to unzip Contacts App's classes.dex file from Contacts.apk file.&lt;br /&gt;The Dalvik VM has a cached file for us. Go head to find it.&lt;br /&gt;&lt;br /&gt;$ adb shell&lt;br /&gt;# cd /data/dalvik-cache&lt;br /&gt;cd /data/dalvik-cache&lt;br /&gt;# ls&lt;br /&gt;ls&lt;br /&gt;-rw-rw-rw- root     root        73852 2007-11-27 05:16 system@app@Contacts.apk@classes.dex&lt;br /&gt;-rw-rw-rw- app_0    app_0       64172 2007-11-27 05:17 system@app@ContactsProvider.apk@classes.dex&lt;br /&gt;-rw-rw-rw- root     root        15204 2007-11-27 05:17 system@framework@am.jar@classes.dex&lt;br /&gt;-rw-rw-rw- app_3    app_3        3012 2007-11-27 07:33 system@app@Fallback.apk@classes.dex&lt;br /&gt;-rw-rw-rw- root     root      7252804 2007-11-27 05:16 system@framework@core.jar@classes.dex&lt;br /&gt;....and many other cached files.&lt;br /&gt;&lt;br /&gt;3 How to dump the Contacts App's classes&lt;br /&gt;Unfortunately the classes.dex is not a .jar file. It's Dalvik executable format that is optimized for efficient.&lt;br /&gt;so we can not pull the .class files as .jar format. However Google Android provides a tool named dexdump included in the emulator to dump .dex file. Here is how to use it.&lt;br /&gt;# dexdump&lt;br /&gt;dexdump: no file specified&lt;br /&gt;dexdump: [-f] [-h] dexfile...&lt;br /&gt;&lt;br /&gt; -d : disassemble code sections&lt;br /&gt; -f : display summary information from file header&lt;br /&gt; -h : display file header details&lt;br /&gt; -C : decode (demangle) low-level symbol names&lt;br /&gt; -S : compute sizes only&lt;br /&gt;&lt;br /&gt;Now we dump the system@app@Contacts.apk@classes.dex and system@app@ContactsProvider.apk@classes.dex.&lt;br /&gt;&lt;br /&gt;# dexdump -d -f -h -C system@app@Contacts.apk@classes.dex &gt;&gt; Contacts.apk.dump&lt;br /&gt;# dexdump -d -f -h -C system@app@ContactsProvider.apk@classes.dex &gt;&gt; ContactsProvider.apk.dump&lt;br /&gt;&lt;br /&gt;and then pull it out.&lt;br /&gt;# exit&lt;br /&gt;$ adb pull /data/dalvik-cache/Contacts.apk.dump ~/android&lt;br /&gt;$ adb pull /data/dalvik-cache/ContactsProvider.apk.dump ~/android&lt;br /&gt;&lt;br /&gt;Now we get the dumped files on ~/android folder.&lt;br /&gt;&lt;br /&gt;4 How to decompile the dumped file&lt;br /&gt;.dex file is optimized, so we can not decompile it as normal .class file.&lt;br /&gt;Fortunately the dumped file is a bit readable for me.&lt;br /&gt;As it is too big to analyze all the code, so I just take "how to create a contact" for example.&lt;br /&gt;It's easy to get this info from the dumped file.&lt;br /&gt;It has these classes:&lt;br /&gt;...&lt;br /&gt;  Class name        : 'com/google/android/contacts/AttachImage'&lt;br /&gt;  Class name        : 'com/google/android/contacts/ContactEntryAdapter'&lt;br /&gt;  Class name        : 'com/google/android/contacts/EditContactActivity'&lt;br /&gt;  Class name        : 'com/google/android/contacts/EditContactActivity$EditEntry'&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;The EditContactActivity class has a private void create() method.&lt;br /&gt;    #3              : (in com/google/android/contacts/EditContactActivity)&lt;br /&gt;      name          : 'create'&lt;br /&gt;      type          : '()V'&lt;br /&gt;      access        : 0x0002 (PRIVATE)&lt;br /&gt;&lt;br /&gt;So all the code that create a contact is here from the dumped file, my comments inlined:&lt;br /&gt;// private void create()&lt;br /&gt;009b24:                                        |[009b24] com/google/android/contacts/EditContactActivity.create:()V&lt;br /&gt;&lt;br /&gt;// ContentValues v9 = new ContentValues();&lt;br /&gt;009b28: 2109 3100                              |0000: new-instance v9, android/content/ContentValues // class@0031&lt;br /&gt;009b2c: 6f01 0f00 0900                         |0002: invoke-direct {v9}, android/content/ContentValues.&lt;init&gt;:()V // method@000f&lt;br /&gt;&lt;br /&gt;// Entry v12 =  this.getCurrentEntry();&lt;br /&gt;009b32: f4fc a800                              |0005: +iget-object-quick v12, v15, [obj+00a8]&lt;br /&gt;&lt;br /&gt;// int v11 = v12.lines&lt;br /&gt;009b36: f801 1500 0c00                         |0007: +invoke-virtual-quick {v12}, [0015] // vtable #0015&lt;br /&gt;009b3c: 0a0b                                   |000a: move-result v11&lt;br /&gt;&lt;br /&gt;// int v5 = 0&lt;br /&gt;009b3e: 1205                                   |000b: const/4 v5, #int 0 // #0&lt;br /&gt;&lt;br /&gt;// if v5 &gt;= v11 goto 0046&lt;br /&gt;009b40: 3ab5 3a00                              |000c: if-ge v5, v11, 0046 // +003a&lt;br /&gt;&lt;br /&gt;// EditEntry v8 = (EditEntry)this.getCurrentEntry();&lt;br /&gt;009b44: f4fc a800                              |000e: +iget-object-quick v12, v15, [obj+00a8]&lt;br /&gt;009b48: f802 1a00 5c00                         |0010: +invoke-virtual-quick {v12, v5}, [001a] // vtable #001a&lt;br /&gt;009b4e: 0c0c                                   |0013: move-result-object v12&lt;br /&gt;009b50: 07c0                                   |0014: move-object v0, v12&lt;br /&gt;009b52: 1e00 3d00                              |0015: check-cast v0, com/google/android/contacts/EditContactActivity$EditEntry // class@003d&lt;br /&gt;009b56: 0708                                   |0017: move-object v8, v0&lt;br /&gt;&lt;br /&gt;// int v12 = v8.kind // The Instance field kind is defined in its superclass Entry. see details in dumped Entry and EditEntry sections.&lt;br /&gt;009b58: f28c 1400                              |0018: +iget-quick v12, v8, [obj+0014]&lt;br /&gt;&lt;br /&gt;// int v13 = -3  // PHOTO_KIND = -3 defined in v8's superclass Entry&lt;br /&gt;009b5c: 12dd                                   |001a: const/4 v13, #int -3 // #fd&lt;br /&gt;&lt;br /&gt;// if v12 != v13 goto 0020  // a photo entry, goto 0020&lt;br /&gt;009b5e: 38dc 0500                              |001b: if-ne v12, v13, 0020 // +0005&lt;br /&gt;&lt;br /&gt;// int v5++;&lt;br /&gt;009b62: d805 0501                              |001d: add-int/lit8 v5, v5, #int 1 // #01&lt;br /&gt;&lt;br /&gt;// goto 000c&lt;br /&gt;009b66: 33ed                                   |001f: goto 000c // -0013&lt;br /&gt;&lt;br /&gt;// String v7 = v8.getData();&lt;br /&gt;009b68: f801 0c00 0800                         |0020: +invoke-virtual-quick {v8}, [000c] // vtable #000c&lt;br /&gt;009b6e: 0c07                                   |0023: move-result-object v7&lt;br /&gt;&lt;br /&gt;// boolean v12 = TextUtils.isEmpty(v7)&lt;br /&gt;009b70: 7001 4200 0700                         |0024: invoke-static {v7}, android/text/TextUtils.isEmpty:(Ljava/lang/CharSequence;)Z // method@0042&lt;br /&gt;009b76: 0a0c                                   |0027: move-result v12&lt;br /&gt;&lt;br /&gt;if v12!=false/0 goto 0030&lt;br /&gt;009b78: 3e0c 0800                              |0028: if-nez v12, 0030 // +0008&lt;br /&gt;&lt;br /&gt;// String v12 = v8.column  // The Instance field column is defined in EditEntry. see details in dumped EditEntry section.&lt;br /&gt;009b7c: f48c 2800                              |002a: +iget-object-quick v12, v8, [obj+0028]&lt;br /&gt;&lt;br /&gt;// v9.put(v12,v7)  // v9 is a ContentValues, v12 is the column name, v7 is the value.&lt;br /&gt;009b80: f803 0b00 c907                         |002c: +invoke-virtual-quick {v9, v12, v7}, [000b] // vtable #000b&lt;br /&gt;&lt;br /&gt;// goto 001d&lt;br /&gt;009b86: 33ee                                   |002f: goto 001d // -0012&lt;br /&gt;&lt;br /&gt;// String v12 = v8.column  // The Instance field column is defined in EditEntry. see details in dumped EditEntry section.&lt;br /&gt;009b88: f48c 2800                              |0030: +iget-object-quick v12, v8, [obj+0028]&lt;br /&gt;&lt;br /&gt;// String v13 = "name";&lt;br /&gt;009b8c: 180d 1c00                              |0032: const-string v13, "name" // string@001c&lt;br /&gt;&lt;br /&gt;// boolean v12 = v12.equals(v13);&lt;br /&gt;009b90: ee02 0300 dc00                         |0034: +execute-inline {v12, v13}, java/lang/String.equals:(Ljava/lang/Object;)Z // inline #0003&lt;br /&gt;009b96: 0a0c                                   |0037: move-result v12&lt;br /&gt;&lt;br /&gt;// if v12 != false/0, goto 001d&lt;br /&gt;009b98: 3d0c e5ff                              |0038: if-eqz v12, 001d // -001b&lt;br /&gt;&lt;br /&gt;// String v12 = "EditContactActivity"&lt;br /&gt;009b9c: 180c 0100                              |003a: const-string v12, "EditContactActivity" // string@0001&lt;br /&gt;&lt;br /&gt;// String v13 = "Name is required"&lt;br /&gt;009ba0: 180d 0200                              |003c: const-string v13, "Name is required" // string@0002&lt;br /&gt;&lt;br /&gt;// Log.e(v12, v13);  //log info using android/util/Log&lt;br /&gt;009ba4: 7002 4700 dc00                         |003e: invoke-static {v12, v13}, android/util/Log.e:(Ljava/lang/String;Ljava/lang/String;)I // method@0047&lt;br /&gt;009baa: 0a0c                                   |0041: move-result v12&lt;br /&gt;&lt;br /&gt;// call this.XXX()&lt;br /&gt;009bac: f801 8400 0f00                         |0042: +invoke-virtual-quick {v15}, [0084] // vtable #0084&lt;br /&gt;&lt;br /&gt;// return void&lt;br /&gt;009bb2: 0e00                                   |0045: return-void&lt;br /&gt;&lt;br /&gt;// ContentResolver v12 = this.getContentResolver();&lt;br /&gt;009bb4: f4fc a400                              |0046: +iget-object-quick v12, v15, [obj+00a4]&lt;br /&gt;&lt;br /&gt;// CONTENT_URI v13 = People.CONTENT_URI;&lt;br /&gt;009bb8: 610d 0300                              |0048: sget-object v13, android/provider/Contacts$People.CONTENT_URI:Landroid/net/ContentURI; // field@0003&lt;br /&gt;&lt;br /&gt;// CONTENT_URI v10 = v12.insert(v13, v9)   //  CONTENT_URI v10 = getContentResolver().insert(uri, values); &lt;br /&gt;// insert people into contacts&lt;br /&gt;009bbc: f803 1100 dc09                         |004a: +invoke-virtual-quick {v12, v13, v9}, [0011] // vtable #0011&lt;br /&gt;009bc2: 0c0a                                   |004d: move-result-object v10&lt;br /&gt;&lt;br /&gt;// List v12 = this.mContactEntries&lt;br /&gt;009bc4: f4fc c000                       |004e: +iget-object-quick v12, v15, [obj+00c0]&lt;br /&gt;009bc8: 7001 8900 0c00             |0050: invoke-static {v12}, com/google/android/contacts/ContactEntryAdapter.countEntries:(Ljava/util/ArrayList;)I // method@0089&lt;br /&gt;009bce: 0a06                                   |0053: move-result v6&lt;br /&gt;&lt;br /&gt;// int v5 = v11 //contact Entry Count&lt;br /&gt;009bd0: 01b5                                   |0054: move v5, v11&lt;br /&gt;&lt;br /&gt;// if v5 &gt;= v6, goto 009e&lt;br /&gt;009bd2: 3a65 4900                              |0055: if-ge v5, v6, 009e // +0049&lt;br /&gt;&lt;br /&gt;// List v12 = this.mContactEntries&lt;br /&gt;009bd6: f4fc c000                              |0057: +iget-object-quick v12, v15, [obj+00c0]&lt;br /&gt;&lt;br /&gt;// EditEntry v8 = (EditEntry) getEntry(v12, v5);&lt;br /&gt;009bda: 7002 8b00 5c00                         |0059: invoke-static {v12, v5}, com/google/android/contacts/ContactEntryAdapter.getEntry:(Ljava/util/ArrayList;I)Lcom/google/android/contacts/ContactEntryAdapter$Entry; // method@008b&lt;br /&gt;009be0: 0c0c                                   |005c: move-result-object v12&lt;br /&gt;009be2: 07c0                                   |005d: move-object v0, v12&lt;br /&gt;009be4: 1e00 3d00                              |005e: check-cast v0, com/google/android/contacts/EditContactActivity$EditEntry // class@003d&lt;br /&gt;009be8: 0708                                   |0060: move-object v8, v0&lt;br /&gt;&lt;br /&gt;// int v12 = v8.kind // The Instance field kind is defined in its superclass Entry. see details in dumped Entry and EditEntry sections.&lt;br /&gt;009bea: f28c 1400                              |0061: +iget-quick v12, v8, [obj+0014]&lt;br /&gt;&lt;br /&gt;// int v13 = -1 // CONTACT_KIND = -1 defined in v8's superclass Entry&lt;br /&gt;009bee: 12fd                                   |0063: const/4 v13, #int -1 // #ff&lt;br /&gt;&lt;br /&gt;// if v12 == v13 goto 007e&lt;br /&gt;009bf0: 37dc 1a00                              |0064: if-eq v12, v13, 007e // +001a&lt;br /&gt;&lt;br /&gt;// v9.clear() // ContentValues.clear()&lt;br /&gt;009bf4: f801 1500 0900                         |0066: +invoke-virtual-quick {v9}, [0015] // vtable #0015&lt;br /&gt;&lt;br /&gt;// boolean v12 = v8.toValues(v9) // boolean EditEnty.toValues(ContentValues cv)&lt;br /&gt;009bfa: f802 0d00 9800                         |0069: +invoke-virtual-quick {v8, v9}, [000d] // vtable #000d&lt;br /&gt;009c00: 0a0c                                   |006c: move-result v12&lt;br /&gt;&lt;br /&gt;//if v12 !=false/0, goto 007b&lt;br /&gt;009c02: 3d0c 0e00                              |006d: if-eqz v12, 007b // +000e&lt;br /&gt;&lt;br /&gt;// ContentResolver v12 = this.getContentResolver();&lt;br /&gt;009c06: f4fc a400                              |006f: +iget-object-quick v12, v15, [obj+00a4]&lt;br /&gt;&lt;br /&gt;// String v13 = v8.contentDirectory&lt;br /&gt;009c0a: f48d 2c00                              |0071: +iget-object-quick v13, v8, [obj+002c]&lt;br /&gt;&lt;br /&gt;// v10.addPath(v13);&lt;br /&gt;009c0e: f802 1800 da00                         |0073: +invoke-virtual-quick {v10, v13}, [0018] // vtable #0018&lt;br /&gt;009c14: 0c0d                                   |0076: move-result-object v13&lt;br /&gt;&lt;br /&gt;// CONTENT_URI v12 = v12.insert(v13, v9)   //  CONTENT_URI v12 = getContentResolver().insert(uri, values); &lt;br /&gt;009c16: f803 1100 dc09                         |0077: +invoke-virtual-quick {v12, v13, v9}, [0011] // vtable #0011&lt;br /&gt;009c1c: 0c0c                                   |007a: move-result-object v12&lt;br /&gt;&lt;br /&gt;// int v5++;&lt;br /&gt;009c1e: d805 0501                              |007b: add-int/lit8 v5, v5, #int 1 // #01&lt;br /&gt;&lt;br /&gt;// goto 0055&lt;br /&gt;009c22: 33d8                                   |007d: goto 0055 // -0028&lt;br /&gt;&lt;br /&gt;// String v7 = v8.getData();&lt;br /&gt;009c24: f801 0c00 0800                         |007e: +invoke-virtual-quick {v8}, [000c] // vtable #000c&lt;br /&gt;009c2a: 0c07                                   |0081: move-result-object v7&lt;br /&gt;&lt;br /&gt;// v9.lines&lt;br /&gt;009c2c: f801 1500 0900                         |0082: +invoke-virtual-quick {v9}, [0015] // vtable #0015&lt;br /&gt;&lt;br /&gt;// boolean v12 = TextUtils.isEmpty(v7)&lt;br /&gt;009c32: 7001 4200 0700                         |0085: invoke-static {v7}, android/text/TextUtils.isEmpty:(Ljava/lang/CharSequence;)Z // method@0042&lt;br /&gt;009c38: 0a0c                                   |0088: move-result v12&lt;br /&gt;&lt;br /&gt;if v12!=false/0 goto 007b&lt;br /&gt;009c3a: 3e0c f2ff                              |0089: if-nez v12, 007b // -000e&lt;br /&gt;&lt;br /&gt;// String v12 = v8.column  // The Instance field column is defined in EditEntry. see details in dumped EditEntry section.&lt;br /&gt;009c3e: f48c 2800                              |008b: +iget-object-quick v12, v8, [obj+0028]&lt;br /&gt;&lt;br /&gt;// v9.put(v12,v7)  // v9 is a ContentValues, v12 is the column name, v7 is the value.&lt;br /&gt;009c42: f803 0b00 c907                         |008d: +invoke-virtual-quick {v9, v12, v7}, [000b] // vtable #000b&lt;br /&gt;&lt;br /&gt;// ContentResolver v12 = this.getContentResolver();&lt;br /&gt;009c48: f4fc a400                              |0090: +iget-object-quick v12, v15, [obj+00a4]&lt;br /&gt;&lt;br /&gt;// int v13 = 0&lt;br /&gt;009c4c: 120d                                   |0092: const/4 v13, #int 0 // #0&lt;br /&gt;&lt;br /&gt;// int v14 = 0&lt;br /&gt;009c4e: 120e                                   |0093: const/4 v14, #int 0 // #0&lt;br /&gt;&lt;br /&gt;009c50: 07c0                                   |0094: move-object v0, v12&lt;br /&gt;009c52: 07a1                                   |0095: move-object v1, v10&lt;br /&gt;009c54: 0792                                   |0096: move-object v2, v9&lt;br /&gt;009c56: 07d3                                   |0097: move-object v3, v13&lt;br /&gt;009c58: 07e4                                   |0098: move-object v4, v14&lt;br /&gt;&lt;br /&gt;// int v12 = v12.update(v1,v2,v3,v4) // getContentResolver(),update(uri, values, null, null)&lt;br /&gt;// refer to this method, public final int update(ContentURI uri, ContentValues values, String where, String[] selectionArgs) &lt;br /&gt;009c5a: f905 1400 0000                         |0099: +invoke-virtual-quick/range {v0, v1, v2, v3, v4}, [0014] // vtable #0014&lt;br /&gt;009c60: 0a0c                                   |009c: move-result v12&lt;br /&gt;&lt;br /&gt;// goto 007b&lt;br /&gt;009c62: 33de                                   |009d: goto 007b // -0022&lt;br /&gt;&lt;br /&gt;// int v12 = 4&lt;br /&gt;009c64: 124c                                   |009e: const/4 v12, #int 4 // #4&lt;br /&gt;&lt;br /&gt;009c66: f5fc c800                              |009f: +iput-quick v12, v15, [obj+00c8]&lt;br /&gt;009c6a: f7fa 9000                              |00a1: +iput-object-quick v10, v15, [obj+0090]&lt;br /&gt;&lt;br /&gt;// int v12 = -1&lt;br /&gt;009c6e: 12fc                                   |00a3: const/4 v12, #int -1 // #ff&lt;br /&gt;009c70: f801 0700 0a00                         |00a4: +invoke-virtual-quick {v10}, [0007] // vtable #0007&lt;br /&gt;009c76: 0c0d                                   |00a7: move-result-object v13&lt;br /&gt;009c78: f803 7f00 cf0d                         |00a8: +invoke-virtual-quick {v15, v12, v13}, [007f] // vtable #007f&lt;br /&gt;&lt;br /&gt;// goto 0045&lt;br /&gt;009c7e: 339a                                   |00ab: goto 0045 // -0066&lt;br /&gt;      exceptions    : (none)&lt;br /&gt;      positions     : 30&lt;br /&gt;        0x0000 line=471&lt;br /&gt;               .....&lt;br /&gt;        0x00a3 line=515&lt;br /&gt;      locals        : 10&lt;br /&gt;//the 10 local variables defined here&lt;br /&gt;        0x0000 - 0x00ac reg=15 this Lcom/google/android/contacts/EditContactActivity;&lt;br /&gt;        0x0002 - 0x00ac reg=9 values Landroid/content/ContentValues;&lt;br /&gt;        0x000b - 0x00ac reg=11 contactEntryCount I&lt;br /&gt;        0x000c - 0x00ac reg=5 i I&lt;br /&gt;        0x0018 - 0x0045 reg=8 entry Lcom/google/android/contacts/EditContactActivity$EditEntry;&lt;br /&gt;        0x0024 - 0x0045 reg=7 data Ljava/lang/String;&lt;br /&gt;        0x004e - 0x00ac reg=10 contactUri Landroid/net/ContentURI;&lt;br /&gt;        0x0054 - 0x00ac reg=6 entryCount I&lt;br /&gt;        0x0061 - 0x009e reg=8 entry Lcom/google/android/contacts/EditContactActivity$EditEntry;&lt;br /&gt;        0x0082 - 0x009e reg=7 data Ljava/lang/String;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-8953162435330630446?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/8953162435330630446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=8953162435330630446' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8953162435330630446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8953162435330630446'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/11/how-to-decompile-dex-file-on-android_28.html' title='How to decompile .dex file on Android'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-3310494420313492426</id><published>2007-09-08T04:12:00.000+08:00</published><updated>2007-09-08T13:47:09.085+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>blogsync FAQ</title><content type='html'>&lt;p id="wikicontent"&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;blogsync FAQ&lt;/h1&gt;&lt;br /&gt;from &lt;a href="http://code.google.com/p/blogsync-java/wiki/BlogsyncFAQ"&gt;http://code.google.com/p/blogsync-java/wiki/BlogsyncFAQ&lt;/a&gt;&lt;br /&gt;&lt;h3&gt;what is blogsync?&lt;/h3&gt;&lt;br /&gt;it is used to import wordpress posts into blogger.&lt;br /&gt;&lt;h3&gt;how to use it?&lt;/h3&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;set jdk bin path in run.bat/run.sh&lt;/li&gt;&lt;br /&gt; &lt;li&gt;execute run.bat/run.sh&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;what is new in blogsync 0.3?&lt;/h3&gt;&lt;br /&gt;The comments can be imported from wordpress rss xml file to blogger site now. However it can not preserve the published time of the wordpress comments. so the published time of your imported comments is just the time when you import.&lt;br /&gt;&lt;h3&gt;what is new in blogsync 0.2?&lt;/h3&gt;&lt;br /&gt;add feature to import posts from exported wordpress rss xml file to blogger site.&lt;br /&gt;&lt;h3&gt;which jdk version do I need to run blogsync?&lt;/h3&gt;&lt;br /&gt;You should use jdk1.5 or later.&lt;br /&gt;&lt;h3&gt;how to add jdk bin path in path environment?&lt;/h3&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;windows&lt;br /&gt;&lt;ol&gt;&lt;br /&gt; &lt;li&gt;says your java.exe is in directory c:\jdk1.5.0\bin&lt;/li&gt;&lt;br /&gt; &lt;li&gt;set the following line in run.bat&lt;/li&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;span class="pln"&gt;    set path&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt;c&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;jdk1&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="lit"&gt;5&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="lit"&gt;0&lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt;&lt;span class="pln"&gt;bin&lt;/span&gt;&lt;span class="pun"&gt;;%&lt;/span&gt;&lt;span class="pln"&gt;path&lt;/span&gt;&lt;span class="pun"&gt;%&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Mac or unix&lt;br /&gt;&lt;ol&gt;&lt;br /&gt; &lt;li&gt;says your java is in directory /path/to/your/java&lt;/li&gt;&lt;br /&gt; &lt;li&gt;set the following line in run.sh&lt;/li&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;span class="pln"&gt;    &lt;/span&gt;&lt;span class="kwd"&gt;export&lt;/span&gt;&lt;span class="pln"&gt; PATH&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="str"&gt;/path/&lt;/span&gt;&lt;span class="pln"&gt;to&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;your&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;java&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;$PATH&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;how do I know which version of jdk I am using?&lt;/h3&gt;&lt;br /&gt;open a terminal, type "java -version". you should get something like this:&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;span class="pln"&gt;java version &lt;/span&gt;&lt;span class="str"&gt;"1.5.0_12"&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="typ"&gt;Java&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;TM&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="lit"&gt;2&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Runtime&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Environment&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Standard&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Edition&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;build &lt;/span&gt;&lt;span class="lit"&gt;1&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="lit"&gt;5&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="lit"&gt;0_12&lt;/span&gt;&lt;span class="pun"&gt;-&lt;/span&gt;&lt;span class="pln"&gt;b04&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="typ"&gt;Java&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;HotSpot&lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;TM&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="typ"&gt;Client&lt;/span&gt;&lt;span class="pln"&gt; VM &lt;/span&gt;&lt;span class="pun"&gt;(&lt;/span&gt;&lt;span class="pln"&gt;build &lt;/span&gt;&lt;span class="lit"&gt;1&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="lit"&gt;5&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="lit"&gt;0_12&lt;/span&gt;&lt;span class="pun"&gt;-&lt;/span&gt;&lt;span class="pln"&gt;b04&lt;/span&gt;&lt;span class="pun"&gt;,&lt;/span&gt;&lt;span class="pln"&gt; mixed mode&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h3&gt;how to run run.bat/run.sh in command line?&lt;/h3&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;windows&lt;/li&gt;&lt;br /&gt;&lt;blockquote&gt;open a command window, type:&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;span class="pln"&gt;    cd e&lt;/span&gt;&lt;span class="pun"&gt;:&lt;/span&gt;&lt;span class="pln"&gt;path&lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt;&lt;span class="pln"&gt;to&lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt;&lt;span class="pln"&gt;your&lt;/span&gt;&lt;span class="pun"&gt;&lt;/span&gt;&lt;span class="pln"&gt;run&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;bat&lt;br /&gt;    run&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;bat&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt; &lt;li&gt;Mac or unix&lt;/li&gt;&lt;br /&gt;&lt;blockquote&gt;open a terminal, type:&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;span class="pln"&gt;    cd &lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;path&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;to&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;your&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;run&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;sh&lt;br /&gt;    sh run&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;sh&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;when run run.sh, it is opened by my editor, what should I do?&lt;/h3&gt;&lt;br /&gt;please run run.sh in command line.&lt;br /&gt;&lt;h3&gt;after clicking on run.bat/run.sh, there was nothing happend, what should I do?&lt;/h3&gt;&lt;br /&gt;run run.bat/run.sh in command line so that find what's going wrong in the terminal?&lt;br /&gt;&lt;h3&gt;It prompts "java: command not found", what's going wrong?&lt;/h3&gt;&lt;br /&gt;java is not in your path, please add jdk bin path in your path environment.&lt;br /&gt;&lt;h3&gt;why do I get &lt;tt&gt;Exception in thread "main" java.lang.NoClassDefFoundError: org/easter/blogsync/BlogSync&lt;/tt&gt;?&lt;/h3&gt;&lt;br /&gt;if you are on Mac or unix, please make sure you have read permission on blogsync/build/blogsync.jar file if not, open a terminal and type:&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;span class="pln"&gt;chmod &lt;/span&gt;&lt;span class="lit"&gt;744&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;path&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;to&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;your&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;blogsync&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;build&lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;blogsync&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;jar&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h3&gt;why do I get &lt;tt&gt;Failed to create input stream: Server returned HTTP response code: 403 for URL: http://mydomain.com/wordpress/xmlrpc.php&lt;/tt&gt;?&lt;/h3&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;if you installed a plugin called Enforce www. Preference, it would affect the path to your xmlrpc.php file, so deactivated it first.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;if you enabled mod_security on apache, it would block access to xmlrpc.php, so add this to your .htaccess file:&lt;/li&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;span class="pln"&gt;    &lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;Files &lt;/span&gt;&lt;span class="atn"&gt;xmlrpc.php&lt;/span&gt;&lt;span class="tag"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;      SecFilterInheritance Off&lt;br /&gt;    &lt;/span&gt;&lt;span class="tag"&gt;&amp;lt;/Files&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-3310494420313492426?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/3310494420313492426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=3310494420313492426' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/3310494420313492426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/3310494420313492426'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/09/blogsync-faq.html' title='blogsync FAQ'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-8320695817332969782</id><published>2007-09-05T07:02:00.000+08:00</published><updated>2007-09-05T15:15:41.193+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>python script to email me the dynamic ip from tp-link router</title><content type='html'>At home, my boxes are connected to internet by Beijing ADSL.&lt;br /&gt;when connected, Beijing ADSL gives me a dynamic ip and it changes about every 24 hours.&lt;br /&gt;Before I get the dynamic ip by a service provided by oray.net.&lt;br /&gt;However recently the service is broken.&lt;br /&gt;So I have to write a python script to check the dynamic ip from my tp-link router every 3 minutes and if it changed, emails the new dynamic ip to my gmail.&lt;br /&gt;&lt;br /&gt;I also write a bash script to run the above python script at boot on my gentoo linux.&lt;br /&gt;&lt;br /&gt;The python script:&lt;br /&gt;&lt;pre lang="python"&gt;&lt;br /&gt;#!/usr/bin/python&lt;br /&gt;&lt;br /&gt;import urllib&lt;br /&gt;import urllib2&lt;br /&gt;import libgmail&lt;br /&gt;import cookielib&lt;br /&gt;import sys&lt;br /&gt;import re&lt;br /&gt;import base64&lt;br /&gt;import socket&lt;br /&gt;import time&lt;br /&gt;from urlparse import urlparse&lt;br /&gt;&lt;br /&gt;nowip=''&lt;br /&gt;logfile=open('/var/log/ipsender.log','w')&lt;br /&gt;&lt;br /&gt;def log(s):&lt;br /&gt;  now=time.strftime('%Y-%m-%d %X')&lt;br /&gt;  logfile.write('%s %sn'%(now,s))&lt;br /&gt;  logfile.flush()&lt;br /&gt;&lt;br /&gt;def gmailsender(to_addr,subject,msg):&lt;br /&gt;  username='xxx@gmail.com'&lt;br /&gt;  password='xxx'&lt;br /&gt;  ga=libgmail.GmailAccount(username,password)&lt;br /&gt;  ga.login()&lt;br /&gt;  gmsg=libgmail.GmailComposedMessage(to_addr,subject,msg)&lt;br /&gt;  ga.sendMessage(gmsg)&lt;br /&gt;&lt;br /&gt;def check():&lt;br /&gt;  global nowip&lt;br /&gt;  timeout=10&lt;br /&gt;  socket.setdefaulttimeout(timeout)&lt;br /&gt;  username = 'admin'&lt;br /&gt;  password = 'xxx'&lt;br /&gt;  try:&lt;br /&gt;    theurl='http://192.168.1.1/userRpm/StatusRpm.htm'&lt;br /&gt;    req = urllib2.Request(theurl)&lt;br /&gt;    base64string = base64.encodestring('%s:%s' % (username, password))[:-1]&lt;br /&gt;    authheader =  "Basic %s" % base64string&lt;br /&gt;    req.add_header("Authorization", authheader)&lt;br /&gt;    handle = urllib2.urlopen(req)&lt;br /&gt;    str=handle.read()&lt;br /&gt;    ss='var wanPara = new Array'&lt;br /&gt;    start=str.index(ss)+ss.__len__()&lt;br /&gt;    end=str.index(';',start)&lt;br /&gt;    s2=str[start:end]&lt;br /&gt;    log(s2)&lt;br /&gt;    t=eval(s2)&lt;br /&gt;    log(t[2])&lt;br /&gt;    handle.close()&lt;br /&gt;    if nowip!=t[2]:&lt;br /&gt;      nowip=t[2]&lt;br /&gt;      gmailsender('mygmail@gmail.com','ddnsip===%s'%nowip,s2)&lt;br /&gt;      log('send %s successfully.'%nowip)&lt;br /&gt;    else:&lt;br /&gt;      log('ddnsip remains %s.'%nowip)&lt;br /&gt;  except:&lt;br /&gt;    log('Unexpected error:', sys.exc_info()[0])&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;  while True:&lt;br /&gt;    check()&lt;br /&gt;    time.sleep(3*60)&lt;br /&gt;&lt;br /&gt;main()&lt;/pre&gt;&lt;br /&gt;The bash script put in /etc/init.d/:&lt;br /&gt;&lt;pre lang="python"&gt;&lt;br /&gt;#!/sbin/runscript&lt;br /&gt;# Copyright 1999-2004 Gentoo Foundation&lt;br /&gt;start()	{&lt;br /&gt;	ebegin "Starting ipsender"&lt;br /&gt;	nohup python /home/zeaster/amp/ipsender.py &amp;gt;&amp;gt; /var/log/ipsender-nohup.log&amp;amp;&lt;br /&gt;	eend $?&lt;br /&gt;}&lt;br /&gt;stop()	{&lt;br /&gt;	ebegin "Stopping ipsender unsuccessfully"&lt;br /&gt;	eend $?&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/18083698-8320695817332969782?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/8320695817332969782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=8320695817332969782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8320695817332969782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8320695817332969782'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/09/python-script-to-email-me-dynamic-ip.html' title='python script to email me the dynamic ip from tp-link router'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-7206229720411318602</id><published>2007-07-30T11:23:00.000+08:00</published><updated>2007-08-03T23:07:59.600+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>wake-on-lan by python script</title><content type='html'>How to wake up your computer on the LAN?&lt;br /&gt;the answer is just to send a Magic Packet to your computer on port 7 or 9.&lt;br /&gt;However when your computer is down, it has no ip, so send it to the broadcast ip&lt;br /&gt;the following python script implements the above idea.&lt;br /&gt;&lt;pre lang="python"&gt;&lt;br /&gt;import struct, socket&lt;br /&gt;&lt;br /&gt;def wake_on_lan(ether_addr, inet_addr):&lt;br /&gt;  addr_byte=ether_addr.split(':')&lt;br /&gt;  hw_addr=struct.pack('BBBBBB',&lt;br /&gt;    int(addr_byte[0],16),&lt;br /&gt;    int(addr_byte[1],16),&lt;br /&gt;    int(addr_byte[2],16),&lt;br /&gt;    int(addr_byte[3],16),&lt;br /&gt;    int(addr_byte[4],16),&lt;br /&gt;    int(addr_byte[5],16))&lt;br /&gt;  msg='\xff'*6+hw_addr*16&lt;br /&gt; &lt;br /&gt;  s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)&lt;br /&gt;  s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)&lt;br /&gt;  s.sendto(msg, (inet_addr,7))&lt;br /&gt;  s.close()&lt;br /&gt;&lt;br /&gt;wake_on_lan('00:E0:4C:E1:D9:CC', '192.168.1.255')&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;hints id="hah_hints"&gt;&lt;/hints&gt;&lt;br /&gt;The code above is based on socket.SOCK_DGRAM to send UDP packet.&lt;br /&gt;How to create a UDP packet based on  raw  socket  in python?&lt;br /&gt;the project dpkt does an excellent job.&lt;br /&gt;the following example shows that:&lt;br /&gt;&lt;pre lang="python"&gt;&lt;br /&gt;import socket&lt;br /&gt;from dpkt import ethernet,udp,ip&lt;br /&gt;import dpkt&lt;br /&gt;import struct&lt;br /&gt;import string&lt;br /&gt;&lt;br /&gt;iface = "eth1"&lt;br /&gt;mac   = "00:0E:35:AB:9B:40"&lt;br /&gt;inet  = "192.168.1.6"&lt;br /&gt;debug = 0&lt;br /&gt;&lt;br /&gt;def eth_aton(buffer):&lt;br /&gt;    addr =''&lt;br /&gt;    temp = string.split(buffer,':')&lt;br /&gt;    buffer = string.join(temp,'')&lt;br /&gt;    for i in range(0, len(buffer), 2):&lt;br /&gt;        addr = ''.join([addr,struct.pack('B', int(buffer[i: i + 2], 16))],)&lt;br /&gt;    return addr&lt;br /&gt;&lt;br /&gt;def buildUdp():&lt;br /&gt;    ether_addr='00:E0:4C:E1:D9:CD'&lt;br /&gt;    addr_byte=ether_addr.split(':')&lt;br /&gt;    hw_addr=struct.pack('BBBBBB',&lt;br /&gt;       int(addr_byte[0],16),&lt;br /&gt;       int(addr_byte[1],16),&lt;br /&gt;       int(addr_byte[2],16),&lt;br /&gt;       int(addr_byte[3],16),&lt;br /&gt;       int(addr_byte[4],16),&lt;br /&gt;       int(addr_byte[5],16))&lt;br /&gt;    msg='xff'*6+hw_addr*16&lt;br /&gt;&lt;br /&gt;    udp_p = udp.UDP()&lt;br /&gt;    udp_p.sport = 0x8130&lt;br /&gt;    udp_p.dport = 7&lt;br /&gt;    udp_p.data = msg&lt;br /&gt;    udp_p.ulen += len(udp_p.data)&lt;br /&gt;&lt;br /&gt;    ip_p = ip.IP()&lt;br /&gt;    ip_p.src = socket.inet_aton('192.168.1.6');&lt;br /&gt;    ip_p.dst = socket.inet_aton('192.168.1.255');&lt;br /&gt;    ip_p.off = 0x4000&lt;br /&gt;    ip_p.data = udp_p&lt;br /&gt;    ip_p.p = ip.IP_PROTO_UDP&lt;br /&gt;    ip_p.len += len(udp_p)&lt;br /&gt;&lt;br /&gt;    packet = ethernet.Ethernet()&lt;br /&gt;    packet.src = eth_aton(mac)&lt;br /&gt;    packet.dst = eth_aton('ff:ff:ff:ff:ff:ff')&lt;br /&gt;    packet.data = ip_p&lt;br /&gt;    packet.type = ethernet.ETH_TYPE_IP&lt;br /&gt;&lt;br /&gt;    if debug: print dpkt.hexdump(str(packet))&lt;br /&gt;    return packet&lt;br /&gt;&lt;br /&gt;s = socket.socket(socket.PF_PACKET, socket.SOCK_RAW)&lt;br /&gt;s.bind((iface,ethernet.ETH_TYPE_IP))&lt;br /&gt;packet = buildUdp()&lt;br /&gt;s.send(str(packet))&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-7206229720411318602?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/7206229720411318602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=7206229720411318602' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7206229720411318602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7206229720411318602'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/07/wake-on-lan-by-python-script.html' title='wake-on-lan by python script'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-2231441119286707970</id><published>2007-06-01T16:34:00.000+08:00</published><updated>2007-07-29T20:54:34.650+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>blogsync 0.3 released, comments can be imported.</title><content type='html'>Firstly, the foregoing blogsync 2.0 should be blogsync 0.2. :-)&lt;br /&gt;blogsync is a tool that import your wordpress to blogger from rss xml file or online&lt;br /&gt;&lt;br /&gt;Now it's blogsync 0.3 release. and it can import comments from exported wordpress rss xml file to blogger site.&lt;br /&gt;it can be downloaded from:&lt;br /&gt;&lt;a href="http://code.google.com/p/blogsync-java/downloads/list"&gt;http://code.google.com/p/blogsync-java/downloads/list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;however it can not preserve the published time of the original comments.&lt;br /&gt;so the published time of your imported comment is just the time when you import.&lt;br /&gt;more details can be found at&lt;br /&gt;&lt;a href="http://groups.google.com/group/bloggerDev/browse_thread/thread/15c9a45416305f99"&gt;http://groups.google.com/group/bloggerDev/browse_thread/thread/15c9a45416305f99&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-2231441119286707970?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/2231441119286707970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=2231441119286707970' title='22 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2231441119286707970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2231441119286707970'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/06/blogsync-03-released-comments-can-be.html' title='blogsync 0.3 released, comments can be imported.'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>22</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-1325838170246622404</id><published>2007-05-19T21:23:00.000+08:00</published><updated>2007-07-29T20:54:34.651+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>blogsync 2.0 released, import your wordpress to blogger from rss xml file or online</title><content type='html'>&lt;p&gt;It's open source now and comes with new feature.&lt;br /&gt;&lt;br /&gt;1 project hosted:&lt;br /&gt;at &lt;a href="http://code.google.com/p/blogsync-java"&gt;http://code.google.com/p/blogsync-java&lt;/a&gt;&lt;br /&gt;blogsync 0.2 can be downloaded at&lt;br /&gt;&lt;a href="http://blogsync-java.googlecode.com/files/blogsync-0.2.zip"&gt;http://blogsync-java.googlecode.com/files/blogsync-0.2.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2 new feature:&lt;br /&gt;In previous blogsync, it imports wordpress posts to blogger from your wordpress website online.&lt;br /&gt;Now in blogsync 0.2, it can import wordpress posts to blogger from a rss xml file that exported by wordpress.&lt;br /&gt;&lt;br /&gt;when blogsync 0.1, the common errors are such as:&lt;br /&gt;a)[Fatal Error] :1444:21: Invalid byte 1 of 1-byte UTF-8 sequence.&lt;br /&gt;org.apache.xmlrpc.client.XmlRpcClientException: Failed to parse&lt;br /&gt;servers response: Invalid byte 1 of 1-byte UTF-8 sequence.&lt;br /&gt;b)Fatal Error] :1:1: Content is not allowed in prolog.&lt;br /&gt;&lt;br /&gt;this is because &lt;br /&gt;a) the server response is not in utf-8 encoding. or&lt;br /&gt;b) the server response is not a valid xml.&lt;br /&gt;&lt;br /&gt;when your posts are too big, for example, &lt;a href="http://i978.iyublog.com/"&gt;http://i978.iyublog.com&lt;/a&gt;, when export all of this blog's posts, the exported rss xml file is 2064KB.&lt;br /&gt;so when transferring these data through http online, the above errors are easy to reproduce.&lt;br /&gt;&lt;br /&gt;Few days ago, I tried to export all posts to a rss xml file, then imports these posts locally from the exported xml file, the above error is hard to reproduce again.&lt;br /&gt;the worst case is that your export file is still invalid xml file or wrong encoding, however it's easy to find these errors and you can try to export it again or edit it manually until you get a valid utf-8 xml file. Now you can import these posts to blogger from the valid utf-8 rss xml file by blogsync 2.0.&lt;br /&gt;&lt;br /&gt;ps:&lt;br /&gt;how to export your wordpress posts to a rss xml file?&lt;br /&gt;in wordpress admin page, go to &amp;quot;Manage&amp;quot; page -&amp;gt; &amp;quot;Export&amp;quot; page, there is a link to export all of your posts.&lt;br /&gt;&lt;br /&gt;ps2:&lt;br /&gt;within 24 hours, Google allows us to submit at most 50 posts by googe data api.&lt;br /&gt;so after 50 posts, the tool can not import any. only to wait for another 24 hours.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-1325838170246622404?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/1325838170246622404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=1325838170246622404' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/1325838170246622404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/1325838170246622404'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/05/blogsync-20-released-import-your.html' title='blogsync 2.0 released, import your wordpress to blogger from rss xml file or online'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-376116388691735433</id><published>2007-03-27T17:29:00.000+08:00</published><updated>2007-07-29T20:49:24.836+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>统一Mac OS X，Windows XP/Vista以及linux的系统时间</title><content type='html'>Windows把BIOS时间作为系统时间，而Mac OS X把BIOS时间作为GMT+0时间，所以对于生活在GMT+8时区的中国用户来说，这两个系统共存时系统时间是不一致的。&lt;br /&gt;即：如果windows时间为12:00，则到Mac OS X下就变成了20:00，在Mac OS X下改过来后，再回到windows下就又错了。&lt;br /&gt;&lt;br /&gt;之前看过这篇&lt;a href="http://my.opera.com/anguste/blog/2007/01/12/mac-os-x-windows-xp-vista"&gt;blog&lt;/a&gt;，讲了通过修改windows注册表，使得windows也把bios时间作为GMT+0时间，这样就可以解决这个问题了，具体操作如下：&lt;br /&gt;在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\中加一项DWORD，RealTimeIsUniversal，把值设为1即可。&lt;br /&gt;&lt;br /&gt;这个办法是靠调整windows时间设置来解决问题的，但是当系统中有linux时，因为linux也是使用bios时间作为系统时间，所以这时linux系统的时间就又不一致了。&lt;br /&gt;最好的办法就是调整Mac OS X的时间。于是想到了强大的Bash Shell，先写脚本1用来开机时自动把时间校对准，然后关机时再运行脚本2，把时间调整回去。&lt;br /&gt;脚本1：&lt;br /&gt;#!/bin/bash&lt;br /&gt;d=$(date &amp;quot;+%d&amp;quot;)&lt;br /&gt;H=$(date &amp;quot;+%H&amp;quot;)&lt;br /&gt;M=$(date &amp;quot;+%M&amp;quot;)&lt;br /&gt;S=$(date &amp;quot;+%S&amp;quot;)&lt;br /&gt;let &amp;quot;H=$H-16&amp;quot; &lt;br /&gt;&lt;br /&gt;z=0&lt;br /&gt;if [ &amp;quot;$H&amp;quot; -lt &amp;quot;$z&amp;quot; ]&lt;br /&gt;then&lt;br /&gt;&amp;nbsp; let &amp;quot;H=$H+24&amp;quot; &lt;br /&gt;&amp;nbsp; let &amp;quot;d=$d-1&amp;quot; &lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;z=10&lt;br /&gt;&lt;br /&gt;if [ &amp;quot;$d&amp;quot; -lt &amp;quot;$z&amp;quot; ]&lt;br /&gt;then&lt;br /&gt;&amp;nbsp; d=0$d &lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ &amp;quot;$H&amp;quot; -lt &amp;quot;$z&amp;quot; ]&lt;br /&gt;then&lt;br /&gt;&amp;nbsp; H=0$H &lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;sudo date -u $d$H$M.$S&lt;br /&gt;&lt;br /&gt;脚本2&lt;br /&gt;#!/bin/bash&lt;br /&gt;ss=$(date &amp;quot;+%d%H%M.%S&amp;quot;)&lt;br /&gt;sudo date -u $ss&lt;br /&gt;&lt;br /&gt;那么如何实现自动开机运行以及关机自动运行呢？&lt;br /&gt;1 开机自动运行&lt;br /&gt;写shell，然后在applescript中调用shell，再把applescript保存为app，添加到login items中&lt;br /&gt;注：我的.sh文件和textmate做绑定了，这样直接添加.sh文件不会执行shell，而是被textmate打开&lt;br /&gt;&lt;br /&gt;2 关机自动运行&lt;br /&gt;使用launchbar的restart和shutdown applescript，因此只需在这两个script中添加调用shell的一句即可了。&lt;br /&gt;&lt;br /&gt;bash shell修改系统时间需要root权限，那么如何在applescript中调用时输入root密码呢？&lt;br /&gt;使用如下命令：&lt;br /&gt;do shell script &amp;quot;sudo date -u 1200&amp;quot; password &amp;quot;mypwd&amp;quot; with administrator privileges&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-376116388691735433?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/376116388691735433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=376116388691735433' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/376116388691735433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/376116388691735433'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/03/mac-os-xwindows-xpvistalinux.html' title='统一Mac OS X，Windows XP/Vista以及linux的系统时间'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-4077727473813918209</id><published>2007-03-27T17:01:00.000+08:00</published><updated>2007-07-29T21:43:19.292+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>推荐一本书：中国自行车之旅</title><content type='html'>前面介绍了如何选购适合自己的自行车，以及一些基本修车技术，足以应付长途骑行的需要。&lt;br /&gt;后面是全国各地的骑行路线介绍，很实用！&lt;br /&gt;&lt;br /&gt;PS 1：&lt;br /&gt;本来想引用豆瓣上关于这本书的链接，结果发现没有，仔细一查才发现原来：&lt;br /&gt;在豆瓣上已无法添加《中国自行车之旅》一书，因为《中国自行车之旅》和《中国徒步之旅》这两本书的isdn号都是7561327234&lt;br /&gt;　　这两部书见：&lt;br /&gt;　　http://joyo.com/detail/product.asp?prodid=bkbk404144&lt;br /&gt;　　http://joyo.com/detail/product.asp?prodid=bkbk410714&lt;br /&gt;&lt;br /&gt;PS 2：&lt;br /&gt;看过之后，决定今年春季去一次十三陵水库，那位想一同去，可以留言。&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://joyo.com/detail/product.asp?prodid=bkbk410714"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-4077727473813918209?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/4077727473813918209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=4077727473813918209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4077727473813918209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4077727473813918209'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/03/blog-post_27.html' title='推荐一本书：中国自行车之旅'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6017215367727624297</id><published>2007-03-15T15:20:00.000+08:00</published><updated>2007-07-29T21:27:52.236+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>性能准则之一：在遍历集合前一定要判断集合是否为空</title><content type='html'>例举2个例子：&lt;br /&gt;1使用Iterator对象遍历集合时，此时遍历前检查集合大小可以缩短执行时间约为：64%&lt;br /&gt;&lt;br /&gt;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int N = 1000 * 100000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Integer&amp;gt; list = new ArrayList&amp;lt;Integer&amp;gt;();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; long start = System.currentTimeMillis();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; N; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Iterator&amp;lt;Integer&amp;gt; iter = list.iterator();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (iter.hasNext()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(iter.next());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(System.currentTimeMillis() - start);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //==================490&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; start = System.currentTimeMillis();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; N; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int j = list.size();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (j &amp;gt; 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Iterator&amp;lt;Integer&amp;gt; iter = list.iterator();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (iter.hasNext()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(iter.next());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(System.currentTimeMillis() - start);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //==================180&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 时间缩短了64%&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2 使用for循环遍历集合时，此时遍历前检查集合大小可以缩短执行时间约为：5%&lt;br /&gt; &amp;nbsp; public static void main(String[] args) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; int N = 1000 * 10000;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;Integer&amp;gt; list = new ArrayList&amp;lt;Integer&amp;gt;();&lt;br /&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; long start = System.currentTimeMillis();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; N; i++) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int j = list.size();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int t = 0; t &amp;lt; j; t++) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(list.get(t));&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(System.currentTimeMillis() - start);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //==================190&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; start = System.currentTimeMillis();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; N; i++) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int j = list.size();&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (j &amp;gt; 0) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int t = 0; t &amp;lt; j; t++) {&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(list.get(t));&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(System.currentTimeMillis() - start);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //==================180&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 时间缩短了5%&lt;br /&gt; &amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-6017215367727624297?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6017215367727624297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6017215367727624297' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6017215367727624297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6017215367727624297'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/03/blog-post_15.html' title='性能准则之一：在遍历集合前一定要判断集合是否为空'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6136067090512082820</id><published>2007-02-27T16:25:00.000+08:00</published><updated>2007-07-29T20:54:34.653+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>blogsync with gui coming, import your wordpress to blogger</title><content type='html'>blogsync with gui coming&lt;br /&gt;&lt;br /&gt;&lt;div style="direction: ltr;"&gt;and with some control function about which posts to import.&lt;br /&gt;&lt;br /&gt;it can be downloaded from&lt;br /&gt;&lt;a href="http://yichao.zhang.googlepages.com/blogsync-with-gui.tar.gz"&gt;http://yichao.zhang.googlepages.com/blogsync-with-gui.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Readme.txt&lt;br /&gt;&lt;br /&gt;0. What is it used for?&lt;br /&gt;This is a simple tool to import all posts from wordpress to blogger/blogspot.&lt;br /&gt;&lt;br /&gt;1. How to use it?&lt;br /&gt;0) set java in your path.&lt;br /&gt;for windows users, run run.bat&lt;br /&gt;for unix/mac users, run run.sh&lt;br /&gt;1) set up your wordpress and blogger account.&lt;br /&gt;2) choose one import option from option panel.&lt;br /&gt;3) read posts from wordpress.&lt;br /&gt;4) check posts and remove any posts that you do not want to import by selecting and right-clicking.&lt;br /&gt;5) import now by just clicking the import button.&lt;br /&gt;&lt;br /&gt;2. what is my blogger blogid?&lt;br /&gt;It's in your blogspot Dashboard url, for example: http://www2.blogger.com/posts.g?blogID=18083698&lt;br /&gt;&amp;quot;18083698&amp;quot; is your blogid.&lt;br /&gt;&lt;br /&gt;3. what may cause this error?&lt;br /&gt;[Fatal Error] :1444:21: Invalid byte 1 of 1-byte UTF-8 sequence.&lt;br /&gt;org.apache.xmlrpc.client.XmlRpcClientException: Failed to parse&lt;br /&gt;servers response: Invalid byte 1 of 1-byte UTF-8 sequence.&lt;br /&gt;&lt;br /&gt;One of your posts may be an invalid xml.&lt;br /&gt;please correct it and make sure its source code is valid xml, then import again.&lt;br /&gt;&lt;br /&gt;4. any other questions?&lt;br /&gt;Welcome to send your feedback to Yichao.Zhang &amp;amp; gmail.com&lt;br /&gt;or leave me a comment on &lt;a href="http://zeaster.blogspot.com"&gt;http://zeaster.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a target="_blank" href="http://zeaster.blogspot.com/" onclick="return top.js.OpenExtLink(window,event,this)" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-6136067090512082820?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6136067090512082820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6136067090512082820' title='94 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6136067090512082820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6136067090512082820'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/02/blogsync-with-gui-coming-import-your.html' title='blogsync with gui coming, import your wordpress to blogger'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>94</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6142087639996318526</id><published>2007-02-27T16:09:00.000+08:00</published><updated>2007-02-27T17:05:12.693+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>春运火车票攻略</title><content type='html'>1 &lt;br /&gt;春运背景介绍：&lt;br /&gt;a)票贩子绝对和铁路部门没关&lt;br /&gt;b)铁路部门绝对不想趁春运期间抬高票价&lt;br /&gt;c)政府绝对在春运问题上竭尽全力为人民服务了&lt;br /&gt;d)中国老百姓在春运问题上绝对有觉悟维护自己的权益&lt;br /&gt;此处省去1万字&lt;br /&gt;&lt;br /&gt;2 &lt;br /&gt;时间：年二十八晚6点&lt;br /&gt;地点：北京火车站退票大厅&lt;br /&gt;人物：票贩男甲&lt;br /&gt;对话：哈尔滨的啦，T17，今晚9：05发车，有座了。。。。/ 多少钱？ / 400元 / 。。。。&lt;br /&gt;&lt;br /&gt;时间：年二十八晚8点15分&lt;br /&gt; 地点：北京火车站退票大厅&lt;br /&gt; 人物：票贩女&lt;br /&gt; 对话：哈尔滨的啦。。。。/ 多少钱？ / 154元 / 。。。。&lt;br /&gt;&lt;br /&gt;3 返程&lt;br /&gt;本人脑子有问题，错失购买学生票良机，只好买了站票&lt;br /&gt;带了2个凳子，花了20元，让小红帽带着提前上车了。对了，上车前竟然遇到高中好友，匆忙中也没聊上几句&lt;br /&gt;20元还算有所值，提前占了一个2节车厢中间的位置，摆好箱子当座子，支起椅子坐上，倒也逍遥，此处温度适宜，如果没有后来的事儿，我觉得比有座好&lt;br /&gt;接下来说说后来的事儿：&lt;br /&gt;沈阳站停车，乘务员要从我这个位置开门倒垃圾下去，结果垃圾袋破了，洒出n多方便面汁儿，弄得到处都是，女友牺牲了一个垫椅子的围巾。&lt;br /&gt;乘务员一句道歉的话也没有，惹得女友痛痛快快的骂了一车。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-6142087639996318526?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6142087639996318526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6142087639996318526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6142087639996318526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6142087639996318526'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/02/blog-post_27.html' title='春运火车票攻略'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6243482446846461150</id><published>2007-02-18T06:42:00.000+08:00</published><updated>2007-02-27T13:28:47.767+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>老爸的酒瘾</title><content type='html'>1&lt;br /&gt;新年回家，老妈拿出2大瓶自制&amp;quot;葡萄酒&amp;quot;，就是用葡萄和枸杞子加上白酒泡制而成。&lt;br /&gt;里面泡的葡萄也没扎个眼儿，一问老妈说这是老爸要求的。&lt;br /&gt;别人不知道，我可清楚，这是老爸的变相喝酒法。&lt;br /&gt;&lt;br /&gt;2&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/18083698-6243482446846461150?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6243482446846461150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6243482446846461150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6243482446846461150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6243482446846461150'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/02/blog-post.html' title='老爸的酒瘾'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-4841979834300931660</id><published>2007-02-12T15:18:00.000+08:00</published><updated>2007-07-29T20:34:02.071+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Spoofing the User Agent with Safari for cmwap</title><content type='html'>In Mac OS X terminal:&lt;br /&gt;chao:~ mac$ defaults write com.apple.Safari CustomUserAgent &amp;quot;\&amp;quot;hicmwapiamcomingnow\&amp;quot;&amp;quot;&lt;br /&gt;&lt;br /&gt;Now your safari user-agent has been changed to &amp;quot;hicmwapiamcomingnow&amp;quot;.&lt;br /&gt;OK, go internet surfing with cmwap on Mac OS X!&lt;br /&gt;&lt;br /&gt;P.S:&lt;br /&gt;of course, you can go with gprsproxy tool without changing anything for safari.&lt;br /&gt;see this for details:&lt;br /&gt;&lt;a href="http://zeaster.blogspot.com/2007/02/mac-os-xdopod-696-wm50-cmwap.html"&gt;http://zeaster.blogspot.com/2007/02/mac-os-xdopod-696-wm50-cmwap.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;cmwap is a wap service provided by China Mobile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-4841979834300931660?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/4841979834300931660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=4841979834300931660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4841979834300931660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4841979834300931660'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/02/spoofing-user-agent-with-safari-for.html' title='Spoofing the User Agent with Safari for cmwap'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-2150024202405977913</id><published>2007-02-12T13:15:00.000+08:00</published><updated>2007-07-29T20:50:17.371+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Windows XP/Vista vs Mac OS X 软件对比清单</title><content type='html'>自从切换到Mac OS X平台下，就被吸引了，也不想回windows了。&lt;br /&gt;不过刚开始发现windows上还是有几个软件是Mac OS X下没有的，不过现在这种软件越来越少了&lt;br /&gt;现列举几个和我密切相关的说明一下：&lt;br /&gt;&lt;br /&gt;1 Microsoft Office for Mac 通过！pass&lt;br /&gt;这个是没用过Mac的人不能想象的，不过它真的有，微软自己给Apple Mac OS X 做的Office 套件&lt;br /&gt;现在版本是Microsoft Office for Mac 2004，和Microsoft Office 2003功能一样&lt;br /&gt;另外，Microsoft已经公布Microsoft Office for Mac 2008也将马上发布。这版的功能和Microsoft Office 2007是一样的&lt;br /&gt;详见：&lt;a href="http://www.microsoft.com/mac/products/office2004/"&gt;http://www.microsoft.com/mac/products/office2004/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2 ipmsg 通过！pass&lt;br /&gt;实习时公司内使用的即时聊天工具，一个很小的exe程序。&lt;br /&gt;不过也有Mac OS X下的版本，详见我这篇blog：&lt;br /&gt;&lt;a href="http://zeaster.blogspot.com/2007/01/translate-ipmsg-into-gbk-on-mac-os-x.html"&gt;http://zeaster.blogspot.com/2007/01/translate-ipmsg-into-gbk-on-mac-os-x.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3 ActiveSync / Windows Mobile Device Center 通过！pass&lt;br /&gt;我用的手机是dopod 696，Windows Mobile的操作系统，同步工具在XP下是ActiveSync，Vista下是Windows Mobile Device Center&lt;br /&gt;不过也有Mac OS X下的类似软件Missing Sync for Windows Mobile，详见：&lt;br /&gt;&lt;a href="http://www.markspace.com/missingsync_windowsmobile.php"&gt;http://www.markspace.com/missingsync_windowsmobile.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4 Dopod 696 USB Modem 无线modem 通过！pass&lt;br /&gt;在Mac OS X 下用Windows Mobile 2003/wm5.0手机连接cmwap或者cmnet上internet？！&lt;br /&gt;没错！这是可以成功！详见我的这篇blog：&lt;br /&gt;&lt;a href="http://zeaster.blogspot.com/2007/02/mac-os-xdopod-696-wm50-cmwap.html"&gt;http://zeaster.blogspot.com/2007/02/mac-os-xdopod-696-wm50-cmwap.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5 智能手机工作室 Jeyo 没通过，failed&lt;br /&gt;就是在Mac OS X连接手机发短信，这个功能目前我还没找到可替代的软件&lt;br /&gt;&lt;br /&gt;6 招商银行专业版客户端 通过！pass&lt;br /&gt;最近发现原来Windows Mobile下又招商银行客户端，而且可以cmwap连接，本人已试，好用！&lt;br /&gt;成功登陆后使用cmwap进行各项操作均没有问题。不过也有几点需要主要：&lt;br /&gt;1）不要用cmwap恢复专业版证书，会很慢，常常会失败，可以先手机连pc机，恢复完证书，再用cmwap登陆就没问题了！&lt;br /&gt;2）打开招商银行掌上版前，一定要先连同gprs，例如，先打开pie，连个网。&lt;br /&gt;否则招商银行掌上版会找不到网络，它不会自动开启gprs。也许这是为用户安全考虑吧。&lt;br /&gt;另外也督促招商银行尽快出Mac OS X版的客户端。&lt;br /&gt;掌上版详见：&lt;br /&gt;&lt;a href="http://www.cmbchina.com/PDAbank/PDADownload.htm"&gt;http://www.cmbchina.com/PDAbank/PDADownload.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7 蓝牙棒的驱动 没通过，failed&lt;br /&gt;实际我用的Mac OS X是装在IBM Thinkpad上的，没蓝牙驱动&lt;br /&gt;&lt;br /&gt;8 三耳&lt;font size="-1"&gt;可视数字复读机 &lt;/font&gt;没通过，failed&lt;br /&gt;我练习听力的软件，可以自动把mp3按句子分割，然后一句一句复读听。没找到Mac版的&lt;br /&gt;详见：&lt;a href="http://www.3estudy.com"&gt;http://www.3estudy.com&lt;/a&gt;&lt;font size="-1"&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-2150024202405977913?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/2150024202405977913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=2150024202405977913' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2150024202405977913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2150024202405977913'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/02/windows-xpvista-vs-mac-os-x.html' title='Windows XP/Vista vs Mac OS X 软件对比清单'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-5215925702238177197</id><published>2007-02-12T12:16:00.000+08:00</published><updated>2007-07-29T20:34:02.072+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Mac OS X上成功使用dopod 696 wm5.0 连 cmwap上网</title><content type='html'>哈哈！&lt;br /&gt;也是使用dopod 696/himalaya wm5.0 的&amp;ldquo;internet共享&amp;rdquo;方式上网&lt;br /&gt;1 在Mac OS X 下，安装Missing Sync for Windows Mobile&lt;br /&gt;2 去掉Missing Sync连接方式中的usb，以下和我上篇blog中的说明一样，详见：&lt;br /&gt;&lt;a href="http://zeaster.blogspot.com/2007/02/dopod-696-wm50-cmwap.html"&gt;http://zeaster.blogspot.com/2007/02/dopod-696-wm50-cmwap.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;蓝牙方式我没试，因为偶是在IBM thinkpad 上装的Mac OS X 10.4.7，没蓝牙驱动，不过道理是一样的，应该也能成功。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-5215925702238177197?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/5215925702238177197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=5215925702238177197' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5215925702238177197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5215925702238177197'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/02/mac-os-xdopod-696-wm50-cmwap.html' title='Mac OS X上成功使用dopod 696 wm5.0 连 cmwap上网'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-4514007414329347933</id><published>2007-02-11T12:29:00.000+08:00</published><updated>2007-02-05T16:29:18.464+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>笔记本成功使用dopod 696 wm5.0 上的cmwap上网</title><content type='html'>在各个论坛上查了一圈，知道696升级到wm5.0后原来的&lt;a href="http://forum.xda-developers.com/showthread.php?t=282780"&gt;USB modem是无法使用&lt;/a&gt;了&lt;br /&gt;新的方式是使用internet共享。&lt;br /&gt;就是通过USB，蓝牙或红外等方式使得696和笔记本组成一个局域网，在局域网内笔记本可以共享696的 internet 连接&lt;br /&gt;经测试使用USB和bluetooth方式，笔记本都可以连上696的cmwap或cmnet连接。&lt;br /&gt;注明：&lt;br /&gt;我使用的rom是haha2008 0207版 wm5.0 的rom，其他早些的版本需要自己配置696蓝牙网卡的信息，此版rom已设置好。&lt;br /&gt;下载地址：http://www.hi-pda.com/forum/viewthread.php?tid=332225&lt;br /&gt;gprsproxy的下载地址：&lt;br /&gt;http://www.51nb.com/forum/viewthread.php?tid=280524&lt;br /&gt;http://www.51nb.com/forum/viewthread.php?tid=299242&lt;br /&gt;&lt;br /&gt;使用usb的方式&lt;br /&gt;1 去掉activesync的usb连接&lt;br /&gt;2 连接696和笔记本&lt;br /&gt;3 此时笔记本上的连接中会新增一个Windows Mobile-based Device连接&lt;br /&gt;4 在696上启动internet连接，pc连接选usb，网络连接选接入点为cmwap的连接（具体名是自己定义的），确定连接&lt;br /&gt;5 这时Windows Mobile-based Device连接会重新启动一下，此时这个连接的网络信息是&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Connection-specific DNS Suffix&amp;nbsp; . :&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description . . . . . . . . . . . : Windows Mobile-based Device #3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Physical Address. . . . . . . . . : 80-00-60-0F-E8-00&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dhcp Enabled. . . . . . . . . . . : Yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Autoconfiguration Enabled . . . . : Yes&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IP Address. . . . . . . . . . . . : 192.168.0.102&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; ========》共享局域网中笔记本的ip&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Subnet Mask . . . . . . . . . . . : 255.255.255.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Default Gateway . . . . . . . . . : 192.168.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ========》共享局域网中696的ip&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DHCP Server . . . . . . . . . . . : 192.168.0.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DNS Servers . . . . . . . . . . . : 192.168.0.1&lt;br /&gt;5 使用gprsproxy 1.3， 把ie或 firefox 中的代理设置成gprsproxy中配置的，即可上网了。&lt;br /&gt;&lt;br /&gt;使用蓝牙的方式&lt;br /&gt;1 笔记本上安装蓝牙驱动&lt;br /&gt;2 开启696和笔记本的蓝牙，并且配对成功，这时笔记本上的连接中会新增一个Bluetooth PAN network Adapter&lt;br /&gt;3 在696上启动internet连接，pc连接选蓝牙，网络连接选接入点为cmwap的连接（具体名是自己定义的），确定连接，696会显示&amp;ldquo;已完成设备配置，请在pc上连接蓝牙PAN&amp;rdquo;&lt;br /&gt;4 在笔记本上连接696的蓝牙 PAN 服务即个人局域网服务Personal Area Network。（如果之前已经连接，断开重连一次即可）&lt;br /&gt;5 这时Bluetooth PAN network Adapter会分配到和上面类似的网络配置信息&lt;br /&gt;6 使用gprsproxy 1.3， 把ie或 firefox 中的代理设置成gprsproxy中配置的，即可上网了。&lt;br /&gt;&lt;br /&gt;注：&lt;br /&gt;1 &lt;br /&gt;cmwap下只要修改user-agent 并且设置10.0.0.172代理就可以上网，不用gprsproxy也能上网&lt;br /&gt;firefox下修改user-agent 的插件：useragentswitcher.xpi&lt;br /&gt;修改代理的插件：switchproxy_tool-1.4.1-fx+mz+tb.xpi&lt;br /&gt;&lt;br /&gt;2&lt;br /&gt; 在cmwap下上某些网址，如groups.google.com仍会提示xml解析错误，这时可以使用opera9试一下。&lt;br /&gt;在opera9上出现此错误时，旁边会有一个按钮提示让你&amp;ldquo;按html格式解析&amp;rdquo;，点击此按钮，就可正常显示html。&lt;br /&gt;&lt;br /&gt;3&lt;br /&gt;使用cmnet的情况就更简单了，直接省去上面的gprsproxy配置那一步，不用代理直接可以上网。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-4514007414329347933?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/4514007414329347933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=4514007414329347933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4514007414329347933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4514007414329347933'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/02/dopod-696-wm50-cmwap.html' title='笔记本成功使用dopod 696 wm5.0 上的cmwap上网'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-7950894391068345577</id><published>2007-02-11T12:13:00.000+08:00</published><updated>2007-02-12T12:14:26.633+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>dopod 696/himalaya 上再次安装wm5.0手记</title><content type='html'>&lt;p&gt;第一次安装时没留下点记录，结果这次重新刷rom时走了很多弯路。&lt;br /&gt;1 首先几个概念的介绍：&lt;br /&gt;&lt;br /&gt;696的内存 = 128M ram + 64 rom&lt;br /&gt;windows mobile 2003se 下的使用情况：&lt;br /&gt;128M ram = 存储空间 + 内存，并且存储空间和内存所占比例可以动态调整&lt;br /&gt;64M rom = 32M 操作系统 + 16M ExtRom + 16M Storage，ExtRom是隐藏的，平时看不到&lt;br /&gt;&lt;br /&gt;windows mobile 2005 下的使用情况：&lt;br /&gt;128M ram = 内存 + RAMdisk + 缓冲池PagingPool，其中这三者的比例分配可以通过修改os rom文件来调整&lt;br /&gt;64M rom = 32M 操作系统 + 32M 存储空间&lt;br /&gt;&lt;br /&gt;我使用的是RAMdisk 48M + PagingPool 24M&lt;br /&gt;&lt;br /&gt;2 通过这次找rom，发现国内民间的开发活动还不规范&lt;br /&gt;首先对于同一个软件项目，没有一个同一的发布位置，总是分布在各个论坛的各个帖子里&lt;br /&gt;其次对于软件的版本管理很混乱，下载的文件中没有详细的Changs更新说明，实际上这些说明也是分布在各个论坛的各个帖子里&lt;br /&gt;总之信息都是分布于各个论坛的各个帖子，查找起来很困难&lt;br /&gt;国外的类似项目如 xda-developers，osxproject 除了论坛，都会有一个专门的wiki来整理信息，使得信息有一个唯一的入口。&lt;br /&gt;这样利于使用者，也利于其他contributor来奉献&lt;br /&gt;造成这种局面，估计有2个原因：&lt;br /&gt;1 国内的企业中软件开发本来就不规范，所以国内开发者普遍不知道如何规范的开发&lt;br /&gt;2 国内资源太紧张，有些开发者不是不想放到一个同一的地方，而是找不到这样的服务器，没有钱买或者没有人捐钱来做这件事&lt;br /&gt;&lt;br /&gt;3 基于上面原因，记录几个好的下载资源&lt;br /&gt;haha2008的696 rom在Hi!PDA论坛中&lt;br /&gt;修改rom，定制rom的论坛在pdafans中&lt;br /&gt;gprs cmwap上网方面的讨论在51nb论坛的网络版&lt;br /&gt;&lt;br /&gt;4 鄙视M$一下&lt;br /&gt;Vista + Windows Mobile Device Center + wm5.0 + outlook 2007 + USB cable&lt;br /&gt;这是噩梦般的组合，我是无论如何不能使用usb数据线来同步outlook和wm5.0，试了一上午都没成功，下午在一个坛子上看说M$要发布新的WMDC，呵呵，不过我没兴趣再去折腾了。&lt;br /&gt;补充一下，用红外线是可以同步成功的，不过那速度真是相当的慢~~~&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-7950894391068345577?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/7950894391068345577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=7950894391068345577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7950894391068345577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7950894391068345577'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/02/dopod-696himalaya-wm50.html' title='dopod 696/himalaya 上再次安装wm5.0手记'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6876915219074540156</id><published>2007-02-04T08:32:00.000+08:00</published><updated>2007-02-04T22:28:15.749+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>two badly things about time difference or google</title><content type='html'>1&lt;br /&gt;see my letter to Group Google BloggerDataAPI-owner:&lt;br /&gt;&lt;em&gt;Yesterday, I replied 2 msg to the thread &amp;quot;share a tool that imports&lt;br /&gt;all posts from wordpress to blogger/blogspot&amp;quot;&lt;br /&gt;however only 1 msg passed by moderator.&lt;br /&gt;so I wonder the other msg is filtered by google anti-spam script or&lt;br /&gt;moderator.&lt;br /&gt;if it's script, that's a top priority bug to fix, I think.&lt;br /&gt;if it's moderator, I wonder why it is filtered. Is it mistaken by a&lt;br /&gt;duplicated one?&lt;br /&gt;&lt;br /&gt;The following is the filtered msg. I'd like to re-publish it again.&lt;br /&gt;Thanks!&lt;br /&gt;&amp;quot;I imported about 55 posts from my local wordpress to blogger for one&lt;br /&gt;time.&lt;br /&gt;Today for test, I upgraded my wordpress to 2.1, created a 350kb txt&lt;br /&gt;file, published all its content as a post to wordpress.&lt;br /&gt;after that, python script reads all my 65 wp posts and drafts&lt;br /&gt;properly.&lt;br /&gt;so I wonder that's a matter of your data.&lt;br /&gt;Are your wp hosted on your local Mac box?&lt;br /&gt;or try to capture the response from server by httplook on a windows&lt;br /&gt;box or ?? on Mac&amp;quot;&lt;br /&gt;&lt;br /&gt;P.S.&lt;br /&gt;I suggest this group only use a script to filter. because now I post&lt;br /&gt;one msg and have to wait for 10+ hours to see it in group threads for&lt;br /&gt;a time difference of 10+ hours between US and China. I guess many&lt;br /&gt;other people have the same issue.&lt;br /&gt;a script can work for 24 hours a day, a moderator can not. Thanks&lt;br /&gt;again.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;2&lt;br /&gt;see &lt;a href="http://groups.google.com/group/Google-Web-Toolkit-Contributors/browse_thread/thread/80389bf7aac08abd"&gt;google group thread&lt;/a&gt; or &lt;a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=650"&gt;google gwt issue tracker&lt;/a&gt;&lt;br /&gt;When I checked out google-web-toolkit source code and run the unit test, surprised to get a Failure in &lt;a href="http://google-web-toolkit.googlecode.com/svn/trunk/user/test/com/google/gwt/emultest/java/util/DateTest.java"&gt;DateTest.java&lt;/a&gt;.&lt;br /&gt;The reason is time difference! It only passes in GMT -1 ~ -12, and fails in GMT 0 ~ 14 countries&lt;br /&gt;my fix is to comment all buggish method just like testGetHours().&lt;br /&gt;&lt;br /&gt;the code is:&lt;br /&gt;&amp;nbsp; /** Testing for public int java.util.Date.getDate()* */&lt;br /&gt;&amp;nbsp; public void testGetDate() {&lt;br /&gt;......&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Date accum1 = create(PAST);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int a1 = accum1.getDate();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; assertEquals(4, a1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ===========&amp;gt; it fails in GMT 0 ~ 14 countries&lt;br /&gt;......&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;.......&lt;br /&gt;&amp;nbsp; Date create(String s) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (s.equals(FUTURE)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new Date(&amp;quot;12/30/2010 3:4:5 GMT&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (s.equals(PAST)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return new Date(&amp;quot;1/5/1880 GMT&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } .......&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; * Testing for public int java.util.Date.getHours()&lt;br /&gt;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;&amp;nbsp; public void testGetHours() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Cannot be done because each time zone will give a different&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // answer&lt;br /&gt;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-6876915219074540156?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6876915219074540156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6876915219074540156' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6876915219074540156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6876915219074540156'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/02/two-badly-things-about-time-difference.html' title='two badly things about time difference or google'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-7731559528748568383</id><published>2007-02-03T14:21:00.000+08:00</published><updated>2007-07-29T20:54:55.530+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>A python script that get posts from wordpress by httplib</title><content type='html'>the script can be downloaded from &lt;br /&gt;&lt;a href="http://yichao.zhang.googlepages.com/wpbyhttp.py"&gt;http://yichao.zhang.googlepages.com/wpbyhttp.py&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Readme:&lt;br /&gt;# set your wordpress username, password, wp_url, wp_path&lt;br /&gt;wp_username = 'admin'&amp;nbsp;&amp;nbsp; &lt;br /&gt;wp_passwd = 'myword'&lt;br /&gt;wp_url = 'localhost'&amp;nbsp; &lt;br /&gt;wp_path = '/wordpress/xmlrpc.php'&lt;br /&gt;# set how many recent posts do you want to import from wordpress to blogger&lt;br /&gt;wp_recent_posts_num = 5&lt;br /&gt;# set filename which the wp server response will be output to&lt;br /&gt;wp_response_file = 'wp_server_response.txt' &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;the file &amp;quot;wp_response_file&amp;quot; contains the server response. which can be found in the current folder.&lt;br /&gt;if successfully, it's the posts retrieved.&lt;br /&gt;if unsuccessfully, it's the debug info.&lt;br /&gt;&lt;br /&gt;Hope this helps &lt;a href="http://groups.google.com/group/bloggerDev/browse_thread/thread/8bda36af85c53eca"&gt;Erica Baker&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-7731559528748568383?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/7731559528748568383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=7731559528748568383' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7731559528748568383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7731559528748568383'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/02/python-script-that-get-posts-from.html' title='A python script that get posts from wordpress by httplib'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-7632224745606104397</id><published>2007-01-31T20:08:00.018+08:00</published><updated>2007-07-29T20:54:55.531+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>A tool that import all posts from wordpress to blogger in python</title><content type='html'>the tool can be downloaded from&lt;br /&gt;&lt;a href="http://yichao.zhang.googlepages.com/wordpress2blogger.py"&gt;http://yichao.zhang.googlepages.com/wordpress2blogger.py&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Readme:&lt;br /&gt;&lt;br /&gt;1 set the following parameters in the wordpress2blogger.py file&lt;br /&gt;# set your wordpress username, password, xmlrpc url&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;wp_username = 'admin'&amp;nbsp;&amp;nbsp; &lt;br /&gt;wp_passwd = 'mypwd'&lt;br /&gt;wp_url = 'http://localhost/wordpress/xmlrpc.php'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;# set your blogger email, password, blogid&lt;br /&gt;# blogid is in your blogspot Dashboard url, for example:&lt;br /&gt;# http://www2.blogger.com/posts.g?blogID=18083698, &amp;quot;18083698&amp;quot; is your blogid.&lt;br /&gt;blogger_email = 'yichao.zhang@gmail.com'&lt;br /&gt;blogger_passwd = 'mypwd'&lt;br /&gt;blogger_blogid = '18083698'&lt;br /&gt;&lt;br /&gt;# set how many recent posts do you want to import from wordpress to blogger&lt;br /&gt;wp_recent_posts_num = 5&amp;nbsp; &lt;br /&gt;&lt;br /&gt;# set debug mode = True if you want to get debug info&lt;br /&gt;DEBUG = True&lt;br /&gt;&lt;br /&gt;3 make sure python in your path&lt;br /&gt;&lt;br /&gt;4 in terminal, type the following command&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;quot;python wordpress2blogger.py&amp;quot;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-7632224745606104397?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/7632224745606104397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=7632224745606104397' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7632224745606104397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7632224745606104397'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/tool-that-import-all-posts-from_4359.html' title='A tool that import all posts from wordpress to blogger in python'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-8910565581334328573</id><published>2007-01-28T06:34:00.002+08:00</published><updated>2007-07-29T21:17:56.163+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>js feature by jQuery copied from codeplayer</title><content type='html'>Now, after loading this page, all titles of the posts are folded and click &amp;quot;+&amp;quot; to unfold, click title to dig into the single post page.&lt;br /&gt;The feature above is implemented by the following code copied from &lt;a href="http://codeplayer.blogspot.com/"&gt;codeplayer&lt;/a&gt;.&lt;br /&gt;css part:&lt;br /&gt;.mytoggle{&lt;br /&gt;&amp;nbsp; cursor:pointer;&lt;br /&gt;&amp;nbsp; font-size:22px;&lt;br /&gt;&amp;nbsp; color:green;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;script part:&lt;br /&gt;&amp;lt;script src='http://www.douban.com/js/jquery.js' type='text/javascript'&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script language='javascript'&amp;gt;&lt;br /&gt;$(function(){&lt;br /&gt;&amp;nbsp; $(&amp;quot;.post-title&amp;quot;).prepend(&amp;quot;&amp;lt;span class='mytoggle'&amp;gt;-&amp;lt;/span&amp;gt;&amp;quot;);&lt;br /&gt;&amp;nbsp; $(&amp;quot;.mytoggle&amp;quot;).click(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function(e){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var content = $(this).parent().next().next();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; content.toggle();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(content.css(&amp;quot;display&amp;quot;)==&amp;quot;none&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(this).html(&amp;quot;+&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(this).html(&amp;quot;-&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; ).click();&lt;br /&gt;})&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-8910565581334328573?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/8910565581334328573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=8910565581334328573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8910565581334328573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8910565581334328573'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/js-feature-by-jquery-copied-from_2737.html' title='js feature by jQuery copied from codeplayer'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-5086166815929256485</id><published>2007-01-25T13:30:00.003+08:00</published><updated>2009-02-16T11:41:57.591+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Translate ipmsg into GBK on Mac OS X</title><content type='html'>在公司使用ipmsg作为即时通讯工具，不过那是windows版的，用了Mac后自然无法使用了。&lt;br /&gt;最近发现不用ipmsg，好多公司的通知都收不到了，虽然偶现在实习写论文，也没什么大事儿，但还是有点不方便。&lt;br /&gt;于是google之：&lt;br /&gt;惊喜！&lt;a href="http://www.ipmsg.org/"&gt;ipmsg&lt;/a&gt;竟然有unix，Mac OS X，java等诸多版本。&lt;br /&gt;立马下了个Mac的版本，装上一看，都是日文！原来ipmsg是日本人开发的，除了windows版有国人&lt;a href="http://www.azhi.net/IPMsg/"&gt;azhi&lt;/a&gt;做了汉化，并改名为&lt;a href="http://www.azhi.net/IPMsg/"&gt;飞鸽传书&lt;/a&gt;，其他版本均不支持中文。&lt;br /&gt;&lt;br /&gt;无奈！只好试试java版的了，发现使用swt写的，于是自己汉化之。&lt;br /&gt;汉化还是比较容易的，有源代码，这点上还是要赞一下那位日本作者！&lt;br /&gt;主要改了3个地方，&lt;br /&gt;一是把界面显示的文字汉化&lt;br /&gt;二是把消息传递时的字符编码改为GBK，本想改为UTF-8的，但这样和windows版的又不兼容了，所以只好改为GBK。&lt;br /&gt;三是把保存日志时的字符编码改为GBK。&lt;br /&gt;&lt;br /&gt;另外，java版的ipmsg每次都会弹出个login的对话框，需要点一下才可以登陆，麻烦！于是改代码，把这个对话框去掉了，每次都只从ipmsg.properties文件中读取用户以及分组信息。&lt;br /&gt;&lt;br /&gt;接下来要赞一下eclipse！&lt;br /&gt;这个swt工程可以直接export成苹果的应用程序，app格式，帅呆了！&lt;br /&gt;另外，程序中使用了当前目录下的文件，如icon.gif或ipmsg.properties等。通过自己建了个"./testfile.txt"的文件后，知道原来打包成.app后的当前目录就是.app所在的目录。于是把icon文件夹以及ipmsg.properties放到和ipmsg.app平级的位置就可以了！&lt;br /&gt;&lt;br /&gt;哈哈，这下在Mac OS X下也可以使用ipmsg了，虽然java版的不支持文件传输，但以后接收公司通知是没问题了。&lt;br /&gt;文件传输的问题也可以通过苹果自带的ftp服务器方便的解决。哈哈&lt;br /&gt;&lt;br /&gt;PS - 2009-02-16:&lt;br /&gt;应网友的请求, 把原来打好包的ipmsg放到了这里, 方便有需要的朋友下载&lt;br /&gt;&lt;a href="http://blogsync-java.googlecode.com/files/ipmsg-macosx.zip"&gt;http://blogsync-java.googlecode.com/files/ipmsg-macosx.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;另外, 如果有朋友想继续完善ipmsg for Mac OS X 的功能, 可以下载这个eclipse项目.&lt;br /&gt;&lt;a href="http://blogsync-java.googlecode.com/files/ipmsg_eclipse_project.zip"&gt;http://blogsync-java.googlecode.com/files/ipmsg_eclipse_project.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-5086166815929256485?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/5086166815929256485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=5086166815929256485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5086166815929256485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5086166815929256485'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/translate-ipmsg-into-gbk-on-mac-os-x.html' title='Translate ipmsg into GBK on Mac OS X'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-5985906256209765964</id><published>2007-01-25T13:29:00.000+08:00</published><updated>2007-07-29T21:09:59.967+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>active mode OR passive mode on FTP</title><content type='html'>自从给小黑装上了Mac OS X就再也不想用windows了，不管是xp还是vista，都太蹩脚了&lt;br /&gt;在公司和同事传文件时，苹果自带的ftp服务器就派上了用途。&lt;br /&gt;苹果自带的这个ftp服务器还是很好用的，不需要配置，只需要在sharing中启动ftp服务，打开防火墙就OK了。&lt;br /&gt;但接下来也遇到了一点点麻烦：&lt;br /&gt;同事使用windows自带的ftp命令行工具则可以访问我的ftp服务器，使用flashFXP则无法访问。&lt;br /&gt;后来证实是因为ftp命令行使用active mode（主动模式）所以可以访问，而flashFXP选用passive mode（被动模式）无法访问，不选用被动模式则可以正常访问。&lt;br /&gt;&lt;br /&gt;于是google之：&lt;br /&gt;看到&lt;a href="http://slacksite.com/other/ftp.html"&gt;这篇文章&lt;/a&gt;，疑惑顿释。&lt;br /&gt;主动模式和被动模式是相对于ftp服务器来说的，即是ftp服务器主动同客户端建立通讯socket或ftp服务器被动接受客户端发来的建立通讯socket请求。&lt;br /&gt;ftp以及telnet等老式的通信协议使用了2种端口，一个是命令端口（Command Port），另一个是数据端口（Data Port）&lt;br /&gt;ftp的命令端口是21，这个端口在苹果防火墙设置中被开放。但另一个数据端口是在通信时由客户端随机指定的，如果使用被动模式，客户端使用数据端口进行通信时就会被Mac的防火墙拦住。而使用主动模式时，是ftp服务器使用数据端口和同事的机器建立socket，而同事机器上没有防火墙，因此可以正常访问。&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/18083698-5985906256209765964?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/5985906256209765964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=5985906256209765964' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5985906256209765964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5985906256209765964'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/active-mode-or-passive-mode-on-ftp.html' title='active mode OR passive mode on FTP'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-1730437643622901823</id><published>2007-01-25T13:21:00.000+08:00</published><updated>2007-07-29T21:30:37.554+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>xmlrpc for python</title><content type='html'>使用python处理xmlrpc太简单了，又一次感受到了python的力量！&lt;br /&gt;下面以使用python调用wordpress提供的xmlrpc方法为例简单介绍一下：&lt;br /&gt;&lt;br /&gt;1） how to call xmlrpc method in python&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; import xmlrpclib&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; from pprint import pprint&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; server = xmlrpclib.ServerProxy(&amp;quot;http://localhost/wordpress/xmlrpc.php&amp;quot;)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; pprint(server.system.listMethods() )&lt;br /&gt;&lt;br /&gt;['system.multicall',&lt;br /&gt;&amp;nbsp;'system.listMethods',&lt;br /&gt;&amp;nbsp;'system.getCapabilities',&lt;br /&gt;&amp;nbsp;'demo.addTwoNumbers',&lt;br /&gt;&amp;nbsp;'demo.sayHello',&lt;br /&gt;&amp;nbsp;'pingback.extensions.getPingbacks',&lt;br /&gt;&amp;nbsp;'pingback.ping',&lt;br /&gt;&amp;nbsp;'mt.publishPost'......]&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; blogs = server.metaWeblog.getRecentPosts('','admin','passwd',5)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; pprint(blogs)&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; print(blogs[2]['permaLink'])&lt;br /&gt;&lt;br /&gt;http://localhost/wordpress/?p=135&lt;br /&gt;&lt;br /&gt;2）how to setup a xmlrpc server in python&lt;br /&gt;&lt;br /&gt;import calendar, SimpleXMLRPCServer&lt;br /&gt;#The server object&lt;br /&gt;class Calendar:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def getMonth(self, year, month):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return calendar.month(year, month)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; def getYear(self, year):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return calendar.calendar(year)&lt;br /&gt;calendar_object = Calendar()&lt;br /&gt;server = SimpleXMLRPCServer.SimpleXMLRPCServer((&amp;quot;localhost&amp;quot;, 8888))&lt;br /&gt;server.register_instance(calendar_object)&lt;br /&gt;#Go into the main listener loop&lt;br /&gt;print &amp;quot;Listening on port 8888&amp;quot;&lt;br /&gt;server.serve_forever()&lt;br /&gt;&lt;br /&gt;3）write a client to test server above&lt;br /&gt;import xmlrpclib&lt;br /&gt;server = xmlrpclib.ServerProxy(&amp;quot;http://localhost:8888&amp;quot;)&lt;br /&gt;month = server.getMonth( 2002, 8 )&lt;br /&gt;print month&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; August 2002&lt;br /&gt;Mo Tu We Th Fr Sa Su&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 &amp;nbsp;&amp;nbsp; 2 &amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 4&lt;br /&gt;&amp;nbsp;5&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp; 8&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&amp;nbsp;&amp;nbsp; 10 11&lt;br /&gt;12 13 14 15 16 17 18&lt;br /&gt;19 20 21 22 23 24 25&lt;br /&gt;26 27 28 29 30 31&lt;br /&gt;&lt;br /&gt;PS:&lt;br /&gt;pprint means pretty print. A cool tool too.&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;1 http://docs.python.org/lib/module-xmlrpclib.html&lt;br /&gt;2 http://www-128.ibm.com/developerworks/library/ws-pyth10.html&lt;br /&gt;3 http://groovy.codehaus.org/XMLRPC&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-1730437643622901823?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/1730437643622901823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=1730437643622901823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/1730437643622901823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/1730437643622901823'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/xmlrpc-for-python.html' title='xmlrpc for python'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-5379541945365247388</id><published>2007-01-25T13:14:00.000+08:00</published><updated>2007-07-29T20:55:37.516+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>A simpler tool that imports all posts from wordpress to blogger/blogspot</title><content type='html'>&lt;div align="left"&gt;jigar told me that the tool I post yesterday is too technical in &lt;a href="http://groups.google.com/group/bloggerDev/browse_thread/thread/8bda36af85c53eca"&gt;Groups Google&lt;/a&gt;.&lt;br /&gt;see&lt;br /&gt;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;can you make it simpler by making a standalone application. (I m trying&lt;br /&gt;with that.)&lt;br /&gt;This is too technical.&lt;br /&gt;&amp;nbsp;If successful definitely it will be most useful thing around for&lt;br /&gt;blogger.&lt;br /&gt;&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;so I made it simpler by building a standalone. and &lt;br /&gt;The simpler tool can be downloaded from &lt;a href="http://yichao.zhang.googlepages.com/blogsync-0.2.tar.gz"&gt;this link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After that, I found python is more suitable to do this staff and I'll try to make a more simpler tool written in python later.&lt;br /&gt;&lt;br /&gt;Readme.txt&lt;br /&gt;0. What is it used for?&lt;br /&gt;This is a simple tool to import all posts from wordpress to blogger/blogspot.&lt;br /&gt;&lt;br /&gt;1. How to use it?&lt;br /&gt;1.1 as standalone app&lt;br /&gt;for windwows user&lt;br /&gt;1) set java in your path&lt;br /&gt;2) set some parameters in run.bat, see details in run.bat&lt;br /&gt;3) run run.bat now.&lt;br /&gt;&lt;br /&gt;for linux/Mac OS X user&lt;br /&gt;1) set java in your path&lt;br /&gt;2) some parameters in run.sh, see details in run.sh&lt;br /&gt;3) run run.sh now.&lt;br /&gt;&lt;br /&gt;1.2 you can compile it and run it of course!&lt;br /&gt;This tool depends on (a) Google Data APIs java client library and (b) apache xml-rpc library.&lt;br /&gt;You can find them on &lt;br /&gt;(a) http://code.google.com/apis/gdata/download/gdata.java.zip&lt;br /&gt;(b) http://ws.apache.org/xmlrpc/download.html&lt;br /&gt;&lt;br /&gt;download and put the above two libraries in your classpath&lt;br /&gt;now configure some parameters in src/org/easter/blogsync/SyncWorker.java&lt;br /&gt;1) set your wordpress blog url&lt;br /&gt;2) set your wordpress blog username and password &lt;br /&gt;3) set your blogger username and password&lt;br /&gt;4) set your blogger blogid. Don't know what's your blogger's blogid? go to step 2. &lt;br /&gt;5) set how many recent posts do you want to import from wordpress.&lt;br /&gt;&lt;br /&gt;ok, let's run SyncWorker.java, and done.&lt;br /&gt;&lt;br /&gt;2. what is my blogger blogid?&lt;br /&gt;It's in your blogspot Dashboard url, for example: http://www2.blogger.com/posts.g?blogID=18083698&lt;br /&gt;&amp;quot;18083698&amp;quot; is your blogid.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-5379541945365247388?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/5379541945365247388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=5379541945365247388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5379541945365247388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5379541945365247388'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/tool-that-imports-all-posts-from_25.html' title='A simpler tool that imports all posts from wordpress to blogger/blogspot'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-559921305228009507</id><published>2007-01-24T15:01:00.000+08:00</published><updated>2007-07-29T20:48:00.400+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>install subversion on Mac OS X</title><content type='html'>DO NOT use *.zip file, that's for windows!&lt;br /&gt;decompress *.tar.gz and *-deps.tar.gz and just run:&lt;br /&gt;./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion --with-ssl --without-berkeley-db&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-559921305228009507?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/559921305228009507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=559921305228009507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/559921305228009507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/559921305228009507'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/install-subversion-on-mac-os-x.html' title='install subversion on Mac OS X'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6045536251588514747</id><published>2007-01-24T14:57:00.000+08:00</published><updated>2007-07-29T20:48:06.184+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>simple shell to compress and decompress .tar.gz on Mac OS X</title><content type='html'>compress:&lt;br /&gt;tar -czf dirname.tar.gz dirname&lt;br /&gt;&lt;br /&gt;decompress:&lt;br /&gt;tar -xzf dirname.tar.gz&lt;br /&gt;&lt;br /&gt;parameter -z means .gz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-6045536251588514747?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6045536251588514747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6045536251588514747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6045536251588514747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6045536251588514747'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/simple-shell-to-compress-and-decompress.html' title='simple shell to compress and decompress .tar.gz on Mac OS X'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-8718328380850315822</id><published>2007-01-22T19:08:00.001+08:00</published><updated>2007-07-29T20:55:37.517+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>A tool that imports all posts from wordpress to blogger/blogspot</title><content type='html'>&lt;p&gt;The tool can be download from &lt;a href="http://yichao.zhang.googlepages.com/blogsync.tar.gz"&gt;this link&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Readme.txt:&lt;/p&gt;  0. What is it used for?&lt;br/&gt; This is a simple tool to import all posts from wordpress to blogger/blogspot.&lt;br/&gt; &lt;br/&gt; 1. How to use it?&lt;br/&gt; This tool depends on (a) Google Data APIs java client library and (b) apache xml-rpc library.&lt;br/&gt; You can find them on&lt;br/&gt; (a) http://code.google.com/apis/gdata/download/gdata.java.zip&lt;br/&gt; (b) http://ws.apache.org/xmlrpc/download.html&lt;br/&gt; &lt;br/&gt; download and put the above two libraries in your classpath&lt;br/&gt; now configure some parameters in src/org/easter/blogsync/SyncWorker.java&lt;br/&gt; 1) set your wordpress blog url&lt;br/&gt; 2) set your wordpress blog username and password&lt;br/&gt; 3) set your blogger username and password&lt;br/&gt; 4) set your blogger blogid. Don't know what's your blogger's blogid? go to step 2.&lt;br/&gt; 5) set how many recent posts do you want to import from wordpress.&lt;br/&gt; &lt;br/&gt; ok, let's run SyncWorker.java, and done.&lt;br/&gt; &lt;br/&gt; 2. what is my blogger blogid?&lt;br/&gt; It's in your blogspot Dashboard url, for example: http://www2.blogger.com/posts.g?blogID=18083698&lt;br/&gt; &lt;p&gt;"18083698" is your blogid.&lt;/p&gt;  &lt;p&gt;The tool can be download from &lt;a href="http://yichao.zhang.googlepages.com/blogsync.tar.gz"&gt;this link&lt;/a&gt;&lt;/p&gt;  &lt;!-- technorati tags begin --&gt;&lt;p style="font-size:10px;text-align:right;"&gt;technorati tags:&lt;a href="http://technorati.com/tag/blog" rel="tag"&gt;blog&lt;/a&gt;, &lt;a href="http://technorati.com/tag/gdata" rel="tag"&gt;gdata&lt;/a&gt;, &lt;a href="http://technorati.com/tag/java" rel="tag"&gt;java&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-8718328380850315822?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/8718328380850315822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=8718328380850315822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8718328380850315822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8718328380850315822'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/share-simple-tool-that-helps-import-all.html' title='A tool that imports all posts from wordpress to blogger/blogspot'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-8350548462374604747</id><published>2007-01-22T15:32:00.001+08:00</published><updated>2007-07-29T20:54:49.692+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>blogger/blogspot is running on tomcat 4.1.24 ?!</title><content type='html'>log in http://www.blogger.com/feeds/default/blogs&lt;br/&gt; &lt;p&gt;input invalid authentication info, it shows up:&lt;/p&gt;  &lt;p&gt;BTW: Google do not have a custom error page ?! &lt;br/&gt; &lt;/p&gt;  &lt;p&gt;see this image:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://flickr.com/photos/41021949@N00/365638172"&gt; &lt;img border="0" src="http://static.flickr.com/184/365638172_f79af94012_d.jpg" /&gt;&lt;/a&gt;&lt;img src="file:///Users/yichao/Desktop/blogspot-tomcat.jpg" alt="" /&gt;&lt;/p&gt;  &lt;!-- technorati tags begin --&gt;&lt;p style="font-size:10px;text-align:right;"&gt;technorati tags:&lt;a href="http://technorati.com/tag/blog" rel="tag"&gt;blog&lt;/a&gt;, &lt;a href="http://technorati.com/tag/tomcat" rel="tag"&gt;tomcat&lt;/a&gt;&lt;/p&gt;&lt;!-- technorati tags end --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-8350548462374604747?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/8350548462374604747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=8350548462374604747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8350548462374604747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8350548462374604747'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/bloggerblogspot-is-running-on-tomcat.html' title='blogger/blogspot is running on tomcat 4.1.24 ?!'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-4782433416878991275</id><published>2007-01-18T19:51:00.000+08:00</published><updated>2007-07-29T21:30:37.555+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>python.cn上的几个大牛</title><content type='html'>limodou 人称李木头，此人技术深厚，擅长写作技术blog，信仰&amp;ldquo;自己的才是大家的&amp;rdquo;！&lt;br /&gt;&lt;br /&gt;Zoom. Quiet 人称woodpecker社区大妈，虽称大妈，不过看上去像是位艺术家，发型极具特色&lt;br /&gt;http://blog.zoomquiet.org/pyblosxom/ &lt;br /&gt;http://www.douban.com/people/zoomq/&lt;br /&gt;&lt;br /&gt;刘鑫 March.Liu &lt;br /&gt;http://blog.csdn.net/ccat&lt;br /&gt;&lt;br /&gt;宁柯&lt;br /&gt;beyking@gmail.com&lt;br /&gt;www.china-django.com&lt;br /&gt;&lt;br /&gt;zsp(张沈鹏)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-4782433416878991275?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/4782433416878991275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=4782433416878991275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4782433416878991275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4782433416878991275'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/pythoncn_18.html' title='python.cn上的几个大牛'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-82487189586423379</id><published>2007-01-17T05:49:00.000+08:00</published><updated>2007-07-29T20:39:27.792+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Install apache 2.0.x, mysql 5.0.*, php 5.2.0 on Mac OS X</title><content type='html'>1 install apache&lt;br /&gt;&lt;strong&gt;./configure&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;apache installed on /usr/local/apache2&lt;br /&gt;&lt;br /&gt;2 install mysql&lt;br /&gt;&lt;strong&gt;cp -Rf mysql-5.0.* /System/Library/Frameworks/Mysql.framework/&lt;br /&gt;ln -s /System/Library/Frameworks/Mysql.framework/mysql-5.0.* /usr/local/mysql&lt;br /&gt;ln -s /usr/local/mysql/data /Volumes/WRK/mysql-4.1.22/data&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;start mysql (do NOT start as root):&lt;br /&gt;&lt;strong&gt;/usr/local/mysql/bin/mysqld&lt;br /&gt;&lt;/strong&gt;stop mysql&lt;strong&gt;&lt;br /&gt;/usr/local/mysql/bin/mysqladmin shutdown&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;3 install php&lt;br /&gt;&lt;strong&gt;./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --prefix=/usr/local/php&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;br /&gt;cp src/php-5.2.0/php.ini-dist /usr/local/php/php.ini&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;4 config apache&lt;br /&gt;&lt;strong&gt;vi /usr/local/apache2/conf/httpd.conf&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;em&gt;LoadModule php5_module&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; modules/libphp5.so&lt;br /&gt;AddType application/x-httpd-php .php .phtml&lt;br /&gt;AddType application/x-httpd-php-source .phps&lt;br /&gt;PHPIniDir &amp;quot;/usr/local/php&amp;quot;&lt;br /&gt;&lt;br /&gt;DirectoryIndex index.html index.html.var index.php&lt;br /&gt;&lt;br /&gt;&lt;/em&gt;&lt;strong&gt;ln -s /usr/local/apache2/htdocs /Volumes/WRK/Apache2/htdocs&lt;/strong&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;that's all.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-82487189586423379?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/82487189586423379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=82487189586423379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/82487189586423379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/82487189586423379'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/install-apache-20x-mysql-50-php-520-on.html' title='Install apache 2.0.x, mysql 5.0.*, php 5.2.0 on Mac OS X'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-2740347532530339127</id><published>2007-01-15T22:48:00.000+08:00</published><updated>2007-07-29T21:01:42.767+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>cnn news on 01.09</title><content type='html'>And thanks for staying with us. Here I'm Rechard Lui at the CNN center in Atlanta with your news update this hour.&lt;br /&gt;&lt;br /&gt;A &lt;strong&gt;massive &lt;/strong&gt;plan to security Baghdad said to be at the center of President Bush's new Iraq strategy. CNN has learned under this plan the capital and its neighbourhoods will be &lt;strong&gt;&lt;u&gt;cordoned off &lt;/u&gt;&lt;/strong&gt;and more US Iraqi troops will be moved in. President is expected to tell us more during the speech which is expected to happen on Wednsday at 9:00pm Eastern. &lt;br /&gt;&lt;br /&gt;Scientists may have alternatives to a controversial &lt;strong&gt;embryonic &lt;/strong&gt;stem cells. Researchers at Wake Forest and Harvard say they found stem cells in &lt;u&gt;&lt;strong&gt;amniotic fluid&lt;/strong&gt;&lt;/u&gt; donated by pregnant women. They say they've extracted them without harming the mother or the &lt;strong&gt;fetus&lt;/strong&gt;. And the cells hold the same possibilities as the embryonic stem cells.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Colorado&lt;/strong&gt;'s latest snow storm is hurting rescurers' efforts to save thousands of cows stranded in the snow. Helicopters are dropping &lt;u&gt;&lt;strong&gt;bales of hay&lt;/strong&gt;&lt;/u&gt; to feed hungry &lt;strong&gt;cattle &lt;/strong&gt;and an agricultural official says that about thirty five hundred cattle may have died in the state so far. He adds there that surviving cattle face the threat of lung infections from stress and &lt;strong&gt;dehydration&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Home Security at the port of Mami reporting all secure today. The &lt;u&gt;&lt;strong&gt;cargo area&lt;/strong&gt;&lt;/u&gt; was shut and three men were detained yesterday. The driver &lt;u&gt;&lt;strong&gt;raised suspicions&lt;/strong&gt;&lt;/u&gt; at a security gate. He did not have the right ID and he indicated he was alone and there were really three men in the truck in total. The two iraqis and a Lebanese national are in local police custody.&lt;br /&gt;&lt;br /&gt;Today is the fifth anniversay of the &amp;quot;No Child Left Behind&amp;quot; act. Education Secretary Margaret Spellings &lt;strong&gt;commemorated &lt;/strong&gt;the anniversary with the speech to education leaders this morning. The law aims to ensure that all children can do reading and math skills at grade level by 2014.&lt;br /&gt;&lt;br /&gt;And while the college football season is ending, the NFL postseason is still going. &lt;u&gt;&lt;strong&gt;We are down to the final 18, in the case you've been counting&lt;/strong&gt;&lt;/u&gt;. It is the Eagles and the Saints on saturday night. The Bears and Seahawks will be swore to &lt;u&gt;&lt;strong&gt;square off&lt;/strong&gt;&lt;/u&gt; there on Sunday afternoon. Ah, the coaches, they will be in the place they used to call home Baltimore on Saturday afternoon. And the Patriots meet the Chargers in Santiago on Sunday. Some good matches up there.&lt;br /&gt;&lt;br /&gt;And that's the news this hour. Remember whether you are on line or watching TV, we're your source CNN for up-to-minute headlines anytime day and night. Have a great one!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-2740347532530339127?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/2740347532530339127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=2740347532530339127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2740347532530339127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2740347532530339127'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2007/01/cnn-news-on-0109.html' title='cnn news on 01.09'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6327912874618212383</id><published>2006-12-30T17:33:00.000+08:00</published><updated>2007-07-29T21:01:42.768+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>cnn news on 12.29</title><content type='html'>From the CNN center in Atlanta, I'm Nicole Lapin. Thanks so much for tracking in with us today, here is a look at what's happening NOW IN THE NEWS.&lt;br /&gt;&lt;br /&gt;CHAOS IN SOMALIA&lt;br /&gt;Chaos is unfolding in Somalia's capital. Ethiopian-backed Somali troops are in Mogadishu , and the government has imposed a state of emergency. The Islamic militia that controlled Mogadishu for months abandoned the city just hours ago. There are all reports of wide spread looting now. The Islamic militia has vowed to regroup and regain control of the Somalia capital. &lt;br /&gt;&lt;br /&gt;HAJJ PILGRAIMAGE&lt;br /&gt;Millions of Muslim from all around the world are in Mecca, Saudi Arabia for the start of the annual HAJJ Pilgrimage. Every able-bodied Muslim who can afford it must take a trip at least once in a life time. Saudi Arabia has stepped up security and has issued warnings to avoid deadly stampedes that have killed people in previous years.&lt;br /&gt;&lt;br /&gt;DICTATOR ON DEATH ROW&lt;br /&gt;It looks like Saddam Hussein's execution is no longer a question of &amp;quot;if&amp;quot; but &amp;quot;when&amp;quot;. It could have been anytime over the next few weeks. An appeals court Tuesday upheld his death sentence for the 1982 Dujail massacre. In what can only be described as a goodbye letter. The former Iraqi dictator urges the Iraqis to unite. The letter was posted on the Baath&amp;rsquo;s website.&lt;br /&gt;&lt;br /&gt;JOHN EDWARDS 2008&lt;br /&gt;Former senator John Edwards made it official just hours ago. He is added again as a Democratic candidate for president. Edwards kicked off his 2008 bid for the White House from a New Orleans home being rebuilt after Hurricane Katrina. He says it represents the power people have to build a better America. &lt;br /&gt;&lt;br /&gt;EN ROUTE TO THE APOLLO &lt;br /&gt;The godfather of Soul takes to the stage of Apollo Theater today where fans will bid him farewell. A horse-drawn carriage with James Brown&amp;rsquo;s golden casket was followed by thousands of fans walking through Harlem. Saturday he will be buried near the James Brown Arena in Augusta,Georgia. Brown passed away on Christmas morning in Atlanta at the age of 73.&lt;br /&gt;&lt;br /&gt;And with that you are now up-to-date, for more on these stories and other news of the day, CNN is always your source online or on television.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-6327912874618212383?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6327912874618212383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6327912874618212383' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6327912874618212383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6327912874618212383'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/cnn-news-on-1229.html' title='cnn news on 12.29'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-8692222791524765828</id><published>2006-12-30T17:32:00.001+08:00</published><updated>2007-07-29T21:01:42.770+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>cnn news on 12.27</title><content type='html'>I'm Nicole Lapin at the CNN center in Atlanta. Here are some headlines NOW IN THE NEWS.&lt;br /&gt;&lt;br /&gt;A developing story out of Taiwan. Three-foot high waves are heading towards the east coast of the Philippines right now. Taiwan Central Weather Bureau says a &lt;strong&gt;tsunami &lt;/strong&gt;was triggered by a powerful earthquake. US officials say the &lt;strong&gt;magnitude &lt;/strong&gt;was about 7.1. Then a magnitude 6.4 &lt;strong&gt;aftershock &lt;/strong&gt;hit. No reports of damages or injuries so far.&lt;br /&gt;&lt;br /&gt;People are remembering the &lt;strong&gt;devastating &lt;/strong&gt;tsunami that struck parts of Asia two years ago today. Survivors and &lt;strong&gt;mourners &lt;/strong&gt;visited &lt;u&gt;mass graves&lt;/u&gt;, lit candles along the beaches and observed the moments of silence. Indonesia held a tsunami &lt;u&gt;evacuation drill&lt;/u&gt; to raise awareness. They also hope to test new technology. The tsunami killed about 230,000 people and left millions more homeless.&lt;br /&gt;&lt;br /&gt;People in Florida have a lot of cleaning-up to do this morning. Powerful storms hit the state yesterday. &lt;strong&gt;Tornados &lt;/strong&gt;destroyed at least two homes and damaged at least ten more near Jacksonville. One person was injured there. Six more people in Daytona Beach were injured when a storm swept their apartment building.&lt;br /&gt;&lt;br /&gt;A fuel pipeline explosion in Nigeria has killed at least 200 people. It took twelve hours to contain this fire. The Nigerian Red Cross says thieves trying to steal fuel caused this explosion. Stealing fuel is very common in Nigeria and often deadly. Back in May, 150 people were killed in a pipeline explosion near Lagos.&lt;br /&gt;&lt;br /&gt;In Iraq this morning, three more US troops killed by a roadside bomb in Baghdad. The death toll now passes quite a milestone. 2,977 Americans have died in Iraq, four more than the number of people killed on the September 11 terror attacks.&lt;br /&gt;&lt;br /&gt;And overnight rebel forces in Somalia are &lt;strong&gt;retreating&lt;/strong&gt;, and forces from neighboring Ethiopia advanced on the Somalia capital of Mogadishu. Islamic militants have been fighting for the control of Somalia since June. Somalia&amp;rsquo;s internationally-backed government called on militants to surrender and promised them &lt;strong&gt;amnesty &lt;/strong&gt;if they stopped opposing the government.&lt;br /&gt;&lt;br /&gt;In the Philippines, a horrible Christmas Day fire at a department store kills dozens. Look at this video right here. A woman on the roof right there is waiting to be rescued as intense smoke is surrounding her. Illegal fireworks being sold at this store sparked that blaze. People inside couldn&amp;rsquo;t escape because the exit was locked. So far, police haven&amp;rsquo;t been able to find the owner of the store.&lt;br /&gt;&lt;br /&gt;And for more on these stories and continuing coverage of breaking news, log on to cnn.com or tune in to CNN television right now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-8692222791524765828?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/8692222791524765828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=8692222791524765828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8692222791524765828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8692222791524765828'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/cnn-news-on-1227.html' title='cnn news on 12.27'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-8113608925267276028</id><published>2006-12-30T17:32:00.000+08:00</published><updated>2007-07-29T21:01:42.771+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>cnn news on 12.28</title><content type='html'>From the CNN center in Atlanta, I 'm Nicole Lapin, here is some headlines NOW IN THE NEWS.&lt;br /&gt;&lt;br /&gt;Former President Gerald Ford died last night .He was 93 years old .Ford helps the US recover from water gate Scandal .His presidency was defined by his pardon of Richard Nixon. Ford is the only person to have served as president and vice president without have being elected to either office .&lt;br /&gt;&lt;br /&gt;Sadaam Hussein could be excuted as early as today .Yesterday ,an Iraqi appeal court upheld Sadaam Hussein death sentence .Iraqi law requirements to be carried out within 30 days .He was sentenced in Nov for his role in 1982 massacre .&lt;br /&gt;&lt;br /&gt;Israel has launched what could be a major blow to maintaining its monthly ceasefire with the Palestinian authority.This morning , Prime Minister Ehud Olmert's vow to renew pinpoint attacks against rocket -launching cells in GAZA.The decision came after 2 Israeli boys were wounded by a rocket in a town On the Israeli Gaze border .&lt;br /&gt;&lt;br /&gt;Ethiopian and Somalia government troops have taking control of major Somalia town from Islamic fighters .A somalia spoksman says Somalia troops are now heading towards Porter Town about 20 miles from Mogadishu. An Islamic militia controls Mogadishu and much of Somalia.Yesterday ,UN envoy to Somalia warned a &lt;strong&gt;deteriorating &lt;/strong&gt;situation in that country .&lt;br /&gt;&lt;br /&gt;Charges that US military had identified the 9.11 hijackers before the attacks are false .That's the finding of investigation .While Publican Congreeman Curt Weldon had charged ,that a secret military unit had collected data on hijackers a year before the attack. Waiters on the Senate intelligence now say there is no evidence to back that up .&lt;br /&gt;&lt;br /&gt;We are just now take out from this one ,and i think another storm could probably snow a &lt;strong&gt;simpelly &lt;/strong&gt;good .And they just can't catch a break in the mile high city .&lt;strong&gt;Meteorologists &lt;/strong&gt;are say more snow is expected in the Denver's area tomorrow and on Friday rivaling last week blizzard .&lt;br /&gt;&lt;br /&gt;The White house is expected to announce today that it wants to list &lt;u&gt;polar bears&lt;/u&gt; as the endangered species .And An interior official deparment tells the Washington post bears are in trouble because warm temperatures are melting their &lt;strong&gt;habitat&lt;/strong&gt;. It would be the first time &lt;strong&gt;in-administration&lt;/strong&gt; acknowledges climate change as a reason for putting a species on that list.&lt;br /&gt;&lt;br /&gt;And for more on these stories and continuing coverage of breaking news, log on to CNN.com or tune in to CNN television right now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-8113608925267276028?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/8113608925267276028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=8113608925267276028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8113608925267276028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8113608925267276028'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/cnn-news-on-1228.html' title='cnn news on 12.28'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-3278474320216315607</id><published>2006-12-27T07:11:00.000+08:00</published><updated>2007-07-29T21:23:44.891+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>npr news on 12.26</title><content type='html'>From NPR news in Washington, I'm Carl Kasell.&lt;br /&gt;&lt;br /&gt;Pope Benedict delivered his traditional Christmas speech to the world today, and the Pope called for solutions to conflicts across the globe. He especially mentioned the Middle East with as many &lt;strong&gt;grave&lt;/strong&gt; crises and conflicts. The &lt;strong&gt;Pontiff &lt;/strong&gt;said he hopes for a just and lasting peace between the Israelis and Palestinians. The Pope also mentioned violence in Lebanon, Iraq, Sri Lanka and Darfar and the whole of Africa. His message came as Ethiopian fighter jets bombed airports in Somalia, and more people died in suicide bombings in Iraq. Benedict delivered Christmas greetings in dozens of languages including English.&lt;br /&gt;&lt;br /&gt;In Iraq violence has made it difficult for Christians in Baghdad to celebrate Christmas. NPR's Joe Riddle reports.&lt;br /&gt;&lt;br /&gt;The &lt;u&gt;Virgin Mary&lt;/u&gt; church is a largest church in Baghdad, It is simply overflowing with &lt;strong&gt;catholics &lt;/strong&gt;on Christmas, but today it's half empty. The street of seats on was &lt;u&gt;&lt;strong&gt;cordoned &lt;/strong&gt;off&lt;/u&gt;. Extra guards were posted and a police general was in the audience. These are the latest security &lt;strong&gt;precautions &lt;/strong&gt;the church is taking in an atmosphere of increasing religious &lt;strong&gt;persecution&lt;/strong&gt;. While generally regarded as &lt;strong&gt;benign &lt;/strong&gt;by most Muslims, Sunni and Shiite extremists have targeted at Christian of all stripes. This year at least 8 Priests have been kidnapped, 2 of them &lt;strong&gt;tortured&lt;/strong&gt;. Christians and other religious minorities have fled their homes. Some assessments say that three out of every four Christians from the southern province of Basra have now left for the Kurdish North, Syria or Jordan. Joe Riddle NPR news, Baghdad.&lt;br /&gt;&lt;br /&gt;The conflict in Somalia has &lt;strong&gt;intensified&lt;/strong&gt;. Aircraft from neighboring Ethiopia today bombed the international airport in the Somalia capital. Somalia's Ethiopia-backed transitional government later announced that it had closed all land, air and sea borders. NPR's Ofiba Christ reports.&lt;br /&gt;It is hard to see how Somalia&amp;rsquo;s &lt;strong&gt;beleaguered &lt;/strong&gt;interim government which only just controls Baidoa, its provincial base in the south can order all the country's borders closed. Backed by neighboring Ethiopia, the transitional government is effectively encircled by Islamist fighters who are backing &lt;strong&gt;loyalist &lt;/strong&gt;forces. Ethiopia formally waded into the conflict Sunday with fighter planes and attack helicopters acknowledging for the first time that it had combat troops on the ground in Somalia. At dawn, Ethiopia aircraft bombed the international airport in the heart of the Somalia capital Mogadishu, a city controlled by the Islamists. This was evidence that Ethiopia is making good on its pledge to hit Islamists positions in Somalia, justifying its attacks as legitimate self-defense. Ofiba Christiansen, NPR news, Dacca.&lt;br /&gt;&lt;br /&gt;James Brown, the godfather of Soul has died. He was 73. His agent says James Brown died earlier today at hospital in Atlantic after being admitted yesterday with severe pneumonia. Along with Elvis Presley, Bob Dylan, and a few others, Brown was one of the major musical influences of the past 50 years.&lt;br /&gt;&lt;br /&gt;This is NPW news.&lt;br /&gt;&lt;br /&gt;In Canada, retired passport office workers are being brought back to work to help clear \ backlog. New US regulations are blamed for the logjam. Richard Remold reports form Toronto.&lt;br /&gt;&lt;br /&gt;Canadians have always been allowed to enter the US without a passport. A driver's license and a birth certificate\ were all those required, but new regulations which take effect in January 23rd mean that Canadian citizens flying to the US must have a passport. This is usually a busy time of the year for the Canadian Passport Office, but applications are running almost double the rate they were last year at this time. People have been lining up as early as 5 AM at some offices to have their applications reviewed by an examiner. Compounding the effect of the new regulations is the fact that many passports issued just after 9.11, when there was a surge of applications, are now expiring and need to be renewed. Canadians crossing by car will have\\ until 2008 to get their passports. For NPR news, I'm Richard Remold in Toronto.&lt;br /&gt;&lt;br /&gt;The Roman Catholic Church&amp;rsquo;s highest official in the Holy land celebrated midnight Mass in Bethlehem and appealed for an end to Israeli-Palestinian bloodshed. Latin Patriarch Michel Sabbah made the remarks during his summitry to hundreds of worshippers. Palestinian President Mahmoud Abbas attended the service and was escorted to the service by a large security detail to a front row seat. Earlier thousands of people were joined by marching bands clergymen and children dressed as Santa Claus. Most were local residents or Christian-Arabs from neighboring Israel. There was sparkling of foreign tourists. Bethlehem's tourist industry has been hard hit by the last six years of Israelis-Palestinian violence.&lt;br /&gt;&lt;br /&gt;I'm Carl Kasell NPR news in Washington.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-3278474320216315607?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/3278474320216315607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=3278474320216315607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/3278474320216315607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/3278474320216315607'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/npr-news-on-1226.html' title='npr news on 12.26'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-5244279401101169660</id><published>2006-12-26T17:55:00.000+08:00</published><updated>2007-07-29T21:23:44.891+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>npr news on 12.25</title><content type='html'>From NPR News in Washington, I'm Nori Ram.&lt;br /&gt;&lt;br /&gt;Iran is dismissing as illegal a UN Security Council resolution &lt;strong&gt;imposing&lt;/strong&gt; sanctions on the country over its nuclear activities. The resolution calls on all countries to ban materials and technology that could be used for Iran's nuclear and missile programs. F reports from &lt;strong&gt;Tehran&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;Iran's Foreign Ministry has called the resolution illegal and invalid in a statement &lt;u&gt;read on&lt;/u&gt; &lt;u&gt;state-run&lt;/u&gt; TV. Iran vowed to continue its nuclear activities, which it says are peaceful. The resolution demands Iran end all research on uranium enrichment, a key step in the nuclear fuel process that could be used to make bombs. The resolution also calls on Iran to stop all research and development that can make or deliver atomic weapons. If Iran does not comply, the Council could adopt other non-military sanctions. Iran's Foreign Ministry said the resolution would only discredit the UN Security Council. For NPR news I am R in Tehran.&lt;br /&gt;&lt;br /&gt;Iran's President Mahmoud Ahmadinejad called the resolution &lt;u&gt;a piece of torn paper.&lt;/u&gt; He said the Security Council would regret voting in favor of the sanctions, saying the west has lost its chance to make amends with Iran.&lt;br /&gt;&lt;br /&gt;In Iraq today, officials say at least 7 police officers were killed in an attack on a police station, about 30 others were wounded. According to the report, a man walked into the station and blew himself up. Insurgents then fired 6 &lt;strong&gt;mortar &lt;/strong&gt;rounds at the building.&lt;br /&gt;Meanwhile in the southern city of &lt;strong&gt;Samara&lt;/strong&gt; , at least 5 police officers were killed in fighting with &lt;strong&gt;militia&lt;/strong&gt; members.&lt;br /&gt;&lt;br /&gt;In Somalia, fighting between the Union of Islamic &lt;strong&gt;Corps&lt;/strong&gt; militia and forces loyal to the UN-backed government has spread beyond Baidoa , where the government is now located to new areas of the country. Fierce clashes were reported today. BBC's Adam Meina has more.&lt;br /&gt;&lt;br /&gt;The opposing sides blame each other for broadening the offensive. The Islamic Corps claim they've been attacked by &lt;strong&gt;Ethiopian&lt;/strong&gt; &lt;strong&gt;artillery&lt;/strong&gt; and helicopters, and there are also reports that Ethiopian military jets have been bombing Islamic forces in the town of Jaweler, near the Ethiopian border. Meanwhile the transitional government is accusing the Islamic Corps of opening their assault on new fronts. The BBC's Adam Meina reporting.&lt;br /&gt;&lt;br /&gt;All 6 &lt;strong&gt;runways&lt;/strong&gt; are supposed to be opened at Denver International Airport today for the first time since a blizzard hit Wednesday. Thousands of passengers were stranded, including Sherry Louis Cohoe (人名) of L., Idaho. She spent much of her time making new friends. &amp;ldquo;Only &lt;strong&gt;confiscated&lt;/strong&gt; from caught, from captain there, so that we only thought somebody was in need, we can offer them to them and we can friendly have our a little community up here and it has been very pleasant.&amp;rdquo; Denver International is the fifth busiest airport in the country. The shutdown there has had a&lt;strong&gt; ripple&lt;/strong&gt; effect across the country, causing delays and cancellations at one of the busiest travel times of the year.&lt;br /&gt;&lt;br /&gt;You are listening to NPR news from Washington.&lt;br /&gt;&lt;br /&gt;There are thousands of homes and businesses without electricity in central &lt;strong&gt;Wisconsin&lt;/strong&gt;. A snowstorm brought down power lines Friday, interrupting services to about 30,000 customers. &lt;u&gt;Utility officials&lt;/u&gt; say about half have been restored and crews are working to bring everybody back online.&lt;br /&gt;&lt;br /&gt;Phoenix-based &lt;strong&gt;Mesa&lt;/strong&gt; Air will be the first US-based carrier to operate flights out of mainland China. After a merger with Shenzhen Airlines, the combined carrier will also extend Shenzhen's reach into rural China. From Member station KJZZ in Phoenix, Mark Marine reports.&lt;br /&gt;&lt;br /&gt;Mesa Air already operates its regional carrier for a number of larger airlines including Delta, United and US Airways. Now it will combine with Shenzhen Air to reach in the parts of rural China. Under the deal, the combined airline which is yet to be named will have 20 50-seat planes operating before the 2008 Beijing Olympics with plans to operate 100 planes within 5 years. Right now, Mesa Air flies to 173 cities and 43 states, the Bahamas, Canada and Mexico. China is the world's fastest growing travel market, with the population of more than 1.2 billion people. Forty of the country's 50 largest airports have expansion projects underway. For NPR news I am Mark Marine in Phoenix.&lt;br /&gt;&lt;br /&gt;California governor Arnold Schwarzenegger broke his leg, skiing yesterday in Sun Valley, Idaho. A spokesman for the governor's office said the governor was &lt;strong&gt;vacationing&lt;/strong&gt; with his family in Sun Valley when the accident occurred. He said no one else was hurt.&lt;br /&gt;I'm Nori Ram, NPR news in Washington.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-5244279401101169660?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/5244279401101169660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=5244279401101169660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5244279401101169660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5244279401101169660'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/npr-news-on-1225.html' title='npr news on 12.25'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6073281587032819819</id><published>2006-12-26T17:52:00.000+08:00</published><updated>2007-07-29T21:23:44.892+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='english'/><title type='text'>npr news on 12.24</title><content type='html'>From NPR News in Washington, I'm Barbra Client.&lt;br /&gt;&lt;br /&gt;A meeting between Israeli Prime Minister Ehud Olmert and Palestinian President Mahmoud Abbas has reportedly ended. Agreement has been reached on several confidence-building measures. NPR's Linda Grustin has more on the surprise meeting.&lt;br /&gt;It comes after heavy international pressure on Olmert to do more to strengthen Abbas over the ruling Hamas Movement. Abbas recently announced he will call new Palestinian elections, an announcement that sparked violence between his Fatah and Hamas in Gaza that left at least 10 Palestinians dead. Palestinian officials say what would most strengthen Abbas is an Israeli release of hundreds of Palestinian prisoners. But Olmert has said he won't do that until Hamas frees an Israeli solider captured in June. Linda Grustin, NPR News Jerusalem.&lt;br /&gt;&lt;br /&gt;The UN Security Council has &lt;strong&gt;unanimously&lt;/strong&gt; approved &lt;strong&gt;sanctions&lt;/strong&gt; on Iran because of its nuclear activities. The &lt;strong&gt;resolution&lt;/strong&gt; prohibits all countries from supplying materials and technologies that could contribute to Iran's &lt;strong&gt;uranium&lt;/strong&gt; &lt;strong&gt;enrichment&lt;/strong&gt; program. &lt;strong&gt;Acting&lt;/strong&gt; US &lt;strong&gt;ambassador &lt;/strong&gt;to the UN Alejandro Wolff says the resolution is the result of intense diplomatic discussions. &amp;quot;We are working nationally with our friends and allies, with the institutions like the EU to implement these measures and ensure that there is no assistance provided to Iran's enrichment, reprocessing heavy water or &lt;strong&gt;ballistic&lt;/strong&gt; weapons programs. &amp;quot; Iran says the resolution is illegal and &lt;strong&gt;vows&lt;/strong&gt; to continue its nuclear activities.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Coalition&lt;/strong&gt; forces in Afghanistan say they have killed a top Taliban leader. Military spokesmen say Akhtar Mohammed Osmani had been leading the &lt;strong&gt;insurgency&lt;/strong&gt; in southern Afghanistan where it has been the strongest. The BBC's John Migivering has more.&lt;br /&gt;The statement from Coalition forces in Afghanistan said Osmani and two of his associates were killed in an air strike while traveling in a vehicle in Helmand province close to the border with Pakistan. It described his death as a major breakthrough. But the spokesman for the Taliban denied that Osmani has been killed, and dismissed the news as Coalition &lt;strong&gt;propaganda&lt;/strong&gt;. The BBC's John Migivering in Kabul.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Islamists&lt;/strong&gt; fighting the weak western-backed transitional government in &lt;strong&gt;Somalia&lt;/strong&gt; are calling on Muslims around the world for help. Government forces have been defending Baidoa, its only &lt;strong&gt;stronghold&lt;/strong&gt;, from Islamic Courts Union fighters since Tuesday. The Islamists are also targeting &lt;strong&gt;Ethiopian&lt;/strong&gt; troops which are supporting the official Somali government. The Islamists want Somalia to be under &lt;strong&gt;Koranic&lt;/strong&gt; rule.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Outgoing&lt;/strong&gt; UN Secretary General Kofi Annan says Sudan may be willing to approve a peacekeeping force for the Darfur region. He said Khartoum might agree to African Union peacekeeping troops with support from the United Nations. Annan recently sent a special &lt;strong&gt;envoy&lt;/strong&gt; to Sudan.&lt;br /&gt;&lt;br /&gt;This is NPR News.&lt;br /&gt;&lt;br /&gt;Some 15, 000 striking GoodYear workers in the United State and Canada could return to work as early as January third if they &lt;strong&gt;ratify&lt;/strong&gt; a &lt;strong&gt;tentative&lt;/strong&gt; agreement reached yesterday. We have details from Mark Uricky of member station WCPN in Cleveland.&lt;br /&gt;The deal between the largest American tyre company and the United Steel Workers Union could end a two-and-half-month-old strike that affected 12 plants in the US and four in Canada. Union spokesman Wayne Ranick said key to the agreement was saving health care benefits for &lt;strong&gt;retirees&lt;/strong&gt;. &amp;quot;We believe that this is something that the current retirees have already earned and they should not have taken away from them, and also we have many people who have worked a number of years in &lt;strong&gt;anticipation&lt;/strong&gt; of having this type of coverage &lt;u&gt;in retirement years&lt;/u&gt;. &amp;quot; Retirees will pay what Rudnick called a very modest increase in &lt;strong&gt;premiums&lt;/strong&gt;. The company also agreed to reverse its plans to shut down its plant in Talor, Texas, pledging to keep it open at least one more year. For NPR News, I'm Mark Uricky in Cleveland.&lt;br /&gt;&lt;br /&gt;Denver's International Airport has reopened after a blizzard forced it to close for 2 days. But spokesman Chuck Cannon says delayed travelers shouldn't expect to get on a plane anytime soon because travelers with tickets for today have &lt;strong&gt;priority&lt;/strong&gt;. &amp;quot;They are getting on the planes first, the ones whose flights were canceled are being put on standby, and the problem is there are not many empty seats to use for standbys, so there are a lot of those people whose flights were canceled earlier that are not gonna get where they wanna be by Christmas.&lt;br /&gt;Meanwhile the &lt;strong&gt;fog&lt;/strong&gt; is lifted over London's Heathrow Airport, Europe's busiest &lt;strong&gt;stand&lt;/strong&gt;. Some &lt;strong&gt;normality&lt;/strong&gt; is returning after more than 1000 flights were canceled over the last 3 days.&lt;br /&gt;&lt;br /&gt;I'm Barbra Client, NPR News in Washington.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-6073281587032819819?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6073281587032819819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6073281587032819819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6073281587032819819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6073281587032819819'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/npr-news-on-1224.html' title='npr news on 12.24'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-4128510503827896763</id><published>2006-12-23T20:35:00.000+08:00</published><updated>2007-07-29T20:47:41.685+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>show hidden files in mac os x</title><content type='html'>using AppleScript to show hidden files, switchHidden.scpt&lt;br /&gt;&lt;br /&gt;tell application "Finder" to quit&lt;br /&gt;display dialog "Show Hidden Files..." buttons {"ON", "OFF"} default button 1&lt;br /&gt;copy the result as list to {buttonpressed}&lt;br /&gt;try&lt;br /&gt;	if the buttonpressed is "OFF" then do shell script "defaults write com.apple.finder AppleShowAllFiles FALSE"&lt;br /&gt;	if the buttonpressed is "ON" then do shell script "defaults write com.apple.finder AppleShowAllFiles TRUE"&lt;br /&gt;end try&lt;br /&gt;tell application "Finder" to launch&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-4128510503827896763?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/4128510503827896763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=4128510503827896763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4128510503827896763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4128510503827896763'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/show-hidden-files-in-mac-os-x.html' title='show hidden files in mac os x'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-4571612160805587042</id><published>2006-12-23T06:42:00.000+08:00</published><updated>2007-07-29T20:34:02.079+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>sth about .DS_Store files</title><content type='html'>from &lt;br /&gt;http://docs.info.apple.com/article.html?artnum=107822&lt;br /&gt;http://docs.info.apple.com/article.html?artnum=301711&lt;br /&gt;&lt;br /&gt;1. To delete all the .DS_Stores on your drive (use Terminal.app or xterm to execute this command):&lt;br /&gt;sudo find / -name \.DS_Store -print -delete&lt;br /&gt;&lt;br /&gt;2. &lt;br /&gt;this is just a suggested thing for people to do so that their XP drive wont have the .DS_Store files on it everywhere...&lt;br /&gt;Prevent the .DS_Store files from being created&lt;br /&gt;a.&amp;nbsp;&amp;nbsp;&amp;nbsp; Open the Terminal (Macintosh HD &amp;gt; Applications &amp;gt; Utilities &amp;gt; Terminal)&lt;br /&gt;b.&amp;nbsp;&amp;nbsp;&amp;nbsp; Type: &amp;quot;defaults write com.apple.desktopservices DSDontWriteNetworkStores true&amp;quot;&lt;br /&gt;c.&amp;nbsp;&amp;nbsp;&amp;nbsp; Press Return&lt;br /&gt;d.&amp;nbsp;&amp;nbsp;&amp;nbsp; Type: &amp;quot;cp Library/Prefrences/com.apple.desktopservices.plist /Library/Prefrences/&amp;quot;&lt;br /&gt;e.&amp;nbsp;&amp;nbsp;&amp;nbsp; Press Return&lt;br /&gt;f.&amp;nbsp;&amp;nbsp;&amp;nbsp; Type: &amp;quot;sudo chmod 777 /Library/Prefrences/com.apple.desktopservices.plist&amp;quot;&lt;br /&gt;g.&amp;nbsp;&amp;nbsp;&amp;nbsp; Press Return&lt;br /&gt;h. You will be prompted for your password.&lt;br /&gt;i. Press Return&lt;br /&gt;j.&amp;nbsp;&amp;nbsp;&amp;nbsp; Restart the computer&lt;br /&gt;&lt;br /&gt;Mac OS X 10.4: How to prevent .DS_Store file creation over network connections&lt;br /&gt;This article contains advanced material intended only for those who are looking for information on .DS_Store files. If you do not already have an opinion on this matter, you can disregard this article.&lt;br /&gt;&lt;br /&gt;To configure a Mac OS X user account so that .DS_Store files are not created when interacting with a remote file server using the Finder, follow the steps below. &lt;br /&gt;Note: This will affect the user's interactions with SMB/CIFS, AFP, NFS, and WebDAV servers.&lt;br /&gt;&lt;br /&gt;Open the Terminal.&lt;br /&gt;Type: &lt;br /&gt;defaults write com.apple.desktopservices DSDontWriteNetworkStores true&lt;br /&gt;Press Return.&lt;br /&gt;Restart the computer.&lt;br /&gt;If you want to prevent .DS_Store file creation for other users on the same computer, log in to each user account and perform the steps above&amp;mdash;or distribute a copy of your newly modified com.apple.desktopservices.plist file to the ~/Library/Preferences folder of other target users.&lt;br /&gt;&lt;br /&gt;These steps do not prevent the Finder from creating .DS_Store files on the local volume. These steps do not prevent previously existing .DS_Store files from being copied to the remote file server. Please note that disabling the creation of .DS_Store files on remote file servers can cause unexpected behavior in the Finder (details on the following).&lt;br /&gt;&lt;br /&gt;Mac OS X: Get Info Comments May Not Appear for Remote Volumes&lt;br /&gt;When you add or edit a Get Info comment for an item on a server volume, the change is not visible to other clients or at the server itself.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Mac OS X treats comments as a Finder property, such as icon position and view setting. Writing of these properties is local, which means your changes are not saved back to the server. Thus someone connecting to the server from a different computer may not see the Get Info comments you add to an item on the server from another remote client of the server. &lt;br /&gt;&lt;br /&gt;For a comment to be visible to all clients, it may be changed at the server itself (see Note 2). &lt;br /&gt;&lt;br /&gt;Notes&lt;br /&gt;Comment changes do not appear to clients immediately, but they will eventually.&lt;br /&gt;Copying a folder to the server yields a different result than editing an existing file or folder. Comments for that folder and items within it will be transferred when you copy it. If you must modify a comment on the server from a client, a user with adequate privileges may do so in this manner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-4571612160805587042?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/4571612160805587042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=4571612160805587042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4571612160805587042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4571612160805587042'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/sth-about-dsstore-files.html' title='sth about .DS_Store files'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-902362366072841451</id><published>2006-12-21T18:23:00.000+08:00</published><updated>2007-07-29T21:38:03.337+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>关于美国医疗救治无保险人士的一个例子和相关了解</title><content type='html'>&lt;h4 id="subjcns!523E42DDF615F0D1!396" class="TextColor1"&gt;在麻省的&lt;a title="Link outside of this blog" class="blines3" target="_blank" href="http://xiaoshenghaobaobao.spaces.live.com/"&gt;frogx&lt;/a&gt;前一段写了两篇讲美国的社会医疗保险的文章，极好，转载如下。&lt;br /&gt;&lt;/h4&gt;&lt;br /&gt;&lt;h4 id="subjcns!523E42DDF615F0D1!396" class="TextColor1"&gt;&lt;a title="Link outside of this blog" class="blines3" target="_blank" href="http://xiaoshenghaobaobao.spaces.live.com/blog/cns%21523E42DDF615F0D1%21396.entry"&gt;关于美国医疗救治无保险人士的一个例子和相关了解&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;h4 id="subjcns!523E42DDF615F0D1!415" class="TextColor1"&gt;&lt;a title="Link outside of this blog" class="blines3" target="_blank" href="http://xiaoshenghaobaobao.spaces.live.com/Blog/cns%21523E42DDF615F0D1%21415.entry"&gt;美国社会医疗保险的继续调查&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;&lt;div&gt;昨 天晚上，一个朋友（F2）切伤了手，比较严重，需送医院急救。但是他没有医疗保险，于是就电话找人帮忙。我让他们首先给校医院电话（他们没有车，住在校内 住宅区，校医院救护车5分钟可达）。结果校医院说，没有保险，请去35分钟路程外一家有ER（emergency room）的医院。&lt;br /&gt;&lt;br /&gt;我 家离他们家15分钟开车，只好着急上火的让他们就近找了人送医院，然后换了衣服就奔往另外一家医院（私立，条件很好，有ER）。那里的护士先量了病人血 压，确定无生命危险，给了三张无菌纸让捂住伤口，然后晾了45分钟无人理睬（6:45pm到7:30pm）。后来一个医生过来，给拍了片子，看了看，给包 扎止疼以后（包扎很好，器械不错），8:45pm赶出门，让自己去看别的大夫（给了refer）。&lt;br /&gt;&lt;br /&gt;以上是事情梗概，去帮忙之前先粗略做了一些相关法律的调查，回来以后继续细查了一些法律网站。可以介绍一些情况。&lt;br /&gt;&lt;br /&gt;介 绍这些的目的是为了澄清&amp;ldquo;美国医院不可以不救助病人，哪怕病人没有钱&amp;rdquo;这个概念。这个概念跟&amp;ldquo;美国银行跨行查询不收费&amp;rdquo;&amp;ldquo;美国手机单向收费&amp;rdquo;一样，属于国 人容易被恶意宣传误导的yy概念。这些概念并非完全误导，因为美国银行确实有一些（根据目前个人阅读各大银行服务条款的调查结果，属于极少数）跨行查询不 收费，美国手机也确实有一些plan单向收费（根据公开的调查数据为少数）。&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;---------------------------------&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;首先介绍大致的概念：&lt;br /&gt;&lt;br /&gt;一个医院可能分为两个部分，DO（doctor's office）和ER（Emergency Room）。&lt;br /&gt;&lt;br /&gt;法 律规定（各州细节不同，下面介绍的是大致相同的骨干部分），所有冲到ER的病人，必须得到检查（无论是否有钱），一旦检查后确定是危急情况 （Emergency Condition），必须采取所有可能的措施来稳定病人病情（Stabilize，不是治疗）。所有被ER指定到DO的病人 （refer），DO的医生必须至少看一次病人，但是医疗建议和诊断治疗不是必须的。&lt;br /&gt;&lt;br /&gt;具体到实例，就是说，如果一个人断了骨头，冲进 急诊室，医生不能因为他（她）没有医疗保险就说滚蛋。当包扎给夹板（不让骨头继续晃荡）给止疼药（让睡好）以后，可以扔走，不一定要做接骨手术。然后病人 去看医生，医生给看看，然后refer给另一个医生，然后无限循环直到病人找到钱或者遇到足够好心的医生为止。&lt;br /&gt;&lt;br /&gt;而且如果附近的医院不 设ER，这事情就比较微妙了。因为医生完全可以拒绝诊断和治疗。就好比我朋友遇到的情况，UHS（university health service） 就不设ER（请看名字，虽然大小比一般医院还大，但是就是不叫hospital），用来规避经济损失（学生穷的比较多，容易不买医疗保险或付不出医药 费），然后就可以拒绝做哪怕最简单的包扎止血，直接说，你去35分钟外那个医院吧。我当时真是很着急，因为朋友的太太没说清楚，我还以为是朋友手指完全被 切断（实际上是切了很深），断肢再造有时间限制，而且ER多半不会为无保险的人做手术。事实上最后的处理也是打了止疼针，包了一圈。&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;---------------------------------&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;相关法律简介：&lt;br /&gt;&lt;br /&gt;EMTALA （Emergency Medical Treatment and Labor Act）于 1986年被国会通过（在此之前美国医生是凭良心在救助穷苦病人的，和中国以前赤脚医生所讲究的医德类似！）在它通过之前，医院有权转移无钱的病人并不给 予诊断和治疗。&lt;br /&gt;&lt;br /&gt;EMTALA规定如下条款：&lt;br /&gt;&lt;br /&gt;1. 如果到医院的病人为Emergency Condition，医 院无权拒绝检查或者非必要的令其转院。（如何在诊断之前就决定病人是否为EC呢？看你去不去Emergency Room，呵呵。ER的同样项目收费大概 是DO的若干倍）请注意，这里有保护女性的条款，特别注明，只要女性在怀孕，无论任何情况，她都是EC（10个月内都是），因此ER必须对女性病人特别小 心，万一瞎了眼嫌贫爱富推出门去是个孕妇，那就乐大发了，刑事罪。&lt;br /&gt;&lt;br /&gt;2. 每个到ER的病人都必须得到检查（screen）以确定他（她）病情的严重程度。一旦确定是EC，则医院有义务诊断和稳定（examine and stabilize）病人病情到一定程度（a certain limit）。&lt;br /&gt;&lt;br /&gt;3. 医院有询问病人是否能支付治疗费用的权利，但不得以此为理由耽误法定的诊断和治疗。&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;---------------------------------&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;美国几年前的情况：&lt;br /&gt;&lt;br /&gt;将 近4千万美国人（18-64岁，因为65岁以上公民美国政府有medicaid项目用于保证最底线的医 疗，赞！）没有医疗保险。以前只是穷人和失业者没有保险，现在甚至很多中产阶级也买不起保险了。1980到1998之间，保险费用翻了4番 （quadrupled），在1998年，美国人一共花了1.1万亿美元用于医疗保险，平均每人$4000（1998年的$4000，我靠！）&lt;br /&gt;&lt;br /&gt;Nearly 40 million Americans between the ages of 18 and 64 carry no health insurance coverage. In the past, only the poor or the unemployed faced this problem. Today, with health care costs rising dramatically each year, the threat of being uninsured now extends to low and moderate income people as well. Between 1980 and 1998, according to the Health Care Financing Administration, the amount of money Americans spent on health care quadrupled. In 1998 Americans spent $1.1 trillion on health care, roughly $4,000 for every person in the United States. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;---------------------------------&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;中国的对比现状：&lt;br /&gt;&lt;br /&gt;2005年12月21日，中国社会科学院发布的社会蓝皮书显示，全国有65.7％的人没有任何形式的医疗保险，大约四分之一的受访者曾经因为无力支付医疗费用而放弃过医疗。&lt;br /&gt;&lt;br /&gt;基 本医疗保险方面，中国劳动和社会保障部公布的数据显示，截至2004年12月底，中国医疗、工伤和生育保险的参保人数分别达到12386万人、6823万 人和4370万人。数据显示，到2004年底，医疗、工伤和生育保险的参保人数分别比上年增加1484万人、2248万人和715万人。在参保人员中，有 51万人享受了工伤保险待遇，44万人享受了生育保险待遇。&lt;br /&gt;商业医疗保险方面，人身险业务平稳增长。保费收入3228.2亿元，同比增长 7.2%，与2003年的32.4%和2002年的59.75%的同比增长速度相比，出现了较大幅度的回落。因保险公司主动调整业务结构和受升息等因素的 影响，人身险业务增速有所放缓。健康险是寿险品种中被人看好的一个品种。按照寿险、健康险和人身意外伤害险的划分方式，2004年这三大类险种的保费收入 分别为2851.3亿元、259.9亿元和117.1亿元，分别占当年人身保险保费收入总额的88.32%、8.05%和3.63%，同比增长速度分别达 到7.21%、17.56%和6.81%。&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;---------------------------------&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;我国对应法律条文&lt;br /&gt;&lt;br /&gt;《医疗机构管理条例》第三十一条规定，医疗机构对危重病人应当立即抢救。&lt;br /&gt;《中华人民共和国执业医师法》第二十四条规定：对急危患者，医师应当采取紧急措施进行诊治；不得拒绝急救处置。&lt;br /&gt;&lt;br /&gt;同样是规定了急救处置，而没有治疗规定。&lt;br /&gt;&lt;br /&gt;这里澄清的概念是，法律上，中美都规定了对急诊需急救不得拒绝救治，而不是普遍意义上的救死扶伤。&lt;br /&gt;&lt;br /&gt;我国法律还细致的规定了，战时不救治伤员军人是刑事罪，自然灾害造成的疾病不得拒绝救治。&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;---------------------------------&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;但是我国明显还存在有法不依的拒收危重急诊病人的情况，这和医疗资源紧张，法律意识淡薄都有很大关系。&lt;br /&gt;&lt;br /&gt;更 深一步的调查发现中 美的区别。美国有15%的诊所不接收任何形式（或者绝大部分面向公众，负责范围受限）的保险，只收取现金，只对有支付能力的人服务。同时也有一些大医院， 慈善医院（比如在芝加哥的一所医院，心脏病治疗排名全美前列，每年40%的支出为慈善性质，面向低收入者）在&amp;ldquo;捡&amp;rdquo;这些病人救。不得不赞一下美国的富裕程 度，$1.1 trillion的保险支出，而且大部分是仅仅保着头疼脑热（比如我的保险就有并不太高的上限）。&lt;br /&gt;&lt;br /&gt;中国医院是大医院富裕，小医院几乎要倒闭。而富裕的医院也没有医疗资源来照顾那些无钱就医的人，他们的资源也很有限，只好价高者得。比如天坛医院的脑外科病床，那就不是仅仅有病就能住的了。还得有些关系，有些运气。总的来说，资源缺乏是根本性的矛盾。&lt;br /&gt;&lt;br /&gt;同时，我国传统观念造成人们容易过度幻想美好，这给我国医疗事业的发展，医疗改革的深入带来了极大的困难。&lt;br /&gt;&lt;br /&gt;比 如认为求医就要治好，没有尽最大的力量救治（无论是否能负担）就是不救死扶伤。前一个要求不可能实现是因为现代医学离人类的健康诉求还差得天隔地远，现代 西医从解剖尸体开始这么些年，取得的成就极其有限，非人类免疫系统可攻击的重大病症几乎没有征服的。关于不同人体状况的不同医疗状况也是最近10年才开始 研究，以前就笼统分个男人女人，老人成人小孩。后一个要求是对世界大同的过早yy。比如世界上最好那个级别的心外科医生就那么几个，你让他们过劳死了也不 可能给每个心脏手术病人动刀啊，再说那医学院学生怎么成长啊。而且有些药全世界生产能力都有限，青霉素还用了20年才普及工业化生产呢，很多好药它成本就 奇高（整个制药工业都有很大责任），除非政府负担全部药费实现管理下公民的医疗共产主义（目前我国可以实现平均的低水平，比如毛主席时代的赤脚医生下乡， 各位同意否？要更好条件，得学美国搞个每年$1.1 trillion），不然咋搞？&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;认为救死扶伤就是哪怕没钱 也得给治好（不是仅仅急诊处置）是一个普遍误解的概念。中国有传统说送佛送到西，救人救到底，这个有些不切实际。现实 法律的要求是，如果是危重急诊，不问经济情况得采用一切手段尽力维持和稳定病人健康状况，这条目前国内也很难做到。比如南湘雅北协和之一的湘雅医院，脑外 科ICU一共12张床位，显然很高概率时时爆满（一旦中风基本就要进这里抢救），怎么办？一个明显没有后续治疗支付能力（不可能进行康复治疗）的病人在 ICU里，外头一个有条件有可能的等床位，怎么办？这都是现实中的问题。也许有人会说，那就政府负担所有医药费啊，多收些富人的税就够了。请注意，美国一 年医疗保险$1.1 trillion，尚且做不到全民免费医疗（以美国的器材和水平），就把他们的档次降一半（中国大陆器材差，但是医生并不差），甚至降10倍，我们每年财 政收入也负担不起。同时要注意到，对于强烈依赖维生系统植物人这个很棘手的问题（稳定状况，但是离开医院就是死路一条），美国都已经法院批准干掉一个了 （实际上保护保险公司，名义上是依照病人家属的要求）。&lt;br /&gt;&lt;br /&gt;2002年9月开始实施的《医疗事故处理条例》提出了举证倒置的概念，也使得医疗 成本不可避免的上升。医生为了自己的安全，不得不防御性治疗。要么就开大检查，大药方；要么就建议转院说自己治不了。这个条例使得我国医疗体系进一步&amp;ldquo;现 代化&amp;rdquo;，随之而来的就是西方一直在承受的医疗成本高问题。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4 id="subjcns!523E42DDF615F0D1!415" class="TextColor1"&gt;美国社会医疗保险的继续调查&lt;/h4&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;再续上次的事件，那个切了手指的哥们得到一张$850+的帐单并且不能享受减免医疗保险的待遇，我们建议他去寻求社会低保援助。&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;那个哥们通过咨询医院，得知麻州有一个叫做FreeCare的程序，给低收入人群减免医疗帐单，他于是去申请，得中，那天晚上的急诊费一分都不用掏了。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;得知这个消息，今天下午我去我们镇的Health Department了解了更详细的情况，结合一周前对镇&amp;ldquo;人大代表&amp;rdquo;（Member of Board of Selectives）Cynthia的访谈，我大致了解了美国的医疗保险体系。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;因为体系很复杂，我表达能力有限，这篇文章可以想象会比较长而且杂乱，请大家多点耐心，多谢宽容。:)&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;一、历史与现状&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;很 久很久以前（比如100年前），美国人都拿着支票本或者现金或者赊账去看医生，保险业网络还不具备社会基础保障能力。到了50年前，日益进步 的医疗科技和医疗负担使得保险业有了介入的空间，保险公司开始组织起医生网络，提供真正广泛意义的医疗保险服务。美国的大部分哲学都是小政府的， Liberal的，因此政府很愿意让保险公司让市场来解决这个问题。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;一开始，情况是很不错的。可是随 之而来问题就出现了，随着医疗科技进步，保险费越来越高，很多人买不起保险。根据统计，50%以上的个人破产是 因为医疗帐单，而其中绝大部分是没有医疗保险的人。于是政府开始介入，通过公共法案COBRA（1985）要求所有雇主给雇员提供保险，并在企业破产之后 的最长到12个月内继续保险失业者。这缓解了一部分问题，但是近年来形势进一步恶化，美国政府不得不开始寻求解决方案，并在各个州进行医疗改革试点 （2004开始至今）。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;首先有个核心的问题是，美国没有一个联邦级别的医疗保障体系，各个州 有自己的。从最好的MA，NY，到最差的Mississippi，New Mexico，社会保障能力差别大到不可思议。MA在过去的十年内为所有居民（甚至非法移民）提供相当好的急诊医疗保障（MassHealth和 FreeCare程序），而Mississippi甚至不能保障新生儿免费疫苗。这是由各州的经济情况和联邦制决定的，联邦政府相当程度上无能为力。而且 美国是个移民国家，各个州有很严重的政治种族冲突因素需要考虑。比如New Mexico就强烈反对对无档案居民（undocumented resident）提供任何形式的社会福利，因为他们非法移民压力非常大。而麻州作为一个非常Liberal的州，则强烈要求推行普遍意义的&amp;ldquo;人权&amp;rdquo;。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;其 次，医疗费用的上涨最近5年是明显指数型的，最近某期的时代杂志上有一幅图，明确标识这个医疗费用的上涨已经跃过了指数函数的e^x=x那一 点，进入暴涨区间，而且明显还没有看到收尾的迹象。没有任何不带有强制公共政策的纯粹市场调节可以解决指数型成本增长问题。这使得整个形势岌岌可危。如我 在最初的文章中所引用的，美国一共3亿人口，有4000万19-65岁的人没有医疗保险，这是一个极大的社会危机。它带来相当高的中产阶级破产概率，严重 影响社会发展。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;再次，保险公司和医疗行业的利益共同体越来越紧密，它们在选举中发挥了极大的 资金源作用，对国会有无与伦比的影响力－－它们的影响力与&amp;ldquo;石油军 事&amp;rdquo;，&amp;ldquo;出版媒体&amp;rdquo;并列。对利益的诉求使得它们完全忘记了社会希望它们完成的保障作用，我哥们受伤以后被拒绝以低价买保险就是很明确的例子。它们不在乎你 是不是会破产，只在乎利润率多高。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;作为联邦意义上的法律，只规定了65岁以上的公民（是否包 括绿卡和签证持有者我不确定，应该是不包括无档案居民的，因为这个和社会保险帐号 SSN联系）老人有联邦退休基金保证的Medicaid程序，实现老人免费（或极低费用）医疗。对于有工作的人，法律强制要求雇主提供一定保障程度的医疗 保险。对于其他人，包括小孩，则没有法律保障。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;严酷的现实摆在眼前，穷州没有办法，只好看着自己州的竞争力越来越差（谁都不愿意去连小孩疫苗都要自己操心的州吧，税又不见得少），富州则用不同的方案自寻出路。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;二、麻州的各种程序&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;作 为美国第二富州和号称的&amp;ldquo;the spirit of the United States&amp;quot;（Liberal，Democratic），麻州有覆盖面相当高的社会保障体系。除了执行联邦法要求的医疗保险以外，麻州有两个程序负责为 其他人解除一部分医疗费用或者保障急诊医疗费用。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;第一个是MassHealth，它是针对特殊需要保护人群的，具体细节不详，但是应该是包括治疗费用，需要一定的共同负担费用（co-pay）或者减免下限（deductible）。五类人群如下（低收入是前提要求）：&lt;br /&gt;&lt;br /&gt;1. 孕妇&lt;br /&gt;2. 小于19岁的小孩&lt;br /&gt;3. 抚养（必须住一起）小于19岁小孩的父母&lt;br /&gt;4. 长期（&amp;gt;12个月）残疾人士&lt;br /&gt;5. 长期（&amp;gt;12个月）失业人士&lt;br /&gt;&lt;br /&gt;其中第5条审查非常严格，防止自由职业者钻这个空子，&amp;ldquo;尤其麻洲艺术家多，更要提防&amp;rdquo;（政府官员原话）。&lt;br /&gt;&lt;br /&gt;对于第2条，对于小于19岁的大学生，只要学期学分超过9分（意味着能交钱选一些学分），就不能被MassHealth所覆盖。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;第 二个是FreeCare，它是针对广泛意义的低收入麻州居民（包括无档案居民）的，不包括治疗费用（see doctor，specialist，treatment，medicine etc），只包括去公立医院ER和公共社区健康中心（state run community health center）的费用。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;FreeCare在它的负担范围（coverage）内，对同一个家庭组成（household）年人均收入在$19,608以下的实行全免，$19608年收入以上的以年收入减去$19608剩下的40%为减免下限（deductible）。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;这里有一些非常敏感的美国式法律概念需要澄清：&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;公 共社区健康中心不是国内字面意义上的那种服务，而是非常非常少的，州直属的医疗服务机构，以我就学的学校为中心，方圆1000平方英里内一共 只有7家。虽然我就学的学校是公立学校，但是学校健康服务（University Health Service）居然算私营社区健康中心，所以那天晚上它可以对我哥们说，你没有保险，我不确定你是否能负担费用，去30分钟外那个公立医院吧。UHS不 是公立的理由是它是学校的直属财产而不是州的（虽然学校是公共财产）。美国法律规定私营医疗机构可以根据患者经济情况决定是否收治患者。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;FreeCare负担减免的是去公共社区健康中心进行常规医疗建档（但不包括诊断，治疗，药品）和万一有需要去急诊的费用。我哥们就属于后者。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;减免下限（deductible）说的是如果不到这个数，就全部由个人负担，超过这个数，个人出这么多，保险程序负责减免剩下的。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;家庭组成（household）和家庭（family）是不同概念，比如住一个屋檐下有两个老人夫妇，一对夫妻和一个孩子，那么这是两个household，两个老人算一个，那对夫妻和孩子算一个，哪怕老人就是夫妻其中一人的父母。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;FreeCare 并不是福利性的把税钱拿去补贴，这个是最关键的区别。它完全不同于我国的财政补贴。而是一种医院和个人之间的双赢方案。个人负 担不了帐单，会导致破产。医院形成坏帐，交给收帐公司（collection company），造成它的账目很难看，影响公立医院的资金申请。于是FreeCare就是一种协议，合法的让医院和个人都勾销这些帐，大家都好过一些。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;这样的程序在美国也非常少见，据相关官员介绍，已知的仅有MA和NY两个州。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;三、麻州的未来&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;就 算是MassHealth和FreeCare，美国人也受不了了，因为医疗费用的暴涨造成极大的财政负担，于是麻州形成改革试点， FreeCare将于2007年10月1日正式终止（我哥们算是赶了末班车）。改为CommonwealthCare程序。改变主要是两方面的：&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;从覆盖力度来说，CommonwealthCare将会负责更多的费用，比如看医生，住院，常规检查，处方药，心理疾病康复，眼科，对于联邦贫困线（2005年MA为独立个人年收入$9804）以下的覆盖一定程度的牙医。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;从覆盖范围来说，CommonwealthCare将大大缩小。它只负责19岁以上的美国公民或者法定居民（legal resident），收入在三倍联邦贫困线（独立个人为每年$29400，典型的4人家庭为$60000）以下，并且不能通过其他渠道获得保险的。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;注：法定居民也是一个敏感的法律概念，它其实就是说绿卡持有者，但是通常让签证持有者有文字上的误解以为自己也属于，其实那样的情况属于合法居民（law-permitted resident）。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;从费用上来说，Commonwealth对联邦贫困线以下的人实行治疗免费，药品大概付$1或者$3的共同负担费用。高于联邦贫困线低于三倍联邦贫困线的将需要付一定的保险费（Premium）和共同负担费用。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;CommonwealthCare已经于2006年10月启动了贫困线以下保障部分，将于2007年1月启动贫困线以上部分，并在FreeCare终止后完全取代之。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;据 今天接待我们的负责官员介绍，每年来求助FreeCare的人有30%是无档案居民，它们在明年10月以后将陷入彻底被社会保障抛弃的困境， 目前没有解决办法，州政府目前也没有意向要解决这个问题。对于我们国际学生学者和家属，也将不处在社会保障体系内。因为我们可以从学校自己购买保险（无论 是否有能力负担）。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;四、问题的本质和社会呼声&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;从 以上事实可以看出，保险公司，医院，药品公司的联盟才是真正问题的根源。无论它们是否有意抬价或者科技发展客观上使得成本上升，只要指数性成 本增长得不到控制，任何形式的市场调节都是徒劳的。同时也要理性看待人类对健康的诉求，这样的诉求如果是超越指数增长的，那就会给医疗成本增长提供极大的 动力。&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;目前各种组织正在游说国会通过联邦统一的社会医疗保障法案（通过的希望十分渺茫），通 过提高药品公司和私立医院税率的方法来形成负反馈（基本是 做梦）。总的来说，老百姓自发的组织很难在游说力上和保险公司药品公司集团抗衡。所以很容易形成类似CommonwealthCare这样形式的妥协，扔 掉一部分人，把钱集中起来服务有选举权的人，短期内缓解矛盾。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-902362366072841451?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/902362366072841451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=902362366072841451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/902362366072841451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/902362366072841451'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/blog-post_21.html' title='关于美国医疗救治无保险人士的一个例子和相关了解'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-8638342459184338948</id><published>2006-12-13T17:48:00.000+08:00</published><updated>2007-07-29T20:34:02.079+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>some info about Intel Pro/Wireless 2200(ipw2200) driver in Mac</title><content type='html'>links:&lt;br /&gt;http://forum.insanelymac.com/index.php?showtopic=6912&lt;br /&gt;http://www.freebsd.org/releases/6.1R/announce.html&lt;br /&gt;http://sourceforge.net/cvs/?group_id=147845&lt;br /&gt;http://www.seattlewireless.net/MacOS&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-8638342459184338948?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/8638342459184338948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=8638342459184338948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8638342459184338948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8638342459184338948'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/some-info-about-intel-prowireless.html' title='some info about Intel Pro/Wireless 2200(ipw2200) driver in Mac'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-2340360246382545509</id><published>2006-12-13T09:46:00.000+08:00</published><updated>2007-07-29T20:34:02.080+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>How to mount filesystem as writable in Mac OS X single user mode</title><content type='html'>&lt;p&gt;At the Darwin Boot Screen&lt;/p&gt;&lt;br /&gt;&lt;p&gt; type: -v -s to boot into single user mode.&lt;br /&gt; Then type &amp;quot;/sbin/fsck -fy&amp;quot; followed by &amp;quot;/sbin/mount -uw /&amp;quot; &lt;br /&gt;(as it says in the text it prints out before the prompt) in order to remount the filesystem as writable. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-2340360246382545509?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/2340360246382545509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=2340360246382545509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2340360246382545509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2340360246382545509'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/how-to-mount-filesystem-as-writable-in_13.html' title='How to mount filesystem as writable in Mac OS X single user mode'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6301406544981802014</id><published>2006-12-08T04:27:00.000+08:00</published><updated>2007-07-29T20:34:02.083+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>t42 fn+f5 开关无线网卡</title><content type='html'>Q: T4X系列 Fn+F5 不能用了，说没有安装无线和蓝牙设备？&lt;br /&gt;A: 去IBM下载最新的驱动程序并安装。 安装的时候要注意一下，驱动里并没有带setup.exe，你必须自己在设备管理器里手动更新。然后还有很重要的一步，在解包后的驱动子目录WLLANINT\APPS\API里有个文件叫SBRNGAPI.EXE,&lt;br /&gt;这是Intel的Sebring API，必须运行安装它，否则Fn+F5会依然无效。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-6301406544981802014?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6301406544981802014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6301406544981802014' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6301406544981802014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6301406544981802014'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/t42-fnf5.html' title='t42 fn+f5 开关无线网卡'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6568528148362559377</id><published>2006-12-06T03:56:00.002+08:00</published><updated>2009-04-06T22:43:05.809+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Gentoo vs Debian</title><content type='html'>A great article about gentoo and debian.&lt;br /&gt;&lt;a href="http://www.tomvergote.be/writings/Linux/Debian-Gentoo-production-environment.html"&gt;http://www.tomvergote.be/writings/Linux/Debian-Gentoo-production-environment.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-6568528148362559377?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6568528148362559377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6568528148362559377' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6568528148362559377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6568528148362559377'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/gentoo-vs-debian.html' title='Gentoo vs Debian'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-8353982350639799558</id><published>2006-12-05T16:27:00.000+08:00</published><updated>2007-07-29T21:21:31.824+08:00</updated><title type='text'>some options about insert in mysql</title><content type='html'>--complete-insert, -c&lt;br /&gt;Use complete INSERT statements that include column names.&lt;br /&gt;&lt;br /&gt;--delayed-insert&lt;br /&gt;Write INSERT DELAYED statements rather than INSERT statements.&lt;br /&gt;You can delay INSERT's from happening until the table is free by using the DELAYED hint in your SQL statement. For example:&lt;br /&gt;INSERT DELAYED INTO table (col) VALUES ('val');&lt;br /&gt;The above SQL statement will return quickly, and it stores the insert statement in a memory queue until the table your inserting into is free from reads. This means that if there are multiple inserts in the queue they can be written in one block, which is a more optimal use of IO.&lt;br /&gt;The downside to this is that it is not transactionally safe at all. You don't really know how long its going to take for your INSERT to happen. If the server crashes, or is forcefully shutdown you will loose your INSERTs. So don't use this on any critical information that would suck to loose.&lt;br /&gt;One great use for the DELAYED keyword would be for storing web stats in a database. You don't want the client waiting for the stats to insert, and its not that big of a deal if you loose a few stats (for most people).&lt;br /&gt;&lt;br /&gt;--extended-insert, -e&lt;br /&gt;Use multiple-row INSERT syntax that include several VALUES lists. This results in a smaller dump file and speeds up inserts when the file is reloaded.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-8353982350639799558?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/8353982350639799558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=8353982350639799558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8353982350639799558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8353982350639799558'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/some-options-about-insert-in-mysql_05.html' title='some options about insert in mysql'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6946391715612921606</id><published>2006-12-05T03:39:00.000+08:00</published><updated>2007-07-29T21:06:11.453+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Recommend: firefox plugin,chmreader</title><content type='html'>url&lt;br /&gt;&lt;a href="https://addons.mozilla.org/firefox/3235/"&gt;https://addons.mozilla.org/firefox/3235/&lt;/a&gt;&lt;br /&gt;It works fine under linux, parse chinese files correctly.&lt;br /&gt;&lt;br /&gt;ps:&lt;br /&gt;chmsee,gnochm,xchm all have bugs&lt;br /&gt;libchm-bin recommended by others but I have not tried.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-6946391715612921606?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6946391715612921606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6946391715612921606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6946391715612921606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6946391715612921606'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/recommend-firefox-pluginchmreader.html' title='Recommend: firefox plugin,chmreader'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-7714279562550032767</id><published>2006-12-04T19:45:00.000+08:00</published><updated>2007-07-29T21:12:11.889+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>说个有趣的事儿，钥匙与hash函数</title><content type='html'>G君中午借H君的自行车，自己下楼骑车去看病了。&lt;br /&gt;晚上，H君骑车回家，结果怎么也找不到钥匙了，就call G君过来帮忙找。&lt;br /&gt;G君一眼就找到了，指给H君，H君一看大呼：“这不是我的车啊”&lt;br /&gt;G君：“不能啊，我中午就骑的这个车啊”&lt;br /&gt;H君自己的自行车至今还未找到，只好骑着这个自己钥匙可以打开的车回家了。。。。&lt;br /&gt;&lt;br /&gt;hash函数冲突了，哈&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-7714279562550032767?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/7714279562550032767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=7714279562550032767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7714279562550032767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7714279562550032767'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/12/hash_04.html' title='说个有趣的事儿，钥匙与hash函数'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-5666858783118774489</id><published>2006-11-30T17:12:00.000+08:00</published><updated>2007-07-29T20:55:12.292+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>wordpress中引号转义的问题</title><content type='html'>昨天发贴说解决了wp中中文乱码的问题，但是马上又发现帖子中的代码：&lt;br /&gt;$this-&gt;query("SET NAMES 'utf8'");&lt;br /&gt;代码中的引号在mysql数据库中存的都没问题，但用wp显示出来就变成全角的了。&lt;br /&gt;google后知道这是wp-includes\functions-formatting.php 中的 wptexturize() 函数在搞鬼&lt;br /&gt;解决办法：&lt;br /&gt;1 使用 &lt;a title="sparanoid" href="http://blog.sparanoid.com/" target="_blank"&gt;sparanoid&lt;/a&gt; 的 &lt;a title="quotmarks-replacer" href="http://blog.sparanoid.com/archive/wordpress/quotmarks-replacer/" target="_blank"&gt;quotmarks-replacer&lt;/a&gt; 解决.（我最后就用这招了）&lt;br /&gt;2 把wptexturize中转义的那几行代码注释掉&lt;br /&gt;3 见下面wordpress官方论坛中给的2个插件&lt;br /&gt;&lt;br /&gt;下面内容来自worpdress官方论坛&lt;br /&gt;Quotation Mark/Apostrophe Switch&lt;br /&gt;引号 分号 转义&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wordpress.org/support/topic/32803?replies=3"&gt;http://wordpress.org/support/topic/32803?replies=3&lt;/a&gt;&lt;br /&gt;Q:&lt;br /&gt;Hello, I use Verdana font for my website and I noticed when I submit a post or page or even a comment it replaces my quotation marks and apostrophes with different ones. The new ones tend to be curved and run into my text. Any ideas?&lt;br /&gt;A:&lt;br /&gt;It's part of the formatting features in WordPress (what's known as the wptexturize function). You can turn this off by commenting out any of the add_filter lines in wp-includes/default-filters.php that use wptexturize, or by editing the function in wp-includes/functions-formatting.php.&lt;br /&gt;Another, fancier option is to use a plugin to control text formatting:&lt;br /&gt;&lt;a href="http://dev.wp-plugins.org/wiki/TextControl"&gt;http://dev.wp-plugins.org/wiki/TextControl&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.vapourtrails.ca/wp-preformatted"&gt;http://www.vapourtrails.ca/wp-preformatted&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-5666858783118774489?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/5666858783118774489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=5666858783118774489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5666858783118774489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5666858783118774489'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/11/wordpress.html' title='wordpress中引号转义的问题'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-1180903576582227682</id><published>2006-11-30T08:23:00.000+08:00</published><updated>2007-07-29T20:55:24.796+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>成功解决wordpress备份时的中文乱码问题</title><content type='html'>&lt;p&gt;前天心中正美着wordpress可以备份mysql数据，但不幸的是一试才知道中文是乱码，无法备份成功。&lt;br /&gt;&lt;br /&gt;现在找到解决办法：&lt;br /&gt;&lt;br /&gt;1备份已有数据到sql文件中，所有DEFAULT CHARSET=latin1 改为 DEFAULT CHARSET=utf8。collation选为utf8_unicode_ci。&lt;br /&gt;&lt;br /&gt;2修改wp-includes/wp-db.php文件，在$this-&gt;dbh = @mysql_connect($dbhost, $dbuser, $dbpassword);后添加$this-&gt;query("SET NAMES 'utf8'");&lt;/p&gt;&lt;br /&gt;&lt;p&gt;注意事项：&lt;br /&gt;&lt;br /&gt;1 使用editplus修改上述文件，UltraEdit不行&lt;br /&gt;&lt;br /&gt;2 mysql的版本是4.1.*&lt;br /&gt;&lt;br /&gt;3 apahce的版本是2.0.*&lt;br /&gt;&lt;br /&gt;4 php的版本是5.2.*&lt;/p&gt;&lt;br /&gt;&lt;p&gt;参考文献：&lt;br /&gt;&lt;br /&gt;1 &lt;a href="http://tao.kaoart.info/cms-software-doc/wordpress-about/kunstao/2006/554/"&gt;kaoart&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2 &lt;a href="http://yanfeng.org/blog/585/"&gt;yanfeng&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-1180903576582227682?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/1180903576582227682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=1180903576582227682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/1180903576582227682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/1180903576582227682'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/11/wordpress_30.html' title='成功解决wordpress备份时的中文乱码问题'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-7758097681607763137</id><published>2006-11-30T01:32:00.000+08:00</published><updated>2007-01-22T14:08:04.154+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>第一个my wordpress，发帖纪念</title><content type='html'>这段日子也写了些blog，但都是放在别人的网站上，如&lt;a title="blogger" href="http://yichaozhang.blogspot.com/" target="_blank"&gt;blogger&lt;/a&gt;，&lt;a title="blog.edu.cn" href="http://yichao.blog.edu.cn/user2/yichaozhang/" target="_blank"&gt;blog.edu.cn&lt;/a&gt;。前一阵发生过blogger，blog.edu.cn服务中断的事儿，想想也后怕，把心得，感悟啥的放到了随时有可能自己访问不到的地方，太没安全感了，哈:)&lt;br /&gt;为此，建了这个基于wordpress的blog，这里的文章都放到byethost提供的mysql数据库里了，并且我可以随时对该数据库进行备份。确保不会丢失。&lt;br /&gt;另外wordpress也提供了诸多实用的feature :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-7758097681607763137?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/7758097681607763137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=7758097681607763137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7758097681607763137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7758097681607763137'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/11/my-wordpress.html' title='第一个my wordpress，发帖纪念'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-7777029642921426626</id><published>2006-11-29T12:35:00.000+08:00</published><updated>2007-02-27T13:36:06.816+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>Hello world!</title><content type='html'>Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!&lt;br /&gt;欢迎！中文没乱码了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-7777029642921426626?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/7777029642921426626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=7777029642921426626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7777029642921426626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7777029642921426626'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/11/hello-world_29.html' title='Hello world!'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-2032798016310461958</id><published>2006-11-07T11:36:00.000+08:00</published><updated>2007-07-29T21:20:29.298+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>还是搬回去了</title><content type='html'>据李同学说blogspot近期解禁的可能性很小了，唉！&lt;br /&gt;so move back to &lt;a href="http://yichao.blog.edu.cn"&gt;http://yichao.blog.edu.cn&lt;/a&gt; now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-2032798016310461958?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/2032798016310461958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=2032798016310461958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2032798016310461958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2032798016310461958'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/11/blog-post.html' title='还是搬回去了'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-7057174837309607738</id><published>2006-10-19T13:32:00.000+08:00</published><updated>2007-07-29T21:39:00.430+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>经常使用windows xp休眠以及移动硬盘的同学请注意了</title><content type='html'>如果按如下操作,windows xp会出问题&lt;br /&gt;1 使用移动硬盘&lt;br /&gt;2 xp系统休眠&lt;br /&gt;3 拔走移动硬盘&lt;br /&gt;4 在其他机器上, copy 文件A到移动硬盘上&lt;br /&gt;5 把移动硬盘重新插回原来xp系统上&lt;br /&gt;6 重新启动原来xp系统&lt;br /&gt;7 拷贝文件B到移动硬盘上&lt;br /&gt;8 重启机器&lt;br /&gt;&lt;br /&gt;你会发现文件A,B都没有了!&lt;br /&gt;&lt;br /&gt;解决办法:&lt;br /&gt;chkdsk h:/f 修复你的移动硬盘,如果文件没被覆盖,还是可以恢复的&lt;br /&gt;&lt;br /&gt;原因:&lt;br /&gt;休眠xp前,移动硬盘的分区表cache在内存中了,休眠后它只能恢复cache,不知道它休眠期间,你对移动硬盘做了什么. xp没有重读移动硬盘分区表.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-7057174837309607738?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/7057174837309607738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=7057174837309607738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7057174837309607738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7057174837309607738'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/10/windows-xp.html' title='经常使用windows xp休眠以及移动硬盘的同学请注意了'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-4195166324619373843</id><published>2006-10-05T17:50:00.000+08:00</published><updated>2006-10-05T18:10:12.343+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Oct 3-4云蒙山至云蒙峡穿越总结</title><content type='html'>1 出行前准备&lt;br /&gt;根据前人的GPS数据，整理成了Google Earth图像&lt;br /&gt;坐标数据保存为kml文件，放在&lt;a href="http://yichao.zhang.googlepages.com/trek.kml"&gt;此处&lt;/a&gt;，有需要者&lt;a href="http://yichao.zhang.googlepages.com/trek.kml"&gt;欢迎下载&lt;/a&gt;。&lt;br /&gt;这是Google Earth的截图：&lt;br /&gt;全景图1&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.google.com/yichao.zhang/RSTVdWX6ABI/AAAAAAAAACA/viJw9KQC43Q/all.JPG?imgmax=640"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://lh4.google.com/yichao.zhang/RSTVdWX6ABI/AAAAAAAAACA/viJw9KQC43Q/all.JPG?imgmax=640" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;全景图2&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.google.com/yichao.zhang/RSTVdwqcABI/AAAAAAAAACI/d4d7ZSnBUY8/all2.JPG?imgmax=1024"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://lh4.google.com/yichao.zhang/RSTVdwqcABI/AAAAAAAAACI/d4d7ZSnBUY8/all2.JPG?imgmax=1024" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;前3个点的图&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.google.com/yichao.zhang/RSTVcKesABI/AAAAAAAAABw/hBt_F6As7eA/1-3.JPG"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: pointer; TEXT-ALIGN: center" alt="" src="http://lh5.google.com/yichao.zhang/RSTVcKesABI/AAAAAAAAABw/hBt_F6As7eA/1-3.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;其他个点的图请见：&lt;br /&gt;http://lh4.google.com/yichao.zhang/RSTVcmmtABI/AAAAAAAAAB4/kyzlAPQVkbQ/4.JPG&lt;br /&gt;http://lh4.google.com/yichao.zhang/RSTVdwqcABI/AAAAAAAAACI/d4d7ZSnBUY8/all2.JPG&lt;br /&gt;http://lh6.google.com/yichao.zhang/RSTVecdYABI/AAAAAAAAACQ/x_ZHQRuA0bo/1-8.JPG&lt;br /&gt;http://lh4.google.com/yichao.zhang/RSTVe7ucABI/AAAAAAAAACY/P-i4obunSJo/8-26.JPG&lt;br /&gt;http://lh3.google.com/yichao.zhang/RSTVfCIeABI/AAAAAAAAACg/NaI89AVV_6I/8-34.JPG&lt;br /&gt;http://lh3.google.com/yichao.zhang/RSTVh_hDABI/AAAAAAAAACo/GH3xmsmaTwE/15-42.JPG&lt;br /&gt;http://lh3.google.com/yichao.zhang/RSTViv1QABI/AAAAAAAAACw/DaNvvvaV3RI/42-48.JPG&lt;br /&gt;http://lh6.google.com/yichao.zhang/RSTVjKs5ABI/AAAAAAAAAC4/sS-ec1bU7tI/41-52.JPG&lt;br /&gt;&lt;br /&gt;前人画的图&lt;br /&gt;http://lh5.google.com/yichao.zhang/RSTVbHZgABI/AAAAAAAAABg/iPSvYZonObg/qzhen_ym_2004_5_5.jpg&lt;br /&gt;&lt;br /&gt;Google Earth真的很棒，我都想为google黑板报写个帖子了。&lt;br /&gt;&lt;br /&gt;2 穿越结果&lt;br /&gt;没走对路，最后撤回来了。&lt;br /&gt;第一次进山最大感受：山路太容易迷了。原因总结了一下：&lt;br /&gt;a b&lt;br /&gt;\/&lt;br /&gt;&lt;br /&gt;c&lt;br /&gt;迷路主要是由于发现走错路后，无法沿原路退回造成的。&lt;br /&gt;假设我从a-&gt;c，前进时从a很容易就发现c，并走上c这条路，此时甚至不知道还有b路。&lt;br /&gt;当在c路上发现是条错路时返回到岔路，很有可能会发现b路比a路更明显，从而走b，进而迷路了:)&lt;br /&gt;总之我探路时，因为这个原因迷了好几次。&lt;br /&gt;解决的办法：前进时，如果转向，必须要回头观察，如果有b路，必须要做好标记。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;本次穿越的第一次:&lt;br /&gt;第一次搭帐篷，原来很简单&lt;br /&gt;第一次在国道旁，小溪旁，山下睡觉，最原始的生活&lt;br /&gt;第一次2人帐篷睡了4个人，哈&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-4195166324619373843?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/4195166324619373843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=4195166324619373843' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4195166324619373843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/4195166324619373843'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/10/oct-3-4.html' title='Oct 3-4云蒙山至云蒙峡穿越总结'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-3981889589317536482</id><published>2006-09-28T16:28:00.001+08:00</published><updated>2006-09-28T16:30:08.600+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>2006年10.3云蒙山穿越Trek准备清单Checklist</title><content type='html'>车头灯&lt;br /&gt;手电筒&lt;br /&gt;军训背带&lt;br /&gt;租绳&lt;br /&gt;塑料袋&lt;br /&gt;雨披&lt;br /&gt;小铁锹&lt;br /&gt;刀&lt;br /&gt;剪子&lt;br /&gt;望远镜&lt;br /&gt;基本药品 创可贴&lt;br /&gt;食品 花生酱、巧克力，压缩饼干&lt;br /&gt;水 男生至少5升，女生至少3升&lt;br /&gt;pda充好电&lt;br /&gt;手套&lt;br /&gt;登山杖&lt;br /&gt;凉鞋&lt;br /&gt;擦汗毛巾&lt;br /&gt;女士带防晒用品，遮阳伞&lt;br /&gt;仿瑞士刀&lt;br /&gt;扑克&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;火机 火柴&lt;/span&gt;&lt;br /&gt;镜子&lt;br /&gt;报纸若干&lt;br /&gt;&lt;br /&gt;早7:30在东直门长途客车站集结，坐936到云蒙山公园&lt;br /&gt;沿111国道步行2km到后山铺，开始穿越之旅&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;没有GPS设备，但可以利用GPS数据&lt;br /&gt;实现GPS数据程序：&lt;br /&gt;输入 点a，N40.60247 E116.78447和点b，N40.60525  E116.77914的坐标信息&lt;br /&gt;输出 b对于a的角度，例如北偏西25度；以及a，b间长度&lt;br /&gt;网上有人说如果不考虑地球的扁平率误差会很大&lt;br /&gt;不过找到了这个网址：&lt;br /&gt;http://www.movable-type.co.uk/scripts/LatLong.html&lt;br /&gt;用这个网页测了&lt;br /&gt;02 N40.60525 E116.77914 途中的岔路，走左边&lt;br /&gt;03 N40.60556 E116.77136 308m 水坝，前方是水泉峪(废墟)&lt;br /&gt;02，02点间距离＝0.6577 km&lt;br /&gt;用Google Earth测的距离是0.66 km&lt;br /&gt;看来这个网页还是可以用的，我已经当下来存到手机里了&lt;br /&gt;这样依靠GPS数据，就可以确定下一个点在什么方位，在多少米距离上，迷路以及走弯路的可能就少了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-3981889589317536482?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/3981889589317536482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=3981889589317536482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/3981889589317536482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/3981889589317536482'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/09/101-outdoor-trek-checklist_28.html' title='2006年10.3云蒙山穿越Trek准备清单Checklist'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-2442827248268057316</id><published>2006-09-25T09:45:00.000+08:00</published><updated>2007-07-29T21:44:10.028+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><title type='text'>编写一个函数，作用是把一个char组成的字符串循环右移n个</title><content type='html'>例如，"abcdef"循环右移2个就变为"efabcd"&lt;br /&gt;&lt;br /&gt;popo实现了一个，不过需要O(n)的额外空间&lt;br /&gt;程序：&lt;br /&gt;void LoopMove(char * pStr,int steps)&lt;br /&gt;{&lt;br /&gt; int len = strlen(pStr);&lt;br /&gt; char *s = new char[len+1];&lt;br /&gt; int count = 0;&lt;br /&gt; char *temp = pStr;&lt;br /&gt; while (*pStr)&lt;br /&gt; {&lt;br /&gt;  s[(count+steps)%len] = *pStr;&lt;br /&gt;  pStr++;&lt;br /&gt;  count++;&lt;br /&gt; }&lt;br /&gt; s[len] = '\0';&lt;br /&gt; strcpy(temp,s);&lt;br /&gt; delete []s;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;最近想出了个空间为O(1)，时间为O(n)的算法&lt;br /&gt;就是只通过数组指针移动和交换来实现&lt;br /&gt;&lt;br /&gt;int LoopMove2(char *p, int i, int t, int s, int m){&lt;br /&gt; int n = strlen(p);&lt;br /&gt; int j = (i+m)%n;&lt;br /&gt; if(t == j) return 0;&lt;br /&gt; p[s] = p[j];&lt;br /&gt; p[j] = p[t];&lt;br /&gt; LoopMove2(p, j, s, t,m);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;使用方法是&lt;br /&gt;如果要右移2位就调用&lt;br /&gt;LoopMove2(p,0,0,-1,2);&lt;br /&gt;&lt;br /&gt;基本思想是：&lt;br /&gt;如果数组X有n个元素，要右移m个位置&lt;br /&gt;申请一个临时变量，设它为数组上的X[-1]&lt;br /&gt;对于数组中的Xi，要把它一次性移到它的最终位置，这个位置是j=(i+m)%n,那么首先把Xj移到X[-1],然后把X[i]移到X[j],接下来一次性移动Xj到它的最终位置(j+m)%n,此时临时变量为X[i],要移动的元素是Xj，并且Xj的值在X[-1]位置上。&lt;br /&gt;由此定义LoopMove2函数，它参数的含义是&lt;br /&gt;i：此步要移动的元素Xi&lt;br /&gt;t：当前元素Xi的值在数组上的位置&lt;br /&gt;s：临时变量在数组上的位置&lt;br /&gt;m：右移的位数&lt;br /&gt;&lt;br /&gt;最终移动的终止条件是：&lt;br /&gt;当前元素Xi的值在数组上的位置＝＝Xi要移向的最终位置&lt;br /&gt;&lt;br /&gt;这个程序中使用了数组的-1处作为临时变量的位置，主要是想把程序写得简单些&lt;br /&gt;当然这样会带来一些问题，但作为说明性的例子就暂不考虑了。&lt;br /&gt;gmail id: yichao.zhang&lt;br /&gt;欢迎和各位讨论算法&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-2442827248268057316?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/2442827248268057316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=2442827248268057316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2442827248268057316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2442827248268057316'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/09/charn.html' title='编写一个函数，作用是把一个char组成的字符串循环右移n个'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-97928502354567694</id><published>2006-09-25T09:33:00.001+08:00</published><updated>2007-07-29T21:44:10.029+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><title type='text'>Google 面试第一题解法</title><content type='html'>Solve this cryptic equation, realizing of course that values for M and E could  be interchanged. No leading zeros are allowed.&lt;br /&gt;&lt;br /&gt;WWWDOT - GOOGLE = DOTCOM&lt;br /&gt;&lt;br /&gt;思路：&lt;br /&gt;穷举法，式子中共有9个不同的字母，数字0－9有10个，因此就从10个数字中任取9个，排成一列，这样分别对应了式子中的字母。&lt;br /&gt;然后判断当前取出的这9个数，是否满足条件。本程序中用check2 函数判断，另外需要考虑WE是可以互换，但不可以相同&lt;br /&gt;&lt;br /&gt;答案：只有两组解&lt;br /&gt;777589 - 188103 = 589486&lt;br /&gt;777589 - 188106 = 589483&lt;br /&gt;&lt;br /&gt;程序：&lt;br /&gt;Perm1.java&lt;br /&gt;package org.chao.perm;&lt;br /&gt;&lt;br /&gt;public class Perm1 {   &lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        int size = 9;&lt;br /&gt;        int[] a = new int[size];&lt;br /&gt;        int all = 10;&lt;br /&gt;        check(a,all,size,0);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static void check(int[] a, int all, int size, int depth) {&lt;br /&gt;        if(size == depth){&lt;br /&gt;            check2(a);            &lt;br /&gt;        }&lt;br /&gt;        for(int i=0; i&amp;lt;all; i++){&lt;br /&gt;            int j = 0;&lt;br /&gt;            for(;j&amp;lt;depth;j++){&lt;br /&gt;                if(a[j] == i){&lt;br /&gt;                    break;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            if(j==depth &amp;amp;&amp; depth&amp;lt;size){&lt;br /&gt;                a[depth]=i;&lt;br /&gt;                check(a,all, size,depth+1);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static void check2(int[] a) {&lt;br /&gt;        //WWWDOT - GOOGLE = DOTCOM&lt;br /&gt;        //w0/6 d1 o2 t3 g4 l5 e6/0 c7 m8   &lt;br /&gt;        int s1 = a[0]*111000+a[1]*100+a[2]*10+a[3];&lt;br /&gt;        int s2 = a[4]*100100+a[2]*11000+a[5]*10+a[6];&lt;br /&gt;        int s3 = a[1]*100000+a[2]*10010+a[3]*1000+a[7]*100+a[8];&lt;br /&gt;        if(s1-s2 == s3){&lt;br /&gt;            System.out.println(s1+" - "+s2+" = "+s3);&lt;br /&gt;        }&lt;br /&gt;        s1 = a[6]*111000+a[1]*100+a[3]*10+a[4];&lt;br /&gt;        s2 = a[4]*100100+a[2]*11000+a[5]*10+a[0];&lt;br /&gt;        s3 = a[1]*100000+a[2]*10010+a[3]*1000+a[7]*100+a[8];&lt;br /&gt;        if(s1-s2 == s3){&lt;br /&gt;            System.out.println(s1+" - "+s2+" = "+s3);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;对上面程序的一点改进：&lt;br /&gt;改进部分：如何从10个数字中取出9个排成一列&lt;br /&gt;上面例子中每次递归都要做depth判断来排除已经选用的数字&lt;br /&gt;下面这个程序则不需要判断&lt;br /&gt;&lt;br /&gt;程序：&lt;br /&gt;Perm2.java&lt;br /&gt;package org.chao.perm;&lt;br /&gt;public class Perm2 {&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        int num[] = { 0,1,2,3,4,5,6,7,8,9 };&lt;br /&gt;        int n=num.length;&lt;br /&gt;        generate(num, n-1);&lt;br /&gt;    }&lt;br /&gt;    private static void generate(int[] num, int n) {&lt;br /&gt;        if (n == 0) {&lt;br /&gt;            //打印出num;&lt;br /&gt;        } else {&lt;br /&gt;            for (int i = 0; i &lt;= n; i++) {&lt;br /&gt;                swap(num,i,n-1);&lt;br /&gt;                generate(num, n - 1);&lt;br /&gt;                swap(num,i,n-1);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    private static void swap(int[] num, int i, int j) {&lt;br /&gt;        int tmp = num[i];&lt;br /&gt;        num[i] = num[j];&lt;br /&gt;        num[j] = tmp;&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/18083698-97928502354567694?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/97928502354567694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=97928502354567694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/97928502354567694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/97928502354567694'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/09/google.html' title='Google 面试第一题解法'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-7522629498588956412</id><published>2006-09-25T00:22:00.000+08:00</published><updated>2007-07-29T21:20:29.300+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><title type='text'>刚搬家过来，以后就安心在此了</title><content type='html'>刚从yichao.blog.edu.cn搬家过来&lt;br /&gt;先把以前的日志贴到这里，这也是blog.edu.cn的一个好处，它提供了整站的html格式导出&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-7522629498588956412?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/7522629498588956412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=7522629498588956412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7522629498588956412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/7522629498588956412'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/09/blog-post.html' title='刚搬家过来，以后就安心在此了'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-5259493975473474907</id><published>2006-09-16T14:00:00.000+08:00</published><updated>2007-07-29T21:24:26.066+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>看图说话，谈谈adapter，proxy，facade，bridge模式的区别与联系</title><content type='html'>&lt;div&gt;适用人群：对模式有一定了解，但又死扣区别的人。个人意见，仅供参考。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;adapter_class vs adapter_object&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;适配器模式有两类，一种叫类适配器（adapter_class&lt;wbr&gt;&lt;/wbr&gt;），另一类是对象适配器（adapter_object）&lt;wbr&gt;&lt;/wbr&gt;。它俩的区别主要体现在adapter和adaptee的关系上&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;如果是类继承关系则为adapter_class&lt;wbr&gt;&lt;/wbr&gt;，如果是对象属性关系，则是adapter_object&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;如图所示：&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;img style="WIDTH: 500px; CURSOR: pointer" onclick="javascript:window.open(this.src);" alt="" src="http://yichao.blog.edu.cn/UploadFiles/2006-9/916885903.jpg" onload="javascript:if(this.width&amp;gt;500){this.resized=true;this.style.width=500;}" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;adapter vs proxy&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;适配模式是将一个类的接口转换成客户希望的另外一个接口。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;代理模式是为其他对象提供一种代理以控制对这个对象的访问。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;这是我们常见到的定义，但是还是让初学者摸不清头脑&lt;wbr&gt;&lt;/wbr&gt;，adapter和proxy到底有什么区别？&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;adapter是适配adaptee和target之间的关系&lt;wbr&gt;&lt;/wbr&gt;，proxy是realSubject对subject的代理。&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;adaptee和target无关系，realSubject和s&lt;wbr&gt;&lt;/wbr&gt;ubject有继承关系。这就是他们的区别。&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;请看下图：&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;img style="WIDTH: 500px; CURSOR: pointer" onclick="javascript:window.open(this.src);" alt="" src="http://yichao.blog.edu.cn/UploadFiles/2006-9/916364231.jpg" onload="javascript:if(this.width&amp;gt;500){this.resized=true;this.style.width=500;}" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;facade vs others&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;facade用于为复杂的子系统定义一个新的简单易用的接口。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;它的重点在&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;1 封装复杂的子系统，对外提供一个简单的访问入口。&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;2 降低外界和子系统的耦合度。加了facade入口&lt;wbr&gt;&lt;/wbr&gt;，外界就只依赖facade入口，而不用依赖子系统的其他类。&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;如图所示：&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img style="WIDTH: 500px; CURSOR: pointer" onclick="javascript:window.open(this.src);" alt="" src="http://yichao.blog.edu.cn/UploadFiles/2006-9/916407682.jpg" onload="javascript:if(this.width&amp;gt;500){this.resized=true;this.style.width=500;}" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;bridge vs others&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;bridge用于将一个抽象与多个可能的实现连接起来。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;它是解决抽象类与其实现类之间依赖关系问题，可以使得抽象和实现各&lt;wbr&gt;&lt;/wbr&gt;自独立且动态结合。&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;它使用了composition替代了inheritance&lt;wbr&gt;&lt;/wbr&gt;，从而解除了抽象类和实现类间的耦合。体现了Favor object composition over class inheritance。&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;如图所示&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;&lt;img style="WIDTH: 500px; CURSOR: pointer" onclick="javascript:window.open(this.src);" alt="" src="http://yichao.blog.edu.cn/UploadFiles/2006-9/916884214.jpg" onload="javascript:if(this.width&amp;gt;500){this.resized=true;this.style.width=500;}" /&gt;&lt;br /&gt;&lt;/em&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-5259493975473474907?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/5259493975473474907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=5259493975473474907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5259493975473474907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5259493975473474907'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/09/adapterproxyfacadebridge.html' title='看图说话，谈谈adapter，proxy，facade，bridge模式的区别与联系'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-6368700574014428790</id><published>2006-09-15T09:15:00.000+08:00</published><updated>2007-07-29T21:13:29.372+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>intel MMX, SSE, SSE2区别与联系</title><content type='html'>&lt;p&gt;MMX(MultiMediaExtensions) 多媒体增强指令集 &lt;br /&gt;实现了单道指令多道数据流（SIMD，single-instruction, multiple-data）的执行模式 &lt;br /&gt;支持MMX指令集的处理器有八个64位的寄存器，这个寄存器可以存放的数据类型有四种：字节（byte）、字(word)，双字(double-word) &lt;br /&gt;分别可以存放8，4，2个。 &lt;br /&gt;举个例子： &lt;br /&gt;支持MMX指令集就是说原来对每个数组中（byte）元素加一的操作现在可以一次性load 8个元素，一次性对这个八个元素加一 &lt;br /&gt;这就是所谓的&amp;rdquo;单道指令多道数据流&amp;ldquo; &lt;br /&gt;http://blog.csdn.net/guanchanghui/archive/2006/07/28/989256.aspx 上有个很好的演示代码 &lt;br /&gt;&lt;br /&gt;SSE（Streaming SIMD Extensions）单指令多数据流式扩展 &lt;br /&gt;就是扩展了MMX支持的SIMD，支持SSE指令集的处理器有八个128位的寄存器，另外支持的数据类型多了个单精度浮点型 &lt;br /&gt;&lt;br /&gt;SSE2 &lt;br /&gt;就是扩展了的SSE，它的寄存器支持的数据类型比SSE多了个双精度浮点型 &lt;br /&gt;&lt;br /&gt;除了在多媒体处理方面，在多线程处理方面，也是它们的英雄用武地！ &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-6368700574014428790?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/6368700574014428790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=6368700574014428790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6368700574014428790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/6368700574014428790'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/09/intel-mmx-sse-sse2.html' title='intel MMX, SSE, SSE2区别与联系'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-3060067294701393653</id><published>2006-09-03T22:07:00.000+08:00</published><updated>2007-01-22T23:28:44.909+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>记2006.9.2西北四环路刷</title><content type='html'>&lt;p&gt;下午的时候感觉浑身发痒，好久没有活动了，前几天还莫名其妙的扭了&lt;wbr&gt;&lt;/wbr&gt;一下腰，要是不活动活动感觉身体真的锈死了。 &lt;/p&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;于是联系好友精灵，一拍即合，我先滑去北航。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;考虑到西四环车少，吃过晚饭，3个桃，2个香蕉，于18&lt;wbr&gt;&lt;/wbr&gt;：40分上路。路上坎坷不平，一点安全感都没有，随时感觉会被绊倒&lt;wbr&gt;&lt;/wbr&gt;，偶的路滑技术实在是太差了。后来感觉走四环去大运村绕远了&lt;wbr&gt;&lt;/wbr&gt;，随临时改变方向，从蓝靛厂路向东滑，打算上中关村大街走知春路。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;结果就走上了如下图所示的路线，不过这条路倒是小路，车很少，路也很平，滑得很爽，一种流畅的感觉coming&lt;/div&gt;&lt;br /&gt;&lt;div&gt;接着沿着那条河，滑到了一座立交桥下，再滑就是农村了，漆黑一片，只好又向西，再上桥逆行，桥上问路，唯有滑下长梯，绕行，终于拐到了顺行的主路上。结果一看路牌，惊讶！我上北四环了，唉，有一次被西北四环这做立交桥打败了！&lt;/div&gt;&lt;br /&gt;&lt;div&gt;接着一路无话来到北航，北四环的路还是比西四环要好多了。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;在北航校内某路段更是爽啊，尤其以13号宿舍楼以及主m楼前路为代表，听说最近图书馆前，体育馆上的路都相当不错了！哈&lt;/div&gt;&lt;br /&gt;&lt;div&gt;在北航，照相后，接着和精灵沿北四环继续滑&amp;hellip;&amp;hellip;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;大运动后真不该喝凉水，可我太渴了，后来就小腹疼起来了&amp;hellip;&amp;hellip;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;坚持在末班车前滑到653大运村车站，上车会家，到家卸鞋后，感觉脚腕折了&amp;hellip;&amp;hellip;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;需要锻炼了 我还计划路滑去天津，这状态可不行啊。加油&amp;hellip;&amp;hellip;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;a href="http://farm1.static.flickr.com/127/365896436_337d52d534_m.jpg"&gt;&lt;img alt="2006.9.2西北四环路刷" src="http://farm1.static.flickr.com/127/365896436_337d52d534_m.jpg" /&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/18083698-3060067294701393653?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/3060067294701393653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=3060067294701393653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/3060067294701393653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/3060067294701393653'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/09/200692.html' title='记2006.9.2西北四环路刷'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/127/365896436_337d52d534_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-5064999601360386164</id><published>2006-08-12T00:08:00.000+08:00</published><updated>2007-07-29T21:43:12.131+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>zjwr99的签名档</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;td background="/skin/xp/layout_18.gif"&gt;&amp;nbsp;&lt;/td&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;★★★★★最常用的找房网站，体验分享★★★★★&lt;br /&gt;&lt;a href="http://www.newsmth.net/" target="_blank"&gt;http://www.newsmth.net&lt;/a&gt; &amp;nbsp;人气旺、清华周围房子多。　&lt;br /&gt;&lt;a href="http://www.zhantai.com/" target="_blank"&gt;http://www.zhantai.com&lt;/a&gt; &amp;nbsp;版面清新、数据更新快。　&lt;br /&gt;&lt;a href="http://www.hilaa.com/" target="_blank"&gt;http://www.hilaa.com&lt;/a&gt; &amp;nbsp;信息巨、中介少、地图分小区查询爽。　&lt;br /&gt;&lt;a href="http://beijing.263.com/" target="_blank"&gt;http://beijing.263.com&lt;/a&gt; &amp;nbsp;前身是263跳蚤市场、老牌劲旅新生。　&lt;br /&gt;&lt;a href="http://www.ganji.com/" target="_blank"&gt;http://www.ganji.com&lt;/a&gt; &amp;nbsp;与google联姻、上升快。　&lt;br /&gt;&lt;a href="http://sales.hlgnet.com/" target="_blank"&gt;http://sales.hlgnet.com&lt;/a&gt; &amp;nbsp;回龙观地区房源多。　&lt;br /&gt;&lt;a href="http://bj.58.com/" target="_blank"&gt;http://bj.58.com&lt;/a&gt; &amp;nbsp;到处投广告、耳熟。　&lt;br /&gt;&lt;a href="http://www.kijiji.com.cn/" target="_blank"&gt;http://www.kijiji.com.cn&lt;/a&gt; &amp;nbsp;ebey旗下网站。　&lt;br /&gt;&lt;a href="http://www.51ez.com/" target="_blank"&gt;http://www.51ez.com&lt;/a&gt; &amp;nbsp;实用。&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;a href="http://bj.renren.com/" target="_blank"&gt;http://bj.renren.com&lt;/a&gt; &amp;nbsp;与mop同源。　&lt;br /&gt;&lt;a href="http://fenlei.dangdang.com/" target="_blank"&gt;http://fenlei.dangdang.com&lt;/a&gt;　当当网副业。&lt;br /&gt;&lt;a href="http://rent.soufun.com/" target="_blank"&gt;http://rent.soufun.com&lt;/a&gt;　只有十万火急版不收费。　&lt;br /&gt;&lt;a href="http://rent.house.sina.com.cn/" target="_blank"&gt;http://rent.house.sina.com.cn&lt;/a&gt; &amp;nbsp;新浪房产。　&lt;br /&gt;&lt;a href="http://post.sina.com.cn/" target="_blank"&gt;http://post.sina.com.cn&lt;/a&gt; &amp;nbsp;新浪招贴。　&lt;br /&gt;&lt;a href="http://esf.focus.cn/" target="_blank"&gt;http://esf.focus.cn&lt;/a&gt;　搜狐焦点。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-5064999601360386164?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/5064999601360386164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=5064999601360386164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5064999601360386164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/5064999601360386164'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/08/zjwr99.html' title='zjwr99的签名档'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-10791175640212557</id><published>2006-07-26T15:23:00.000+08:00</published><updated>2007-07-29T21:30:37.561+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>perfect python</title><content type='html'>&lt;td background="/skin/xp/layout_18.gif"&gt;&amp;nbsp;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;br /&gt;&lt;p&gt;file('new','w').writelines(set(file('old')))&lt;/p&gt;&lt;br /&gt;&lt;p&gt;easy, powerful!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-10791175640212557?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/10791175640212557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=10791175640212557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/10791175640212557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/10791175640212557'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/07/perfect-python.html' title='perfect python'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-115346994085120529</id><published>2006-07-21T16:19:00.000+08:00</published><updated>2007-07-29T21:35:32.591+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>if One Day I would</title><content type='html'>If One Day I would search all files on the all of the disks from all of the world pc, laptop, server&lt;br /&gt;&lt;br /&gt;of course, just like there is robots.txt in the website, there is robots_local.txt in the local computers.&lt;br /&gt;&lt;br /&gt;It's coming by some kind of distributed file system.&lt;br /&gt;that's an interesting job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-115346994085120529?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/115346994085120529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=115346994085120529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/115346994085120529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/115346994085120529'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/07/if-one-day-i-would.html' title='if One Day I would'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-115338132688066037</id><published>2006-07-20T15:42:00.000+08:00</published><updated>2007-07-29T21:37:13.572+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Notes about shell.</title><content type='html'>1 [ -h file ], true if the file is a soft link. (guess from hadoop-deamon.sh)&lt;br /&gt;2 echo $?, return the last command exit status.&lt;br /&gt;&lt;br /&gt;code snippet from hadoop-deamon.sh&lt;br /&gt;&lt;br /&gt;this="$0"&lt;br /&gt;while [ -h "$this" ]; do&lt;br /&gt;  ls=`ls -ld "$this"`&lt;br /&gt;  link=`expr "$ls" : '.*-&amp;gt; \(.*\)$'`&lt;br /&gt;  if expr "$link" : '.*/.*' &amp;gt; /dev/null; then&lt;br /&gt;    this="$link"&lt;br /&gt;  else&lt;br /&gt;    this=`dirname "$this"`/"$link"    &lt;br /&gt;  fi&lt;br /&gt;done&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-115338132688066037?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/115338132688066037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=115338132688066037' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/115338132688066037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/115338132688066037'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/07/notes-about-shell.html' title='Notes about shell.'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-8808777281437872141</id><published>2006-07-13T16:43:00.000+08:00</published><updated>2007-07-29T21:10:20.968+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tech'/><title type='text'>How Great GFW is!</title><content type='html'>最近用python写了个同步del.icio.us和本地ie收藏夹的脚本 &lt;br /&gt;可是总会报被 throttled 的错, 按照del.icio.us的api说明, 应该是我过于频繁的使用它的api了 &lt;br /&gt;但是我没有啊,我都是每隔2秒才提交一次的,无辜啊 :) &lt;br /&gt;最后,没想到是由于有个收藏项为GFW封杀对象, del.icio.us无法访问此连接,所以无法收藏! &lt;br /&gt;呵呵 伟大的GFW, 没想到有一天会碰到你引起的bug&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-8808777281437872141?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/8808777281437872141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=8808777281437872141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8808777281437872141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/8808777281437872141'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/07/how-great-gfw-is.html' title='How Great GFW is!'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-115208951796398933</id><published>2006-07-05T16:51:00.000+08:00</published><updated>2007-07-29T21:15:11.535+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>Tuning Performance in Weblogic on Solaris Sparc Box</title><content type='html'>Recently I worked on a j2ee project based on jsf, weblogic on solaris sparc box.&lt;br /&gt;Developing on a windows box, it works fine. However when I deploy it onto the solaris 9, sparc box, the performance decline much.&lt;br /&gt;the profiler shows that&lt;br /&gt;&lt;br /&gt;1 invocation weblogic.servlet.internal.ServletStubImpl.getServlet() calls&lt;br /&gt;1 invocation weblogic.servlet.internal.ServletStubImpl.checkForReload() calls&lt;br /&gt;1 invocation weblogic.servlet.internal.ServletStubImpl.needToReload () calls&lt;br /&gt;1 invocation weblogic.utils.classloaders.ChangeAwareClassLoader.upToDate() calls&lt;br /&gt;2546 invocations weblogic.utils.classloaders.MultiClassFinder.getClassSource() calls&lt;br /&gt;2546 invocations weblogic.utils.classloaders.MultiClassFinder.getSource () calls&lt;br /&gt;2546 invocations weblogic.utils.classloaders.MultiClassFinder.getSource()&lt;br /&gt;&lt;br /&gt;so about 70-80% of time is used by getServlet() calls. but on windows box, there is no such wired thing.&lt;br /&gt;I found differences between windows and Solaris edition of ServletStubImpl.java decompiled from weblogic.jar.&lt;br /&gt;Who knows why? but I have no time to inspect it.&lt;br /&gt;From the source code, I know it checks whether the servlets are needed to reload and get the answer "yes", so it reloads thousands of servlets.&lt;br /&gt;But it is running in production mode, weblogic should not check that. Maybe a bug?&lt;br /&gt;The light throwed. I found another way to make weblogic never reload servlet files by searching Dev2Dev articles.&lt;br /&gt;An excellent article &lt;a href="http://dev2dev.bea.com/pub/a/2005/01/jsp_reloaded.html"&gt;http://dev2dev.bea.com/pub/a/2005/01/jsp_reloaded.html&lt;/a&gt;&lt;em&gt;&lt;code&gt;&lt;span style="FONT-STYLE: italic"&gt;&lt;br /&gt;&lt;br /&gt;Just set the value of &lt;/span&gt;&lt;/code&gt;&lt;/em&gt;servlet-reload-check-secs to -1! &lt;pre class="code"&gt;&amp;lt;!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"&lt;br /&gt; "&lt;a href="http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd"&gt;http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd&lt;/a&gt;"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;weblogic-web-app&amp;gt;&lt;br /&gt;  &amp;lt;container-descriptor&amp;gt;&lt;br /&gt;      &amp;lt;servlet-reload-check-secs&amp;gt;-1&amp;lt;/servlet-reload-check-secs&amp;gt;&lt;br /&gt;  &amp;lt;/container-descriptor&amp;gt;&lt;br /&gt;&amp;lt;/weblogic-web-app&amp;gt;&lt;br /&gt;&lt;br /&gt;And the article also describes how to make weblogic never recompile jsp and some other interesting things.&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-115208951796398933?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/115208951796398933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=115208951796398933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/115208951796398933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/115208951796398933'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/07/tuning-performance-in-weblogic-on.html' title='Tuning Performance in Weblogic on Solaris Sparc Box'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-2962695696728897693</id><published>2006-07-03T22:14:00.000+08:00</published><updated>2007-01-22T23:58:45.696+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>看狼群 说刑天之死</title><content type='html'>&lt;p&gt;周六去中关村图书大厦看了 狼群4 大结局&lt;/p&gt;&lt;br /&gt;&lt;p&gt;狼群最后有生力量全军覆没！许多狼友都痛恨不已，我也谈谈吧。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;我看刑天死得很幸运了&lt;/p&gt;&lt;br /&gt;&lt;p&gt;1 作为雇佣兵，他身在雇佣军中的精英部队－狼群，因此杀的人也比一般雇佣兵多得多，能有这个下场已经很不错了，看看书中还有那个佣兵有一段true love，最后还能留下老婆孩子的，屠夫？快慢机？呵呵&amp;hellip;&amp;hellip;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;2 作为男人，他已经经历了多少种真正男人所梦寐的！够本了&amp;hellip;&amp;hellip;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;however&lt;/p&gt;&lt;br /&gt;&lt;p&gt;1 作为丈夫，他活得太短了&lt;/p&gt;&lt;br /&gt;&lt;p&gt;2 作为儿子，一点没尽孝道&lt;/p&gt;&lt;br /&gt;&lt;p&gt;PS: 快慢机真是上帝派来的狙击手！看看最后那段在火海中镇定的反击，牛&amp;times;！&lt;/p&gt;&lt;br /&gt;&lt;p&gt;PS：刺血&lt;/p&gt;&lt;br /&gt;&lt;p&gt;原名 李忠卫， 1981年12月生人，家乡 河南省新乡市&lt;/p&gt;&lt;br /&gt;&lt;p&gt;就读于郑州大学计算机信息工程学院&lt;/p&gt;&lt;br /&gt;&lt;p&gt;擅长吉它，喜爱流浪，呵呵&lt;/p&gt;&lt;br /&gt;&lt;p&gt;PS 电子书相对纸质书的2大优点&lt;/p&gt;&lt;br /&gt;&lt;p&gt;1 便携！想放pc里看就用pc看，想放ppc里就能在路上用ppc看&lt;/p&gt;&lt;br /&gt;&lt;p&gt;2 易于保存！花钱买的纸质书，搬家也不舍得扔，电子书就无所谓了&lt;/p&gt;&lt;br /&gt;&lt;p&gt;因此，b4只出实体书，不更新Vip的做法&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-2962695696728897693?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/2962695696728897693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=2962695696728897693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2962695696728897693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/2962695696728897693'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/07/blog-post_03.html' title='看狼群 说刑天之死'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-887679884445101871</id><published>2006-07-02T17:33:00.000+08:00</published><updated>2007-01-22T23:33:45.122+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>记首次骑行东方红</title><content type='html'>&lt;p&gt;北京&lt;br /&gt;北边大三时去了怀柔，密云，住了农家，上房吃了地瓜&lt;br /&gt;东边研一时去了天津，住了加油站，坐了警车&lt;br /&gt;南边不太感兴趣，&lt;br /&gt;唯独西边著名的东方红隧道没去过，这周六看完狼群后终于下决心周末去东方红&lt;/p&gt;&lt;br /&gt;&lt;p&gt;早8点出发，过了定慧寺，沿着阜石路，金顶南街，金顶西街到了石门路，一路上经过了无数家大大小小的作坊式买卖店铺，还有三个以上的军事管理区。在石门路上到了水闸南街就应该向北拐直接就上G109国道，不过我骑过了头，过了建设中的西六环，到了狮子大街，才沿着水担路向北拐。在水闸那座150米左右的大桥上，每隔3，4米左右就坐着一个老头在钓鱼，生活好不惬意，刚好我骑过第一个老头时，他就钓上来一条小鱼，呵呵，有点想和他合影留念的冲动。途中竟还发现有些老爷子还带着南方渔民那种斗笠！不过再往北有一段路上接二连三的过往那种准载13t的大卡车，它们所到之处白灰满天飞！想起昨天刚看的博客我是法医中的硅肺民工不由得用T恤捂住了脸，后来到了前面才知道，原来这有个大型白灰石与白灰粉制造厂！&lt;br /&gt;过了这个污染源总算到了G109国道上的担礼隧道，刚开始还以为那就是东方红隧道，不由得窃喜，这么容易啊！在此处休息，吃点东西。由于灰仍很大，于是转过脸去，没想到不久，有人向我问路，回过脸一看，竟是个开旅游大巴的司机从车里向我喊的，不过他一看我手里拿的面包，红肠，一脸失望样就把车开走了。心里觉得好笑。如果Google Earth把京郊做得精细些也就不会有这么多问路的了。这时候，从隧道那边传来轰轰的马达声，还没等想是什么车，就冲出一支摩托车队，有的摩托后座上还爬着一个女的，就像电影中的摩托帮一样，呵呵&amp;hellip;&amp;hellip;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;吃完就问一个过路的去东方红怎么走，结果他一副很吃惊的样子告诉我东方红隧道里有死人和鬼！叫我不要去，呵呵，心想不知道我还是他疯了&amp;hellip;&amp;hellip;最后还是摸清了方向继续上路。&lt;br /&gt;再往前骑不远就到了传说中的那段蜿蜒向上的6公里山路上，果然够我受的了。自从手做了手术以后，我就没锻炼身体，爬了2公里就吃不消了，汗也进了眼里，沙着疼。休息一会爬一会，最后把上衣也脱了，鼓鼓劲也还是骑不动了，主要不但累腿，屁股还很难受，上次去天津总结的教训&amp;ldquo;长途骑车一定要穿好内裤！&amp;rdquo;算是白总结了，今天出来忘换个厚点的内裤了！最后2公里左右只好推车上去了。路上碰到一个呼呼只喘粗气的骑友过去了，等他下来时，我不由得低下头，没好意思看他，真丢人，回去好好锻炼去。路上还有个蹦蹦蹦的司机，好像要停车，送我一把的样子，被我晃脑谢绝了，心想推上去就丢死人了，要让车拉上去，我还活不活了！&lt;/p&gt;&lt;br /&gt;&lt;p&gt;不管怎样，最后还是来到了那个东方红隧道口，是直的，虽然有几百米，但一眼可以看到出口的亮光。拍了几张照片，又给自己照了几张，然后决定骑进去看看，看看到底有死人没？哈&amp;hellip;&amp;hellip;隧道是两车道的，刚好一进一出。由于隧道里常年没阳光，一进去就感觉入秋了，冷气逼人！除了出口处的亮光，到处都是黑压压的一片！不过在车道两侧每隔几米就有一盏灯，每隔几秒闪一下。骑在这里面真感觉就像是骑往另一个世界一样!正在胡思乱想之时，从身后传来轰轰的卡车声，听声音估计又是那种准载13t的重型卡车，真是担心车道太窄，里面又黑，这卡车又大，要是从我身上过去，生还就是小概率事件了。于是拼命的靠边骑，等着卡车驶过，可是虽然听声音越来越近，但就是不见卡车来，这时我也不敢往后看，生怕把把弄歪了，也许是隧道里回音太大的原因，直到最后的声音大到快把我震聋了，那辆卡车才算过去。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;由于来时为了上坡所以把变速调成了最慢，进隧道前忘了变速，现在想变也不敢了，因为我的变速器有问题，如果调不好容易掉链子，在这里要是掉链子了，我躲都没处躲。因此骑了好久才到了头。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;出了隧道，看到了G109国道的路标了，显示G109 47KM处。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;拍照留念后返回，这回对里面情况熟悉了，有时间胡思乱想了，于是鬼啊，死人啊，以前看的医学院里解剖楼的故事啊，为了看手神经而看过的人体解剖录像啊等等&amp;hellip;&amp;hellip;总之把能想到吓人的事儿都回忆了一遍，终于出了隧道！虽然有点害怕，不过还是挺过来了。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;接着就是一泻6公里了，这段路程算是把今天的骑行推向了高潮！太爽了！以汽车的速度，骑着自行车在飞驰，耳边呼呼的风声&amp;hellip;&amp;hellip;蜿蜒崎岖的下坡路不亚于极品飞车中极品赛道，这山路又窄，只有两车道。我需要不时的按住车摘，将速度控制在40KM/h以下。不久就有一个弯道角度太狠了，差点没把我摔到路边的山涧里，那也足有几百米深！更要小心了！由于我时而看码表时而看路，所以有几次都被摔偏了，于是再也不敢看码表，还是专心把把好了。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;这时候从前面赶来一辆重型卡车，在离我15米左右的地方我就感觉车前轮不稳，开始抖动起来，接着开车飞驰而过，又是后轮剧烈的抖动了几下！这下明白了，是卡车带来的空气涡流造成的吧，好强的力道啊！&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;好时光过的好快，来时慢慢长路，回去时在瞬间就到了头！这时看了一下码表，最高时速44.1KM。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;为了避开那个白灰厂，就一直沿着G109国道骑，路过了中粮高尔夫球场，还碰到了一个骑友丢下车子到山涧里的小河里游泳，太热了，也想跟下去，不过我带了手机，相机，怕水的东西太多了，只好作罢，继续骑行。到山下的食杂店里买了一瓶雪花啤酒，一瓶绿茶，可惜山里的绿茶没甜味！不过很冰，把它在胸前，肚子上，后背，脸上，胳膊上滚了滚，立马体温下降了3度，爽！喝完冰镇啤酒，凉凉爽爽晕晕乎乎继续上路。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;G109国道上，在水闸南街向东一拐就是石门路，终于看到了来时的路，于是沿路返回！&lt;/p&gt;&lt;br /&gt;&lt;p&gt;数据统计： &lt;/p&gt;&lt;br /&gt;&lt;p&gt;总路程 83.07KM&lt;/p&gt;&lt;br /&gt;&lt;p&gt;平均时速 14.4km&lt;/p&gt;&lt;br /&gt;&lt;p&gt;最高时速 44.1km&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;ps：去东方红的路上遇到了两个骑友，一个在金顶西街一直往西去了，还有一个在狮子大街朝南走了&amp;hellip;&amp;hellip;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;ps：所说的斗笠&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;img alt="第一次东方红看到的斗笠" src="http://farm1.static.flickr.com/112/365900534_539b81ea88_m.jpg" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-887679884445101871?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/887679884445101871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=887679884445101871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/887679884445101871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/887679884445101871'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/07/blog-post_02.html' title='记首次骑行东方红'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/112/365900534_539b81ea88_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-115154975193848668</id><published>2006-06-29T10:55:00.000+08:00</published><updated>2007-07-29T21:38:22.716+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>One way to view blogs on blogspot in China against the Firewall</title><content type='html'>Due to China's Great Firewall, the blogs on blogspot are inaccessible to mainland.&lt;br /&gt;However, now I found a way to go through the Firewall by using some website such as bloglines.&lt;br /&gt;&lt;br /&gt;Just subscribe the blog and view by bloglines.&lt;br /&gt;&lt;br /&gt;It works fine!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-115154975193848668?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/115154975193848668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=115154975193848668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/115154975193848668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/115154975193848668'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/06/one-way-to-view-blogs-on-blogspot-in.html' title='One way to view blogs on blogspot in China against the Firewall'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-114586420882751262</id><published>2006-04-24T15:36:00.000+08:00</published><updated>2007-07-29T21:38:22.718+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>How to share your writely documents with others in a sinlge page?</title><content type='html'>Now if you wanna share a doc in writely with others, you should send them the link of that doc.But if you wanna share many documents with many others, what should you do?&lt;br /&gt;The rss feature of writely provides a way to us that you can put a bundle of you docs in a single web page for everyone to access.&lt;br /&gt;&lt;br /&gt;1 tags the docs you wanna share in the same tag and get the rss addressfor instance, it's one of mine:&lt;br /&gt;&lt;a href="http://www/"&gt;http://www/&lt;/a&gt;. writely.com/RSSFeed.aspx?userID=ajgf4th58mkq&amp;authToken=Pz_tnRd4VPsYWwmX6Valrg00&amp;amp;recentDocs=true&amp;amp;x=&lt;br /&gt;&lt;br /&gt;2 write a html file, looks like this file &lt;a href="http://yichao.zhang.googlepages.com/MyWritelyPublished.htm"&gt;http://yichao.zhang.googlepages.com/MyWritelyPublished.htm&lt;/a&gt;&lt;br /&gt;This html file uses ajax to retrieve all the doc links from rss address you get in the first step.&lt;br /&gt;note: the htm file above should show all published docs in my writely. but it does not work if you visit it direct because ajax is forbidden in googlepages. So download the file and open it locally, there is no problem. it works file in IE now. not firefox yet.&lt;br /&gt;&lt;br /&gt;3 put the html file on your site. Now those that know your html file link can access your docs in the specified tag in writely.The docs and the html file are synchronized automatically due to the power of rss. :-)They can access your newly added files without the writely doc link.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-114586420882751262?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/114586420882751262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=114586420882751262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/114586420882751262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/114586420882751262'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/04/how-to-share-your-writely-documents.html' title='How to share your writely documents with others in a sinlge page?'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-114568104454153752</id><published>2006-04-22T12:44:00.000+08:00</published><updated>2007-07-29T21:25:06.044+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>how to solve php "Warning: Cannot modify header information" in gallina</title><content type='html'>when using gallina, this warning always shows up:&lt;br /&gt;Warning: Cannot modify header information - headers already sent by ......&lt;br /&gt;&lt;br /&gt;change the encoding from gb2312 to utf-8 and the php works fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-114568104454153752?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/114568104454153752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=114568104454153752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/114568104454153752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/114568104454153752'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/04/how-to-solve-php-warning-cannot-modify.html' title='how to solve php &quot;Warning: Cannot modify header information&quot; in gallina'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-114560660840811329</id><published>2006-04-21T16:03:00.000+08:00</published><updated>2007-07-29T21:16:40.924+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>several ways to monitor the jvm</title><content type='html'>&lt;li&gt;using jconsole in jdk1.5 &lt;ul&gt;&lt;li&gt;see &lt;a href="http://java.sun.com/j2se/1.5.0/docs/guide/management/overview.html"&gt;http://java.sun.com/j2se/1.5.0/docs/guide/management/overview.html&lt;/a&gt; &lt;li&gt;or &lt;a class="blines3" title="Link outside of this blog" href="http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html" target="_blank"&gt;http://java.sun.com/developer/technicalArticles/J2SE/jconsole.html&lt;/a&gt; &lt;li&gt;add -Dcom.sun.management.jmxremote to vm paras &lt;li&gt;start /bin/jconsole&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;ul&gt;&lt;/ul&gt;&lt;li&gt;Runtime.getRuntime().freeMemory() returns current freeMemory &lt;li&gt;using -Xloggc: para &lt;ul&gt;&lt;li&gt;add '-Xloggc:gc.log' to vm parameters and the file gc.log shows detail memory usage from startup &lt;li&gt;there is many tools to analyze the file to show you figures.  &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/li&gt;&lt;/li&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-114560660840811329?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/114560660840811329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=114560660840811329' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/114560660840811329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/114560660840811329'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2006/04/several-ways-to-monitor-jvm.html' title='several ways to monitor the jvm'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18083698.post-112981869501750475</id><published>2005-10-20T22:28:00.000+08:00</published><updated>2007-07-29T21:16:40.925+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>my first step to aspectJ</title><content type='html'>aspectJ is an extension to java. It is built on java and is a free walker through java's classes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18083698-112981869501750475?l=zeaster.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zeaster.blogspot.com/feeds/112981869501750475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18083698&amp;postID=112981869501750475' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/112981869501750475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18083698/posts/default/112981869501750475'/><link rel='alternate' type='text/html' href='http://zeaster.blogspot.com/2005/10/my-first-step-to-aspectj.html' title='my first step to aspectJ'/><author><name>zeaster</name><uri>http://www.blogger.com/profile/05000732038506927743</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://3.bp.blogspot.com/_q7xigLaxxP8/SS5drlc0twI/AAAAAAAAAMk/9WhqyY_e4ao/S220/zeaster.jpg'/></author><thr:total>1</thr:total></entry></feed>
