<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Leaf Duo &#187; Leaf Duo</title>
	<atom:link href="http://blog.leafduo.com/author/admin/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.leafduo.com</link>
	<description>All About My Life and Information Technology</description>
	<lastBuildDate>Fri, 20 Aug 2010 02:23:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>把 ZY 给我倒过来！──解决德版 G1 ZY倒置问题</title>
		<link>http://blog.leafduo.com/03/remapping-zy-on-g1-de-keyboard</link>
		<comments>http://blog.leafduo.com/03/remapping-zy-on-g1-de-keyboard#comments</comments>
		<pubDate>Fri, 20 Aug 2010 02:23:03 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[G1]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[remap]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=240</guid>
		<description><![CDATA[我就想不明白了，为什么我刷了一个没写是德版 ROM 的 ROM ZY 也会倒过来呢？难道能辨别机器的硬件？判断我是德版就给倒过来了？唉……自己动手 fix 吧。总不能因为这个就换个 ROM 啊。 唉……会盲打也是错啊，专为会盲打的同学准备： 首先把你的 ROM 的那个 zip 解压，解压出来之后，进到 /system/usr/keylayout 里面，这里面这写文件就是键盘映射的文件了，key 21 就是键盘中上的键，key 44 是键盘左下的键。于是看哪个文件里 key 21 后面是 Z 的，都给我改成 Y；key 44 后面是 Y 的，都给我改成 Z，就 OK 了。查找可以这样： grep &#34;key 44 &#34; ./* &#8230; <a href="http://blog.leafduo.com/03/remapping-zy-on-g1-de-keyboard">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>我就想不明白了，为什么我刷了一个没写是德版 ROM 的 ROM ZY 也会倒过来呢？难道能辨别机器的硬件？判断我是德版就给倒过来了？唉……自己动手 fix 吧。总不能因为这个就换个 ROM 啊。</p>
<p>唉……会盲打也是错啊，专为会盲打的同学准备：</p>
<p>首先把你的 ROM 的那个 zip 解压，解压出来之后，进到 /system/usr/keylayout 里面，这里面这写文件就是键盘映射的文件了，key 21 就是键盘中上的键，key 44 是键盘左下的键。于是看哪个文件里 key 21 后面是 Z 的，都给我改成 Y；key 44 后面是 Y 的，都给我改成 Z，就 OK 了。查找可以这样：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;key 44 &quot;</span> .<span style="color: #000000; font-weight: bold;">/*</span>
<span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;key 21 &quot;</span> .<span style="color: #000000; font-weight: bold;">/*</span></pre></div></div>

<p>替换的话，俺也不会 sed、awk 啥的，就手动来了。反正也不多，我就找到一处。</p>
<p>这样新的键盘映射文件就准备好了，用 USB 线把手机连接在计算机上，拿出 adb：</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">adb remount
adb push trout-keypad-qwertz.kl <span style="color: #000000; font-weight: bold;">/</span>system<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>keylayout<span style="color: #000000; font-weight: bold;">/</span></pre></div></div>

<p>仿照上面的命令把所有修改过的文件都用 adb push 复制到手机里去。（adb remount 只需要一次）</p>
<p>重启就 OK 了。</p>
<p>没用过 adb 的放狗搜索一下，在 Android 的 SDK 里有。</p>
<p>德版 G1 测试通过，听说德版里程碑 Milestone 也有这问题，应该也有效。</p>
<p>Good luck.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/03/remapping-zy-on-g1-de-keyboard/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Android 观察</title>
		<link>http://blog.leafduo.com/06/android-review</link>
		<comments>http://blog.leafduo.com/06/android-review#comments</comments>
		<pubDate>Fri, 06 Aug 2010 06:32:06 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[G1]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=238</guid>
		<description><![CDATA[本文为 “首届 Google 暑期大学生博客分享大赛——2010 Android 篇” 参赛文章。 接着上篇 Android 周年纪念接着说下去： 浪迹 Android 圈也一年了，要说长不长，要说短也不短了……那我就说说一年中自己对 Android 的观察和思考。Android 优秀之处上篇已经说了不少，那我来换个角度评价一下 Android，主要说说不足和问题。 先说说 Android 系统本身的问题。Android 虽然有很多令人兴奋的功能和组件，但是仍然有很多地方做得并不好，而这些地方主要在细节方面。首先是联系人的排序问题，Android 的联系人无法按照中文拼音顺序排序，这可能是由于对中文用户并不重视，（据说）已经支持对日文进行排序了。我看了几篇文章，试着自己实现，发现都不完美，国内的 ROM 可能已经实现这个功能了，我没有尝试。按理说 Android 不应该这么不重视中文用户，毕竟还特别为 Android 做了一款字体。 接着说联系人，无法修改联系人分组的问题实在很纠结，可以选择显示哪个组的联系人，就是不能改分组，难道让我在笔记本上改好吗？Ad-hoc 网络问题，为啥 Android 就不能连接 Ad-hoc 网络？虽然有解决方法，但我觉得这是官方应该提供的。VPN 密码问题，VPN 的密码无法保存，强制的安全性扼杀了用户的便利，扼杀了用户选择的权利。我认为 Google 应当更加注重细节，细节做不好，用户体验做不好，老用户会在长期使用中感到不快，进而影响 Android 的口碑。 &#8230; <a href="http://blog.leafduo.com/06/android-review">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>本文为 <a href="http://www.google.com/intl/zh-CN/daxue/blog2010/index.html">“首届 Google 暑期大学生博客分享大赛——2010 Android 篇”</a> 参赛文章。</em></p>
<p><em>接着上篇 <a href="http://blog.leafduo.com/43/android-one-year-anniversary">Android 周年纪念</a>接着说下去：</em></p>
<p>浪迹 Android 圈也一年了，要说长不长，要说短也不短了……那我就说说一年中自己对 Android 的观察和思考。Android 优秀之处<a href="http://blog.leafduo.com/43/android-one-year-anniversary">上篇</a>已经说了不少，那我来换个角度评价一下 Android，主要说说不足和问题。</p>
<p><strong>先说说 <strong>Android 系统本身</strong>的问题。</strong>Android 虽然有很多令人兴奋的功能和组件，但是仍然有很多地方做得并不好，而这些地方主要在细节方面。首先是联系人的排序问题，Android 的联系人无法按照<strong>中文拼音顺序排序</strong>，这可能是由于对中文用户并不重视，（据说）已经支持对日文进行排序了。我看了几篇文章，试着自己实现，发现都不完美，国内的 ROM 可能已经实现这个功能了，我没有尝试。按理说 Android 不应该这么不重视中文用户，毕竟还特别为 Android 做了一款<a href="http://en.wikipedia.org/wiki/Droid_(font)">字体</a>。</p>
<p>接着说联系人，无法修改<strong>联系人分组</strong>的问题实在很纠结，可以选择显示哪个组的联系人，就是不能改分组，难道让我在笔记本上改好吗？<strong>Ad-hoc 网络</strong>问题，为啥 Android 就不能连接 Ad-hoc 网络？虽然有<a href="http://allenss.wordpress.com/2010/02/26/milestone_and_ad-hoc/">解决方法</a>，但我觉得这是官方应该提供的。<strong>VPN 密码</strong>问题，VPN 的密码无法保存，强制的安全性扼杀了用户的便利，扼杀了用户选择的权利。我认为 Google 应当更加注重细节，细节做不好，用户体验做不好，老用户会在长期使用中感到不快，进而影响 Android 的口碑。</p>
<p>这一点或许应当向苹果学习，虽然初代 iPhone 刚刚出来的时候缺少很多功能，但只要是苹果提供的功能，都力求做到最好，缺少的功能在日后补充，而不是发一个半成品出来，这样会让用户很反感。我说一个亲身经历的例子，那时候还是 Android 1.5，我在写一封邮件，得益于 G1 的实体键盘，我很快写了几百字，正当停下思考的时候不小心碰了一下 Discard 按钮，瞬间，几百字灰飞烟灭。遇到这样的事情，用户肯定会感到不快，有的还会跟身边的人说，这样不光是几百字的邮件没了，Android 的口碑也没了。升级到 1.6 之后，Discard 增加了确认，这么简单的功能为什么在 1.5 的时候没有做到呢？1.5 并不是测试版，它是真真正正发布出来给用户使用的，不应当犯这种实习生都不会犯的低级错误。</p>
<p>还有一些是第三方应用的问题，挑一些大家用得比较多的来说吧。先是<strong>人人客户端</strong>，我感觉人人客户端总体来说来算不错，不过有个不能容忍的 bug，在向下划新鲜事的时候，会有上面已经看过的新鲜事出现，应该是算法有问题，还有当进入一篇日志或者相册的时候，返回时可能不在原来的位置，当你翻了很多新鲜事的时候这实在是……还会出现莫名其妙的 FC（force close）。还有 <strong>QQ</strong>，不是很常上 QQ，Android QQ 给人的印象就是非常卡，打字都会卡，可能是因为我的机型比较旧了，但我想一个 IM 软件应该不应该占用很多系统资源。<strong>支付宝</strong>至今不支持横屏，登录过程中切换横竖屏的时候会 FC……<strong>Seesmic</strong> 感觉是个挺漂亮的 twitter 客户端，但是莫名其妙地网络故障让人不得不放弃……随口一说，就有这么多问题。</p>
<p>我认为出现这些问题不光是第三方开发者的问题，Google 作为管理者也应当为 Market 中应用质量普遍不高负责。首先是缺乏准入机制，我没有开发过 Android 应用，但是据观察基本没有无法进入 Market 的应用，完全没有质量的<a href="http://imtx.cn/archives/1449.html">“性感女郎”</a>之类的软件也能进入 Market，<a href="http://article.yeeyan.org/view/105279/113924">多达 144 个垃圾铃声应用和侵犯版权的应用</a>也轻松进入了 Market，严重地影响了 Android 应用的平均质量。iPhone/iPad App Store 的准入制度使得软件作者必须提高他的软件质量，才能进入市场，<a href="http://apple4.us/2010/06/2010-wwdc-wrapup.html">最起码不能频繁崩溃</a>。Google 也对应用的行为缺乏监督，举个例子，一个应用可以无视系统设置的是否允许自动转屏，自己转到横屏或者转回来，甚至这种现象出现在了 Google 自家的应用──自带的 Chrome Lite 中，当用户躺在床上的时候，他们是多么痛恨这些应用。</p>
<p><strong>付费应用</strong>数量过少，只<a href="http://www.techcrunchchina.com/1419">占到 Market 里面应用数量的的 43%</a>，相比之下 iPhone/iPad 仅有 28% 的应用是免费的，75% 都是收费的。作为一个消费者，能够免费用上优质的软件当然是件好事，但是对于大部分软件作者来说，盈利是必须要考虑的事情，免费的软件也就意味着投入更少的精力，结果只能是低劣的质量。或许 AdMob 也是盈利的一个选项，但手机屏幕空间很珍贵，放一个广告很可能会影响用户体验，国内用户对流量也很敏感，而且我个人对通过 AdMob 之类的广告来盈利不是很看好。而且对国内用户来说最重要的是，通过<a href="http://tech.it168.com/a2010/0729/1083/000001083903.shtml">正常方法并不能看到 Market 中的收费应用</a>，开发者也无法发布付费应用，这让 Android 对国内用户和开发者的吸引力骤减。我认为开发者不能赚到的平台是很危险的，无法长期发展下去。</p>
<p><strong>ROM 版本过多</strong>也是一个问题，每个 ROM 版本的功能、质量都不同，Market 中的应用数量和质量也不同，搭载旧版本的手机很难升级到更新版本，这就造成了<a href="http://www.cnetnews.com.cn/2010/0412/1700972.shtml">市场的分裂</a>，使得本来就不大的 Android 市场又变得四分五裂，而现在<a href="http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html">运行着 2.1 以下系统的 Android 手机还有近一半</a>，这些手机无法享受到高版本 ROM 中的新功能和新的第三方应用，不能不说是个遗憾。不过还好，据说 Google 已经开始着手解决这个问题了（没找到链接，抱歉）。</p>
<p><strong>多媒体</strong>应用薄弱则是另一个问题，自带的 Music 实在是无法使用，音乐的管理乱到遭，管理播放列表十分麻烦，而第三方应用也没有非常出色的，缺少一个类似 iTunes 的软件来管理，创新工场推出了一个<a href="http://wandoujia.com/">豌豆荚</a>，据称不错，不过目前只有 Windows 版本，所以我没有试用。</p>
<p>最后说一说国内的特殊问题（中国特色问题？），首先是 Google 这个牌子的问题，由于<a href="http://www.google.com/press/new-approach-to-china/update.html">种种原因</a>，Google 这个牌子并不像它在美国或者世界上其他国家那样响亮了，其次还有国内特殊的情况，比如用户素质、企业文化、政策因素等等，这些引发了很多问题。其一是<a href="http://cn.engadget.com/2010/03/26/android-google-china-unicom-no-search-on-android/">很多国内的 Android 手机不选择 Google 作为搜索引擎</a>，有的甚至<a href="http://mm.10086.cn/">阉割掉了 Market 换上自己的市场</a>，我想这是 Google 不愿意看到的，也是大部分用户不愿意看到的。还有一个更严重的问题，<a href="http://tinkpad.wuyan.org/2010/01/06/android-market/">在某些地方 Market 的服务器会神奇地无法连接</a>，无法安装新应用，也无法更新，这对于 Android 用户来说无疑是致命的打击。我认为，对于某些行为明显不妥的企业，Google 应当加强监管，放出一些限制条款，不能纵容这种行为，赤裸裸的分裂长期来看对于整个社区、整个 Android 生态环境都不是好事，而对于某些神奇的问题，Google 应当加强公关能力，让这些地方的用户也用上优质的服务。</p>
<p>总体来说，Android 做得最好的就是与 Google 服务的紧密结合，最需要改进的是对 Market 的监管和第三方应用的质量。</p>
<p><a href="http://cn.engadget.com/2010/07/28/pour-one-out-t-mobile-g1-no-longer-for-sale/">作为 Android 元老的 G1 已经离我们远去了</a>，但是 Android 平台还会继续走下去，愿 Android 越走越好。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/06/android-review/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Android 周年纪念</title>
		<link>http://blog.leafduo.com/43/android-one-year-anniversary</link>
		<comments>http://blog.leafduo.com/43/android-one-year-anniversary#comments</comments>
		<pubDate>Fri, 06 Aug 2010 06:30:43 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[G1]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=236</guid>
		<description><![CDATA[本文为 “首届 Google 暑期大学生博客分享大赛——2010 Android 篇” 参赛文章。 本来只想写一篇来着，写着写着就有六千多字了，于是分成两篇，这是第一篇，更多的以入门用户的眼光推荐 Android，下一篇 Android 观察，更多的讲述 Android 的不足和改进。下面进入正题： 一年前的暑假，我买了自己的第一只智能手机──HTC Dream，也就是俗称的 G1（其实也不是俗称……）。528 MHz CPU，256 MB ROM，192 MB RAM，Android 1.5，QWERT 键盘，在今天看来已经是老古董的配置了，不过在当年还是相当惊艳的，再加上只有两千冒头的售价，在各路神仙中让我选择了 HTC Dream。 Android 初体验 Android 1.5，对于我这个以前用着非智能机的人来说带来的是惊喜，让我精力了很多很多 “啊，我就需要这个” 的时刻。 比如说与 Google 服务的紧密结合，我是一个 Google 服务的重度使用者，每天都有不少邮件需要处理，然而不是每封邮件都需要打开笔记本去处理的，很多时候只是回一句话而已，还有许多时候仅仅是定期发来的 Newsletter，只需要看看就可以，这时候，手机的便携性就体现出来了，整合的 Gmail 虽然（据说）不是推送邮件，但是往往能在几分钟内刷新到邮件，比较紧急的邮件也不会错过了。 &#8230; <a href="http://blog.leafduo.com/43/android-one-year-anniversary">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>本文为 <a href="http://www.google.com/intl/zh-CN/daxue/blog2010/index.html">“首届 Google 暑期大学生博客分享大赛——2010 Android 篇”</a> 参赛文章。</em></p>
<p><em>本来只想写一篇来着，写着写着就有六千多字了，于是分成两篇，这是第一篇，更多的以入门用户的眼光推荐 Android，<a href="http://blog.leafduo.com/06/android-review">下一篇 Android 观察</a>，更多的讲述 Android 的不足和改进。下面进入正题：</em></p>
<p>一年前的暑假，我买了自己的第一只智能手机──<a href="http://www.htc.com/www/product/dream/overview.html">HTC Dream</a>，也就是俗称的 G1（其实也不是俗称……）。528 MHz CPU，256 MB ROM，192 MB RAM，Android 1.5，QWERT 键盘，在今天看来已经是老古董的配置了，不过在当年还是相当惊艳的，再加上只有两千冒头的售价，在各路神仙中让我选择了 HTC Dream。</p>
<h2>Android 初体验</h2>
<p>Android 1.5，对于我这个以前用着非智能机的人来说带来的是惊喜，让我精力了很多很多 “啊，我就需要这个” 的时刻。</p>
<p>比如说与 Google 服务的紧密结合，我是一个 Google 服务的重度使用者，每天都有不少<strong>邮件</strong>需要处理，然而不是每封邮件都需要打开笔记本去处理的，很多时候只是回一句话而已，还有许多时候仅仅是定期发来的 Newsletter，只需要看看就可以，这时候，手机的便携性就体现出来了，整合的 Gmail 虽然（据说）不是推送邮件，但是往往能在几分钟内刷新到邮件，比较紧急的邮件也不会错过了。</p>
<p>除了 Gmail 的同步，还有<strong>联系人的同步</strong>。刚刚换手机的时候，把联系人弄到新手机上是个比较麻烦的事情，很多同学花了半天自己手动输入了一遍，不仅麻烦无聊，而且超大量的数字，难免会发生输入错误，等到要找人的时候再着急就晚了。幸好有联系人同步，原来的手机支持 <a href="http://zh.wikipedia.org/wiki/SyncML">SyncML</a>，先用 SyncML 通过 <a href="http://www.google.com/mobile/sync/">Google Sync</a> 同步到 Gmail 的联系人上，然后再同步到 G1 上就 OK 了。再有就是要改很多联系人的时候，手机上改毕竟不太方便，在笔记本上改好之后同步过来很方便。</p>
<p><strong>Google Maps</strong> 也是个很强大的应用，在茫茫北京，俺一个外乡人，要不迷路并且安全到达目的地是一项多么困难的任务……不过有了 GPS 和 Google Maps，这工作就简单多了，GPS 定好自己的位置，搜索好目的地，剩下的就交给 Google Maps 吧，当然，路还是要自己走的，车钱还是要自己付的，这个 Google Maps 管不了……出门不问路，哈哈哈哈。</p>
<h2>杀手/必备应用推荐</h2>
<p>看完了 Google 自家的应用，来看看优秀的第三方应用推荐。</p>
<p>首先隆重推出的是 <strong><a href="http://code.google.com/p/android-sms/">SMS Backup</a></strong>，这个程序能将你的短信自动备份到 Gmail 并添加标签，每次刷 ROM 之后，它都是我安装的第一个软件，从此以后，再也不怕短信丢了。安装好，备份一次之后就不用管它了，让它自己默默地工作吧。</p>
<p>下一个当然是 <strong><a href="http://www.handcent.com/">Handcent SMS</a></strong>，1.6 自带的短信程序感觉不是很好用，于是就用上了第三方的短信程序。要说为啥非要用第三方的，是因为自带的短信程序在短信多了之后非常卡，打开一条短信都要半天，无奈，只好换掉了，Handcent SMS 会自动隐藏旧的短信，就不会卡了。Handcent SMS 比起自带的 Messaging 来强大得多，有可以显示未读短信数的 Widget，可以自定义某个联系人来短信的通知，于是就可以通过 LED 的颜色和通知图标知道是谁发的短信了。Handcent SMS 还有一个抢眼的功能就是能自定义振动的样式，在 Android 手机越来越多的今天，分辨自己手机的振动越来越难了……有了 Handcent SMS，就不怕认错震动声音了。</p>
<p>下一个是 <strong>ClockSync</strong>，对于我等对时间有着变态追求的人来说，这款能自动通过 NTP 对时的应用怎么能不装呢？有了它，再也不怕约会迟到了（误）……（对时需要 root）</p>
<p>再来个 <strong><a href="https://www.dropbox.com/">Dropbox</a></strong>，当红网络文件同步服务推出的官方客户端，之前那个不知道谁出的劣质客户端退散吧。</p>
<p>继 Google Maps 之后，路痴的福音又来了，<strong>Compass</strong>。就像名字所说的一样，仅仅是个指南针，不过在你迷失方向的时候就有大用处了……记得方向指示不准的时候请在空中画 8 字校对方向，每次画 8 字我都觉得很有喜感。</p>
<p><strong>GPS Status</strong>，能看到当前的 GPS 状态，包括有多少颗卫星可见，经纬度、海拔、速度等。我喜欢坐在车上开着 GPS Status，看看车子有多快，动车上也试过，真的有 300+ km/h……</p>
<p>祭出网购用户必装的利器──支付宝，我等非 Windows 用户的福音，选好商品，手机支付即可（支付宝啊，你还是快点去掉什么“安全”控件吧……）随时充话费也是支付宝必装的理由。</p>
<p>说了不少 Android 系统相关的心得和推荐，大家有什么心得或者想要交流的尽情留言吧，好了，不多说，我们进入下一部分──<a href="http://blog.leafduo.com/06/android-review">Android 观察</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/43/android-one-year-anniversary/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>C Traps &amp; Tips II -- Digraphs and Trigraphs</title>
		<link>http://blog.leafduo.com/50/c-traps-tips-ii-digraphs-and-trigraphs</link>
		<comments>http://blog.leafduo.com/50/c-traps-tips-ii-digraphs-and-trigraphs#comments</comments>
		<pubDate>Tue, 27 Jul 2010 13:21:50 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=232</guid>
		<description><![CDATA[今天写个第二遍吧，这篇有点×疼，大家见谅。 先看代码： 1 2 3 4 5 6 7 #include &#60;stdio.h&#62; &#160; int main&#40;&#41; &#123; printf&#40;&#34;%s&#34;, &#34;What's this??!\n&#34;&#41;; return 0; &#125; 1 2 3 4 5 6 7 int main&#40;&#41; &#123; int a = 0; //What's a's value??????????????/ a++; return &#8230; <a href="http://blog.leafduo.com/50/c-traps-tips-ii-digraphs-and-trigraphs">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>今天写个第二遍吧，这篇有点×疼，大家见谅。</p>
<p>先看代码：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000066;">printf</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%s&quot;</span><span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;What's this??!<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">int</span> a <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  <span style="color: #666666; font-style: italic;">//What's a's value??????????????/</span>
  a<span style="color: #339933;">++;</span>
  <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>想想上面两段代码吧……</p>
<p>好了，答案在这里，在符合 C99 的编译器里，第一段输出 What's this|，第二段 a 的值还是零。为什么这样呢，因为 C99 增加了一个叫 trigraph 的特性，也就是三元组。由于某些键盘上无法输入某些字符，所以就定义三个字符来替代那一个字符，比如 ??! 会转换成 |，??/ 会转换成 \，也就是说 a++ 也成了注释的一部分，（三元组都是两个问号开头的），而且无论是在字符串中还是注释中都会被替换（在预处理器中进行替换，不论在代码的哪里出现都会被替换）。这样就能解释上面两段代码的输出了。想要避免这个问题可以将 ? 进行转义（写成 \?），或者把字符串拆开（写成 "?""?""!"）。</p>
<p>还有一种叫做 digraph，二元组，也就是用两个字符来表示一个字符。与三元组不同的是，二元组被当成一个独立的 token 来解释，在预处理器进行词法分析的时候被替换，也就是说，在字符串中和包括在其他 token 中的二元组不会被替换掉，这样就不会造成像三元组那样诡异的问题了。</p>
<p>为啥说这篇×疼的，是因为 GCC 默认不开启三元组的支持（M$ 的编译器不清楚）……想要开启需要在编译时指定 -std 或者 -trigraphs，没有这两个编译选项的时候出现三元组不会发生替换，编译时会有警告。</p>
<p>我觉得这东西平时没啥用，不要误用了就好。</p>
<p>References：</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Digraphs_and_trigraphs">http://en.wikipedia.org/wiki/Digraphs_and_trigraphs</a>
</li>
<li><a href="http://gcc.gnu.org/onlinedocs/cpp/Initial-processing.html">http://gcc.gnu.org/onlinedocs/cpp/Initial-processing.html</a>
</li>
<li><a href="http://gcc.gnu.org/onlinedocs/cpp/Tokenization.html">http://gcc.gnu.org/onlinedocs/cpp/Tokenization.html</a>
</li>
<li><a href="http://stackoverflow.com/questions/1995113/strangest-language-feature/1995134#1995134">http://stackoverflow.com/questions/1995113/strangest-language-feature/1995134#1995134</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/50/c-traps-tips-ii-digraphs-and-trigraphs/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to Change Font of NSTextField in Interface Builder</title>
		<link>http://blog.leafduo.com/26/how-to-change-font-of-nstextfield</link>
		<comments>http://blog.leafduo.com/26/how-to-change-font-of-nstextfield#comments</comments>
		<pubDate>Thu, 22 Jul 2010 13:48:26 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=231</guid>
		<description><![CDATA[I spent nearly a hour finding the way of changing the font of text field in Interface Builder, and I found it's really easy but hard to find... Select the NSTextField you want to change its font, press Command+T or &#8230; <a href="http://blog.leafduo.com/26/how-to-change-font-of-nstextfield">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I spent nearly a hour finding the way of changing the font of text field in Interface Builder, and I found it's really easy but hard to find...</p>
<p>Select the NSTextField you want to change its font, press Command+T or choose "Show Fonts" under Font menu, and change font like in other applications in Mac OS X...</p>
<p>Really obvious, but really hard to find...</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/26/how-to-change-font-of-nstextfield/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C Traps &amp; Tips I -- Duff&#039;s Device</title>
		<link>http://blog.leafduo.com/42/c-traps-tips-i-duffs-device</link>
		<comments>http://blog.leafduo.com/42/c-traps-tips-i-duffs-device#comments</comments>
		<pubDate>Wed, 21 Jul 2010 17:04:42 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=229</guid>
		<description><![CDATA[最近又对 C 的陷阱和奇怪的用法之类的感兴趣了，于是又想写点东西，完全是主观感觉奇怪的或者是感觉是陷阱就写出来了，外加无责任分析，错了还请大家斧正…… 今天写第一篇，希望以后能多写点…… 先上代码： 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 send&#40;to, from, count&#41; register short *to, *from; register count; &#123; register n=&#40;count+7&#41;/8; switch&#40;count%8&#41;&#123; case 0: do&#123; *to = &#8230; <a href="http://blog.leafduo.com/42/c-traps-tips-i-duffs-device">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>最近又对 C 的陷阱和奇怪的用法之类的感兴趣了，于是又想写点东西，完全是主观感觉奇怪的或者是感觉是陷阱就写出来了，外加无责任分析，错了还请大家斧正……</p>
<p>今天写第一篇，希望以后能多写点……</p>
<p>先上代码：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="c" style="font-family:monospace;">send<span style="color: #009900;">&#40;</span>to<span style="color: #339933;">,</span> from<span style="color: #339933;">,</span> count<span style="color: #009900;">&#41;</span>
<span style="color: #993333;">register</span> <span style="color: #993333;">short</span> <span style="color: #339933;">*</span>to<span style="color: #339933;">,</span> <span style="color: #339933;">*</span>from<span style="color: #339933;">;</span>
<span style="color: #993333;">register</span> count<span style="color: #339933;">;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #993333;">register</span> n<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span>count<span style="color: #339933;">+</span><span style="color: #0000dd;">7</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span><span style="color: #0000dd;">8</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span>count<span style="color: #339933;">%</span><span style="color:#800080;">8</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">:</span>	<span style="color: #b1b100;">do</span><span style="color: #009900;">&#123;</span>	<span style="color: #339933;">*</span>to <span style="color: #339933;">=</span> <span style="color: #339933;">*</span>from<span style="color: #339933;">++;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">7</span><span style="color: #339933;">:</span>		<span style="color: #339933;">*</span>to <span style="color: #339933;">=</span> <span style="color: #339933;">*</span>from<span style="color: #339933;">++;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">6</span><span style="color: #339933;">:</span>		<span style="color: #339933;">*</span>to <span style="color: #339933;">=</span> <span style="color: #339933;">*</span>from<span style="color: #339933;">++;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">5</span><span style="color: #339933;">:</span>		<span style="color: #339933;">*</span>to <span style="color: #339933;">=</span> <span style="color: #339933;">*</span>from<span style="color: #339933;">++;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">:</span>		<span style="color: #339933;">*</span>to <span style="color: #339933;">=</span> <span style="color: #339933;">*</span>from<span style="color: #339933;">++;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">:</span>		<span style="color: #339933;">*</span>to <span style="color: #339933;">=</span> <span style="color: #339933;">*</span>from<span style="color: #339933;">++;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">2</span><span style="color: #339933;">:</span>		<span style="color: #339933;">*</span>to <span style="color: #339933;">=</span> <span style="color: #339933;">*</span>from<span style="color: #339933;">++;</span>
	<span style="color: #b1b100;">case</span> <span style="color: #0000dd;">1</span><span style="color: #339933;">:</span>		<span style="color: #339933;">*</span>to <span style="color: #339933;">=</span> <span style="color: #339933;">*</span>from<span style="color: #339933;">++;</span>
		<span style="color: #009900;">&#125;</span><span style="color: #b1b100;">while</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">--</span>n<span style="color: #339933;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>看懂了的话下面可以无视了……请轻轻按下左上角或者右上角的X……</p>
<p>可以看出，这短代码是用来复制内存的（请别告诉我你看不懂旧式的函数首部），就像 memcpy，一般人可能会写出类似下面的代码：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #b1b100;">do</span> <span style="color: #009900;">&#123;</span>                          <span style="color: #808080; font-style: italic;">/* count &gt; 0 assumed */</span>
    <span style="color: #339933;">*</span>to <span style="color: #339933;">=</span> <span style="color: #339933;">*</span>from<span style="color: #339933;">++;</span>            <span style="color: #808080; font-style: italic;">/* Note that the ''to'' pointer is NOT incremented */</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">--</span>count <span style="color: #339933;">&gt;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>这两段代码的区别是上面的一个，也就是 Duff's device 用了叫做循环展开的技术，观察可以发现，下面这段代码循环体很短，也就是说循环条件的判断在循环执行的时候占用了很大一部分的时间，而循环展开后循环条件所占用的时间下降了，从而提高了程序的效率。</p>
<p>其实 Duff's device 里面最神奇的就是 switch 跟 while 交错出现。示例中循环展开了 8 次，第一次 switch 的时候首先处理被 8 除余下的 count%8 次，然后 while 循环处理 8*(n-1) 次，这样就正好凑齐 count 次复制了。这个 8 次是可以改的，愿意的话可以改成 16 次？不过展开越多二进制的大小就越大，也算是用空间换时间了。</p>
<p>至于你问我为啥是 <span style="font-family: monospace;">*to</span> 而不是 <span style="font-family: monospace;">*to++</span>，我只能告诉你那个指针 <span style="font-family: monospace;">to</span> 不是一般的指针，而是 memory-mapped output register，按我的理解大概是它能自动增长吧？参考资料里说新手可能不知道 memory-mapped output register，所以有时候就改成 <span style="font-family: monospace;">*to++</span> 了，嗯，我是新手。谁知道是怎么回事告诉我一声？查了一些还是不太懂……</p>
<p>另外，Duff's device 也不是说一定能让代码变快，有人就说了，我去掉这些烦人的 Duff's device 之后反而快了。 <img src='http://blog.leafduo.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>References:</p>
<p><a href="http://en.wikipedia.org/wiki/Duff's_device">http://en.wikipedia.org/wiki/Duff's_device</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/42/c-traps-tips-i-duffs-device/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ZTE MF637 on Snow Leopard == 地雷</title>
		<link>http://blog.leafduo.com/03/zte-mf637-sucks</link>
		<comments>http://blog.leafduo.com/03/zte-mf637-sucks#comments</comments>
		<pubDate>Sun, 18 Jul 2010 13:31:03 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Snow Leopard]]></category>
		<category><![CDATA[ZTE]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=227</guid>
		<description><![CDATA[今天老爸弄回来一张联通上网卡，ZTE MF637，于是插上试试，过了一会识别出来一个U盘，里面是驱动，.mpkg 的，很激动，于是装上了，然后就悲剧了…… 装好之后能上网了，速度不错（废话），但是打不开 Netword Preferences 了……以为重启能解决，于是重启了，然后卡在苹果标的地方了，一直转啊转啊……启动都启动不起来了…… （省略中间各种尝试万字……） 于是祭出雪豹的光盘，安装……安装过程跟第一次安装不一样，完全是无需人工干预的，于是我很不爽，打开 log 一直在看，安装了好一会之后 OK 了，重启之后竟然什么都没丢（我以为像 Windows 一样程序起码没了），应用程序都没丢，文档当然也没丢，只是 Xcode 没法运行了，因为操作系统版本太低……于是现在正在下载接近 1GB 的更新，10.6->10.6.4…… ZTE（中兴）还是好不靠谱啊……运行了一年多没见过四国（据说现在五国了？）的系统让它一下搞崩溃了……还是苹果靠谱（在说天线门吗？），插进安装盘一会就恢复如初。要说原因，是那个驱动不支持雪豹，把系统中的一个文件（libcurl.4.dylib）替换成自己的版本了，而它的版本没有 64 位的二进制，于是崩溃了……你装个驱动起码检测一下当前操作系统版本吧…… 考据党移步这里…… 中兴你浪费我一下午！ PS：新的上网卡似乎有支持雪豹的驱动，网上似乎也有下载。]]></description>
			<content:encoded><![CDATA[<p>今天老爸弄回来一张联通上网卡，ZTE MF637，于是插上试试，过了一会识别出来一个U盘，里面是驱动，.mpkg 的，很激动，于是装上了，然后就悲剧了……</p>
<p>装好之后能上网了，速度不错（废话），但是打不开 Netword Preferences 了……以为重启能解决，于是重启了，然后卡在苹果标的地方了，一直转啊转啊……启动都启动不起来了……</p>
<p>（省略中间各种尝试万字……）</p>
<p>于是祭出雪豹的光盘，安装……安装过程跟第一次安装不一样，完全是无需人工干预的，于是我很不爽，打开 log 一直在看，安装了好一会之后 OK 了，重启之后竟然什么都没丢（我以为像 Windows 一样程序起码没了），应用程序都没丢，文档当然也没丢，只是 Xcode 没法运行了，因为操作系统版本太低……于是现在正在下载接近 1GB 的更新，10.6->10.6.4……</p>
<p>ZTE（中兴）还是好不靠谱啊……运行了一年多没见过四国（据说现在五国了？）的系统让它一下搞崩溃了……还是苹果靠谱（在说天线门吗？），插进安装盘一会就恢复如初。要说原因，是那个驱动不支持雪豹，把系统中的一个文件（libcurl.4.dylib）替换成自己的版本了，而它的版本没有 64 位的二进制，于是崩溃了……你装个驱动起码检测一下当前操作系统版本吧……</p>
<p>考据党移步<a href="http://www.davidglover.org/2009/09/t-mobile-usb-stick-120-zte-mf626-on-snow-leopard.html">这里</a>……</p>
<p>中兴你浪费我一下午！</p>
<p>PS：新的上网卡似乎有支持雪豹的驱动，网上似乎也有下载。 <img src='http://blog.leafduo.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/03/zte-mf637-sucks/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>搬到 (mt) 啦</title>
		<link>http://blog.leafduo.com/22/move-to-mt</link>
		<comments>http://blog.leafduo.com/22/move-to-mt#comments</comments>
		<pubDate>Mon, 29 Mar 2010 09:15:22 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[DreamHost]]></category>
		<category><![CDATA[host]]></category>
		<category><![CDATA[mt]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=224</guid>
		<description><![CDATA[历经千辛万苦之后，我终于搬到 Media Temple 了…… 具体就不说了，目前还有点小问题，不过没大碍，大家看到这篇 post 就说明基本正常啦。]]></description>
			<content:encoded><![CDATA[<p>历经千辛万苦之后，我终于搬到 <a href="http://mediatemple.net/">Media Temple</a> 了……</p>
<p>具体就不说了，目前还有点小问题，不过没大碍，大家看到这篇 post 就说明基本正常啦。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/22/move-to-mt/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>开学前一天</title>
		<link>http://blog.leafduo.com/29/one-day-before-study</link>
		<comments>http://blog.leafduo.com/29/one-day-before-study#comments</comments>
		<pubDate>Sun, 28 Feb 2010 14:39:29 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=223</guid>
		<description><![CDATA[今天是大一下开学前一天，宿舍里的网络该买卡续了，我们这是包月的卡，每月换。 我们宿舍就一个能用校园网上网的，而且旁边的超市没开，于是就准备去淘宝买，看好货，拍下，付款，卡通余额不足……不知道啥时候卡上已经没钱了…… 于是去存钱，我是带了点现金来学校，没有往卡上打钱，于是冒雪来到新主楼，插卡，输密码，然后发现存款和取款那里都打着叉号……仔细一看发现，ATM 机上写着“本积攒不提供存款和取款功能”，不能存款取款叫什么存取款一体机？我抑郁。 于是冒着大学来到大运村招行，插卡，输密码，这 ATM 机漏电！每输一个数字被电一下，我被电 n 下后终于把钱存好了，出门，突然想再存 100，有前车之鉴，准备换一个 ATM 机，不料这个 ATM 机的触摸屏极其难用，废了九牛二虎之类终于存上了 100 块钱…… 回去的路上准备买个包子吃，然后人家说卖完了…… 希望现在把霉运都用完吧……开学了，加油！]]></description>
			<content:encoded><![CDATA[<p>今天是大一下开学前一天，宿舍里的网络该买卡续了，我们这是包月的卡，每月换。</p>
<p>我们宿舍就一个能用校园网上网的，而且旁边的超市没开，于是就准备去淘宝买，看好货，拍下，付款，卡通余额不足……不知道啥时候卡上已经没钱了……</p>
<p>于是去存钱，我是带了点现金来学校，没有往卡上打钱，于是冒雪来到新主楼，插卡，输密码，然后发现存款和取款那里都打着叉号……仔细一看发现，ATM 机上写着“本积攒不提供存款和取款功能”，不能存款取款叫什么存取款一体机？我抑郁。</p>
<p>于是冒着大学来到大运村招行，插卡，输密码，这 ATM 机漏电！每输一个数字被电一下，我被电 n 下后终于把钱存好了，出门，突然想再存 100，有前车之鉴，准备换一个 ATM 机，不料这个 ATM 机的触摸屏极其难用，废了九牛二虎之类终于存上了 100 块钱……</p>
<p>回去的路上准备买个包子吃，然后人家说卖完了……</p>
<p>希望现在把霉运都用完吧……开学了，加油！</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/29/one-day-before-study/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>新网 -&gt; GoDaddy</title>
		<link>http://blog.leafduo.com/13/xinnet-godaddy</link>
		<comments>http://blog.leafduo.com/13/xinnet-godaddy#comments</comments>
		<pubDate>Fri, 26 Feb 2010 08:59:13 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[GoDaddy]]></category>
		<category><![CDATA[xinnet]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=222</guid>
		<description><![CDATA[我也在国内呆烦了，虽然没有国内主机，但是域名放在国内还是有点……于是搬出去了。 先来看此人的悲惨经历：http://blog.s135.com/domain_transfer/ （仅供对照用……） 我以为代理商得捞一笔钱吧，不捞钱的话起码也得让你寄点材料啥的，比如申请表啦，身份证复印件啦，然后就是等邮政的速度……（上面链接里用快递公司寄过去是否违反邮政专营的规定？）然后等待代理商给你转移码，之后就简单了，GoDaddy 转入，5 天的等待就 OK 了。 没想到这个代理商出奇的有良，我问：“新网域名转出需要啥手续？”他说不需要手续，然后问我域名和邮箱，之后转移码就出现在我的邮箱里了……我顿时就震惊了……瞬间转入 GoDaddy，等待 5 天，生效了…… 现在查 whois 就已经是 GoDaddy 下面的了。 强烈曝光下这有良的代理商：http://yikay.taobao.com/ （广告自重……） 有良的代理为我省了一年的域名费用，邮寄资料的费用和好多天的时间，thx。 PS: GoDaddy 的后台好像不支持 Chrome，我不是很喜欢它那个后台。]]></description>
			<content:encoded><![CDATA[<p>我也在国内呆烦了，虽然没有国内主机，但是域名放在国内还是有点……于是搬出去了。</p>
<p>先来看此人的悲惨经历：<a href="http://blog.s135.com/domain_transfer/">http://blog.s135.com/domain_transfer/</a> （仅供对照用……）</p>
<p>我以为代理商得捞一笔钱吧，不捞钱的话起码也得让你寄点材料啥的，比如申请表啦，身份证复印件啦，然后就是等邮政的速度……（上面链接里用快递公司寄过去是否违反邮政专营的规定？）然后等待代理商给你转移码，之后就简单了，GoDaddy 转入，5 天的等待就 OK 了。</p>
<p>没想到这个代理商出奇的有良，我问：“新网域名转出需要啥手续？”他说不需要手续，然后问我域名和邮箱，之后转移码就出现在我的邮箱里了……我顿时就震惊了……瞬间转入 GoDaddy，等待 5 天，生效了……</p>
<p>现在查 whois 就已经是 GoDaddy 下面的了。</p>
<p>强烈曝光下这有良的代理商：<a href="http://yikay.taobao.com/">http://yikay.taobao.com/</a> （广告自重……）</p>
<p>有良的代理为我省了一年的域名费用，邮寄资料的费用和好多天的时间，thx。</p>
<p>PS: GoDaddy 的后台好像不支持 Chrome，我不是很喜欢它那个后台。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/13/xinnet-godaddy/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>用 mod_rewrite 重定向 WordPress 的 RSS</title>
		<link>http://blog.leafduo.com/34/redirect-rss-of-wordpress-using-mod_rewrite</link>
		<comments>http://blog.leafduo.com/34/redirect-rss-of-wordpress-using-mod_rewrite#comments</comments>
		<pubDate>Fri, 19 Feb 2010 15:36:34 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=221</guid>
		<description><![CDATA[不知道为啥，原来的重定向失效了…… 似乎现在没有什么好用的重定向插件，要么是不支持 Feedsky，要么没法用自定义域名，咱不太会 PHP，也懒得 hack 了，所以就祭出 Apache 来做这件事，当然 mod_rewrite 是少不了了。 先说方法，后说其他。在 .htaccess 的最上面加这么几行： 1 2 3 4 5 6 7 8 9 10 # BEGIN user-defined &#60;IfModule mod_rewrite.c&#62; RewriteEngine On RewriteBase / RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner&#124;FeedValidator&#124;feedsky) [NC] RewriteCond %{REQUEST_URI} ^/feed.* [NC] &#8230; <a href="http://blog.leafduo.com/34/redirect-rss-of-wordpress-using-mod_rewrite">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>不知道为啥，原来的重定向失效了……</p>
<p>似乎现在没有什么好用的重定向插件，要么是不支持 Feedsky，要么没法用自定义域名，咱不太会 PHP，也懒得 hack 了，所以就祭出 Apache 来做这件事，当然 mod_rewrite 是少不了了。</p>
<p>先说方法，后说其他。在 .htaccess 的最上面加这么几行：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #adadad; font-style: italic;"># BEGIN user-defined</span>
&lt;<span style="color: #000000; font-weight:bold;">IfModule</span> mod_rewrite.c&gt;
<span style="color: #00007f;">RewriteEngine</span> <span style="color: #0000ff;">On</span>
<span style="color: #00007f;">RewriteBase</span> /
<span style="color: #00007f;">RewriteCond</span> %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator|feedsky) [NC]
<span style="color: #00007f;">RewriteCond</span> %{REQUEST_URI} ^/feed.* [NC]
<span style="color: #00007f;">RewriteRule</span> .* http://feed.leafduo.com/ [NC,L,R=<span style="color: #ff0000;">301</span>]
&lt;/<span style="color: #000000; font-weight:bold;">IfModule</span>&gt;
&nbsp;
<span style="color: #adadad; font-style: italic;">#END user-defined</span></pre></td></tr></table></div>

<p>感觉用 mod_rewrite 做这件事比较合适，不用经过 WP 不说，效果还比较好，所有访问原先 feed 的都被重定向了。</p>
<p>大家都知道，Feedsky 爬虫的 UA 是这样的："Mozilla 5.0 (compatible; Feedsky 1.0; http://www.feedsky.com)"，所以我们就能通过过滤 UA 来分别对待爬虫和其他访问者，对于爬虫不做重定向，其他访问者一律重定向。</p>
<p>需要一点正则表达式知识和一点 Apache 的配置，先是参考了<a href="http://www.askapache.com/htaccess/redirecting-wordpress-feeds-to-feedburner.html">这个</a>，说了一大堆，没仔细看，然后准备自己写。找到一个 mod_rewrite 的 <a href="http://borkweb.com/story/apache-rewrite-cheatsheet">Cheat Sheet</a>，感觉比 Apache 的文档好懂多了。</p>
<p>然后就写出来了，一开始是放在了 .htaccess 的最下面，发现怎么都不起作用，后来挪到最上面了，应该是跟 WP-SuperCache 的 rewrite 规则冲突了，看到它的规则里有带 [L] 的。</p>
<p>目前看来工作良好。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/34/redirect-rss-of-wordpress-using-mod_rewrite/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mac 下将 CNNIC 根证书设为不信任</title>
		<link>http://blog.leafduo.com/32/disable-cnnic-root-on-mac</link>
		<comments>http://blog.leafduo.com/32/disable-cnnic-root-on-mac#comments</comments>
		<pubDate>Wed, 27 Jan 2010 13:43:32 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[CA]]></category>
		<category><![CDATA[CNNIC]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=220</guid>
		<description><![CDATA[只说方法，不说其他。 打开 Keychain Access.app（在 Utilities 里面），点左边 System Roots，找到 CNNIC ROOT，双击点开，展开 Trust，When using this certificate 改成 Never Trust，关闭窗口，会让你输入密码，然后就 OK 了。点开 https://www.enum.cn/ 测试一下，Safari 会让你点一堆 Continue， Chrome 直接就是一片红，这样就 OK 了。 配图一张：（不要问为什么显示不出来） From blog 为啥呢，可能 CNNIC 做了太多不该做的吧。 PS：Windows 的同学来这里看吧（感谢原作者）。]]></description>
			<content:encoded><![CDATA[<p>只说方法，不说其他。</p>
<p>打开 Keychain Access.app（在 Utilities 里面），点左边 System Roots，找到 CNNIC ROOT，双击点开，展开 Trust，When using this certificate 改成 Never Trust，关闭窗口，会让你输入密码，然后就 OK 了。点开 <a href="https://www.enum.cn/">https://www.enum.cn/</a> 测试一下，Safari 会让你点一堆 Continue， Chrome 直接就是一片红，这样就 OK 了。</p>
<p>配图一张：（不要问为什么显示不出来）</p>
<table style="width:auto;">
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/QLtCv1iO3E6oWhLqWY1KNQ?feat=embedwebsite"><img src="http://lh5.ggpht.com/_7Y_7M0vQVWs/S2BC02u1uOI/AAAAAAAACSw/vjAHgZ7SOvk/s400/Screen%20shot%202010-01-27%20at%209.40.40%20PM.png" /></a></td>
</tr>
<tr>
<td style="font-family:arial,sans-serif; font-size:11px; text-align:right">From <a href="http://picasaweb.google.com/LeafDuo/Blog?feat=embedwebsite">blog</a></td>
</tr>
</table>
<p>为啥呢，可能 CNNIC 做了太多不该做的吧。</p>
<p>PS：Windows 的同学来<a href="http://blog.lzzxt.com/394">这里</a>看吧（感谢原作者）。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/32/disable-cnnic-root-on-mac/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2009 总结 &amp; 2010 展望（伪）</title>
		<link>http://blog.leafduo.com/04/2009-2010-fake</link>
		<comments>http://blog.leafduo.com/04/2009-2010-fake#comments</comments>
		<pubDate>Fri, 01 Jan 2010 13:58:04 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=219</guid>
		<description><![CDATA[2009 年 1 月 3 日，考完保送考试，之后知道结果，之后玩到 9 月，嗯，这总结够简单，要说上半年做了什么正事的话，或许就是拿到了驾照了吧？下半年，开学了，忙碌，不过也很快乐，不过觉得很多事情没有做好，很多该做的事情没有做。 2010 年，先考好期末考试吧……其他的，好好学习，天天向上吧。提高效率，学的更深更多，省下更多时间，用来干啥呢，嗯，当然是玩。 已经说了是“伪”，所以还是等寒假再来写总结与展望吧，现在还是专心搞好期末考试。 喜欢这个默认主题，就是 font-size 应该调整一下，来适应中文。 祝福我吧。]]></description>
			<content:encoded><![CDATA[<p>2009 年 1 月 3 日，考完保送考试，之后知道结果，之后玩到 9 月，嗯，这总结够简单，要说上半年做了什么正事的话，或许就是拿到了驾照了吧？下半年，开学了，忙碌，不过也很快乐，不过觉得很多事情没有做好，很多该做的事情没有做。</p>
<p>2010 年，先考好期末考试吧……其他的，好好学习，天天向上吧。提高效率，学的更深更多，省下更多时间，用来干啥呢，嗯，当然是玩。</p>
<p>已经说了是“伪”，所以还是等寒假再来写总结与展望吧，现在还是专心搞好期末考试。</p>
<p>喜欢这个默认主题，就是 font-size 应该调整一下，来适应中文。</p>
<p>祝福我吧。 <img src='http://blog.leafduo.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/04/2009-2010-fake/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google 翻译活动</title>
		<link>http://blog.leafduo.com/40/google-translate-event</link>
		<comments>http://blog.leafduo.com/40/google-translate-event#comments</comments>
		<pubDate>Fri, 18 Dec 2009 09:06:40 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[buaa]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Camp]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=217</guid>
		<description><![CDATA[（可能是手残了，这篇忘了发出来，这个是××天前写的……） Google 翻译发布了一些新功能，于是乎 Google 就找北航和北邮的 Google Camp 的一些人去参加一个活动，试用&#038;推广下。作为北航 Google Camp 的一员，我有幸去 Google 中国总部参加活动……时间定的是上周四。 一大早我们一行人就起床了，7:30 就到绿园东北角集合了，然后我们进行了一个大活动前的小活动，这个活动是由猥琐的某人提出的──用落叶摆出 Google Camp 的造型，恰逢那天是 Thanks Giving Day，所以我们又摆了一个简略的 Thanks Giving 出来。活动比想象的顺利，没有收到保安、大妈的阻拦，落叶也顺利地收集到了。我有一些真相放在下面，更多真相请看北航 GC 校内（人人？）相册。 然后我们就步行（其实是跑步，因为时间有点晚……）前往 Google 中国总部，进去之后领了一张贴纸，贴在身上，上面有名字和访问时间，走的时候贴在大厅里的一个贴满贴纸的圆球上……等待了一会之后（北邮有人还没到），我们穿过一个个门，刷开门禁，进了一个会议室。 有几个工程师和一个领我们进来的 MM 跟我们一起活动，首先是一个台湾工程师讲人生经验，讲了两条，是第一条和第二条。然后另一个工程师来讲解&#038;演示 Google 翻译的新功能。之后是个小活动，6人一组，要求大家根据发的纸条上的任务做一个小表演，都是跟 Google 翻译相关的任务，我们的表演是×××××××；然后 MM 说要我们做翻译策划，要跟 Google 翻译有关，然后如果做的好的话会实现出来，我们组的策划是××××××××。最后是发 &#8230; <a href="http://blog.leafduo.com/40/google-translate-event">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>（可能是手残了，这篇忘了发出来，这个是××天前写的……）</p>
<p>Google 翻译发布了一些<a href="http://googlechinablog.com/2009/11/google_24.html">新功能</a>，于是乎 Google 就找北航和北邮的 Google Camp 的一些人去参加一个活动，试用&#038;推广下。作为北航 Google Camp 的一员，我有幸去 Google 中国总部参加活动……时间定的是上周四。</p>
<p>一大早我们一行人就起床了，7:30 就到<a href="http://maps.google.com/maps?q=39.98462,116.34768&#038;num=1&#038;sll=39.904667,116.408198&#038;sspn=0.548898,1.024475&#038;ie=UTF8&#038;ll=39.984605,116.34765&#038;spn=0.001328,0.002838&#038;z=19&#038;iwloc=near">绿园东北角</a>集合了，然后我们进行了一个大活动前的小活动，这个活动是由猥琐的<a href="http://twitter.com/victorhu_cn">某人</a>提出的──用落叶摆出 Google Camp 的造型，恰逢那天是 Thanks Giving Day，所以我们又摆了一个简略的 Thanks Giving 出来。活动比想象的顺利，没有收到保安、大妈的阻拦，落叶也顺利地收集到了。我有一些真相放在下面，更多真相请看<a href="http://renren.com/profile.do?id=280450736">北航 GC 校内</a>（人人？）<a href="http://photo.renren.com/getalbum.do?id=341734646&#038;owner=280450736&#038;ref=minifeed">相册</a>。</p>
<p>然后我们就步行（其实是跑步，因为时间有点晚……）前往 <a href="http://maps.google.com/maps/mm?ie=UTF8&#038;hl=en&#038;ll=39.993236,116.32984&#038;spn=0.001327,0.00386&#038;z=19">Google 中国总部</a>，进去之后领了一张贴纸，贴在身上，上面有名字和访问时间，走的时候贴在大厅里的一个贴满贴纸的圆球上……等待了一会之后（北邮有人还没到），我们穿过一个个门，刷开门禁，进了一个会议室。</p>
<p>有几个工程师和一个领我们进来的 MM 跟我们一起活动，首先是一个台湾工程师讲人生经验，讲了两条，是第一条和第二条。然后另一个工程师来讲解&#038;演示 Google 翻译的<a href="http://googlechinablog.com/2009/11/google_24.html">新功能</a>。之后是个小活动，6人一组，要求大家根据发的纸条上的任务做一个小表演，都是跟 Google 翻译相关的任务，我们的表演是×××××××；然后 MM 说要我们做翻译策划，要跟 Google 翻译有关，然后如果做的好的话会实现出来，我们组的策划是××××××××。最后是发 Google Logo 的 T-shirt，我领了两件，一件 M 号的绿色，一件 XL 号的红色，然后就结束啦。我这的真相还是不多，看真相还是移步<a href="http://renren.com/profile.do?id=280450736">北航 GC 校内</a>的<a href="http://photo.renren.com/getalbum.do?id=341755916&#038;owner=280450736&#038;ref=minifeed">相册</a>。</p>
<p>Google 没管饭，我们自己花钱吃的中午饭……（说是人太多……）</p>
<p>说点随便看见的东西：Google 的冬枣很好吃，我回来都想买冬枣了……忘了多吃点。门禁很多，似乎到处都是。标识一般都是双语的，也有的只有英语，也有些只有中文。会议室门外的打印机叫王羲之，会议室对面的房间（似乎是工作室之类）门上牌子上写着生化危机（我觉得可以写个生化危险，再画上医院里生化危险的标志）。</p>
<p>明天策划被选中的组（北航的另一个组）的成员去 Google 吃饭&#038;商量具体活动情况，杯具啊……</p>
<p>PS：你看我给了 Google Camp 的校内多少链接，给了 Google 多少链接，可不可以给劳务费？</p>
<p><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&#038;captions=1&#038;hl=en_US&#038;feat=flashalbum&#038;RGB=0x000000&#038;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FLeafDuo%2Falbumid%2F5410967076316253169%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></p>
<p><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&#038;captions=1&#038;hl=en_US&#038;feat=flashalbum&#038;RGB=0x000000&#038;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FLeafDuo%2Falbumid%2F5410966824692161953%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/40/google-translate-event/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Invitation</title>
		<link>http://blog.leafduo.com/47/invitation</link>
		<comments>http://blog.leafduo.com/47/invitation#comments</comments>
		<pubDate>Mon, 23 Nov 2009 13:00:47 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[English]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=216</guid>
		<description><![CDATA[Dear Miss Alice, Our team is going to publish a new product, something totally new. The product is about a new way of advertisement publishing system based on the Internet, a cross-platform client software and, most important, a new thought &#8230; <a href="http://blog.leafduo.com/47/invitation">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Dear Miss Alice,<br />
  Our team is going to publish a new product, something totally new. The product is about a new way of advertisement publishing system based on the Internet, a cross-platform client software and, most important, a new thought about the relationship of people, especially friends and families. Other aspects, like the future of our team, will be involved.<br />
We have decided to have a party in honor of the occasion. We sincerely hope you can attend the party, may I have the honor of your company? The reception will be held on the second floor of  XXX Hotel, which is located in the downtown of Beijing, on next Sunday's evening. The party will last approximately 3 hours, from 6p.m. to 9p.m. I hope you're not too busy to come. Please confirm your participation at your earliest convenience, The favor of a reply is requested.<br />
                                                                                            XXX team</p>
<p>PS: This is my English homework.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/47/invitation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>学焊接&amp;别人的杯具</title>
		<link>http://blog.leafduo.com/39/beiju</link>
		<comments>http://blog.leafduo.com/39/beiju#comments</comments>
		<pubDate>Thu, 19 Nov 2009 15:14:39 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[beiju]]></category>
		<category><![CDATA[buaa]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=215</guid>
		<description><![CDATA[今天电子科技协会教焊接，虽然大部分人都是二系的，但我还是去凑了凑热闹，交三块钱，给元件和电路图，然后就可以开工焊接了，焊出来是两个LED交替亮的电路板，自我感觉良好，有图有真相（没有效果图，效果要接3V电源，接两节干电池样子太猥琐……在实验室忘照了）： 另贴他人杯具一枚，希望不要发生在我身上，不备份的后果（晚上拿手电+G1照的，谅解……）： From 焊接]]></description>
			<content:encoded><![CDATA[<p>今天电子科技协会教焊接，虽然大部分人都是二系的，但我还是去凑了凑热闹，交三块钱，给元件和电路图，然后就可以开工焊接了，焊出来是两个LED交替亮的电路板，自我感觉良好，有图有真相（没有效果图，效果要接3V电源，接两节干电池样子太猥琐……在实验室忘照了）：</p>
<p><embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&#038;captions=1&#038;hl=en_US&#038;feat=flashalbum&#038;RGB=0x000000&#038;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2FLeafDuo%2Falbumid%2F5405829388407222833%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></p>
<p>另贴他人杯具一枚，希望不要发生在我身上，不备份的后果（晚上拿手电+G1照的，谅解……）：</p>
<table style="width:auto;">
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/TW84xHQfD3P9sA3ZEsWAcg?feat=embedwebsite"><img src="http://lh6.ggpht.com/_7Y_7M0vQVWs/SwVf8MLgIPI/AAAAAAAABi4/MPJUMaMnuoU/s400/2009-11-19%2022.34.48.jpg" /></a></td>
</tr>
<tr>
<td style="font-family:arial,sans-serif; font-size:11px; text-align:right">From <a href="http://picasaweb.google.com/LeafDuo/jogWUG?feat=embedwebsite">焊接</a></td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/39/beiju/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PDFViewer on G1</title>
		<link>http://blog.leafduo.com/20/pdfviewer-on-g1</link>
		<comments>http://blog.leafduo.com/20/pdfviewer-on-g1#comments</comments>
		<pubDate>Sat, 12 Sep 2009 15:02:20 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[G1]]></category>
		<category><![CDATA[HTC]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=214</guid>
		<description><![CDATA[HTC 开发了一个基于 Adobe Reader LE 2.5 的 PDFViewer，不过 G1 上直接安装这个 apk 不管用，说是只能 PDFViewer 只能运行在 HTC 设备上。我说 HTC 啊，G1 不是自家的孩子啊……歧视啊…… 不过还是有强人有了 hack 的办法： 首先下载 libpdfreader.so、FilePicker.apk、PDFViewer.apk 三个文件，然后把前两个文件分别放到 /system/lib、/system/app 就 OK 了（记得先 remount /system），最后 PDFViewer.apk 按正常方法安装就行，可以用 adb，也可以先复制到 SD 卡，再用 terminal 复制到位置。 下载 &#038; &#8230; <a href="http://blog.leafduo.com/20/pdfviewer-on-g1">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>HTC 开发了一个基于 Adobe Reader LE 2.5 的 PDFViewer，不过 G1 上直接安装这个 apk 不管用，说是只能 PDFViewer  只能运行在 HTC 设备上。我说 HTC 啊，G1 不是自家的孩子啊……歧视啊……</p>
<p>不过还是有强人有了 hack 的办法：</p>
<p>首先下载 libpdfreader.so、FilePicker.apk、PDFViewer.apk 三个文件，然后把前两个文件分别放到 /system/lib、/system/app 就 OK 了（记得先 remount /system），最后 PDFViewer.apk 按正常方法安装就行，可以用 adb，也可以先复制到 SD 卡，再用 terminal 复制到位置。</p>
<p>下载 &#038; 参考：</p>
<p><a href="http://forum.xda-developers.com/showthread.php?p=3782880">http://forum.xda-developers.com/showthread.php?p=3782880</a><br />
<a href="http://strazzere.com/blog/?p=266">http://strazzere.com/blog/?p=266</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/20/pdfviewer-on-g1/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Blog 小搬家</title>
		<link>http://blog.leafduo.com/39/blog-moved-2</link>
		<comments>http://blog.leafduo.com/39/blog-moved-2#comments</comments>
		<pubDate>Sun, 06 Sep 2009 06:41:39 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[blogging]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=213</guid>
		<description><![CDATA[Blog 小搬家一次，搬到了 http://blog.leafduo.com/，原先的地址做了 301 重定向，不过还是劳烦有链接的同学修改一下，万分感谢。 传说中的 feedsky 验证：8e9446ad]]></description>
			<content:encoded><![CDATA[<p>Blog 小搬家一次，搬到了 <a href="http://blog.leafduo.com/">http://blog.leafduo.com/</a>，原先的地址做了 301 重定向，不过还是劳烦有链接的同学修改一下，万分感谢。</p>
<p>传说中的 feedsky 验证：8e9446ad</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/39/blog-moved-2/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Xinnet sucks &amp; OpenDNS rocks</title>
		<link>http://blog.leafduo.com/42/xinnet-sucks-opendns-rocks</link>
		<comments>http://blog.leafduo.com/42/xinnet-sucks-opendns-rocks#comments</comments>
		<pubDate>Sun, 06 Sep 2009 06:35:42 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[OpenDNS]]></category>
		<category><![CDATA[xinnet]]></category>

		<guid isPermaLink="false">http://blog.leafduo.com/?p=212</guid>
		<description><![CDATA[最近折腾了折腾，发现了几个问题。 leafduo.com 是在新网注册的，然后每次改 DNS 改 A record 当然都得去新网那里。IE only 的管理界面就先不说了，这个管理的逻辑也非常有问题……首先如果你给顶级域加了 DNS 之后就不能删除了，造成顶级域有 5 个 DNS 服务器（新网两个，DH 三个），这也就算了，不过最让人恶心的是自己添加的 DNS 服务器不起作用，还是只有新网的两个 DNS 起作用。添加之后不能删除，而且又不起作用…… 顺便问一下哪个国外的注册商服务比较好，价格也比较合理，准备域名到期的时候转出去。 之后又发现了 OpenDNS 的一个很有用的小功能──CacheCheck，能手动刷新 DNS，而不管 TTL 之类的东西，这样当你改了自己网站的 DNS 服务器或者 A 记录的时候，手动刷新一下就可以看到结果了，而不用等 N 个小时全球刷 DNS。当然不用 OpenDNS 的还得等 DNS 刷新的。]]></description>
			<content:encoded><![CDATA[<p>最近折腾了折腾，发现了几个问题。</p>
<p>leafduo.com 是在<a href="http://www.xinnet.com/index.html">新网</a>注册的，然后每次改 DNS 改 A record 当然都得去新网那里。IE only 的管理界面就先不说了，这个管理的逻辑也非常有问题……首先如果你给顶级域加了 DNS 之后就不能删除了，造成顶级域有 5 个 DNS 服务器（新网两个，DH 三个），这也就算了，不过最让人恶心的是自己添加的 DNS 服务器不起作用，还是只有新网的两个 DNS 起作用。添加之后不能删除，而且又不起作用……</p>
<p>顺便问一下哪个国外的注册商服务比较好，价格也比较合理，准备域名到期的时候转出去。</p>
<p>之后又发现了 <a href="http://www.opendns.com/">OpenDNS</a> 的一个很有用的小功能──<a href="http://www.opendns.com/support/cache/">CacheCheck</a>，能手动刷新 DNS，而不管 TTL 之类的东西，这样当你改了自己网站的 DNS 服务器或者 A 记录的时候，手动刷新一下就可以看到结果了，而不用等 N 个小时全球刷 DNS。当然不用 OpenDNS 的还得等 DNS 刷新的。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/42/xinnet-sucks-opendns-rocks/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>某著名搜索引擎被封半小时</title>
		<link>http://blog.leafduo.com/18/i-have-nothing-to-say</link>
		<comments>http://blog.leafduo.com/18/i-have-nothing-to-say#comments</comments>
		<pubDate>Thu, 03 Sep 2009 09:41:18 +0000</pubDate>
		<dc:creator>Leaf Duo</dc:creator>
				<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://leafduo.com/blog/?p=211</guid>
		<description><![CDATA[某著名搜索引擎被封半小时，包括搜索引擎及旗下各项服务。 大概是从今天下午 5 点到 5 点半。 我不知道某些人的脑子到底被什么东西挤了。]]></description>
			<content:encoded><![CDATA[<p>某著名搜索引擎被封半小时，包括搜索引擎及旗下各项服务。</p>
<p>大概是从今天下午 5 点到 5 点半。</p>
<p>我不知道某些人的脑子到底被什么东西挤了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.leafduo.com/18/i-have-nothing-to-say/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
