<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:thr='http://purl.org/syndication/thread/1.0' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-2447785442202646044</atom:id><lastBuildDate>Fri, 18 Jun 2010 14:05:15 +0000</lastBuildDate><title>Billy's Weblog</title><description></description><link>http://blog.billychow.me/</link><managingEditor>noreply@blogger.com (Billy)</managingEditor><generator>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-2379532980389242444</guid><pubDate>Sat, 22 May 2010 08:14:00 +0000</pubDate><atom:updated>2010-05-22T16:14:14.160+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Mind Hacks</category><title>Money</title><description>&lt;blockquote&gt;   &lt;p&gt;Money is like gasoline during a road trip. You don’t want to run out of gas on your trip, but you’re not doing a tour of gas stations. You have to pay attention to money, but it shouldn’t be about the money. – Tim O’Reilly&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-2379532980389242444?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/05/money.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-2024384670280306566</guid><pubDate>Sat, 15 May 2010 16:36:00 +0000</pubDate><atom:updated>2010-05-16T00:45:08.060+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Internet</category><title>Dropbox was blocked in China</title><description>&lt;p&gt;Ah…yes…&lt;/p&gt;  &lt;p&gt;Finally, it had happened before a few days ago. As you know, every popular services will be blocked in this country. Though I knew that it’s only the problem of time. Therefore, I don’t want to talk anything about this country. It’s not that i don’t want to, but i can’t.&lt;/p&gt;  &lt;p&gt;Fortunately, I’ve just bought a foreign VPS. So, I have set a proxy such as VPN up for myself. I don’t care anymore about if the site was blocked. It saved a lot of time for me.&lt;/p&gt;  &lt;p&gt;I’m feeling so good!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-2024384670280306566?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/05/dropbox-was-blocked-in-china.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-3165151148775107679</guid><pubDate>Tue, 11 May 2010 20:14:00 +0000</pubDate><atom:updated>2010-05-12T04:16:14.773+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Life</category><title>A sleepless night</title><description>&lt;p&gt;Over and over again, I have just got up several times but still cannot fall asleep…&lt;/p&gt;  &lt;p&gt;What happened to me? Maybe I need to do some work until I can’t do anything exhaustedly?!&lt;/p&gt;  &lt;p&gt;Time passed so fast!!!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-3165151148775107679?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/05/sleepless-night.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-8678652121499036386</guid><pubDate>Fri, 26 Mar 2010 13:40:00 +0000</pubDate><atom:updated>2010-03-26T23:28:36.065+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Mobile</category><category domain='http://www.blogger.com/atom/ns#'>Android</category><title>35 Useful Applications of Android for Chinese Geeks</title><description>&lt;blockquote&gt;   &lt;p&gt;HTC G1 作为我的第一款智能手机，已经使用了半年了，在这半年的时间，Android 突飞猛进，从 Hero, Droid, N1 到 HTC G4, 从 Android 1.6 到 2.1，使我对 Android 平台有了更多的期待，我坚信 Android 超过 iPhone 只是时间上的问题，在我看来，这就如同开放与封闭之间的斗争一样，最后占有优势的必然是开放的一方。&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font color="#666666"&gt;以下软件是我经过多款同类软件的使用后，根据个人偏好所精选的一批软件，希望能与更多的朋友进行分享，如果你有更好的建议及意见，欢迎回复，或给我邮件。&lt;/font&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Aldiko      &lt;br /&gt;一款不错的阅读软件，有大量免费的电子书可直接下载，用户体验不错。 &lt;/li&gt;    &lt;li&gt;aLogcat      &lt;br /&gt;不需要 DDMS Logcat，在手机上也可直接查看日志信息，软件简洁，但是功能实用，可以根据 Log 级别方便过滤日志信息，随时查看调试日志。 &lt;/li&gt;    &lt;li&gt;AndChat      &lt;br /&gt;Android 上的 IRC 客户端，放了很久，但没用过。 &lt;/li&gt;    &lt;li&gt;AndFTP      &lt;br /&gt;FTP 客户端，对中文支持不太好，有时候会乱码。 &lt;/li&gt;    &lt;li&gt;AnFetion      &lt;br /&gt;中国移动飞信客户端（非官方），功能没有官方全面，但是够用，且支持 WIFI。 &lt;/li&gt;    &lt;li&gt;aQQ      &lt;br /&gt;目前最好的 Android 平台原生 QQ。（非官方） &lt;/li&gt;    &lt;li&gt;Astrid      &lt;br /&gt;GTD 党必备 TODO 软件，支持 RememberTheMilk 双向同步。 &lt;/li&gt;    &lt;li&gt;ASTRO      &lt;br /&gt;一款强大的文件管理器，还有其它一些功能。 &lt;/li&gt;    &lt;li&gt;aTrackDog      &lt;br /&gt;为已安装的应用建立追踪数据库，可检查哪些应用已有更新可用。 &lt;/li&gt;    &lt;li&gt;Autostarts      &lt;br /&gt;系统优化必备软件，可定制开机启动项和基于事件的启动项。 &lt;/li&gt;    &lt;li&gt;Bluetooth File Transfer      &lt;br /&gt;解决 Android 蓝牙互传文件的问题。 &lt;/li&gt;    &lt;li&gt;ConnectBot      &lt;br /&gt;非常实用的 SSH 客户端。 &lt;/li&gt;    &lt;li&gt;Contact2Sim      &lt;br /&gt;可将联系人导入至 SIM 卡。 &lt;/li&gt;    &lt;li&gt;Discover Pro      &lt;br /&gt;基于 Flex ，开启一个 Web 服务，可以直接通过浏览器访问，访问文件系统，下载/上传等操作。 &lt;/li&gt;    &lt;li&gt;Documents To Go      &lt;br /&gt;支持 Word, PDF 等格式文件。 &lt;/li&gt;    &lt;li&gt;EasyMoney      &lt;br /&gt;十分实用，强大的理财软件。可惜有试用期限，需要购买 License。 &lt;/li&gt;    &lt;li&gt;FlashLight      &lt;br /&gt;非常简单的手电筒软件，拖动即可调整亮度。 &lt;/li&gt;    &lt;li&gt;fring      &lt;br /&gt;非常强大的一款 VOIP 软件，支持多种协议，MSN，GTalk，Skype 等。 &lt;/li&gt;    &lt;li&gt;Advanced Task Manager      &lt;br /&gt;非常实用的任务管理器。 &lt;/li&gt;    &lt;li&gt;HiDict      &lt;br /&gt;一款不错的英/汉翻译软件。 &lt;/li&gt;    &lt;li&gt;iReader      &lt;br /&gt;目前 Android 平台最好的 CHM 阅读软件。 &lt;/li&gt;    &lt;li&gt;NewsRob      &lt;br /&gt;可与 Google Reader 同步的 RSS Reader。 &lt;/li&gt;    &lt;li&gt;Paperdroid      &lt;br /&gt;可与 Read It Later 同步的 RSS Reader。 &lt;/li&gt;    &lt;li&gt;Remote RDP      &lt;br /&gt;RDP 远程桌面管理客户端，收费软件。 &lt;/li&gt;    &lt;li&gt;Remote VNC      &lt;br /&gt;VNC 远程桌面管理客户端，收费软件。 &lt;/li&gt;    &lt;li&gt;RMaps      &lt;br /&gt;除 Google Maps，还支持 Windows Live Map 等其它第三方地图。 &lt;/li&gt;    &lt;li&gt;Share By QRCode      &lt;br /&gt;生成 QR 识别码 &lt;/li&gt;    &lt;li&gt;Shazam      &lt;br /&gt;音乐搜寻软件，只需播放一段十秒的音乐，软件就会通过网络查找并给出相关歌曲信息，十分强大。 &lt;/li&gt;    &lt;li&gt;SIM Checker Lite      &lt;br /&gt;当 SIM 卡被更换，则会通过短信，邮件发送警告，利用 GPS 或网络定位告知所在地，防盗必备。 &lt;/li&gt;    &lt;li&gt;Simple Last.fm Scrobbler      &lt;br /&gt;last.fm scrobbler 客户端，支持系统内置的音乐播放器。 &lt;/li&gt;    &lt;li&gt;SwiFTP      &lt;br /&gt;FTP 服务端，使你的手机成为一台 FTP 服务器。 &lt;/li&gt;    &lt;li&gt;Toggle Screen Timeout      &lt;br /&gt;关闭屏幕延迟快捷开关。 &lt;/li&gt;    &lt;li&gt;Transdroid      &lt;br /&gt;免费，开源，更新快，P2P 爱好者必备软件，支持 BitTorrent 6+, Deluge 1.2+, DLink Router BT, Ktorrent, rTorrent, Torrentflux-b4rt, Transmission, uTorrent, Vuze 等多种 BT 客户端的远程管理。 &lt;/li&gt;    &lt;li&gt;Twidroid / Twigee      &lt;br /&gt;目前最受欢迎的 Twitter 客户端，有免费和付费版。 &lt;/li&gt;    &lt;li&gt;Wake On Lan      &lt;br /&gt;如果你的主板支持 WOL，那么便可以通过手机远程打开计算机。 &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;以上软件（除部分收费软件），均可直接在市场中找到。&lt;/p&gt;  &lt;p&gt;欢迎分享，转载，请注明出处，本文章可能会随时修改并标注最新发布日期。&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-8678652121499036386?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/03/35-useful-applications-of-android-for.html</link><author>noreply@blogger.com (Billy)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-3031363645395418260</guid><pubDate>Fri, 12 Feb 2010 15:42:00 +0000</pubDate><atom:updated>2010-02-12T23:44:54.220+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>HTML</category><title>“用得少”不代表“没有用”</title><description>&lt;ul&gt;   &lt;li&gt;cite 包含引用信息或者对其他来源的参考说明。 &lt;/li&gt;    &lt;li&gt;dfn 表示所包含的是术语的定义。 &lt;/li&gt;    &lt;li&gt;code 指明一段计算机程序代码。 &lt;/li&gt;    &lt;li&gt;samp 指明一段程序或脚本等的输出。 &lt;/li&gt;    &lt;li&gt;kdb 表示由用户输入的文本。 &lt;/li&gt;    &lt;li&gt;var 表示一个变量或者程序参数的实例。 &lt;/li&gt;    &lt;li&gt;abbr 表示一种简写形式（例如 WWW、HTTP、URI、Mass 等）。 &lt;/li&gt;    &lt;li&gt;acronym 表示只取首字母的缩写形式（例如 WAC、radar 等）。 &lt;/li&gt;    &lt;li&gt;address 表示地址信息 &lt;/li&gt;    &lt;li&gt;big 在一段文本中表示字号更大。 &lt;/li&gt;    &lt;li&gt;small 在一段文本中表示字号更小。 &lt;/li&gt;    &lt;li&gt;blockquote 表示引用一段文本，块级元素 &lt;/li&gt;    &lt;li&gt;hr 分隔符，块级元素 &lt;/li&gt;    &lt;li&gt;label 表单字段标签 &lt;/li&gt;    &lt;li&gt;sub 下标 &lt;/li&gt;    &lt;li&gt;sup 上标 &lt;/li&gt;    &lt;li&gt;ins 定义被插入的文本（默认不显示） &lt;/li&gt;    &lt;li&gt;del 定义被删除的文本（文本带有删除线） &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;现在有了这么多的标签，你的 div 和 span 又减少了多少呢？&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-3031363645395418260?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/02/useless-not-means-no-use.html</link><author>noreply@blogger.com (Billy)</author><thr:total>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-8613691353419614283</guid><pubDate>Fri, 12 Feb 2010 13:53:00 +0000</pubDate><atom:updated>2010-02-12T21:53:48.485+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>SCM</category><category domain='http://www.blogger.com/atom/ns#'>Redmine</category><title>Recommended Redmine’s Plugins</title><description>&lt;ul&gt;   &lt;li&gt;&lt;a href="http://redmineblog.com/articles/schedules-plugin-v-0-4-0-review/"&gt;Redmine Schedule&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.littlestreamsoftware.com/portfolio/redmine-timesheet-plugin.html"&gt;Redmine Timesheet&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.littlestreamsoftware.com/portfolio/redmine-budget-plugin.html"&gt;Redmine Budget&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.redmine.org/boards/3/topics/5506"&gt;Issue Vote&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.redmine.org/boards/3/topics/5635"&gt;Redmine Rate&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.redmine.org/wiki/redmine/PluginEzlibrarian"&gt;EzLibrarian&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.redmine.org/wiki/redmine/PluginEzfaq"&gt;EzFAQ&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.redmine.org/wiki/redmine/PluginSystemNotification"&gt;SystemNotification&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.redmine.org/wiki/redmine/PluginProjectScores"&gt;ProjectScores&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.redmine.org/wiki/redmine/PluginGraphs"&gt;Graphs&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-8613691353419614283?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/02/recommended-redmines-plugins.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-3965798130663048369</guid><pubDate>Fri, 12 Feb 2010 13:42:00 +0000</pubDate><atom:updated>2010-02-12T21:43:45.983+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Specification</category><category domain='http://www.blogger.com/atom/ns#'>Project</category><category domain='http://www.blogger.com/atom/ns#'>Architecture</category><title>BBT 项目开发规范参考</title><description>&lt;p&gt;写于 2009 年 5 月，这里留个备份：&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Last update: billy@090522-0207&lt;/p&gt; &lt;/blockquote&gt;  &lt;h4&gt;前端&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;网络层优化      &lt;ol&gt;       &lt;li&gt;减少 DNS 查找时间 &lt;/li&gt;        &lt;li&gt;DNS 缓存和TTL &lt;/li&gt;        &lt;li&gt;启用 Gzip 压缩传输 (大于 1KB 或 2KB) &lt;/li&gt;        &lt;li&gt;代理缓存 &lt;/li&gt;        &lt;li&gt;CDN &lt;/li&gt;        &lt;li&gt;所有静态请求全部分发至 CDN 节点服务器 &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;ul&gt;   &lt;li&gt;HTTP 优化      &lt;ol&gt;       &lt;li&gt;编码统一为 UTF-8 without BOM &lt;/li&gt;        &lt;li&gt;减少 HTTP 请求次数 &lt;/li&gt;        &lt;li&gt;合理使用 304 状态码(避免下载已经存在于浏览器缓存中的数据) &lt;/li&gt;        &lt;li&gt;CSS Spirtes 将相关小图合并 &lt;/li&gt;        &lt;li&gt;外链资源合并 (JavaScript, CSS) &lt;/li&gt;        &lt;li&gt;若链接为目录, 则应在某尾加上 &amp;quot;/&amp;quot; , 避免产生 301 重定向 &lt;/li&gt;        &lt;li&gt;添加 Expires 头 &lt;/li&gt;        &lt;li&gt;Max-Age 和 mod_expires &lt;/li&gt;        &lt;li&gt;配置 ETag &lt;/li&gt;        &lt;li&gt;避免重复脚本(提高代码重用度) &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;ul&gt;   &lt;li&gt;XHTML      &lt;ol&gt;       &lt;li&gt;所有标签必须闭合 &lt;/li&gt;        &lt;li&gt;压缩空白并使用Gzip输出(发布时) &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;ul&gt;   &lt;li&gt;CSS 优化      &lt;ol&gt;       &lt;li&gt;将CSS放在顶部 &lt;/li&gt;        &lt;li&gt;禁止使用 @import &lt;/li&gt;        &lt;li&gt;禁止使用 CSS 表达式 &lt;/li&gt;        &lt;li&gt;压缩并合并外链CSS(发布时) &lt;/li&gt;        &lt;li&gt;选择器明确简短 &lt;/li&gt;        &lt;li&gt;属性简写 (如 background-color, background-image 等合并为 background) &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;ul&gt;   &lt;li&gt;JavaScript 优化      &lt;ol&gt;       &lt;li&gt;将脚本放在底部 &lt;/li&gt;        &lt;li&gt;使用 DEFER 属性(FF目前不支持) &lt;/li&gt;        &lt;li&gt;压缩混淆并合并(发布时) &lt;/li&gt;        &lt;li&gt;使 Ajax 可缓存 &lt;/li&gt;        &lt;li&gt;循环, 递归, 正则等算法优化 &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;ul&gt;   &lt;li&gt;Flash, gif, jpeg      &lt;ol&gt;       &lt;li&gt;Flash 以兼容性, 效率, 容量为顺序发布 &lt;/li&gt;        &lt;li&gt;gif, jpeg 选择合适的颜色及压缩级别 &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;h4&gt;后端(待定)&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;前端 PHP 应用服务器集群      &lt;ol&gt;       &lt;li&gt;使用 APC 缓存本地全局数据 &lt;/li&gt;        &lt;li&gt;使用 APC 编译为 OP Code &lt;/li&gt;        &lt;li&gt;使用 hidef 提高 define 性能 &lt;/li&gt;        &lt;li&gt;使用 xdebug profiler 优化 &lt;/li&gt;        &lt;li&gt;apache / lighttpd / nginx 性能优化 &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;ul&gt;   &lt;li&gt;后端 Java 逻辑应用服务集群      &lt;ol&gt;       &lt;li&gt;jboss 集群 &lt;/li&gt;        &lt;li&gt;同时发布为 WebService 内部接口 &lt;/li&gt;        &lt;li&gt;动态数据库连接池 &lt;/li&gt;        &lt;li&gt;避免动态反射 &lt;/li&gt;        &lt;li&gt;JVM 优化 &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;ul&gt;   &lt;li&gt;memcache 集群      &lt;ol&gt;       &lt;li&gt;Session 共享 &lt;/li&gt;        &lt;li&gt;Consistent Hash (libketama) &lt;/li&gt;        &lt;li&gt;Java 和 PHP 统一存储为 PHP Native Object / JSON &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;ul&gt;   &lt;li&gt;MySQL 集群      &lt;ol&gt;       &lt;li&gt;读写分离(在后端逻辑应用层实现) &lt;/li&gt;        &lt;li&gt;故障转移(failover) &lt;/li&gt;        &lt;li&gt;定时备份(cron) &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;ul&gt;   &lt;li&gt;静态文件集群      &lt;ol&gt;       &lt;li&gt;rsync 文件同步 &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;API 发布标准      &lt;ol&gt;       &lt;li&gt;一个基类接口, 三个实现(XML, Soap, JSON) &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ol&gt;&lt;/ol&gt;  &lt;h4&gt;其它&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;所有代码遵循开闭原则&lt;/strong&gt; (连接池除外) &lt;/li&gt;    &lt;li&gt;遵循 DRY, KISS 原则 &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-3965798130663048369?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/02/bbt-development-specification-reference.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-2175602702275437366</guid><pubDate>Sun, 24 Jan 2010 06:32:00 +0000</pubDate><atom:updated>2010-01-24T14:59:53.839+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Kohana</category><category domain='http://www.blogger.com/atom/ns#'>PHP</category><title>Unlimited Categories Implementation by Recursively</title><description>&lt;ol&gt;&lt;li&gt;MySQL Table Definition: &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;CREATE&lt;/span&gt; &lt;span style="color: #0000ff"&gt;TABLE&lt;/span&gt; `categories` (&lt;br /&gt;  `id` &lt;span style="color: #0000ff"&gt;int&lt;/span&gt;(10) unsigned &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt; auto_increment,&lt;br /&gt;  `name` &lt;span style="color: #0000ff"&gt;varchar&lt;/span&gt;(50) &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt;,&lt;br /&gt;  `parent_id` &lt;span style="color: #0000ff"&gt;int&lt;/span&gt;(10) unsigned zerofill &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt;,&lt;br /&gt;  `type` &lt;span style="color: #0000ff"&gt;int&lt;/span&gt;(10) unsigned zerofill &lt;span style="color: #0000ff"&gt;NOT&lt;/span&gt; &lt;span style="color: #0000ff"&gt;NULL&lt;/span&gt; &lt;span style="color: #0000ff"&gt;default&lt;/span&gt; &lt;span style="color: #006080"&gt;'0'&lt;/span&gt;,&lt;br /&gt;  &lt;span style="color: #0000ff"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: #0000ff"&gt;KEY&lt;/span&gt;  (`id`)&lt;br /&gt;) ENGINE=InnoDB AUTO_INCREMENT=22 &lt;span style="color: #0000ff"&gt;DEFAULT&lt;/span&gt; CHARSET=utf8;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Implementation for DataObject &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;function&lt;/span&gt; get_all($type = NULL, $parent_id = 0, $depth = 3, $count = 0){&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;($count == $depth) &lt;span style="color: #0000ff"&gt;return&lt;/span&gt;;&lt;br /&gt;    $condition = is_int($type) ? &lt;span style="color: #006080"&gt;&amp;quot;AND type=$type&amp;quot;&lt;/span&gt; : &lt;span style="color: #006080"&gt;''&lt;/span&gt;;&lt;br /&gt;    &lt;br /&gt;    $categories = Database::instance()-&amp;gt;query(&lt;span style="color: #006080"&gt;&amp;quot;SELECT * FROM categories WHERE parent_id = '$parent_id' $condition&amp;quot;&lt;/span&gt;)-&amp;gt;result_array(FALSE);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(count($categories) == 0) &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; NULL;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; ($categories &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; &amp;amp;$category) {&lt;br /&gt;        $category[&lt;span style="color: #006080"&gt;'parent_id'&lt;/span&gt;] = intval($category[&lt;span style="color: #006080"&gt;'parent_id'&lt;/span&gt;]);&lt;br /&gt;        $category[&lt;span style="color: #006080"&gt;'type'&lt;/span&gt;] = intval($category[&lt;span style="color: #006080"&gt;'type'&lt;/span&gt;]);&lt;br /&gt;        $subcategories = self::get_all($type, $category[&lt;span style="color: #006080"&gt;'id'&lt;/span&gt;], $depth, $count+1);&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;($subcategories) $category[&lt;span style="color: #006080"&gt;'subcategories'&lt;/span&gt;] = $subcategories;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; $categories;&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Implementation for Logical UI &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;function&lt;/span&gt; output_options($categories,  $depth = 2, $level = 0, $nest = 0){&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;($nest == $depth || !is_array($categories)) &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;''&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    $html = &lt;span style="color: #006080"&gt;''&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;($categories &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; $category){&lt;br /&gt;        $html .= &lt;span style="color: #006080"&gt;&amp;quot;&amp;lt;option value=\&amp;quot;{$category['id']}\&amp;quot;&amp;quot;&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;($nest &amp;lt; $level) $html .= &lt;span style="color: #006080"&gt;' disabled=&amp;quot;disabled&amp;quot;'&lt;/span&gt;;&lt;br /&gt;        $html .= &lt;span style="color: #006080"&gt;'&amp;gt;'&lt;/span&gt;;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;for&lt;/span&gt;($i=0,$j=$nest;$i&amp;lt;$j;$i++) $html .= &lt;span style="color: #006080"&gt;'　'&lt;/span&gt;;&lt;br /&gt;        $html .= &lt;span style="color: #006080"&gt;&amp;quot;{$category['name']}&amp;lt;/option&amp;gt;\n&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt;(&lt;span style="color: #0000ff"&gt;isset&lt;/span&gt;($category[&lt;span style="color: #006080"&gt;'subcategories'&lt;/span&gt;])) {&lt;br /&gt;            $html .= self::output_options($category[&lt;span style="color: #006080"&gt;'subcategories'&lt;/span&gt;], $depth, $level, $nest+1);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; $html;&lt;br /&gt;}&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Usage&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;$categories = category::get_all(0,0,2); &lt;span style="color: #008000"&gt;// All Type, Parent Id = 0, MaxDepth = 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;echo&lt;/span&gt; category::output_options($categories, 2);&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-2175602702275437366?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/01/unlimited-categories-implementation-by.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-4506050843100031603</guid><pubDate>Sat, 23 Jan 2010 14:37:00 +0000</pubDate><atom:updated>2010-01-23T22:37:19.204+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Firefox</category><title>Firefox Extensions of Mine</title><description>&lt;span&gt;&lt;strong&gt;Generated:&lt;/strong&gt;&lt;/span&gt; Sat Jan 23 2010 22:31:39 GMT+0800 (China Standard Time)   &lt;br /&gt;&lt;span&gt;&lt;strong&gt;User Agent:&lt;/strong&gt;&lt;/span&gt; Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)   &lt;br /&gt;&lt;span&gt;&lt;strong&gt;Build ID:&lt;/strong&gt;&lt;/span&gt; 20100115144158   &lt;br /&gt;  &lt;br /&gt;&lt;span&gt;&lt;strong&gt;Enabled Extensions:&lt;/strong&gt;&lt;/span&gt; [23]   &lt;ul&gt;   &lt;li&gt;&lt;a href="http://autoproxy.org/" target="_blank"&gt;AutoProxy&lt;/a&gt; 0.3b4.0+.2009110800 &lt;/li&gt;    &lt;li&gt;&lt;a href="https://addons.mozilla.org/firefox/addon/1881" target="_blank"&gt;Cache Status&lt;/a&gt; 0.7.9 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.advancity.net/eng/products/capturefox.html" target="_blank"&gt;Capture Fox&lt;/a&gt; 0.7.0 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.colorzilla.com/" target="_blank"&gt;ColorZilla&lt;/a&gt; 2.0.2 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://delicious.com" target="_blank"&gt;Delicious Bookmarks&lt;/a&gt; 2.1.072 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dndetails.com/" target="_blank"&gt;Domain Details&lt;/a&gt; 2.6 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://echofon.com/" target="_blank"&gt;Echofon&lt;/a&gt; 1.9.4.1 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.getfirebug.com/" target="_blank"&gt;Firebug&lt;/a&gt; 1.5.0 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.janodvarko.cz/firecookie" target="_blank"&gt;Firecookie&lt;/a&gt; 1.0.2 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://showcase.uworks.net/" target="_blank"&gt;Firefox Showcase&lt;/a&gt; 0.9.5.5 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.xuldev.org/firegestures/" target="_blank"&gt;FireGestures&lt;/a&gt; 1.5.5.1 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://foxyproxy.mozdev.org" target="_blank"&gt;FoxyProxy Standard&lt;/a&gt; 2.18 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://skrul.com/blog/projects/greasefire" target="_blank"&gt;Greasefire&lt;/a&gt; 1.0.4 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.greasespot.net/" target="_blank"&gt;Greasemonkey&lt;/a&gt; 0.8.20091209.4 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.windowsclient.net/" target="_blank"&gt;Microsoft .NET Framework Assistant&lt;/a&gt; 1.1 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.mrtech.com/extensions/" target="_blank"&gt;MR Tech Toolkit&lt;/a&gt; 6.0.4 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://yellow5.us/firefox/osb/" target="_blank"&gt;Organize Status Bar&lt;/a&gt; 0.6.4 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://readitlaterlist.com" target="_blank"&gt;Read It Later&lt;/a&gt; 2.0.3 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.stardrifter.org/refcontrol/" target="_blank"&gt;RefControl&lt;/a&gt; 0.8.13 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.quirk.biz/searchstatus/" target="_blank"&gt;SearchStatus&lt;/a&gt; 1.33 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://tmp.garyr.net" target="_blank"&gt;Tab Mix Plus&lt;/a&gt; 0.3.8.2 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://tamperdata.mozdev.org" target="_blank"&gt;Tamper Data&lt;/a&gt; 10.1.0 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.xmarks.com/" target="_blank"&gt;Xmarks&lt;/a&gt; 3.4.5 &lt;/li&gt; &lt;/ul&gt;  &lt;br /&gt;&lt;span&gt;&lt;strong&gt;Disabled Extensions:&lt;/strong&gt;&lt;/span&gt; [18]   &lt;ul&gt;   &lt;li&gt;&lt;a href="http://adblockplus.org/" target="_blank"&gt;Adblock Plus&lt;/a&gt; 1.1.3 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.alipay.com" target="_blank"&gt;aliedit&lt;/a&gt; 1.1.0.3 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://cookieSwap.mozdev.org" target="_blank"&gt;CookieSwap&lt;/a&gt; 0.5.248Beta &lt;/li&gt;    &lt;li&gt;&lt;a href="http://addons.mozilla.org" target="_blank"&gt;CS Lite&lt;/a&gt; 1.4 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.getfiregpg.org/" target="_blank"&gt;FireGPG&lt;/a&gt; 0.7.10 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://firequery.binaryage.com" target="_blank"&gt;FireQuery&lt;/a&gt; 0.3 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://screenshot-program.com/fireshot/" target="_blank"&gt;FireShot&lt;/a&gt; 0.80 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://flagfox.net/" target="_blank"&gt;Flagfox&lt;/a&gt; 3.3.20 &lt;/li&gt;    &lt;li&gt;&lt;a href="https://addons.mozilla.org/firefox/addon/1419" target="_blank"&gt;IE Tab&lt;/a&gt; 1.5.20090525 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.google.com/search?q=Firefox%20JavaScript%20Deobfuscator" target="_blank"&gt;JavaScript Deobfuscator&lt;/a&gt; 1.5.5 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.google.com/search?q=Firefox%20Live%20HTTP%20headers" target="_blank"&gt;Live HTTP headers&lt;/a&gt; 0.15 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.kevinfreitas.net/pro/extensions/" target="_blank"&gt;MeasureIt&lt;/a&gt; 0.3.9 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.kliu.org/noredirect/" target="_blank"&gt;NoRedirect&lt;/a&gt; 1.2.4 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.google.com/speed/page-speed/" target="_blank"&gt;Page Speed&lt;/a&gt; 1.4 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.pixelperfectplugin.com/" target="_blank"&gt;Pixel Perfect&lt;/a&gt; 1.1.0 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.jacquet80.eu/mozilla/exts/ServerSpy/" target="_blank"&gt;Server Spy&lt;/a&gt; 0.1.6 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.totalvalidator.com/tool/extension.html" target="_blank"&gt;Total Validator&lt;/a&gt; 6.1.1 &lt;/li&gt;    &lt;li&gt;&lt;a href="http://chrispederick.com/work/user-agent-switcher/" target="_blank"&gt;User Agent Switcher&lt;/a&gt; 0.7.2 &lt;/li&gt; &lt;/ul&gt;  &lt;br /&gt;&lt;span&gt;&lt;strong&gt;Total Extensions: 41&lt;/strong&gt;&lt;/span&gt;   &lt;br /&gt;  &lt;br /&gt;&lt;span&gt;&lt;strong&gt;Installed Themes:&lt;/strong&gt;&lt;/span&gt; [1]   &lt;ul&gt;   &lt;li&gt;&lt;b&gt;&lt;a href="http://www.mozilla.org/" target="_blank"&gt;Default&lt;/a&gt;&lt;/b&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;br /&gt;&lt;span&gt;&lt;strong&gt;Installed Plugins:&lt;/strong&gt;&lt;/span&gt; (6)   &lt;ul&gt;   &lt;li&gt;Adobe Acrobat &lt;/li&gt;    &lt;li&gt;Mozilla Default Plug-in &lt;/li&gt;    &lt;li&gt;Shockwave Flash &lt;/li&gt;    &lt;li&gt;Silverlight Plug-In &lt;/li&gt;    &lt;li&gt;Thunder DapCtrl Plugin &lt;/li&gt;    &lt;li&gt;WPI Detector 1.1 &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-4506050843100031603?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/01/firefox-extensions-of-mine.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-3148869336023568896</guid><pubDate>Sat, 23 Jan 2010 14:23:00 +0000</pubDate><atom:updated>2010-01-23T22:28:24.645+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Design</category><title>Best Fonts for Web Design</title><description>&lt;p&gt;&lt;strong&gt;&lt;font face="Arial"&gt;Arial&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="Arial"&gt;12px – 16px (text, tips, title)&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font face="Arial"&gt;12px+, Smooth (text, title)&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="BitStream vera Sans"&gt;BitStream vera Sans&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3" face="Calibri"&gt;Calibri&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="4" face="Calibri"&gt;14px+, Smooth (text, title)&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Comic Sans MS"&gt;Comic Sans MS&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="1" face="Comic Sans MS"&gt;12px+, Smooth (text, title)&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Consolas"&gt;Consolas (Monospaced)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="Consolas"&gt;12px+, Smooth (text)&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Courier"&gt;Courier / Courier New (Monospaced)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="1" face="Courier"&gt;11px+ (text, tips, title, code)&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font face="Courier"&gt;12px+, Smooth (text, title)&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Ebrima"&gt;Ebrima&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="Ebrima"&gt;14px+, Smooth&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Georgia"&gt;Georgia&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="Georgia"&gt;14px+ &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font face="Georgia"&gt;14px+, Smooth&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Helvetica Neue"&gt;Helvetica Neue / Helvetica&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Lucida Grande"&gt;Lucida Grande / Lucida Sans Unicode / Lucida Sans&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Luxi Sans"&gt;Luxi Sans&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Monaco"&gt;Monaco (Monospaced)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Segoe UI"&gt;Segoe UI&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="Segoe UI"&gt;14px+, Smooth&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Tahoma"&gt;Tahoma&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font size="1" face="Tahoma"&gt;11px+ (text, tips)&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font face="Tahoma"&gt;12px+, Smooth (text, title)&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font face="Simplified Arabic"&gt;Simple Arabic / Simple Arabic Fixed (Monospaced)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font face="Simplified Arabic"&gt;12px+ &lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font face="Simplified Arabic"&gt;14px+, Smooth&lt;/font&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Verdana&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;11px+ &lt;/li&gt;    &lt;li&gt;12px+, Smooth &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;font size="1"&gt;&lt;em&gt;Last updated @ 2010.1.23&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-3148869336023568896?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/01/best-fonts-for-web-design.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-7346272725532465334</guid><pubDate>Sat, 16 Jan 2010 16:13:00 +0000</pubDate><atom:updated>2010-01-23T23:27:32.602+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>PHP</category><title>A simple implementation for alternate output in PHP</title><description>&lt;p&gt;This function was original from Kohana’s Text Helper. &lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 400px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #008000"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt; * Alternates between two or more strings.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt; *&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt; * @param   string  strings to alternate between&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt; * @return  string&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #008000"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;function&lt;/span&gt; alternate()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; $i;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (func_num_args() === 0)&lt;br /&gt;    {&lt;br /&gt;        $i = 0;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;''&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    $args = func_get_args();&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; $args[($i++ % count($args))];&lt;br /&gt;}&lt;/pre&gt;&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/2447785442202646044-7346272725532465334?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/01/simple-implementation-for-alternate.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-7362451735689509752</guid><pubDate>Sat, 02 Jan 2010 07:48:00 +0000</pubDate><atom:updated>2010-01-02T16:05:49.751+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Computer</category><title>Engineering mode in DELL Laptop</title><description>&lt;ol&gt;&lt;li&gt;Press and hold Fn+Shift, then input 15324 (The number lock led will turning)&lt;/li&gt;&lt;li&gt;Press Fn+r, it will show up the temporary of modules.&lt;/li&gt;&lt;/ol&gt;p.s. This is works on my inspiron 1420.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-7362451735689509752?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2010/01/engineering-mode-in-dell-laptop.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-8757777389897540563</guid><pubDate>Mon, 21 Dec 2009 15:04:00 +0000</pubDate><atom:updated>2010-01-01T21:10:41.933+08:00</atom:updated><title>Contact</title><description>&lt;p&gt;Email: billy [at] dreammx.com    &lt;br /&gt;MSN: billychow [at] live.com     &lt;br /&gt;Gtalk: billychou [at] gmail.com     &lt;br /&gt;Google Voice: (209) 677-7783     &lt;br /&gt;Skype: billychow.dreammx     &lt;br /&gt;Google Wave: billychou [at] googlewave.com     &lt;br /&gt;&lt;strong&gt;If you have PGP/GnuPG, you can use &lt;/strong&gt;&lt;a href="http://dl.dropbox.com/u/3762579/Keys/billychow.pub"&gt;&lt;strong&gt;my public key&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; for email.&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-8757777389897540563?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2009/12/contact.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-6024587274237230390</guid><pubDate>Mon, 21 Dec 2009 14:50:00 +0000</pubDate><atom:updated>2009-12-21T22:55:59.844+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Thinking</category><title>K.I.S.S</title><description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/KISS_principle"&gt;KISS 原则&lt;/a&gt;不仅仅适用于计算机领域，也同样适用于任何其它的事物。尤其是对一些比较偏执的人或事物，他（它）们不断追求完美，却不断被完美本身所打败。当这一切接近极限，并超过极限时，便会回归原点，重新开始，往往复复。&lt;/p&gt;  &lt;p&gt;也许，你是时候该稍微停下来思考一下了。如果前路已不再长，你还会继续前行吗？或是调个头，选择一条更短，但是更好的路来走？&lt;/p&gt;  &lt;p&gt;这是个问题。&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-6024587274237230390?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2009/12/kiss.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-2447785442202646044.post-4711659453515300931</guid><pubDate>Sun, 20 Dec 2009 07:18:00 +0000</pubDate><atom:updated>2009-12-21T22:54:36.600+08:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Cross GFW</category><title>使用 Windows Live Writer + Tor + Provixy 发布 Blogger</title><description>&lt;p&gt;之前便有通过 Tor + WLW 更新 Blogger 的想法，但是因为一个 HTTP Header 的问题，一直没有成功，也没有去寻找原因。今天突然心血来潮想起这事，便网上搜索一番，果然是有解决方案的……也真的是佩服自己，有些事情本来一下就可以解决的，却总是为了省那么一点儿力却浪费大把的时间啊！&lt;/p&gt;  &lt;p&gt;相关方法请自行 Google 之。&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2447785442202646044-4711659453515300931?l=blog.billychow.me' alt='' /&gt;&lt;/div&gt;</description><link>http://blog.billychow.me/2009/12/windows-live-writer-tor-provixy-blogger.html</link><author>noreply@blogger.com (Billy)</author><thr:total>0</thr:total></item></channel></rss>