代码改变世界

为什么 script 标签不能写成自关闭形式

2011-07-08 13:50 by Cat Chen, 4341 阅读, 收藏, 编辑
摘要: 今天早上在 Stack Overflow 看到了这个问题: Why don't self-closing script tags work? 。答案给出的解释是,在 XHTML 的标准里面规定非 EMPTY 标签不能使用自关闭形式。注意这里使用的是全大写的 EMPTY ,所以我不把它翻译为「空白」。那么 EMPTY 到底是什么呢?写过 DTD 的人应该知道它是个关键字,用来指明一个标签的内容必须是空白,而不能包含文本内容或子节点。看看具体的例子就很容易明白了:<!ELEMENT img EMPTY><!ATTLIST img %attrs; src %URI; #RE阅读全文

在 JavaScript 中监听 IME 键盘输入事件

2011-05-29 22:26 by Cat Chen, 8003 阅读, 收藏, 编辑
摘要: 在 JavaScript 中监听用户的键盘输入是很容易的事情,但用户一旦使用了输入法,问题就变得复杂了。输入法应当如何触发键盘事件呢?是每一下击键都触发一次事件,还是选词完毕才触发事件呢?整句输入又该如何触发事件呢?不同的操作系统和不同的浏览器对此有不同的看法。在最糟糕的情况下,用户使用输入法后浏览器就只触发一次 keydown ,之后就没有任何的键盘事件了。这对于 Suggestion 控件的实现来说是个大问题,因为 Suggestion 控件需要监听文本输入框的变化,而事件是最准确也最节省计算资源的做法,如果换成轮询的话性能就可能受到影响。 首先,要监听启用输入法后的击键事件应当使用 ke阅读全文

Tangram 前端库通过 Github 开源了

2010-12-24 16:20 by Cat Chen, 6304 阅读, 收藏, 编辑
摘要: Tangram 是百度内部一直在开发和使用的前端库之一,功能与 jQuery 、 Prototype 等库类似,主要功能是简化 DOM 操作,并且扩展 JavaScript 语言。这部分功能准确来说属于 Tangram Core ,另外一个叫做 Tangram Component 的库提供一些类似 YUI 、 Sencha 这个级别的组件。之前 Tangram 说要开源很久了,一直卡在流程上,并且也有人觉得必须把库做得足够好了才好意思拿出来开源。我个人的看法是,跟 John Resig 的一样,前端库应该从第一天开始就开源,因为就算你不开源别人也一样能看到,所以还不如开放出来接受别人的贡献。如阅读全文

Tech·Ed 2010 及动手实验室资源下载

2010-12-15 13:55 by Cat Chen, 2701 阅读, 收藏, 编辑
摘要: 今年是第二年以讲师身份参加 TechEd 了,没有了往年的兴奋,认真把工作做好才是关键。 TechEd 对我来说,更多是一种年度聚会,能够跟国内 Microsoft 及社区的朋友见面聊天。课程第一天下午到得比较晚,来到的时候 Keynote 快要开始了,赶紧领了讲师的书包和衣服后就去听 Keynote 了。今年的 Keynote 对我来说没有什么吸引力,因为主要是面向 Azure 和 Windows Phone 7 的内容,这两样东西都是面向企业用户的,自己一个人玩没什么意思。 Keynote 后,两个基础课程都没去听,主要还是基于上面所说的原因,自己回到了讲师休息室,继续调整 PPT 。今年阅读全文

John Resig 见面会视频

2010-11-23 00:28 by Cat Chen, 3204 阅读, 收藏, 编辑
摘要: 上个星期 John Resig 来到了中国,谋智网络跟 CSDN 组织了一场 John Resig 见面会。 John Resig 在大会上介绍了 jQuery 的两个新特性(暂时还是插件): Data Link 以及 Templates 。引入这两个插件后,前端的数据呈现及交互将变得更简单,开发数据驱动型 Web 应用的成本也会随之而降低,估计将来我们能够见到更多基于 jQuery 的数据交互型...阅读全文

如何让你的网站支持 IE9 Pinned Site (Part 2 - 实战)

2010-11-17 00:02 by Cat Chen, 2865 阅读, 收藏, 编辑
摘要: 该如何展示 IE9 Pinned Site 呢?我可以写一个新的应用,完全是为了展示 Pinned Site 的特性,但这样就像是为了实现这些特性而利用这些特性。所以我想还是升级一个现有的网站好了,这样更能说明 Pinned Site 是如何起到优化用户体验的作用的。我选择了 hack 现在的百度地图。由于 IE9 正式版还没有发布,所以我 hack 的代码暂时也不能发布到线上,只能私下玩玩。在这...阅读全文

如何让你的网站支持 IE9 Pinned Site (Part 1 - 理论)

2010-11-16 19:19 by Cat Chen, 3330 阅读, 收藏, 编辑
摘要: Windows 7 任务栏有何不同自从 Windows 95 开始,任务栏就一直没什么变化,都是一个个长条表示正在运行的应用程序,直到 Windows 7 。 Windows 7 的任务栏发生了巨大的变化,这个变化其实就是更像 Mac OS X 的 Dock 了。无论是否在运行的应用程序,都可以在任务栏上占一个位置,并且这个位置可以固定下来,让用户可以更方便的操作这个应用程序。从此,任务栏由单向地...阅读全文

百度前端技术交流会视频及讲稿下载

2010-11-07 20:35 by Cat Chen, 12861 阅读, 收藏, 编辑
摘要: 10月份的最后一个周末,百度前端研发部尝试了第一次的对外技术交流活动,尽管只是在官方博客上做了宣传,仍然收到近 200 人的报名。考虑到场地限制,发出去了 100 个邀请,最终来参加的有 130 人。活动邀请了来自豆瓣、新浪、腾讯、百度前端研发团队的4位工程师来做演讲,内容涉及前端框架、开发流程以及团队合作方式。以下是他们演讲的视频及讲稿下载。百度前端基础平台与架构分享Youku 高清版本豆瓣前端...阅读全文

中国移动开发者大会 2010 及视频资源

2010-11-03 14:07 by Cat Chen, 3486 阅读, 收藏, 编辑
摘要: 这个星期去参加了 CSDN 和创新工场举办的中国移动开发者大会( CMDC ),感觉最大的收益是认识了一些做移动开发的人,同时了解了各家公司在做移动开发时积累的经验。《植物大战僵尸》成功的秘密最有趣的一个 session 是「《植物大战僵尸》成功的秘密」,演讲者是 PopCap Games 亚太区总裁 James Gwertzman 。这个如此成功的游戏经过了4年的开发,进行了多次迭代,才做出了我...阅读全文

用 JavaScript 对 JSON 进行模式匹配 (Part 2 - 实现)

2010-07-15 14:58 by Cat Chen, 3219 阅读, 收藏, 编辑
摘要: 在上一篇文章里,我们完成了 Dispatcher 类的接口设计,现在我们就来考虑一下如何实现这个类。Notify & Capture要实现 notify 和 capture 就太容易了,我们只需要把 capture 传入的 handler 都保存下来,然后在 notify 里面找到匹配的 handler 就可以了。var filterHandlerBundles = [];Dispatch.cap...阅读全文

用 JavaScript 对 JSON 进行模式匹配 (Part 1 - 设计)

2010-07-13 14:04 by Cat Chen, 3898 阅读, 收藏, 编辑
摘要: 在《从 if else 到 switch case 再到抽象》这篇文章里面说到,解决 if else 和 switch case 分支过多的一个方法,就是做一个专用的 dispatcher ,让它来负责进行筛选与转发。至于筛选条件的描述,模式匹配是一种很常见也很好用的方式。在 JavaScript 里面,用 JSON 来描述模式又是相当方便的事情,所以我们来做一个 JSON 模式匹配工具吧。用例设...阅读全文

从 if else 到 switch case 再到抽象

2010-07-05 14:04 by Cat Chen, 12469 阅读, 收藏, 编辑
摘要: 大家觉得在接手遗留代码时,见到什么东东是最让人感到不耐烦的?复杂无比的 UML ?我觉得不是。我的答案是,超过两个 else 的 if ,或者是超过两个 case 的 switch 。可是在代码中大量使用 if else 和 switch case 是很正常的事情吧?错!绝大多数分支超过两个的 if else 和 switch case 都不应该以硬编码( hard-coded )的形式出现。复杂...阅读全文

MVP Summit 2010 Trip (CA)

2010-05-16 15:33 by Cat Chen, 2351 阅读, 收藏, 编辑
摘要: 跟张诚、马志文飞抵 San Francisco 以后,我父亲的朋友来机场接我们到酒店。我们住在 Hilton ,当初 bid 这个酒店是想看看五星级酒店如何,确实是 bid 到了很好的价格,但是网络、早餐都不免费。相比之下,之后住的那些三星四星酒店都有免费的网络和早餐。当晚安顿好之后,父亲的朋友开车带我们到 Bay Bridge 对面的 Oakland 吃晚餐──到美国之后...阅读全文

MVP Summit 2010 Trip (WA)

2010-03-14 23:17 by Cat Chen, 2611 阅读, 收藏, 编辑
摘要: 简单记录一下今年的 MVP Summit 之旅。上半部分是在华盛顿州的一个星期,下半部分是在加州的一个星期。MVP Summit 期间,我住在 Bellevue 的 Westin 。第一天和第四天的会议在 Hyatt 举行,而第二天和第三天则在 Microsoft Campus 。经历了前年的「 too much salmon 」和去年的「 no salmon 」之后,今年三文鱼又被请回来了,而且...阅读全文

Apple 谈论产品 vs Microsoft 谈论技术

2010-02-07 21:02 by Cat Chen, 3958 阅读, 收藏, 编辑
摘要: 看了一下 Jeff 的《李笑来激起千层浪,赵姐夫力拒众强敌》,回顾了一下之前 Twitter 上的讨论。我个人觉得, Apple 观点和 Microsoft 观点是不同的,所以才造成了如此之多的争论。很多人在使用 Microsoft 技术的同时,由于 Microsoft 铺天盖地的宣传信息,自然而然地也接纳了 Microsoft 观点。使用这种观点去跟持有 Apple 观点的人争论是没有意义的,因...阅读全文

欢迎加入 iPhone / iPad 开发小组

2010-02-03 19:35 by Cat Chen, 6065 阅读, 收藏, 编辑
摘要: 刚刚看到博客园的 iPad 专题上线了,于是我就跟 dudu 讨论要不要开一个 iPhone / iPad 开发小组或者团队博客。 dudu 说,先开个小组并发到首页推广一下吧,于是就有了一个 iPhone / iPad 开发小组。如果小组人气足的话,我们就再开一个团队博客。阅读全文

程序员的品味

2010-02-01 12:04 by Cat Chen, 8713 阅读, 收藏, 编辑
摘要: 上个月跟刘江以及一些《程序员》的热心作者读者吃了一顿饭,刘江让大家谈谈《程序员》的内容以及未来的方向。在激烈的讨论之后,我觉得我应该把自己的想法写下来,但那篇文章在我的草稿箱里躺了一个月了,就是无法结尾。那篇文章想要表达的意思很简单,我认为《程序员》应该提供一流的阅读体验。至于作者和编辑手上的内容,就如同程序员手上的代码一样,都只是为了实现特定体验的手段而已。就拿《Avatar》来做例子吧,它的内...阅读全文

能承载移动 Web 应用的唯一浏览器: Mobile Safari

2010-01-30 14:02 by Cat Chen, 4730 阅读, 收藏, 编辑
摘要: 最近拿 iPhone 、 Android 、 Windows Mobile 这三个平台上的内置浏览器来做了一番对比,结果是只有 iPhone 的 Mobile Safari 能够承载现代化的移动 Web 应用,其他移动浏览器的设计思路还停留在上个世纪──能看网页就行,不存在移动应用一说。我用来做对比的平台是 iPhone 2.0 、 Android 2.0 、 Window...阅读全文

看对的书 (Part 0 - 何谓对错)

2009-12-21 00:02 by Cat Chen, 4591 阅读, 收藏, 编辑
摘要: 在《老赵书托》里面,Jeff把人脑比喻为「寄存器」,而我则更倾向于把人脑比喻为「神经网络」。但是「神经网络」的定义本身就源自人脑啊,这不是循环引用了吗?其实我的意思是,我们应该参考训练神经网络的方式来优化人脑的思维方式。我们都知道,训练神经网络应该用对的数据,这样才能让神经网络逼近于我们期望的行为模式。如果使用错的数据进行训练,结果将是不可预知的,而且往往意味着偏离我们期望的行为模式。基于同样的道...阅读全文

《程序员羊皮卷》书评

2009-12-19 19:03 by Cat Chen, 4221 阅读, 收藏, 编辑
摘要: 拿到Leo送来的《程序员羊皮卷》,看到封面上写着的话,确实让我很崩溃——是不是困惑自己投的简历石沉大海,找到好工作的总是另有他人?是不是痛苦自己每天工作闷闷不乐,像所有的人都在和自己作对?是不是不解自己努力工作好似黄牛,别人却加薪升职或另有高就?是不是苦恼自己每天工作重复单调,只见曲折现在不见美好未来?如果上述问题的答案都是“否”,请您把这本书直接放...阅读全文

China MVP Open Day 2009

2009-12-16 15:58 by Cat Chen, 2910 阅读, 收藏, 编辑
摘要: 又是一年一度的MVP Open Day,前年在三亚,去年在北京,今年还在北京,明年能不能换个地方啊?我觉得两岸三地是个很好的主意,让我能认识到平时接触不到的港台MVP。不过,也请容我私下阴谋论一下,是不是好像TechEd裁减预算三场合办为一场那样,MVP Open Day也用两岸三地的预算合办了啊?去MVP Open Day的路上,第一感觉是会务安排的失职(CSDN,又在说你呢!)—&...阅读全文

程序之外的事情 (Part 1 - Speech)

2009-12-15 01:18 by Cat Chen, 4233 阅读, 收藏, 编辑
摘要: 相信大家最近都看到了有一篇题为《程序员需要培养企业家式的能力》的热文吧。在我首次读到这篇文章时,我并不太同意文章开头的几段话——“程序员在公众面前讲话会脸红,不能很好地表现自己”,你开玩笑吧?在我熟悉的程序员当中,没几个是这样子的,我很喜欢跟他们聊各种各样的事情,从而获得更多有趣的观点,也激发自己的创意。后来想想,或许仅仅是我所在的圈子如此吧,我熟悉...阅读全文

编写 iPhone Friendly 的 Web 应用程序 (Part 7 - 多点触击)

2009-11-24 22:33 by Cat Chen, 3272 阅读, 收藏, 编辑
摘要: 这个系列的上一篇文章差不多是两年之前的事情了,在这两年里Mobile Safari并非停滞不前,从iPhone 2.0开始Mobile Safari就加入了对多点触击的支持,现在我们就来看一下我们可以利用它来干什么。相信很多人都看过WPF为Surface设备做的一个简单demo,也就是在桌面上显示若干张照片,你可以通过单点触击拖放,也可以通过多点触击缩放和旋转。这在iPhone上能够做到,甚至在M...阅读全文

不看《时尚先生》的你竟然看《程序员》?!

2009-11-23 23:26 by Cat Chen, 4936 阅读, 收藏, 编辑
摘要: 我的博客订户有多少人看《时尚先生》的,举手来看看?博客园里又有多少人是看《时尚先生》的,喊出来听听?我相信绝大多数程序员都是不看《时尚先生》的,尽管它定位为男性杂志,但不看的人不会因此而觉得自己不够男人,也不会去指责一本男性杂志的编辑为何不考虑男性程序员。(为了表示我没有性别歧视的倾向,请女程序员自行将本文的《时尚先生》替换为《时尚》,将Esquire替换成Cosmopolitan。)我们都明白一...阅读全文

User Friendly 2009

2009-11-18 00:01 by Cat Chen, 2437 阅读, 收藏, 编辑
摘要: 这个周末有幸去上海参加了UPA China组织的用户体验行业大会User Friendly 2009。参会人员大多数都是设计师,会议内容也是他们熟悉的内容,但对于像我这样少数的参会工程师来说,这样的会议确实让人大开眼界。在整场会议当中,我觉得让我印象最深刻的就是Jared M. Spool的Keynote了,我觉得其中一些观点是非常有价值的。至于其它的Workshop,也都能学到一些实实在在的东西...阅读全文