Firefox Key

2009/07/28 | 20:29 | 分类:Windows应用 | 标签: | 679次阅读

  从 Open Party 得到的可爱的 Firefox 贴纸可以怎么玩呢?那个圆形的小 logo 似乎可以这样子:
 
  My Firefox Key at DELL SK-8115:
Firefox Key
 
  Shortcut key in CentOS:
Firefox Key
 
  Shortcut key in Windows:
Firefox Key
 
  嗯,设置完毕之后,随手按下 Win+L 准备锁定屏幕、出去倒杯茶,才发现 Win 键按下之后 Firefox 欢腾地启动了……

浏览器中安全执行本地代码——Google NaCl 与 Microsoft Xax

2009/07/16 | 22:20 | 分类:Web与移动平台 | 标签: | 1,186次阅读

  Native Client(简称 NaCl)和 Xax 分别是 Google 和 Microsoft 近一年来开展的有关在 web 浏览器中安全执行本地代码的研究性工作。它们都已有实验原型,其功能类似于现在的 ActiveX,但相比只能在 IE 中运行的 ActiveX,二者都支持跨操作系统、跨浏览器运行(Xax 还声称可以跨体系结构),同时具备比 ActiveX 更完善的安全模型。这类在本地系统直接运行的代码相比 Flash、Silverlight、Java Applet 等虚拟机、JIT 机制,在性能、功能灵活性方面有优势,也便于移植遗留应用。
  NaCl 是开源的,其项目主页提供了大量的文档和示例程序,并开放了讨论区。加之 Google IO 大会的宣传,它得到了行业和媒体相对较多的关注,不少人认为它会成为“ActiveX 杀手”。而 Xax 在网上只有一个简单的论文页面,官方没有提供实验产品和更详细的资料下载,因此网络上关注它的文章很少,可能只在学术界为人知晓。
  NaCl 和 Xax 已发表的论文分别是:
  ● Native Client: A Sandbox for Portable, Untrusted x86 Native Code
  ● Leveraging Legacy Code to Deploy Desktop Applications on the Web
  从论文可以看出两项工作的侧重点有所不同。NaCl 的论文发表在 S&P/Oakland 2009,主要在论证其模型的安全性,欲打造一个安全且跨平台的 ActiveX 替代品;而 Xax 的论文发表在 OSDI 2008,更强调其软件结构的特性利于遗留应用快速移植到与操作系统、浏览器无关的 web 平台。
  NaCl 的结构比 Xax 简单,更类似于 ActiveX。它通过浏览器插件加载应用代码,创建一个沙盒进程来执行不可信的代码,直接在浏览器窗口中输出结果。不可信的代码不能直接访问本地文件系统和网络接口,而可以通过 IMC(Inter-Module Communications)间接调用一些可信的服务模块来访问本地资源。这些模块也是一些浏览器插件,可以通过它们实施安全策略。因此,NaCl 客户端安装和运行过程不需要特殊权限。Xax 的结构相对复杂,它的浏览器插件称为 Xax Monitor。Xax Monitor 包含一个 web proxy,浏览器的 HTTP 流量均要经过它。当 Xax Monitor 发现有 Xax 应用的链接时,它会从远程下载 Xax 应用。Xax Monitor 将下载来的应用代码与 PAL(Platform Abstraction Layer)模块连接,作为本地进程(称为“picoprocess”)运行。picoprocess 通过共享内存与 Xax Monitor 交互,由 Xax Monitor 为其执行封装过的、有限的、安全的系统调用(称为“xaxcalls”)。Xax Monitor 同时作为本地的 web server,通过 HTTP 消息与浏览器通信,处理浏览器到 picoprocess 的输入输出。Xax 使用系统特定的机制(Linux 的 ptrace 或 Windows 的虚拟设备驱动)来保证安全,在 Windows 下安装时需要超级用户的权限。
  NaCl 修改了一套 C/C++ 工具链,开发人员下了大量工夫让这套工具链生成的二进制代码安全可靠。其中包括严格的指令对齐、禁用系统调用和中断(只能通过 IMC 间接调用系统服务)、安全的跳转指令等。使用自己的加载器,使得不含系统调用的二进制代码可以跨操作系统加载执行(限于 x86 平台)。Xax 完成的工作类似,生成代码安全方面没有像 NaCl 那样严格控制,而是通过在运行时使用 Linux 的 ptrace 或 Windows 的虚拟设备驱动来阻止恶意添加的系统调用,同时接管内存分配工作,安全地管理堆上数据分配。
  Xax 所谓的跨体系结构,目前是在 x86 和 PowerPC 平台上分别做了 ABI(Application Binary Interface)各异的实现,因此运行在不同体系结构上的应用的二进制代码并不能互相兼容,只是说 Xax 机制已能在不同的体系结构上成功实现。作者提出可以用 Binary rewriting 的方法使得 x86 代码在其它平台上翻译执行,做到真正的跨体系结构,不知道现在实现没有。
  NaCl 的图形输出与本地程序渲染基本无异,用户体验较好,官方给出的 Quake 示例运行得很流畅(下图是在我的 Ubuntu 9.04 / Firefox 3.5 上运行的截图)。而对于 Xax,浏览器只能通过 HTTP 与连接到 Xax Monitor 的 picoprocess 通信,浏览器中的应用界面目前只能使用 HTML、Javascript 等已有技术渲染。论文中给出的 OpenGL 3D 示例使用 PNG 贴图的方式模拟动画输出,达到了 8.8 fps,用户体验比 NaCl、ActiveX 差一些。但相信加强浏览器插件的能力可以改善效果。
浏览器中安全执行本地代码——Google NaCl 与 Microsoft Xax
  由于 Xax 没有提供下载试用,所以不方便对比二者实际的编程难度和用户体验。个人感觉从用户角度而言,NaCl 似乎是一项更有吸引力的技术,简单地说它就是安全的、跨操作系统和浏览器的 ActiveX。而 Xax 在部署方式(权限)和界面交互效果方面还有欠缺。从开发人员角度来说,使用 NaCl 或 Xax 开发新应用或移植遗留应用都需要把原来使用系统调用的地方修改成调用 NaCl 可信服务模块或 xaxcalls,同时需要重写界面和 I/O 相关代码。NaCl 对代码有更严格的要求,比如不能使用部分不安全的标准库函数、不能滥用不安全的内嵌汇编指令等。而 Xax 的论文认为向 Xax 移植遗留应用是一件程序化的事,只要按照几个步骤去做,很多修改的代码可以复用。估计类似的步骤也可以应用于 NaCl,从 Quake 的成功移植可以看出 NaCl 在这方面应该不差。

软件功能行为的“中国特色”

2009/07/03 | 21:02 | 分类:IT杂谈 | 标签: | 874次阅读

  当我把 Firefox 升级到 3.5 版以后,发现一个问题:Tab Mix Plus 插件被报告不兼容。我原先为什么要安装这个插件呢?其实我想使用的只是其中一个功能:双击关闭标签页,我并没有使用 Tab Mix Plus 的其它高级功能。双击关闭标签页,这是我以前使用 Maxthon 的习惯,所以为方便起见我在 Firefox 中也通过插件实现了这个功能。不过随着对 Chrome 使用的增多,我也习惯通过快捷键或者点击标签右边的“×”来关闭标签页了。有关标签页,有一个细节不知道大家有没有注意过:IE 7/8、Firefox、Safari、Chrome、Opera 这几个国外主流的浏览器默认都是不支持双击关闭的;而国产的 Maxthon、搜狗浏览器、世界之窗、GreenBrowser 以及某三流公司的 TT 浏览器却都默认支持双击关闭。“双击关闭标签页”似乎是一个中国特色的功能。
  这两天又在 twitter 上看到 Fenng云风等人有关 IM“群”问题的讨论。这个“群”似乎也是一个中国特色的东西。从低俗至极的 QQ,到新浪 UC、百度 Hi、网易泡泡,甚至以辅助交易为主要功能的淘宝旺旺,都把“群”作为标配功能,好像比别人少个什么功能就会低人一等似的。而看看国外的 IM 们,它们多数都没有像国产 IM 那样的固定群组。老牌的 ICQ、AIM 不支持多人会话,只能通过 Miranda IM 等工具建立临时多人会话;Yahoo! Messenger、Jabber(包括 web 版的 Gtalk)原生支持临时多人会话,但没有固定群组;唯独 MSN(Windows Live Messenger)在支持临时多人会话的同时,也于今年推出了固定的“群”业务。像赢思之类的公司很早就看到了 MSN 在中国市场的这一空缺,率先推出了“小 i 群”那种基于机器人的第三方群组服务,这家公司对 MSN 的本土化也算是有点贡献吧。当然外国人也不笨,在多人交流方面,IRC 就有相当的用户群,ICQ 也有类似 Google Groups 的服务,只不过它们没有像中国 IM 的“群”那样扎堆。
  不仅软件如此,网站也没有摆脱中国特色的一窝蜂。这两年 SNS 火起来了,不要说各大门户,只要是原来有个社区、论坛什么的,统统要弄个 SNS 上线,反正已经有现成产品可以用。而且像什么农场、车位之类的网页游戏也是清一色的,大有让“偷菜”成为吸引流量的必要工具之势。刚刚还说小 i 呢,它不知什么时候把自己的主页都变成 SNS 了,这算不算不务正业呀?
  这些中国特色的软件功能和行为是缘何而生呢?我不敢去扯什么民族的性格,因为我压根不懂这个。但我相信云风和 keso 的观点:产品部门的人不要太听信用户的。很多情况下,所谓的“用户”只不过是他们自己意念中构造出来的形象,用户的需求是对既有市场的重述,而不是对潜在需求的反映。产品部门可以声称用归一化的功能满足大众用户就能够迅速占领市场,进而用自己的特色服务来创造价值。但革命性的市场往往是由小众用户的需求引发的,一味地模仿、追求“人有我也有”,只能在同质化的过程中丧失创新的勇气,创造一个又一个没有实质进步的中国特色软件基因。

我与IE的二三事

2009/03/24 | 01:02 | 分类:IT杂谈 | 标签: | 452次阅读

  IE8发布了,各种褒贬不一的评价蜂拥而至。而我比较感兴趣的是Internet Explorer Collection这项工作,它又是一次Abandonware Show呵。下载下来在虚拟机中安装,跑我的blog,看上去只有IE6以后才能完全支持我那些CSS。而在IE3之前,Unicode是不被支持的。(看图不要误会,我虚拟机中使用日文版XP仅仅是因为手头没有多余的中文或英文版SN了,而MSDNAA/IEEE提供的日文和西班牙文版XP的SN也不能浪费,安装到虚拟机做测试环境得了)
我与IE的二三事
  简单回味一下我认识IE的故事:我最早使用的IE是Windows 95 OSR2绑定的IE3,同时使用的浏览器还有Netscape。升级到IE4的理由现在还记忆尤新:上辽河油田的“心网”聊天室(中国石油网,地址好像是http://10.70.3.20,现在不知道还在不在了?)时发现好多功能无法正常使用。于是询问网友,他们说“安装IE4就好了!”我便疑惑了,问了半天才知道桌面上那标称“Internet”的软件原来就是“IE”(别笑话,那时候我才刚刚开始学英语,尽管IE的标题栏上写着“Microsoft Internet Explorer”,可对我就是天书)。玉门油田的网站上似乎没有IE4下载,于是我花了半天的时间才从辽河的一个下载站(好像叫“巨星”、“太极”什么的)把它拉了回来。安装之后一试,果然比IE3和Netscape强大很多,以前浏览有问题的网站瞬间正常了!用现在的话说,我那时候真火星。正是在那段日子,微软凭借着Windows 98绑定IE4的手段一举击败Netscape,开始了IE垄断浏览器天下的时代。
  有即也有离,这是新世纪的事了。偶然得到的一张Ubuntu 5.04 Live CD让我在Linux下认识了Firefox。它与我之前用过的Linux下的各种浏览器相比优势明显,需要自行配置的东西不多,各式各样的问题(尤其是中文相关问题)也很好解决。我自此放弃了以前在Linux下用过的一系列不尽如人意的浏览器。而自从Firefox 2.0推出后,我逐渐在Windows下也转向使用Firefox,疏远了IE以及以IE为核心的浏览器。这似乎没什么特别的理由。Firefox更安全吗?我相信我对Windows和IE的掌控能力,用IE照样不害怕。快速吗?Firefox插件多了启动速度也不怎么样。资源占用呢?Firefox相比一些使用IE内核的标签页浏览器还是大了点。现在想想,能说服我自己的理由,第一是开源和自由——一种精神上的满足;第二是标准和统一——在不同系统下使用一致的视图、相同的插件,共享书签等设置。
  虽然现在不多用IE了,但作为一种爱好,我还是在保持追踪微软包括IE在内的新版软件发布。回到上面的截图,我们可以看出IE界面风格大致经历三个阶段:IE1~IE2是Windows 3.X的3D风格,IE3~IE6是Office 97的平面风格,而IE7~IE8则是Vista风格。开创垄断历史的是平面风格的第二个版本——IE4,那么作为Vista风格的第二个版本,IE8能否在与Firefox、Chrome的竞争中挽回自己的持续流失的市场份额呢?我看难。然而我还是在不经意间“助纣为虐”了,呵呵!