我看软件园

中国现在有多少个软件园?目前大中型城市应该都办有软件园,而这其中,被发改委以及信产部认定的可能就二十左右。由于工作关系,我拜访过很多的软件园。大部分软件园设立在城市的郊区,也有一些城市,把软件园设置在市中心的繁华地带,比如青岛以及厦门。

我也询问过很多软件园的地价,在当今房地产物价在各地普遍居高不下的情况下,大部分软件园的企业的物价都是非常低的,以至于让我都有炒地皮的冲动,当然目前开心资金不充裕,否则我就可以学习潘石屹了。不过虽然名为软件园,很多软件园里面入驻的企业却不一定是软件企业,比如生物制药、硬件制造、化学物品或者其它高科技企业。据我了解,很多地区的软件园是与高新区置在一起的,所以不以为怪。但如果这个比例高达30%以上,似乎有些不伦不类了,甚至有时候会有一些非高科技企业。

当然有些地区也依据本地情况,为自己的招商引资做出了一些限定,比如有些软件园定位自己为动漫基地,有些软件园则将自己定位为嵌入式软件基地,或者其它等等,一方面很多园区跟风而上,导致各种基地名目重复出现,另外一方面即使建立了种种基地,也没有配套设施跟上,只是表现在招商引资上,而在人才培养,销售市场上的力度还不是非常大。

大部分软件园区都可以在本城市中当选为该城的十大建筑,环境非常优美,甚至有很多园区领导告诉我,他们是依据Microsoft Campus的方式来构建的,有时候在园中闲逛,还真有置身微软总部的感觉。不过微软的Campus本身就是一个公司,可是园区中的很多企业大都还是竞争对手。所以造成很多企业在中小规模时在园区中呆着,等变大了后,就准备自成一家,异地而居了。软件园(Software Park)相信很多老外没有过这种概念,所以让他们理解起来也较为困难。但目前来说,很多发展中国家已经向中国来学习这种经验了。

快过两节了,大家与我一起来思考,如果你是当地领导,如何来考虑下面的问题呢? 我目前没有什么答案。

  1. 政府应该给予软件企业什么样的优惠? 除了退税减税之外。
  2. 软件园一定要在郊区吗?
  3. 软件园的配置设施应该都有哪些? 包括生活设施。

开心在此谨祝大家两节愉快!

办公室里面可以洗脚

说实话,我挺不想写这篇文章的,可是看到很多文章,欲一吐为快。

这个题目来自于一篇新闻:《李开复称Google上班可以跳舞跑步和洗脚》。李博士曾经是我非常敬重的一个人,可是我没有想到,自从Follow his heart后,变得有些肤浅了。其实办公室里面可以洗脚、可以穿托鞋啥的。放在几年前,的确会让我激动不已,但我没有想到,到现在李博士还在拿这一招来招聘学子。我知道很多人会向往这种办公室生活,在办公室里面啥都可以做。但一定记着,Google花高薪来养你,是让你来工作的,虽然你有时间可以自由支配,洗脚洗袜子什么的,但如果完不成自己的工作,那就要对不起了,或者会发生新一轮的百度事件,到时候你还会有心思洗脚吗?

说到百度,不得不提到“最佳雇主”奖。当时我与我老婆是在电视前一直期待这个节目的,看来看去,也就是百度提供免费早餐,新浪有一个免费瑜珈时间等等的,或者哪家公司可以自由时间上下班。我没有感觉到有哪些什么特别让我艳羡的地方,毕竟条件越宽松,工作压力也会正比增加。人每天就24个小时,你洗了八个小时的脚,那也得有八个小时工作吧?不然你怎么对得起洗脚师傅呢?顺便提一句,去年的最佳雇主是“百度”。由此可见,电视节目就是电视节目,别太当真。

又看了一篇《和李开复吃饭》,让我对李博士真的无语,他说“里面微软的照片不少根本不是微软公司的”。没错,里面那些餐厅只是B1的餐厅,不是微软承包的,资产权也不属于微软。除了这之外,其它大部分地方我都曾经亲历过,没有看出来哪些不是微软公司的(如果非要较真土地所有权,那就没有一样是微软公司的了)。当然,饭桌上的谈资大不可当真,就像电视节目一样,练习一下脱口秀而已,这个年代做企业就得先把自己做成明星才可以的。预祝李博士能够继续做最好的自己。

不过我有些弄不明白,李博士的手下难道没有精英?难道没有人可以帮帮李博士,啥事都让李博士亲历亲为?甚至连请个Blogger吃吃饭,洗洗脚也得他老人家大驾光临?怪不得一月前在虹桥机场看到李博士时,发现有些苍老了。保重!

中国软件人才培养的失败

虽然我在大学里面学的物理专业,但实际上,我的大部分物理知识基本上都来自于《时间之箭》、《可怕的对称》等物理学科普读物上,这是我今天早上翻看这几本书的时候突然悟出来的。

从初中开始,一直在学物理,我现在已经记不清牛顿的那几个重要的定律了,惯性定律应该是牛顿第一定律吧?同样,虽然是在大学一年级才第一次看到真正的电脑,可是实际上,在大学里面辅修的相关计算机语言课程我一直都是及格就好。因为说实话,当一个东东成为学业的时候,你就怎么也提不起来兴趣了(强迫式灌输教育的后果)。相反,五笔字型却是我的强项,那是在高中毕业之后,在家里面玩够了,找哥们借了一个小霸王电脑(号称486)以及一本技校的计算机教材,慢慢学起来的。

从小老师们就教导我们说:兴趣是最好的老师。我相信现在业界中大部分朋友对于计算机技术还是充满兴趣的,但对于计算机专业的学生来说,我认为有50%感兴趣就差不多了。记得我在读大学的时候,曾经亲眼目睹一个学了计算机专业四年的女孩子如何在计算机面前无所适从的样子。

去年我负责华南区的ISV工作,其中的一部分业务是“实训”,如何协助帮助计算机专业的院校与IT企业之间建立起相关的桥梁。在调研的时候,发现这里面有很多的鸿沟:一方面是学生找不到如意的工作,而IT企业却找不到称心的人才。双方都会把包袱推给对方。也有很多培训机构看到了这方面的市场,而投身于其中,试图解决此难题(千人工程北大青鸟福建宏天成都金海洋西安瀚博)。

前几天看到一个新闻:北京理工大学建成实训基地,让学生上课变上班。这又提出了一个新的理念:让学生亲身感受国际规范的项目开发流程,在真实的企业项目开发过程中提高实际应用能力,积累项目开发和团队合作经验。我不太了解具体的实施过程,但如果还是走进原来的灌输式教育,中国的软件人才培养可能仍然是失败的。

软件人才是一种综合型人才,而非仅仅是精通几门计算机语言就能做得来的,而且说实话,看简历看多了之后,你会发现现在的“精通”已经成为了一种笑话了。现在的时代流行“充电”教育,到了一个阶段,感觉没有电了,再去充。而很少有人真正的系统性的去学习一些东西。不要只是把MSDN当成速查书也不要把网络仅仅认为是“搜索”,在需要的时候才去用。在TechED 2006会议上,也与一些朋友讨论过这个问题,我的建议就是两点:1. 演讲; 2.写书。演讲可以训练你的沟通能力,同时演讲前的准备会使你扎实的去学习一些知识,讲的内容可能只是你准备的内容的25%。另外一点,写书也可以锻炼你的系统性思维,从而把一门知识进行系统性的学习。

在单位工作的时候,由于老板希望能够快速完成项目,可能无法给你更多的时间让你来写书或者演讲。所以很多时间就要靠自己了,比如参加各种志愿者活动,或者在公司内部搞一些Tech Talk例行活动。大家每周轮流讲一些系统性的知识点,我相信在不太长的时期内,你即可以做最好的自己,也可以让公司了解到这种活动的价值。

希望更多的机构抱起教育为国的信念,而不是仅仅想从中分一桶金。

技巧和诀窍;在VS 2005里优化ASP.NET 2.0Web项目的Build性能

【原文地址】Tip/Trick: Optimizing ASP.NET 2.0 Web Project Build Performance with VS 2005
【原文发表日期】Friday, September 22, 2006 11:47 AM

这个帖子讨论在Visual Studio 2005中开发web项目时,如何优化其Build性能。如果你正受缓慢Build的煎熬,或者想知道怎么提高Build速度,请继续读下去。

VS 2005 网站项目和VS 2005 Web应用项目简介

 VS 2005 支持两种项目模型:VS 2005 网站项目(Web Site Projects)VS 2005 Web应用项目(Web Application Projects)

VS 2005 网站项目是VS 2005刚发行时内置的项目模型,它提供了一个基于无项目 (project-less)的模型来开发web应用,该模型使用了ASP.NET 2.0在运行时使用的同个动态编译系统。而VS 2005 Web应用项目则是今春早些时候发布的一个完全支持的可下载项目模型,它提供了一个使用了基于MSBuild的build系统的项目模型,可以把一个项目中的所有编码编译成单个程序集 (与VS 2003类似,但又少了VS 2003 web项目中涉及FrontPage服务器扩展,IIS依赖性,以及其他问题的种种限制)。想进一步了解VS 2005 Web应用项目的话,请参考我发表在 http://webproject.scottgu.com网站上的系列教程。注意,对VS 2005 Web应用项目的支持将包含在VS 2005 SP1中,这样以后就不用另外下载了。

VS 2005网站项目和VS 2005 Web应用项目两个模型在将来的Visual Studio版本中将会继续被完全支持。我们发现,有些人喜欢一个模型,憎恶另外一个模型,反之亦然。从特性(feature)的角度看,没有“最佳的模型选择”这一说,完全取决于你个人的爱好和你们的团队协作机制(team dynamics)来决定哪个模型最适于你。譬如,许多的企业开发人员喜欢VS 2005 Web应用项目模型,因为它提供了更多的build控制和团队集成支持,而许多的web开发人员则喜欢VS 2005网站项目模型,因为它的“即存即行(just hit save)”的动态模型和灵活性。

有2篇文章,你也许会发现在决定采用哪个模型时有用,这篇MSDN上的白皮书内含对这两个模型的比较, 而Rick Strahl的《Web应用项目和Web 部署项目发布了》一文对不同选项的利弊做了一个很好的讨论。

想从VS 2005 网站项目模型迁移到VS 2005 Web应用项目模型的话,请按这个C#VB版的教程里示范的步骤做。

那么哪个项目模型Build起来快些呢?

在对项目做full build时,VS 2005 Web 应用项目模型编译起项目来会比VS 2005 网站项目模型快很多。full build是指对项目里的每一个类和网页要做编译或重新编译的情形,要么因为你在build菜单里选了Rebuild,要么因为你修改了一个依赖的类库项目或者/app_code子目录里的编码,然后点击了build或按了ctrl-shift-b来编译解决方案。

在这些“全部重新编译(full rebuild)”的情形下,VS 2005 Web 应用项目编译比VS 2005 网站项目快很多有几个原因。主要原因是,跟在VS 2003中一样,VS 2005 Web 应用项目只编译你的页面的后台编码(code-behind)以及你项目中的其他类文件。它既不分析也不编译你的.aspx 页面内的内容/控件/行内(inline)编码,这意味着,它不需要parse那些文件。坏处是,这也意味着,在编译过程中,它不会检查那些文件是否有错(而VS 2005 网站项目则会识别其中的任何错误)。好处是,这使得编译极其快。

那么,这是否意味着你总是应该在大型项目的情形下使用VS 2005 Web 应用项目模型来得到最快的build 时间呢?不,不一定。VS 2005 网站项目的一个很好的特性是对“按需编译(on demand compilation)”的支持。这在你对所依赖的文件做了变化(dependent changes)后,让你避免常规地重新编译整个项目,而是只需要对那些你正在编辑的页面做重新编译,而且这个编译是按需进行的。这会给你的解决方案带来build性能上的极大改进,而且也会在开发非常大的项目时给予你非常好的工作流程。如果你想要在保持网站模型灵活性的同时改进build性能,我强烈推荐使用这个模型。

下面几节提供了针对VS 2005 网站项目模型和VS 2005 Web 应用项目模型优化技术方面的特定教程,包括我上面描述的“按需编译(on demand compilation)” build 选项。

优化VS 2005 网站项目Build时间的特定技巧和诀窍

在使用VS 2005 网站项目模型时,按下述步骤做的话,你就可以极大地改进build性能:

1) 确认你没有遭受我称之为“程序集引用冲突(Dueling Assembly References)”的问题。我在这个博客帖子里描述了如何发觉和解决这个问题。如果你曾经在build时看到编译过程好像在“正验证网站(Validating Web Site)”这个编译阶段停顿了(意即,输出窗口里超过几秒钟都没有输出)的话,你非常可能是遇上这个问题了。使用上述这个博客帖子里概述的技术来解决这个问题。

2) 把在/app_code子目录里的文件的数目保持在很小的范围。如果你最后在这个目录里有一大堆类文件的话,我建议在你的VS解决方案里另建一个类库项目,把这些类移到这个类库项目里去,因为类库项目比/app_code子目录里的类编译快多了。如果在/app_code目录里只有小数量的文件的话,这通常不是个问题,但你有很多目录或数十个文件,那么把这些文件移到一个单独的类库项目里,然后在你的网站项目里引用这个类库项目,你将能改进build速度。另一个需要知道的事情是,每次你在VS HTML设计器里从源码视图转换到设计视图时,设计器会在设计表面加载之前引起/app_code目录的编译。原因是,这样你就可以在设计器里使用在/app_code目录里定义的控件。如果你没有/app_code目录,或者里面没几个文件,那么页面设计器加载起来就会极快,因为它不需要先做很大的编译工作。

3) 在你的网站项目中激活“按需编译(on-demand compilation)”。右击你的网站项目,打开项目属性页。在左边点击Build区,打开项目的build设置。在设置里把“F5启动操作(F5 Start Action)”从“Build Web Site(网站)”改成“Build Page(页面)”或“No Build (不Build)”选项。然后,确认清除了“把网站当作解决方案一部分来Build (Build Web site as part of solution)”复选框:

在你点击ok接受设置改动后,你将处于“按需编译”模式下。这意味着,在上面的对话框你选了“Build Page(页面)”的话,你编辑了一个页面,按F5(以调试模式运行)或Ctrl-F5(以非调试模式运行)时,解决方案将跟以前一样,编译所有的类库项目,然后编译 /app_code 目录以及Global.asax文件,然后,不再对网站里所有的页面做重新核实,而是只核实你手头的网页,以及这个页面引用的任何用户控件。在含有大量网页的大型甚至中型项目中,这很明显会带来极大的性能改观。注意,ASP.NET 会自动重新编译你在运行时访问的任何其他页面或控件,这样,你运行的应用程序用的总是最新的编码,而不必担心老的编码在运行。你也可以选“No Build”,省略IDE里page级的验证,很明显会进一步提高整个过程的build速度。我建议你对这两个选项都尝试一下,看你喜欢哪个。

不选“把网站当作解决方案一部分来Build (Build Web site as part of solution)”复选框,你会发现Ctrl-Shift-B键(触发build解决方案)会继续编译所有的类库项目,但不会重新build你网站项目里的所有页面。在此场景下,你依然会得到完整的intellisense支持,这样你不会失去任何设计时的支持。在打开页面时你也会继续得到警告/出错的弯曲的下划线提示(warning/error squiggles)。如果你需要对没有打开的页面,或对所有的页面强迫做重新编译的话,你可以使用Visual Studio的Build菜单里的Build Page或Build Web Site菜单选项:

这让你来控制你要核实你网站上的哪些页面以及什么时候核实,可以极大地改进build性能。我推荐做的一个诀窍是,在你的环境里添加一个快捷键,允许你很快地触发Build Page操作,以避免使用鼠标和菜单。你可以这么做,选择工具->定制菜单选项,然后在定制对话框的左下方点击“键盘”按钮。这会打开一个对话框,让你选择VS Build.BuildPage命令,然后与你想要的任何键组合相关联:

设置完毕后,在任何页面上,你可以打入Ctrl-Shift-P (或者你设置的任何键),会引起VS编译任何改动过的类库项目(效果跟Ctrl-Shift-B一样),然后核实/app_code目录里的所有类,然后重新build当前项目里你手头正编辑的页面或用户控件(以及被引用的母板页或所使用的用户控件)。

应用上述步骤之后,你应该发现你的build性能和灵活性大为提高,而且你对build什么时候发生有完全的控制。

优化VS 2005 Web应用项目Build时间的特定技巧和诀窍

如果你使用VS 2005 Web 应用项目模型的话,下面是几个你可以考虑的优化手段:

1) 如果你有一个很大的项目,或者与很多其他开发人员在一同开发一个项目,那么你也许要考虑把这个项目分成多个子web项目。我不见得会为性能的原因推荐这么做(除非你有成千上万个页面,否则效果不大),但它有时会有助于管理一个大项目。请阅读我以前写的这个关于怎么建立子web项目的帖子来了解怎么使用这个手段。

2) 考虑给你的解决方案添加一个VS 2005 Web部署项目来作深层的校验(verification)。在上面我提到,使用VS 2005 Web 应用项目的一个弊处是,它只编译你的页面的后台(code-behind)源码,并不对实际的.aspx标识符做进一步的校验,所以它会错过你在.aspx 页面里写错了tag的那些情形。这提供了与VS 2003 同等级别的校验支持(这样你也没有损失什么),但没有网站项目模型那么深入。有一个方法,你仍旧可以在VS 2005 Web 应用项目模型里得到网站项目模型那个级别的校验,就是添加一个VS 2005 Web部署项目到你的解决方案里(Web部署项目既可以和网站项目模型,也可以和web应用项目模型合作使用)。你可以配置它只在build你解决方案的release和staging版本时才运行,以避免在开发时build受影响,然后在发布你的应用前,用它来同时提供对你的内容和源码的深层的校验。

优化任何VS 2005项目Build时间的常用技巧和诀窍

在编译项目/解决方案时有性能问题时,我建议检查的几样东西:(注:当我听说新的技巧时,我会不断地添加到这个列单上,所以,以后请不时回来查看一下新内容):

1) 提防Virus Checkers,Spy-Bots和Search/Indexing工具

VS频繁访问文件系统,很明显地,每次它编译时,都需要重新parse一个项目里变动过的任何文件。有一个问题,我见到不少人报告过的,是在病毒扫描程序,spy-bot 检测程序,或者桌面 search indexing工具过分密切监测一个内含项目的目录的情形下造成的,因为它们不断地变更这些文件的时间戳(timestamp)。它们并不改变文件的内容,但它们确是改变最后访问的时间戳,而VS也使用这个时间戳。这就会造成一个模式:你对某个文件做了一个变动,重新build,然后在后台(background),这些病毒/搜寻工具进去,重新搜寻/检查这个文件,然后把这个文件标记为改动过了,从而导致 VS重新把它编译一遍。如果你看到build性能问题,检查一下是不是这个问题,以及考虑禁止别的程序扫描你在工作的目录。我也见过报告说,某些Spybot工具会导致VS 调试时极其缓慢,所以你也许也应该确认一下你的问题是否跟那些工具有关。

2) 关闭Windows Forms 设计器选项中的AutoToolboxPopulate

VS 2005里有个会导致VS自动把作为你解决方案一部分一起编译的任何控件加载到工具箱的选项。这是个在开发控件时非常有用的特性,因为当你编译时,VS会自动更新它们。但我看到几个报告,报告人说这个选项在某些情形下会导致VS编译时花非常长的时间(几乎象死机一样)。注意,这同时适用于Windows Forms和 Web 项目。想禁止这个选项的话,选择工具->选项菜单,然后勾销Windows Forms Designer/General/AutoToolboxPopulate复选框。(见相关议题:http://forums.asp.net/1108115/ShowPost.aspx)

3) 检查哪些第三方工具包正在Visual Studio中运行

有很多很棒的第三方VS工具包你可以插入Visual Studio。这些工具可以带来很高的生产力,而且提供成堆的功能。但有时我也看到有些性能和系统稳定性问题是受了它们的影响,特别是在使用了这些工具包的早期(或者beta)版本的情形下(你应该总是留心什么时候工具包制造商会更新这些版本)。如果你看到与性能和稳定性有关的问题的话,你也许要尝试一下卸载任何工具包来看是否有作用。如果有作用的话,你可以跟第三方工具包制造商合作识别问题所在。

Visual Basic之Build性能HotFix

Visual Basic产品组刚发布了涉及大型VB项目编译性能问题的几个hotfixes。你可以从这个博客帖子里了解到如何立即得到这些hotfixes。Visual Basic产品组还有一个直通email 地址,[email protected],你可以用它来直接联系他们,假如你遇到性能问题的话。

希望本文对你有所帮助,

Scott

 

(思归译)

IIS 7 in Vista RC1

在控制面板中启用 IIS 时,发现各项功能的控制粒度很细,打开首页,只显示这样一个图片,不过目前 IIS7 的管理工具似乎还没有包含在 Vista 中。

这几天领教了 Vista 中的 UAC 和 Internet Explorer Protocted Mode 的厉害,不过,我对一部分最终用户能不能很好地接受这个Fetature信心不足,尤其是开启/关闭 UAC 的时候,需要重启计算机。

在 Internet Explorer Protocted Mode 时使用极点五笔,一直报错,不让访问安装目录下的码表文件(注:只在 IE 中报错,在其他应用程序中则不受影响),不得已,只好设置 Protocted 为 Off,现在我还没有找到其他好的解决办法,在网上看到一些 Post ,好象其他的一些输入法也有类似问题。

TechED 2006 参会印象

1、看起来参会人员似乎和去年差不多,可房间却十分紧张,最后挤在四人间,而且距离会场较远,TechED 渐有成为唯一的微软年度盛会之势,PDC 已经两三年不见了;

2、有幸见到一位厉害人物,VB 产品组的总经理潘正磊,从 Access 1.0 做起一直到现在 14 年,参与主持开发的产品很多,虽然自己现在 VB6, VB.NET 基本上用的 少了,但受到其个人魅力吸引,两堂课都听了,很受感慨,要是在中国,能找到这样一位14年编写代码,做产品规划和管理,还能在课上大讲 Debug 技巧与 Tricks/Tips 的人吗,一行一行调试代码的人吗?

3、Vista/Longhorn Server 的远程显示协议(RDP) 到 V6.0 ,支持 Gateway ,更安全(类似于 Outlook 的 RPC Over HTTPS),支持NAP(网络访问保护),可以直接支持远程应用程序,这个特性很 Cool,不过似乎很象 Citrix 的东西;

4、SharePoint 中的工作流基于 WF(为什么不叫 WWF 了?这和WPF、WCF不匹配呀)真不错,Kaneboy 演示的例子也非常好,看来也是精心准备的,可惜 kaneboy 问的问题没太有把握,没敢举手,没有拿到礼物,回头买一本支持一下,自己翻译过书,也知道写书、翻译书挺累的,要尊重作者劳动和知识 产权,呵呵,顺便夸奖一下 Kaneboy 的美女同事 TingLi ,技术、演讲能力都不错,同 Team 的其他成员都不错。回头再做开发的时候,要好好考虑一下能不能用 Infopath + SPS 2007 搞定,这样能避免大量无聊的代码了,开发生产力第一;

5、最近是国内各大银行网上银行的多事之秋,传统的“用户名+密码”的安全弱点已无法承担此重任,使用数字证书也仍然在端点上存在一些问题,Vista 的 CardSpace(InfoCard)技术来得正是时候,不过我估计给银行的决策人员介绍是可以,要用的话,估计还得段时间,要使用它,还是需要一些魄力与技术洞察力的;

6、今年听了一些 MOM 的课,东西是好东西,可如何说服领导花钱购买这个东西,提高管理水平,这似乎是个问题;

7、今年的动手试验室不错,但时间还是感觉紧张,脚本也没有翻译成中文,绝大多数人都做不完,不过能开放16个小时也不错,晚饭后还做了两个 Biztalk 2006 的试验,可惜没有带大硬盘,把这些虚拟机和资料 Copy 回家自己慢慢看;

8、今年的赞助商似乎不如去年,缺少去年 AMD 的那种气势;

9、今年的 MVP 活动感觉不如往年,没有很好的机会聚在一起好好聊聊,缺乏交流致使大家都不怎么互相认识,感觉比较陌生,而且把自己喜欢的一张 MVP 海报拉在房间里了,依旧感谢 MVP Lead 为我们申请的门票;

10、日程安排得挺紧张,有点累,得好好休息一下了,刚好凑够10条,呵呵。

Web 3.0,迈进新时代?

今天在北京九华山庄与杨滔讲了《Web 2.0,美丽新世界》,非常感谢大家的热情,会场完全坐满,还委屈很多朋友坐在过道以及前排的地上。光反馈表就提交了396张,按照惯有的60%的提交率,这堂课大约有700人参加:)

在此之前的一个时段,我的同事莫淘因为交通堵塞无法及时赶到会场,于是我又到分会场七,救了一把场,胡说八道了一通,都提到了我自己对于Web 3.0的看法,即“B/S与C/S的渐进融合,应该就是Web 3.0吧”。

这个观点其实是我在从广州到北京的飞机上闲极无聊的时候,突发奇想得到的一个结论。因为现在大家都在谈Web 2.0的泡沫化,似乎就要走下末路了(我个人倒不这样认为),那么Web 2.0完了,就应该是Web 3.0了。什么是Web 3.0呢?飞机快到北京落地的时候,我突然冒出了这么一个想法,回来后就写在了博客上面。当然这个想法并非成熟。

很快在下午的BOF(TechED同类人活动)的时候,有几位朋友希望我能够认真讲一下想法,而且在自己的BLOG中也有一些相关的评论,提出了一些质疑。而我呢,也想大胆做一下规纳总结,故有此文。

我先到网上搜索了一下其他朋友的预测,找到Dan Gillmor先生的这篇《Web 2.0? Try 3.0》。Dan在这篇文章中讲到Web 1.0是一个只读型的网站,2.0则是一个读/写型的网站。那么3.0则是充满Web APIs的网站(后来发现Keso也有一篇文章与此相关)。比如它把Google,Yahoo以及亚马逊就归纳为Web 3.0网站。按照这种说法,Yahoo是一个经历了石器时代的老古董了,从1.0一直发展到3.0。

但我认为这种观点并不是完全正确,按照这种观点,目前所有的博客网站(包括博客堂),都应该划入Web 3.0了。因为我们都提供了Web APIs。

以BLOG为例,Web APIs的功能大体分三类:

1) 网站与网站之间的交互;比如聚合网站的成功。但网站与网站之间的交互功能大部分只会实现“读”的功能,而很少实现“写”的功能。当然,事物是两方面的,甲网站“读”了乙网站的内容,其实也相当于乙网站被动往甲网站“写”内容。

2) 通用网站客户端与网站之间的交互:即使用通用的C/S工具,借助网站的Web APIs来往网站“读”/“写”内容,这种通过C/S工具,单纯实现“读”功能的比如Sidebar中的Gadget,Outlook以及IE或者其它通用的Rss Reader,“写”的有Windows Live Writer,Word的BLOG发布功能等等。

3) 网站专用客户端与网站之间的交互:即使用网站特有的C/S工具,借助网站的Web APIs来往网站“读”/“写”内容,比如VeryCD网站,联众游戏等。还有很多P2P网站等。我有些疑惑,腾讯的QQ算不算在这当中?

反观我们目前的Web 2.0,真正可以赚钱的有哪些?除了SP以及在线广告外,还有什么赢利模式?所以我感觉上述第3类应该是Web 3.0的雏形。也就是Web与网站专用工具的整合,实现相关的功能。但这种专用工具应该不止实现“读”功能,还应该有“写”功能,真正实现双向的,还有一点,必须是体验极度丰富化的,与业务相关的,我认为才可以算是Web 3.0。所以我的定义又回到了:B/S与C/S的渐进整合,应该就是Web 3.0吧,这是我的思路。

当然有人也说,Web完全可以使用浏览器,而不需要客户端,照样也可以成功。我认为此观点可以休矣,皮之不存,毛将蔫附。再者,现在技术这么发达,做一个Web网站的技术门槛太低了,好的创意能够一夜间就可以C2C(Copy to China),并且可以遍地开花。

So,Web 2.0已经到了,Web 3.0还远吗?

BTW:预告一下,我认为Web 4.0将不会有了,因为Web 3.0已经将浏览器与其它软件间的界限给完全模糊了。网站即服务,服务即网站,使用浏览器还是其它啥东东来访问就已经没有区别了。

又搜索了一下,发现关于4.0,我也不是全球首创,有人都已经搞到10.0了,可怕吧?

技巧和诀窍:UpdateProgress控件和AJAX活动图像动画

【原文地址】Tip/Trick: UpdateProgress Control and AJAX Activity Image Animations
【原文发表日期】Thursday, September 21, 2006 1:06 PM

ASP.NET AJAX扩展(即Atlas) 提供的很酷的新控件之一是UpdateProgress控件。这个控件允许你在AJAX回调的进行过程中,自动在页面上显示指定的UI。同时,如果AJAX回调耗时太长,你还可以在UI上提供一个选项让用户来取消AJAX回调。在页面上使用该控件,只须这样声明:

    <atlas:UpdateProgress ID=”progress1″ runat=”server”>
        
<ProgressTemplate>
        
            
<div class=”progress”>
                
<img src=”indicator.gif” /> 
                Please Wait…
            </
div>
        
        
</ProgressTemplate>
    
</atlas:UpdateProgress>

在AJAX回调进行中,<ProgressTemplate>里的内容就会显示。你可以通过CSS将里面的内容显示在页面的任何位置,例如,你可能想直接在GridView或其他元素上方通过渐显效果把它显示出来。开发人员经常使用动画图像显示进度,现在也可以在<ProgressTemplate>里面实现这样的效果。

Alan Le最近发了一个很酷的链接,指向几个非常有用的网站,这些网站提供了许多动画进度的图标。你可以很容易地将它们与UpdateProgress控件结合使用,来显示回调操作的进度:

你可以从这几个网站上下载到可用的旋转齿轮和进度图标。下面是几个例子:

本周早些时候,我提到新发布的Atlas控件工具包现在包含了一个动画效果库,可以和ASP.NET AJAX扩展一起使用。与UpdateProgress控件配合使用的话,它们能给你的网站增添很好的视觉效果。

希望本文对你有所帮助,

Scott

 

 

(Ring译)

谈谈长尾与沙斯

长尾理论估计作为开发人员知道的还不是特别多,但二八理论相信很多朋友已经听说了。什么是二八理论呢,就是说你的利润值中的百分之八十是由你的百分之二十的客户所贡献的,而剩下的百分之八十的客户则只贡献了百分之二十的利润。

事实是不是这样呢,我相信出入不会太大。建议各位在写代码之余,仔细和贵公司的Sales聊聊,或者自己观察一下,他们都在主攻哪些客户,这些客户如何为贵公司带来利益,带来多少?别每天只埋在代码里面,两耳不闻客户事,一心只写纯代码,对自己的发展真的不好。呵呵,又聊到三十岁现象,不过别拿美国或者印度的情况与我较真,这是中国特色。

长尾理论正是基于二八原则的一个延伸, 如左图,纵轴是你客户规模的大小,或者给你带来的利润值,而横轴则是同类客户的数量。从这个图中,我们的潜在客户市场非常之大,图中的曲线相对于横轴无线接近至无穷。

如果你站在你老板的角度上,你该如何取舍?是赚几个大钱还是赚无穷个小钱呢?别来问我,问你自己,或者观察贵公司是如何做的,你会发现大家都在赚那几个大钱,而这也恰恰是中国的软件公司做了很多无法重复的项目,却很少有成功可复用的产品的根本原因。

规模大的客户都会有极其个性化的需求,有钱就是爷,你还不能违背它的意思,所以这种项目只能重头来,只能个别模块来复用。但是在整合这些模块的时候,由于历史上没有注意松耦合等复用原则,所以感觉非常痛苦,甚至重新再写模块,从此周而复始。做通用性软件产品的东西,规模大的客户不屑于买,即使买也去买知名大公司的,规模小的客户又换不出来钱,你如果贱卖吧,连自己的开发人员都养不起。

兄弟们,做软件公司的老板多不容易呀。我们得知道感恩,那些常年在餐桌上陪客户吃饭喝酒的Sales们,你觉得他们容易呀,不信你可以去试试。那可真是战场呀。一个肥头大耳的客户,得有多少软件公司在背后盯着呢?所以单子赢了,别总是往自己的代码写得好上抢功。当然我们也不可妄自菲薄,军功章上,每个人都可以分到一块。

扯远了,那么如何可以在占领大客户的基础上,占领更多的潜在的市场呢?我们需要降低我们产品的消费成本。如何降低消费成本呢?薄利多销呗。所以这就引起了沙斯。

沙斯,不是非典型病毒,而是SaaS,Software as a service,软件作为服务的简称。大约在2000年左右,可能很多人还记得,那时候流行一个词叫作ASP,不是我们现在的网页编程技术ASP,而是指的Application Service Provider(微软的ASP网页编程技术全称应该是Active Server Pages),SaaS类似于ASP,但又不同于ASP。虽然提供的都是托管平台,但客户在ASP上的差异性表现在软件上,即每个客户的软件模型可能都是单独的实例,而客户在SaaS平台上的差异性则表现在数据上,即软件模型为一个实例。关于这两者更者更加权威的对比,以及SaaS的架构指南,建议大家可以去查看一下Fred Chong的《抓住长尾市场的架构战略》。(刚才搜索才发现,深圳俱乐部主席朱兴林也发了一个关于SaaS与ASP对比的文章)。

另外,微软为了支持大家向沙斯进军,也特别提供了一种新的授权方式,即SPLA(Service Provider License Agreement),将软件改购为租,分期付款,每期根据你的使用量(具体可能会使用CPU数或者用户数来计算)。当然,它只为Service Provider来服务,如果您有这方面的需求,可以与我联系。