2008年9月21日星期日

Vista 为什么要引入 UAC

UAC的目标就是:干扰用户!这其实不是我独创的,而是从TWiT上听到的一种见解。

UNIX的命令行有sudo,Mac在GUI上也能够在需要sudo调用时弹出对话框要求输入密码,然而这两者的出现频率比Vista的UAC要低得多。为什么UAC的出现频率那么高呢,难道是Vista的用户体验设计得有问题?显然不是这样,Vista的UAC就是设计来不停地干扰用户的。

干扰用户随之而来的是什么?就是用户觉得这个软件很烦,然后逐步放弃使用这个软件,转而使用同类软件中不那么烦人的。这个过程会逐步把经常进行UAC调用的软件从是场中淘汰掉,如果你的软件不希望被市场淘汰,你就必须尽量减少UAC调用,也就是减少系统调用。

最终,市面上大量滥用系统调用的软件会逐步消失,要么自身改进,要么自然淘汰,从而提高了Windows的安全性。等一下,这跟Windows的安全性有什么关系?假若你的代码要执行系统调用,同时你的代码是有漏洞的,就可能由于你的程序漏洞而导致系统受到攻击。但如果你的软件本来就不需要做任何系统调用,就算有漏洞也不会连累Windows,Windows也就显得安全多了。

P.S.当然,还有一些非系统调用也需要UAC,例如对C:\Program Files的写入操作。这是因为Vista认为这也是个危险操作,而程序应该将数据存放到C:\ProgramData来实现可执行代码与数据的分离。

2008年9月18日星期四

强烈推荐 Spore 这个游戏

由Spore发布到现在,一直在玩这个游戏,觉得挺有趣的。虽然有人说创意没利用好,操作具有重复性,不过这个游戏享受的正式创造的乐趣,而非好像RPG或者RTS那样,要通过竞技赢取什么。如果你以竞技的心态去玩,那么这个游戏就很无聊了,因为你赢了一次之后,就发现再玩也是走类似的路线,不值得重玩。但是如果你享受创造不同的生物,利用他们不同的特性来进行游戏,那就很好玩。

Spore有趣的地方在于,你在里面总能够碰到各种各样奇怪的事情。在cell stage,你会发现合理组合装备的重要性,刚刚开始有针刺的时候就可以把针刺装在前侧,然后刺体积比你大多了的生物。如果你发现不够灵敏,总是没把对方刺死就被吃掉了,那么你可以加高性能的运动器官,但前提是你又要先杀死一只有该器官的生物来获取它。到了creature stage,你可以看到举行的epic creature,这其实是其它space stage文明通过supersize工具制造的。在tribal stage,你可能会看到UFO──也就是其它文明在space stage的飞船,他们可能把地上的生物吸走。总之,在整个游戏过程中,你都会感觉到银河系中充满了各式各样的文明,在你还没觉醒的时候他们就来造访你所在的行星了,而且还会制造各种奇怪的事件,例如麦田怪圈。

暂时Spore只有英文版和繁体中文版,不知道什么时候才在内地上市,或许我会去买一套简体中文版,把它的cd-key用到英文版上,然后连上EA的服务器玩。Spore是我认为挺值得收藏的一个游戏。

2008年9月17日星期三

第一次开 OT 开到 1:30AM

终于体会到软件工程嘅焦油坑,唔单止需求唔明确成日变,而且相关人员太多──我啲嘅项目相当于通用型项目,同各个已有嘅产品线都有合作,项目嘅任何改动都要通知各个有关产品线嘅PM,等佢哋嚟确认新嘅行为係合理嘅,同时又要各个产品线个QA嚟重新测试,确保哩啲改动唔会影响到原有嘅协同功能。

2008年9月15日星期一

如果浏览器 geek 到能够随意换 kernel

Google Chrome是开源的,所以只要你有兴趣你都可以去Google Chrome的SVN把源代码check out下来看看,然后你会发现它用到了大量第三方的开源组件。

在过去,浏览器总让人觉得是一个monolith般的东西,一个大整体,内部耦合度高,很难在一个浏览器中复用另外一个浏览器的组件。准确来说,浏览器按照内核分成了几族,族内的组件倒是通用的,但族外的就不通用了。但是在看到Google Chrome如此组装开源组件后,才发现其实浏览器也有可能发展到能够跨族相互融合的程度。例如Google Chrome是基于Webkit的,然而JavaScript引擎换了V8,所以执行效率比Safari高多了,而渲染引擎换了Skia,因此暂时看起来没Safari那么精致,支持的CSS3也没有Safari那么全面。

将来的浏览器,或许会像Linux一样按照distro(distribution)来划分。安装插件已经不能满足geek的需求,所以选用什么组件变得可以自定义。浏览器与浏览器之间的组件复用壁垒不会好像现在那么高,programmer已经可以轻易地从一个浏览器借用代码复用到另一个浏览器上,然后制作自己的distro。

2008年9月2日星期二

Firefox Ubiquity

对于喜欢命令行(command-line)或者喜欢Mac上的QuickSilver的人来说,Ubiquity实在是太好用了。如果你的Firefox还没装上Ubiquity,那就快掉去装一个吧,虽然现在的只是0.1.1 alpha。

装完之后,可以体验一下Ubiquity内置的command,地图搜索或者翻译之类的其实还是挺好用的,但我觉得重点还是在于可以自己写新的command。官方的Author Tutorial简单介绍了一些开发command的基础知识,如果要深入学习的话就要看看别人的command是怎么写的,以及看看Ubiquity的源代码。

由于我觉得Ubiquity实在太符合QuickSilver的用户习惯了,所以我以后做Web应用程序都会考虑加上Ubiquity的支持。