聊聊云计算(1):什么是云计算

IT界是一个特别适合“创新”的地方,尤其是各种各样的术语。各大厂商为了自己的利益,不断的推出一些新的术语,而媒体们也在不断的站队,跟着一些忽悠,搞得我们这些IT界的前线战士们一阵一阵得晕。刚刚有了B/S、C/S、SaaS、SOA、Mash Up以及S+S,现在又出来了云计算。

什么叫云计算?根据维基百科当中的定义(基于某种原因,可能无法访问维基百科):云计算cloud computing分布式计算技术的一种,其最基本的概念,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项技术,网络服务提供者可以在数秒之内,达成处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的网络服务。

很深奥的概念,相信很多朋友可能和开心一样,有些云里雾里,真的掉到云里面去了。而且在下面的云计算示例一节当中,又给出了两个简单的云计算案例,即搜索引擎以及网络邮箱。俺就有一些搞不明白了,按照这种示例,所谓的云计算,与B/S以及C/S架构到底有什么不同呢?如果再看看各大媒体举的例子,把一些在线文档编辑器也称之为云计算,那么云计算与SaaS又有什么区别呢?这不就是经典的新瓶装旧酒吗?

其实,云计算的先驱真的不是Google(谷歌)或者微软,而是亚马逊(Amazon)。让我们来看一下所谓的B/S以及C/S架构,如果从分层上来看,其实都是Client to Server的层次(只不过B/S中把C换成了Browser而已)。而无论在Client端还是Server端,都适用于经典的软件销售,在Client端,我们有Office、Windows Vista、Firefxo,而在Server端,则有SQL Server、Oracle、Apache。这些软件都适用于software license的销售模式(软件收费或者支持服务收费)。

而亚马逊的EC2则更改了Server端的software license模式,其最主要的含义是将软件的功能以服务的方式提供出来,然后根据类似于SLA(Service Level Agreement)的方式为其客户提供相应的服务。比如EC2当中的Simple DB,就是一个网络存储服务,类似于SQL Server/Oracle等等,你在开发的时候,不需要安装经典的数据库应用程序在服务器上,根本不用在意我的数据到底存在“哪块云里面”,而且开发的时候还可以使用原来的SQL语句进行CRUD(不知道CRUD是什么意思?赶快做一下功课去吧),任何时间,任何地点,任何设备都可以进行访问。听上去很美吧?

所以云计算其实就是C/S的一个扩展版本,简单可以描述为C to S to S (C/S/S)实质就是一个更新版本的SaaS,服务器端的Software As A Service。大小S之间进行计算以及数据的传输,最终把结果输给C,让C来展示就可以了。而云计算指的其实就是S to S这一端,所以与最终用户根本无关,甚至最终用户根本感觉不到这种改动,所改动的其实就是开发商如何采购其服务而已(是购买软件还是租用服务)。所以俺开心个人认为,传统的搜索引擎以及网络邮箱,或者在线文档编辑器(Google Docs)还称不上什么云计算(当然,你硬说里面也有S to S之类的云端交流,俺也不没有什么理由来说服你)。

ASP(Application Service Provider)其实也是云计算的一个先驱,但它是把应用构建在云端,而不是把服务构建在云端,所以造成了其上的二次开发商非常稀少,而没有建立起完整的生态链系统,最终进入到失败。而云计算由于只是把服务器端的Software更改为Service方式应用(云上的API),所以可以召募很多的二次开发商,从而快速得构建起完整的生态链。相当于IT界的一次洗牌过程,抓住了云也就抓住了未来,对于传统软件厂商来说,其危害要比Open source有过之而无不及。整个生态链可以基本上划分为云间服务提供商(相当于原来的服务器端的软件厂商:微软、甲骨文、IBM等)、应用开发商(基于服务构建应用的厂商,SI或者ISV等)以及最终用户等。

但云计算也不会一帆风顺,肯定会有乌云时期,有兴趣的话,可以去了解一下Amazon的EC2的业绩。我们可以先抛开欧美日印市场,从国内的IT环境来看,无论是从政策、技术或者信用等来说,目前还极度不成熟。非死不可(Facebook)本周在国内的突然病亡会在很长一段时期让大家对于云计算充满怀疑(谁又能够预料哪一天App Engine突然发动不起来了?),现有的云计算的开发模式对于重视技术迁移成本的开发商也处于观望状态。

所以云计算虽然看上去很美,但实际上要走得路还是很长。

在接下来的话题当中,开心还想聊聊云端的梦(从最终用户角度会感觉到的优势)、吞云吐雾的幻术(从开发者角度选择最好的云计算平台)等话题,欢迎大家交流。

老问题:注册表误修改如何修复?

虽然几乎所有文档都在提醒操作人员在修改注册表的时候,都要进行备份,但实际上,这并不是大多数人的必备步骤。

如果你不慎修改或删除了 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet 中的很多东西,而且也不知道这些东西是做什么用的,那么在重新安装整个操作系统和应用软件之前,可以尝试如下方法看能否恢复:

1. 先把 HKEY_LOCAL_MACHINE\SYSTEM 的各个子键备份一下

2. 不要马上重启机器,不当修改这个子键,最常见的结果就是系统不能启动,或者反复重启

3. 如果你能接触到机器的控制台,那么重启,按 F8,选择“已知最近正确模式”(LastKnownGood)进入 Windows,这样能避免上次的不当修改。

4. 如果不能接触机器的控制台(适用于访问机房中的虚拟机、托管在IDC的托管机等),按不了 F8 ,那该怎么办呢? 两个办法:

1) 在 Boot.ini 中加入 /lastknowngood 参数,然后重启(此功能和F8类似),正常重启并登录后,再把 boot.ini 中的此参数去掉

2) 在HKEY_LOCAL_MACHINE\SYSTEM\Select 子键下,将 Current 的值修改为和 LastKnownGood 的值一样,此法和按 F8 的作用也是类似的

以上经验来自于一次重要的服务器恢复过程。

 

Don't be evil

本周末作为嘉宾参加了阿里巴巴集团举办的第二届网络工程师侠客行大会,刚刚回到北京。

我比较喜欢这种第三方举办的会议,因为可以听到很多不同的声音,也可以了解合作伙伴以及竞争对手的新技术,让自己能够对业界的趋势更加了解。马云先生在主旨演讲当中也说过,技术分享才会让业界都进步。

当然,通过此次会议也可以扩展自己的人脉,认识到更多的人员。这次也见到了一位我原来非常敬佩的先生,他原来在微软研究院工作,后来去了加位一家全球知名的互联网搜索的公司,担任副院长工作。此次会议他也代表其现任公司进行了主旨演讲,介绍了其云计算策略以及相关的新产品。我对云计算一直比较感兴趣,也希望了解到业界的不同实现方式,所以很认真得在听,但说实话,这位先生的演讲让我很失望,可能并不适合这种大场面的演讲吧,也对这位先生彻底无语。

可能由于是现场演示,此先生介绍在讲完云计算的一些大家都知道的知识后,开始介绍其自家产品,进行实时演时,打开一个浏览器,输入网址: http://code.ZZZZZZ.com/gears, 我在下面一看就不对了,其真实的地址应该是http://code.ZZZZZZ.com/apis/gears, 在下面还小声提示了一下。果然不出我所料,系统返回了一个定制化的404界面。但这位老兄有些口不择言了,或者也想幽默一把,脱口说了一句:“IE出问题了”。然后突然又注意到,自己使用的并不是IE,而是Firefox。一时就楞在那儿,开始转变话题。

再后来,又一个Demo,这次就开始使用IE7了,准备下载一个文件,结果由于网络的临时问题,下载终止(那个界面大家可能都见过的),老兄又开始说“IE又出问题了”,呵呵,不知道哪儿来了一个“又”。我这次真服了。接下来在输入汉字“新浪”的时候,由于拼音不好,一直在说,他应该使用他们自己开发的那个某某拼音输入法(他自己的笔记本完全可以使用呀,而且还是他“开发”的产品)。

再接下来,他的演讲严重超时,但不甘心,于是开始演示他们新开发手机开发平台,结果启动了五分钟,那个模拟器始终没有打开,老兄开始说这可能是Windows的问题,或者是他的IBM笔记本的问题,牛,太会找理由了。再接下来,组委会实在看不下去了,而且马云先生在台下也等了太长时间了,所以上台中断了他的演讲。

实话来说,做现场演时的时候,可能会遇到各种各样的问题,所以很多人喜欢用截图或者视频来代替这种现场演示。如果在现场演示时出现问题,也需要认真对待,在不耽误大家时间的情况下,可以再重试一次,并且给出原因。最忌的就是随口给出一个原因,毕竟下面都是技术人员,这种404错误或者你使用的哪种浏览器还是可以看明白的。

尤其是,这位老兄刚刚跳槽,就开始在公开场合这样攻击老东家,不知道他的同事们怎么想,真的让我彻底无语。

抗震救灾,众志成城

当地震发生的时候,我正在使用Visual Studio 2008 + XNA Game Studio为我的Zune编写小游戏,刚刚在Zune上部署成功一个俄罗斯方块,正在兴奋的将这个好消息写成邮件发给部门同image事时,我突然感觉脑子一阵晕,当时还以为是兴奋过度了,于是闭上眼准备休息一下,这时候听到后面的同事说地震了才意识到是什么样的状况。后来大厦的广播响了起来,要求大家撤离大楼,我把手机,Zune, 以及其它的一些电子设备随身带着,跟着大家一起下了楼。

在楼下,同事们都在紧张不安的相互询问信息。我一直使用Zune来收听电台,以便知道后续的事情。最后终于了解到原来是四川发生了7.8级地震。这段时间,每晚都和太太会守在电视机前,观看中央电视台的实时报道,看到的内容让我们都会非常感动,甚至热泪盈框,都在想除了捐款,我们还可以为灾区的群众做些什么?

我们部门的老板Nigel Burton先生是位英国人,可能有很多博客堂的朋友在各种场合或者媒体上已经见过他。在他的提议下,我们昨天上午开发完成了一个内部赈灾拍卖的网站,并且在中午通过内部邮件向我们开发合作部(DPE)的同事通知了此网站。通过该网站,所有同事都可以把自己的一些物品放在上面进行竞拍,竞拍所得款项通过公司人事部门设置的捐赠网站捐赠出去,同时,公司还会按照1:1 match的方式再加倍捐给灾区。除了我们部门的同事热烈响应以外,上海、广州以及研发集团的同事都积极参与了进来。截止到昨天午夜十二点,总共有23件物品征集上来,包括相机、手机、电脑、显示器、路由器、游戏机、MP4等等,共有88个出价纪录,最终实际募集到资金RMB 23,063元。

当然,这只是微软同事们热情捐助当中的一部分,除了第一笔费用已经递交中国红十字会,我们员工的捐助还在进行当中,今天下午将会与公司1:1 match的部分一起递交给中国红十字会。公司也与相关部门进行了联系,积极参与其它活动。员工也在内部积极献策,讨论如何更好的参与到此次灾区救助当中。

抗震救灾,众志成城!!!

使用Silverlight制作自己的休闲游戏

相信很多朋友已经知道Silverlight是什么东东了,在前段时间,微软与国内外的合作伙伴一起致力于Silverlight的合作事宜,目前您可以看到以下精彩的国内案例:

1. 百度音乐抢鲜族(Silverlight 2 Beta 1): http://mu.baidu.com,上个月,百度已经将其音乐抢鲜族升级到了Silverlight 2 Beta 1.

2. 奥运官网火炬接力视频(Silverlight 1): http://torchrelay.beijing2008.cn/cn/video/historical/basketball-chouqian-man/,以后将会有越来越多的接力视频会使用Silverlight进行播放.

3. 腾讯采用Silverlight的新产品创意 (Silverligh 1 & 2): http://labs.qq.com/e/51/,腾讯在未来将会把Silverlight应用到新产品的创意当中。

4. 新浪音乐地图(Silverlight 2 Beta 1):http://blogs.msdn.com/jijia/archive/2008/04/16/sina-musicmap-details.aspx,我的同事黄继佳会向大家介绍更多细节。

当然还有其它的很多新产品会很快发布,大家可以参看媒体上的报道。

imageSilverlight 1.0自从去年九月发布以来,在半年左右的时间内,通过与国内外合作伙伴的合作,既已经达到了30%左右的市占率,而且在全球以每天一千五百万的下载率进行递增。曾经有一家媒体的记者在我们进行交流时对此数据产生了怀疑。我相信也有很多朋友现在表示怀疑,但毛主席说过“没有调查就没有发言权”,所以大家完全可以在自己的页面当中进行Silverlight安装侦测,而那家媒体在自家的网站上选择时间段对安装量进行监测后,惊讶的发现,这个数据是完全准确的。如果您有兴趣在自己的网站上进行检测,建议阅读我的同事黄继佳的文章:Silverlight安装与侦测原理

所以,现在已经是全面转向Silverlight开发的时代了,那么使用Silverlight除了开发视音频体验完,是否也可以制作自己的休闲游戏(当然,也可以开发RIA应用,但毕竟视音频以及休闲游戏是更容易入手的)呢?当然可以,我们可以在http://www.silverlight.net 里面看到很多Sample,是休闲游戏的。不过我相信很多人使用C#/Javascript/XAML来制作休闲游戏还是很困难的。

认真想一下,休闲游戏其实也很简单:场景、角色、控制、信息展示以及行为等,除了编写代码,有没有可能让那些单纯的游戏爱好者也可以根据自己的意愿制作一个游戏呢?

可能大家都已经知道Popfly了,而现在同样在Popfly平台上,微软推出了一个新的工具,就是Game Creator,在这儿您可以玩游戏(这些游戏也是模板),编写自已的游戏,也可以将自己编写的休闲游戏发布到您的网站或者博客边栏上,有兴趣就来试一下吧:

http://www.popfly.com

这是一个迷茫的季节

非典的时候,我一直很迷茫,不知道自己的未来在何方。那时候也待业在家,将近有一年的时间,像闷头苍蝇一样,找不到方向。只能困在家中,思考再思考…

万幸的是,非典刚过没有多久,我就进入了Microsoft China,感觉找到了自己的方向,对未来也充满了希望。

而今,我又进入了迷茫季…

IE 8 Beta 1简体中文版正式发布

可能很多朋友已经从一些其它渠道获知,IE 8 Beta 1的简体中文版已经正式发布了。您可以从此处了解或者下载IE 8 Beta 1的简体中文版。

前段时间,开心一直与IE8在中国首选的合作伙伴一起工作,在发布IE 8的同时也发布了这些合作伙伴为IE 8量身定做的一些功能,有兴趣的朋友可以前往IE 8的简体中文网页进行查看。以下为此次发布的相关“活动”(Activity)

另外,还有一些源剪辑(WebSlice)尚未正式发布,稍后正式发布时,大家也可以从IE 8 简体中文网页上进行查看。

在Beta 1版本之前,开心曾经安装了数个IE 8的内部版本。从那时起,就震惊于IE 8的这两个新特性(Activity与WebSlice)。虽然IE 8带来的特性不止以上两点,还包括对国际标准的支持,对Ajax更加友好的支持等等,但Activity与WebSlice却是最容易打动最终用户以及软件开发商的。

在以往,为了争夺眼球,很多网站都开始开发IE工具栏,但IE的工具栏空间毕竟有限,所以恶意软件的诞生最初也是从IE的工具栏开始的。从那时开始,流氓软件的战争就开始在用户的桌面端开展,越烧越烈。而开发一个浏览器工具栏不仅要背负恶意软件的恶名,还要有非常长的开发周期,可想而知,很多网站对于工具栏的感觉非常类似于“鸡肋”,食之无味,弃之不舍。而现在,Activity以及WebSlice的出现却很好的解决了这个问题,在用户许可的情况下抓住用户的眼球,让用户可以自己选择自己感兴趣的内容。

Activity非常类似于Office中曾经出现的Smart Tag技术,您只需要把您现有的一些Mash up用XML定义文件的方式进行相关的声明,就可以进行开发。如果您的Mash up已经开发完成,那么使用一个记事本就可以完成相关的定义文件的编写工作,非常类似于IE 7以及Firefox 2.0当中采用的OpenSearch的API。这样,最终用户可以在任何网页,选择任何短语来调用您所开发的服务。

WebSlice对于很多需要订阅的内容非常有用,用户关心内容的变化,但又不希望花很长时间紧盯着网页进行查看,那就可以使用WebSlice,比如社交网站中的好友动态,新闻条目当中的时事新闻,股价信息等等,都可以使用WebSlice进行相关的查看。而开发呢,只需要在您需要用户订阅的页面块(通常是一个HTML语言中的DIV元素),添加一个class声明,这样IE8就可以自动判断出这是一个WebSlice,使用特殊的方式予以解析。当然,您也可以增加一些其它的声明,比如监视的时间间隔等。

以上的开发都比较简单,而且服务器端也不要求是WISA(Windows + IIS + SQL Server + ASP.NET) 架构,曾经有一个合作伙伴的开发人员,在某次活动的中场休息的时间,使用telnet调用服务器上的vi编辑器,在不到十分钟左右就完成了相关Activity的开发工作,非常神速。

当然,更多开发相关的文档您还可以从IE 8 Beta 1的简体中文主页上获得。

木乃伊中的Bugs(2):Server.Transfer与Form提交的回传地址

可能有很多朋友发现了一些问题,比如使用http://blog.joycode.com/joy来访问开心的页面,或者使用http://blog.joycode.com/[Subfolder]方式访问其它堂主的首页(后面不加上default.aspx)的话,会遇到各种各样莫名其妙的问题。

1) 你当前未登录,使用登录链接进入到Windows Live ID登录校验后再次返回,会出现404错误;

2) 登录后,使用搜索按钮在该博主文章中搜索相应关键词时也会出现404错误;

先来讲讲目前的工作原理,大家知道,博客堂目前使用的是IIS7来运维的,而且我不太习惯使用通配符映射,总感觉那样性能消耗太严重,所以借用了Subtext中的方法,即使用错误页面映射,在IIS 7的错误页面当中指定自定义Url,即”~/SystemMessages/FileNotFound.aspx”来进行处理。这样当你访问http://blog.joycode.com/joy的时候,由于ASPNET_ISAPI无法对其进行处理,相应的各种HttpHandler/HttpModuler也无法对其进行操作,只能由IIS 7交给错误页面处理,亦即FileNotFound.aspx。

在FileNotFound.aspx当中我们来对原始请求的URl进行分析,如果发现用户其实访问的是一个堂主的首页的话,类似于http://blog.joycode.com/[Subfolder]这样的地址,那么就使用Server.Transfer,将相关请求转向到指定的首页地址,在这儿即”~/Skins/default.aspx”,当然,在转向前我们会将相应的BlogConfig信息也一并转向过去,这样大家看到的页面就是当初请求时所想要看到的页面。

但这时候会出现一个问题,即使用Server.Transfer(string path, bool preventForm)的时候,呈现的页面当中的Form的回传地址是真实的物理地址,而不是虚拟路径。在我们这儿是”~/skins/default.aspx”(感兴趣可以这几天在登录后,去各堂主的首页,将鼠标放在“搜索”按钮上,看看IE状态栏的地址指向,或者使用浏览源文件的方式看看该页面上Form的回传地址)。因为http://blog.joycode.com/skins/default.aspx根本不是某个博主的页面,而是后台通用的转向后的页面,所以我们在系统中将此页面进行了隐藏,所以最终当你搜索或者登录时会出现404错误。

这个问题很麻烦,不过我有号称活MSDN的宝玉同志,所以我并不着急。不过宝玉同志告诉我解决方案只能通过客户端的JS,来重新对于Form的URL属性进行改写。解决倒是可以解决,但总感觉不够优美,破坏了程序的整体性。所以开心用了一周的时间一直在思考此问题。

后来在阅读UrlRewriting的源代码时,发现它都是使用Context.RewritePath来重写路径的,于是我也尝试使用这种方案来代替Server.Transfer,但发现了一个问题,Context.RewritePath想要达到转向的目的,必须在HttpApplication.OnBeginRequest事件中才能生效。在一个ASP.NET Page页面中就没有办法解决了,事实上,在判断当前是不是一个堂主页面时,程序已经运转到Page.OnLoad事件了。

还能怎么办?与思归交流,他告诉我其实Context.RewritePath其实可以修改一些HTTP的内部参数,也就是说在调用Server.Transfer之前,调用Context.RewritePath还是有机会重写虚拟地址的。但我写了一个示例程序,发现其实根本没有修改。

既然Context.RewritePath还是有机会修改的,那么问题可能出现在Server.Transfer上面,能不能换一下其它方案,比如Server.Execute?试了一下,得到的结果不是我想要的。于是回过头来重新看Server.Transfer,发现它除了Server.Transfer(string path)的重载外,还有一个Server.Transfer(IHttpHandler)的重载。那么怎么从一个ASP.NET Page转换为IHttpHandler呢?查MSDN,终于我发现System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath就是做这个作用的,哈哈。赶紧试一下,竟然成功了!

测试代码如下:

   1:  private void RewriteUrl(string subfolder)
   2:  {

3: Context.RewritePath(string.Format("~/{0}/default.aspx", subfolder),

string.Empty,

string.Empty, false);

   4:             IHttpHandler handler = 
System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath("~/skins/Default.aspx", typeof(Page)) 
as IHttpHandler;
   5:             Server.Transfer(handler, true);
   6:  }                           

终于历经一周,我找到了解决方案,代码与原来的相比,就多了一行而已。

编程之美-微软技术面试心得

我喜欢面试人,不喜欢被人面试,我相信大部分技术出身的朋友都与我一样的想法.但活在这个业界,不可能不过五关斩六将的参加各种面试过程.面试结束,有的人很郁闷,有的人很兴奋.当然很多时候,这都是临场发挥的实力,但其实也折射出大家的综合素质.

相信很多人都知道微软的面试过程是比较特殊的,也有很多朋友在一些媒体上读到了类似于下水道井盖为什么是圆的等等所谓的微软面试题.对于微软的面试过程产生了敬畏.微软的面试过程也被蒙上了一层面纱,让人感觉非常神秘.当然我也相信有很多朋友经历过微软的面试后,会发现其实这些面试过程并不神秘.如果你”有幸”被我面过,会发现我从来不问“北京有几个公共汽车站”或者“黄河每秒钟的流量有多少”之类问题.其实原因就是开心现在工作的部门并不是研发部门,除了要求技术能力外,还需要一些市场运作能力等.所以面试过程会更加开放一些.

与邹欣认识比较久了,在微软刚刚开始"潜力发展计划"的时候,我们在济南做试点,就曾经邀请过邹欣同志来济南进行演讲.那时候他还在总部工作.后来去美国的时候,又与邹欣聊过后来,一直建议他回国发展.最终现在邹欣在微软亚洲研究院工作.邹欣同志是一个面试老手,不知道有没有博客堂的读者也被其面过,可以写写心得了.

从邹欣拿来他回国后主编的第二本书《编程之美-微软技术面试心得》,我就开始不停的流汗,邹欣也太会"折磨"人了吧,这些题目简直堪比满清十大酷刑呀,比如第一道面试题“CPU占用率曲线听你指挥”,让面试者写一段程序,控制任务管理器当中的CPU占用率的曲线一直显示为一条直线或者正弦曲线。后来通过各种搜索引擎进行搜索,发现还真有不少朋友做出来解答,还从网上把一些朋友的解答拿到本机进行测试,特别佩服某些朋友的思考能力以及创新思路。我相信,很多朋友假如第一次有机会来微软面试,遇到的第一个问题是这样刁钻的问题,不止会流汗,可能有些人会恨不得把鼠标抡起来,砸向面试官。

CPU曲线还是那个曲线,任务管理器还是那个管理器,但出这题的朋友以及可以答出这题的朋友都需要很多的思考,往往一些细节就可以考验出这些朋友的真功夫。

我也看到过其它公司的一些面试题,比如探讨一下Java的事件机制以及C#的事件机制有什么区别?重载与重写有什么区别?使用ASP.NET 2.0中的Master以及Theme机制写一个简单的个性化网页。通过这些面试题,我们可以看到每家公司所招聘人才看中的重点,大部分IT公司招聘的就是代码工人,只要会熟练使用工具,对语法熟悉就可以了。希望招聘到的员工经过简单的培训立即可以上岗。而微软的面试题折射出来的则是微软对于基础研究的重视。

我也在日常的客户接触当中,听过很多朋友抱怨C#/.NET太简单,不像Java那样高深,其实无论是Java还是.NET,或者其它产品性的技术,都是同等的工具而已,工具会有顺手不顺手的差异,在本质上没有什么差别,关键还要看自己的基本功。由此想到了前几天邹欣所写的《Arrays.sort() and 吾欲仁则斯仁至矣》。的确,现在中国的高校教育过于急功近利了,高校毕竟不是技校或者中专,培养出来一批工具使用娴熟的技术工人,高校培养的应该是真正有创造性思维的人才。

再由此想到了Google的面试,不知道是否是由谣传谣,说Google招聘某全球VP,最终由于此候选者无法拿出自己在大学期间的成绩单而被拒。也听说过Google在国内非常看重学历(以讹传讹?),所以出来了模仿Hao123的“网站导航”或者模仿搜狗拼音的“Google拼音”。

其实面试只是一个过程,面试并不能保证所有通过面试的人都是万中挑一的高手,没有通过面试过程的朋友也不必自怨自尤,毕竟面试过程与临场发挥、专业对口甚至面试官的心情都有关系。所以,放平心态就是了。

再次向大家推荐阅读这本《编程之美-微软技术面试心得》这本书。

如何使用博客堂

博客堂使用Windows Live ID之后,可能使很多朋友有些无所适从,不知道如何在博客堂进行注册,然后发表评论等.也有人担心在博客堂使用Windows Live ID登录或者注册会泄露自己的个人隐私,所以迟迟不敢进行下一步的点击,只能做潜水人员.

首先,开心在这儿进行一下声明,Windows Live ID的登录注册过程并没有大家想像的那么复杂.而且不会泄露个人隐私.更加详细的情况大家可以阅读:http://dev.live.com/liveID/default.aspx中的相关内容.简单来说,Windows Live ID是微软推出的一个完全不同于Passport的免费服务,任何网站都可以使用,可以使用ASP.NET/PHP/JSP/CGI或者其它任何网络编程语言进行调用.

其基本的注册过程如下:

1. 用户在第三方网站,如博客堂上,点击如下的登录/注册按钮.

image

2. 浏览器将会自动转向到http://login.live.com网站,让你选择你的一个Windows Live ID作为登录凭证.

image

3. 在您选择完登录凭证后,Windows Live ID将会自动将相关信息回复至http://blog.joycode.com/wllhandler.ashx,所谓的相关信息,不包括任何您在注册Windows Live ID时所使用的信息,比如您的邮件地址,头像,密码,生日等.只有一个类似于GUID性质的十六进制字符串作为您在本站的用户身份,wllhandler.ashx在拿到此信息后,会比对用户数据库,如果发现该字符串已经在博客堂注册过相关信息,那么将会直接将该用户设置为登录,如果发现该用户从来未在博客堂进行过登录,将转向用户注册页面:

image

4. 如果您是博客堂改版之前的博主,那么请点击”博客堂原用户绑定”,该面板会自动展开,让您输入原来的用户名以及密码,完成用户绑定工作,如果您原来在博客堂没有过老帐号,请直接在新用户注册当中输入您选择的用户名以及邮件地址(用户名必须为2-11位的中英文混合体),然后点击新建用户,系统会自动帮助您完成登录.以后您只需要使用该Windows Live ID就可以完成相关登录,再也不需要记录用户名以及密码了.在登录完成后,您可以点击您的个人信息面板中的”更新信息”按钮,进行相关设置:

image

5. 在”更新信息”页面当中,您可以输入自己的地区,生日等一些基本信息,还可以上传自己的头像,以便让更多的用户了解您.在主页模板当中,您可以选择自己喜欢的主页模板,在下次访问博客堂时将会使用相关的主页模板进行访问.上传头像时,请您在上传完照片后等照片都装载完成后,照片上出现十字型鼠标时,使用鼠标选择一块区域再点击”完成”按钮.否则该头像并不成功.

6. 博客堂首页中文章区显示的是由最终用户也就是您通过投票而产生的最佳文章,也就是使用的Digg模式,投票按钮需要在您登录后,进入到文章的查看区进行投票产生,如下图.在点击”推荐”时,会提示您每次投票都将消费您一分的博客堂积分(此举主要是为了防止有人恶意刷票,未来可能会拿掉).如果推荐成功,该文字会替换为”成功”二字,如果失败,则会显示为”失败”(失败的原因可能是系统问题,如果遇到,请与开心联系.另外,如果您的积分不够,会显示”积分不够”的信息,此时需要您通过发表留言等方式进行积分换取工作.

image

7. 通过首页上的”分页阅读最新文章”您可以以分页的方式按照时间顺序浏览博客堂最新发表的文章,通过RSS订阅方式获得的文章列表也是按照时间顺序发布的.

 

如果有任何问题,或者建议,欢迎大家提出.非常感谢.