Twitter Updates

    follow me on Twitter

    November 24, 2009

    Google Chrome OS 试用初步印象

    上次那个虚拟机没搞定,这次的U盘启动这个搞成功了,而且还支持我新买的一台2500廉价东芝笔记本。下面说说自己的一些体会,总的来说跟我心中的设想几乎是完全一致的,甚至更好一点。本来以为因为驱动的原因,基本不支持现有的机器,没想到Chrome现在支持的机器并不少。虽然现在bug还挺多,或者功能还不完善,但我也还没看到什么重要的原因使我不能用它做个Windows替代,毕竟对Windows的很多方面早就忍够了。

    1. 先谈界面。Chrome OS的界面几乎是Windows 7界面的一个翻版。在Web OS的概念中,应用程序就是Web应用,或者说一个个的网站/网页。因此,如果从这个角度上去看,Chrome左上角那个按键就是活生生的Windows开始菜单,虽然现在十几个图标,但是以后扩展的可能是一定的,应该会搞的非常类似开始菜单。靠右的小Tab就是Widnows 7 Pined program再加上Startup,这个设计跟我使用Chrome Browser的习惯不谋而合。我就是设置Chrome启动的时候打开我最常用的Gmail, Reader, Wave等等,因此我很喜欢这个设计。再往右就是一个个Web应用的Tab了,就像Windows Taskbar一样,你可以在应用程序中间来回切换。最后右上角就是Windows的状态条了,包括电池,网络,还有个系统菜单是Windows没有的,但是好像没太大必要出现在那里,因为地址栏右边的工具条也包括了。Home Page则相当于Windows的Desktop,上边列出了你常去网站的快捷链接,Windows里是快捷键,不知道以后会不会加入壁纸的功能呢?总的来说,Chrome Browser就相当于Windows的Desktop,而Chrome OS是支持多个Browser窗口的,但是Windows并不知道多个桌面,当然这个意义也不是很大。
    2. 用途。目前来讲Chrome肯定不能作为主OS来用,比如这个镜像是通过BT下载的,U盘的制作也是通过Windows应用,Chrome都不可能实现。但是,作为一个替代OS给上网本用,给那些像我一样使用计算机几乎100%就是上网的人群来说,我并没有看到有什么大问题。快速启动,无需安装,管理应用,自动更新/恢复系统,设置/数据同步,Single Sign On等等优点都是Windows不具备的,而相反在Windows上表现出来的缺点又是无法让我忍受的。比如,我看着Windows开机/关机那么慢就着急,很多时候还关不掉。我特别不愿意在Windows上安装应用,迫不得已要安装的时候都很恼火,而且极其不信任有些应用,用完卸载的时候也不清楚是否卸载干净了,是不是还留下什么烂七八糟的东西。系统整天自动更新让我要启动机器,系统万一有点什么问题恢复起来也是很不理想,基本就是重装系统,而重装之后又要重新安装软件和配置系统。机器自己有个帐号去登录,登录之后去网站还需要另外的账户。这些恼火的地方,在Chrome上都不存在了,我不知道我为什么不去用Chrome?
    3. 目前的问题。Bug还是很多,刚开始用的时候好像很快就会crash,要关机再开机。后来发现,有些时候不是crash,它自己会恢复,重启什么的,而且如果你老老实实看网页的话,crash不算严重,还算是可以一用,当然希望能够有一个相对稳定的版本出来。Sync现在并不work,菜单也是灰色的。分辨率会变,有的时候重启变低分辨率了,如果再重启就可能又高分辨率了。重启或者关机的时候总是有个disk I/O error。性能并不比Widnows上的Chrome Browser快,而且目前肯定不如在其他系统直接用Chrome Browser好用。
    4. 一些技巧。我基本不怎么懂Linux,因此这些技巧不知道是不是大家都知道呢?
    • 一些有用的快捷键:Ctrl+N (new windows), Shit+ESC (task manager), F11 (full screen), F8 (shortcuts), F12 (windows preview), Ctrl+Alt+T (new terminal),

    Ctrl+Shift+W (close window)。

    • 重启:Ctrl+Alt+T, sudo reboot
    • 关机:Ctrl+Alt+T, sudo shutdown –h now
    • 进入Terminal返回Windows,F12
    • 改密码:在另一台Linux机器上把passwd里的root和chronos的密码删除。
    • 中文输入:在谷奥上看一个网友发的搜狗云输入法,试了一下还不错。

    November 22, 2009

    Chrome OS 就是 Web OS

    Chrome OS发布会已经过去几天了,照理说当天我会写篇文章出来的,可是一来现在比较懒,懒得长篇大论,二来Chrome OS跟我几个月前的想法基本一致,没太多意外,因此就觉得没什么必要写这个文章了。最近这几天看了不少评论,比较意外地是绝大多数人对Chrome OS持有否定的态度。本来按我的设想正面负面的应该是五五开的局面,没想到其实绝大多数网友的思维惯性还是很大的,还深深陷入在PC OS的时代。今天看到一篇文章与我的观点及其一致《Underwhelmed By Chrome OS? That's Kinda the Point》,更觉得没必要再表达些什么,可是由于我还有一个观点没看到人提起,就随便写写表达一下我的看法。

    最近这两年大家被云的概念搞得模模糊糊的,什么是云?什么是云操作系统?这个概念都很少有人能分清楚,更让大家忘记了在炒作云之前的热门话题“Web OS”。在PC刚开始的时候就是个单机系统,后来发展到了网络应用就在PC OS上加入了相应的功能,比如RPC,DCOM等等,又后来由于Internet的发展,PC OS上又加入了浏览器,成为了现在的模样。也就是说,目前的OS实际上还是从单机OS繁衍过来的,根基还是在本地计算。另一方面,在局域网的时代我们开发应用都是C/S结构的,也就是说client/server结构,而在10年前开始往BS,browser/server的结构转变,最近几年转变的尤其快速,甚至单机应用也在很大程度上向B/S的结构转变。那么我们知道,在C/S时代我们的OS是分Client和Server的,比如XP/Server2003。可是在B/S时代,我们的OS还是老的样子,分为Client和Server,比如Windows最新的Win7和Server 2008 R2。那么是不是这个结构有点过时了呢?我的回答是肯定的。在B/S时代,我们应该在操作系统层面有一个全新的结构,那就应该是Web OS和Cloud OS。什么是Web OS?什么又是Cloud OS?有的网友竟然拿Chrome OS跟Windows Azure进行比较,简直是驴唇不对马嘴。按照我的理解,Chrome OS就是Web OS,Windows Azure则是Cloud OS。在一个新的时代,云计算的时代,OS一定要脱离PC时代的概念,而跟云的概念紧密结合起来。Cloud OS是云里的一个虚拟服务器,具体到有多少台服务器,服务器上装的什么操作系统,一点也不重要,重要的是他提供的服务。而Web OS则是云的端,也就是云的接入点。而Web OS不应该仅仅是一个PC上的OS,它可以在多种设备上安装,提供接入到云的服务,比如手机。用户也不在乎到底是用的什么设备,设备上到底装的什么系统,只要通过Web OS能访问云就可以了。因此,Chrome Browser比Chrome OS重要的多。Chrome OS是一个纯Web OS,而Chrome Browser则是其他设备和系统上的虚拟Web OS。以后的真正焦点还是应该集中在Chrome Browser上来。别忘了现在是Browser/Server的时代,Browser才应该是故事的主角。

    在Web OS这个术语很热的时候,我试用过一些所谓的Web OS,没什么满意的。他们大多是建筑在Adobe的Flash上面。而Facebook带给了我不少Web OS的感觉,可是它还远远不够。Chrome Browser的出现使我对Web OS的理解有深了一个层次,而Chrome OS的公布则是第一个让我彻底信服的Web OS。Google这一步走的可能超前了一些,可是事实上也许是微软拖后腿时间太长了,别忘了C/S到B/S的转变可是已经发生了很多年了。也许很多网友并不知道,微软正在研究开发很多Chrome OS已经实现的功能,很遗憾第一步被Google迈出去了,就像Office online一样,Google推出很多年,微软还没有完全实现。所以,Google的Chrome OS的方向是对的,无论成功与否,都是一个非常积极的尝试。(微软完全有时间和资源短时间改善Windows把Chrome打败)

    最后说一下我的失望之处就是由于驱动的问题,Chrome OS不能安装在绝大多数的PC上,而我也不太可能为了使用它而花钱买一台新机器。可是我说过了,以后的真正重点还是在浏览器上,因此Windows7+Chrome Browser也是一个很好的选择。

    August 14, 2009

    我博客的变动

    经过了几天的试验,出于以下几个原因,我决定把博客搬家了。

    1. Blogger的功能比较强大,可是排版格式很不舒服,虽然可能可调,但是由于国内网友反映经常被block,需要翻墙才能访问,因此放弃之。
    2. 测试的文章写得差不多快没的写了,以后虽然会继续写,但会比较少,主要是需要比较长一段时间才能有一些心得体会。因此,文章的主题会跟测试没太大关系,主要会集中在互联网,尤其是云计算上。因为主题的扩展,所以我希望能够跟更多的网友分享我的观点与看法。
    3. Live Space不知道怎么回事,最近的文章在各大搜索引擎上都查不到,这就使得上边的第二点成为了不可能。而看我文章的朋友主要集中在测试领域,我这些新文章未必是他们想读的,因此放弃Live Space。
    4. 由于中国的特殊国情,我还是要不得已放弃把博客放在国外网站,因为读者基本上还是身在国内的。经过CSDN,百度,新浪博客的测试,发现新浪上发表的文章搜索引擎收录还是比较快的,而且使用起来也还算顺手,觉得可以用之。

    以下是新的博客地址以及一些其他的交流方式,有兴趣继续看我文章的朋友,或者想问我问题的朋友可以通过他们和我联系,谢谢。

    其次,相关的文章我会发布到以下网站。

    August 7, 2009

    微软将要大转型

    在微软与Google的大战中,我提过微软占有优势地位,但Google占有方向的优势。也就是说各方面的实力都是微软要高Google一头,但是在两个公司的理念上,我推崇Google。Google讲的是云计算,软件即服务,而微软由于软件霸主的地位使得微软不能放弃传统软件而提出了Software+Service的口号。我其实并不赞成这个口号,以前也批判过一些,而微软在这个口号下也没做出什么优秀的产品出来。倒是Google在云计算上做的风生水起。

    最近微软的一些变化让人感到很惊喜,首先就是Steve Ballmer竟然零代价搞定了Yahoo,简直是让我对他刮目相看。然后就是战略的转变让我重新看到了希望。微软每一年度开始,CEO都会发表下一年度的公司策略,而software+service则是去年的重点。我统计了一下去年与今年的变化,列出了主要的区别如下,

      2008 2009
    Software 出现9次 出现3次
    Cloud 出现2次 出现6次
    Strategy Embrace software plus services Embrace the cloud across all of our businesses

     

    Software的出现频率下降了三分之二,而cloud的出现频率则增长了两倍。可见微软这两年正在经历Software->Software plus Services->Cloud的一个重大历史转变。希望2010年微软能够推出一些重量级的产品出来与Google更好地进行竞争。

    微软,Google云计算基础技术的比较

     

    我想现在几乎没有人没有听说过“云计算”这个术语了,但是能明白云计算是怎么回事的人可能就是少数了,而在云计算的理解上也是因人而异,可能非常不同。这也不算不正常,因为云计算只是个概念,是个方向,很多时候大家都只是看到,抓到,感受到那么一点点,好比盲人摸象。就算大公司的理解也是千差万别,更何况每一个人了。我今天想通过对比微软和Google的云计算的基础技术来阐述一下自己对云计算的理解。首先我想澄清一些概念:

    • 云计算:现在最泛泛的概念就是云计算了。由于计算是其中的重点,我们经常把云上的所有东西统称为云计算,这就很容易使人感到迷惑。我个人认为云计算有两种context,一个就是计算,发生在云上的计算。另外一个是我刚提到的泛泛的概念,比如把云存储也归于云计算了。所以大家看相关文章的时候,一旦看到云计算要搞清楚context,否则就容易迷糊。而且我发现很多文章的作者本身对这两个概念也很迷糊。我在跟很多人讨论云计算的时候,也正是这个原因使得讨论无法进行。我个人倾向于把云和云计算区分开,就像把计算机和CPU的概念区分开,虽然CPU是计算机的核心。当然,这不是由我来作主的。
    • Server和client:我发现在讨论云计算的时候,不但需要区分上边讲的两个context,还需要区分server端和client端。如果从计算的角度来说,那当然server端是重点了,毕竟计算在server上产生。可是如果从云的整体来说,server端和client端就都很重要。而如果从用户的角度来讲,那就应该是client端最重要了,因为计算的发生对用户来讲是透明的,而client端的交互最重要。很多时候在讨论云计算的时候,人们竟然把client端跟server端混着来讨论。比如我在写livemesh与云计算的文章的时候,很多人竟然把windows azure拿进来讨论。我最近还看到有些文章竟然拿Chrome OS和Winows Azure进行讨论。
    • 由于以上原因,为了减少混乱,我会把云计算按照计算的context来讲,而把泛泛的概念直接称为云。我在讨论技术的时候,会把他们分为client和server端分别进行比较的。
    • Cloud OS与Web OS。在云计算概念流行以前,人们更多的是谈论Web OS。现在人们谈论的更多的是云计算,因此Cloud OS和Web OS的概念就又混淆了。可能不少人认为是一个东西,可是从我个方面的得到的信息来看,我们基本上可以用client/server端来区分他们。Cloud OS是server端的,比如微软的windows azure就号称Cloud OS。而Web OS则是客户端的,比如市面上的各种号称Web OS的网站,比如Facebook,比如Google的Chrome Browser,Chrome OS等等。目前来讲,Web OS还没有明确的概念,所有产品基本都是试验性质的,但是Web OS在client端还是比较明确的。
    • 对于云来讲,不同的人关心的重点不同。网络服务提供商,开发人员关心的是server端的cloud OS,而用户关心的是client端的web os。因此,对于大多数人都作为普通用户来讲,就没有太大必要去注意server端的那些新技术,新术语了,也不要被他们的出现搞糊涂了。

    下面的表格列出了微软和Google公司云计算基础技术和产品,随后有我个人的讲解。

    Server/client Technique Google Microsoft
    Server Cloud OS App Engine Windows Azure
    Client Web OS Chrome OS Live Mesh
    Browser Chrome IE
    RIA Javascript+V8 Silverlight
    Offline Gears Live Mesh/Silverlight
    OOB Chrome shortcuts Live Mesh/Silverlight

     

    • Cloud OS:由于Google App Engine只支持Python和Java,而我不想学Python也不喜欢Java,所以没有任何体验。而Windows Azure则体现出了微软强大的实力。从下至上,除了hardware则清一色使用微软自己的产品。OS: Server2008, VM: Hyper-V, Host: IIS, Dev tools: Visual Studio。从Azure来看,微软在云上开发了一套开发平台,从而改变了网络服务提供商的经营和开发模式。他们不再需要买自己的服务器,而转为租用微软的虚拟机,开发则是通过微软提供的接口开发在IIS上的web服务。重点是他们不需要考虑sacalability,而是按计算的需要和使用情况向微软付钱,就好比我们现在买电一样。而云计算的提供商则相当于现在的电力公司一样,使得计算变成一种资源去交易。由于我不是搞这行的,所以,我更多的注意力放在了client端。
    • RIA:要想建立client端的Web OS,则需要依赖于rich internet application。这方面的技术主要有三种,Adobe的Flash,微软的Silverlight以及Google推崇的AJAX。以前用过一些Web OS都是建立在Flash上, 我就感觉很别扭。一是因为既然是OS还需要依赖Flash?二是因为点右键总是有个Adobe的影子,而且不能customize。其实也正是因为这个原因使得Google在很早就放弃使用Flash了,而进行了更灵活的Javascript的大力支持。微软的Silverlight则正像是Flash的翻版,到现在为止我基本上没看到过什么基于Silverlight的应用,好像主要是播放视频。而Google自己基于javascript的Gmail, reader, 以及最近公布的集大成的Ajax的顶尖作品Google Wave等,都让我在RIA这个方向上很支持Google。
    • Browser:前边说过Google大力推行Javascript,而运行速度慢是Javascript的一个致命的问题,使得在和Flash, Silverlight的竞争中处于劣势。基于这个原因,Google推出了自己的Browser Chrome,并且内嵌了V8的JS的引擎,使得javascript的运行效率大大提高,从而可以用javascript开发出更高级的界面。比如,我看过JS实现的一些SD,动画的demo,都还是比较出色。而Chrome又大力支持HTML5,其中重要的一点是支持了视频,从而使得Flash和Silverlight的竞争力进一步降低。而且,javascript的好处在于浏览器本身就支持,不用像Flash, Silverlight还需要单独安装。进一步说,Chrome对JS的优化直接推动了Firefox和IE对JS的优化,而JS的运行效率也成为了浏览器的最重要的指标之一,使得Javascript的前景更加的光明。
    • Web OS:现在已经比较明确的看出来了Google的Web OS就是即将公开源代码的Chrome OS,而对于普通用户来讲,Chrome OS和Chrome Browser基本就是一个东西。因为普通用户对那块Linux内核是透明的,也是不在乎的。所以,我们只要看Chrome Browser的发展,就应该能推断出Chrome OS大概的样子。Chrome OS最大的焦点在于替换掉Windows,而Chrome Browser将要增加的同步功能,使得Google的Web OS更加完善,而谣传了许久的GDrive如果能够稍后推出的话,则Google的Web OS将基本成形。微软目前并没有一个所谓的Web OS,而最像Web OS的产品则是Live Mesh。Live Mesh我以前已经谈论过了,就不再重复了,简单来讲我很失望。
    • Offline:云计算的一个重大问题就是离线怎么办?这也是很多人质疑云计算的一个主要原因。Google的解决方案是Google Gears, 它内嵌于Chrome里,也可以安装到其他浏览器上。Google Gears使得用户在离线的时候还可以访问,操作数据。微软的主要解决方案是Mesh, 通过同步各种设备。最新的Silverlight也加入了一定的离线支持。
    • OOB (Out of Browser): 在浏览器中运行的Web应用界面与传统桌面软件比起来总是死板,不够灵活的。因此,人们就产生了需求,想在浏览器之外运行web应用。Adobe的Air可以实现这个功能,而Google的解决方案是Chrome里的shortcuts。给Web应用建立了shortcuts之后,就可以按照人们习惯的方式启动这个应用,而界面也很传统软件非常接近了。微软的解决方案则是Mesh, 或者最新的Silverlight OOB功能。

    综上所述,我们可以清楚地看到,Google的云技术的client端的核心就是Chrome浏览器,所有相关的技术都嵌入到了浏览器中,甚至操作系统的内核也算嵌到了浏览器中,这也是为什么Google为它Browser和OS起了一个同样的名字。所以,我们可以说Google Chrome未来就是一个Web OS。而反观微软,则是把这些feature分散在了几个不同的产品中:Windows, IE, Silverlight, Live Mesh,并没有一个统一的解决方案。因此,在云计算的战略上,还是感觉Google比微软看的更高更远一些。

    还是回到Live Space吧

    一些人反映blogger被国内封了,所以我又回到了Live Space。

    peking2toronto.spaces.live.com

    May 30, 2009

    Code Review, Debugging, Windows Internals, WDM小结 (一)

    学完Silverlight之后,最近两三个星期集中在了code review, debugging, 以及Windows Internals和WDM的学习上。现在是时候做个小结了。

    逛了一些关于debug,windows内核,驱动等的论坛,发现大家主要集中在了加密/解密,逆向,系统漏洞和反病毒等等专业领域,和我所学习他们的目的并不相同。所以,文章和我所关注的知识点也不很match。对于我来说,我学习他们的主要目的集中在了Debug和Security Test上。在学习的过程中有种知识零散的感觉,昨晚才把他们互相联系起来,因此也就有个立体的感觉(请看下图)。下面想简单地谈谈。

    首先,Debug是一项软件人员应该掌握的既基本,又高级的技能。它并不属于开发人员的专利,测试人员拥有这项技能也如虎添翼。说它基本是因为在你大学学习计算机语言的时候都会或多或少用到debug的技术,是编程中一项必用的技术。说它高级是因为很多疑难杂症都需要高超的debug能力才能去解决,debug的能力很大程度上体现了一个人的软件开发测试的水平。大家debug的目的各不相同,而对于测试人员来说就是在发现一个bug的时候能够通过debug找到root cause。在debug的学习与实践中,我认为以下知识非常重要:

    1. Debugging tools: 微软提供了一套tools,而我们最常用的就是windbg了。windbg使用起来还不算麻烦,学习起来也不难,但是各项命令实在是太多了,需要时间和经验去慢慢积累。
    2. Code review:或者你做专门的code review,或者你在debug的时候做code review。总之,你对代码不熟悉是很难进行debug的。因此,code review也是debug中非常重要的一个方面,你应该熟悉你所测试产品的代码。很多时候,你甚至不用去debug,想想代码流程,或者简单地review一下就能定位bug。而对于code review方面,你需要了解Win32 API (User mode code),以及WDM,WDF (driver)。
    3. Assembly: 如果你没有源代码的访问权利,你就需要逆向的能力了,这个就对汇编的要求很高了。但是,一般来说我们都是测试自己的产品,理所当然具有源代码的访问权利。但是,即使这样,我们仍然在某些时候需要汇编的知识去debug,比如有时windbg的命令不能正确显示结果,或者调试optimized code的时候。不过这些要求不会太高,一般来讲你学习几个小时的汇编就应该够用了。
    4. Windows internals:其实Windows internals是里边最难学的,但又是比较基础的东西。比如,windbg的很多命令的使用需要你了解内核的工作原理及数据结构。而你在调试driver的时候当然需要内核的很多知识。你如果把内核学通了,其他知识都不成什么问题了,所以对内核的掌握程度也直接决定了你的debug水平。这本书我从开始看断断续续的也快三年了,最近才有了立体的感觉,一想能知道这本书都说了些什么,虽然我不确定我到底看懂了多少,但是基本上在debug需要的时候我能够直接找到相应的章节去看,也应该可以短时间内看懂。由于先看了这本书,所以在看WDM的时候就感觉很简单了,虽然作者说话很罗嗦,但是不用太多的推敲都能很快理解。有种感觉,好象是精通了C/C++以后再去学习其他语言的时候的那种感觉。

    image

    May 28, 2009

    你是不是要找病(Bing) ?

    在Google和Yahoo中搜索Bing, 出现提示"你是不是要找病"。

    image

     

     

     

     

     

     

    image

    May 24, 2009

    《Windows Internals》学习心得(2)- Windows Architecture

    Windows

    • kernel32.dll, advapi32.dll: to provide Windows APIs
    • ntdll.dll: to switch from user mode to kernel mode
    • ntoskrnl.exe and drivers: major part of Windows OS
    • hal.dll: hardware abstraction layer

    Ntoskrnl.exe and drivers

    • executive
    • kernel: KeXXX

    Executive

    • system services: NTXXX, ZWXXX
    • executive support routines: ExXXX
    • executive components and relevant services

    Executive components and relevant services

    • Object manager: ObXXX
    • Configuration manager: CmXXX
    • Process and thread manager: PsXXX
    • Memory manager: MmXXX
    • IO manager: IoXXX
    • P&P manager: PpXXX
    • Power manager: PoXXX
    • Cache manager: CcXXX
    • Security reference monitor: SeXXX

    Drivers

    • ntfs.sys
    • volmgr.sys
    • ndis.sys