谦卑的程序员






         静水流深

February 24, 2009

Web 2.0从理论到实践

Filed under: 4.Eric谈软件 — Eric Tou @ 4:23 pm
Tags: , ,

  前一阵子准备一个关于Web 2.0的材料,实在是头疼了一阵子。

  进入2009年,再来谈论Web 2.0,实在是有些落伍。现在都在折腾3.0概念了,云(Cloud)之类的,对于某个片面片面地理解似乎就是有些东西不需要知道它其实在哪里它就是在那里(好比一片云?),概念太新,先凉拌着吧。

  虽然2.0听起来有些落伍,但是有些东西看起来大家都知道其实就不一定明白。观察了周围的人,对于Web 2.0的应用,有些人用得不亦悦乎,有些人则仍然浏览网页、电子邮件,活得也很好。用的人里面,未必就有多少人觉得自己2.0有什么特别了。

  同时针对不同的人群,材料所要宣讲的侧重也是不同的。对于非专业人员来说,侧重于概念,直接通过一些Web 2.0网站的例子开门见山,然后在此基础上加以解释效果比较好;对于有构建Web 2.0网站需要的商务人士①,则需要参考一些成功的例子说明Web 2.0的应用如何带来浏览量,如何带来收益等,比如电子商务领域可以参照eBay、Amazon、Wal-mart等等;对于开发人员,应该比较侧重于Ajax技术的应用;对于设计人员,则侧重于Web 2.0网站的设计理念、算法等。

①想起《Joel说软件》某篇的一句话,大致如下“那些XX经理们问:‘为什么我们不用Java?’只是因为飞机上的商务杂志的评论文章写到‘据调查Java的效率比Oracle快xx倍。’” 当然Business is Business,也得对付。

  当然说是这么说,已经是折腾一番之后的感受了。在此之前,让我说Web 2.0,我只能翻来覆去两样:去中心化(Decentralization)和Ajax技术。

  我必须骄傲地承认我抓住了事物的重点,但是光这重点还不够忽悠半分钟的。为了扩充材料,下面介绍一些值得借鉴的参考材料。

<What is Web 2.0>

  O’Reilly的主席兼CEO Tim O’Reilly在2005年9月30日写过一篇<What is Web 2.0>的文章(中文翻译),对Web 2.0的概念进行了可以说是纲领性的总结。

  文章开篇就Web 1.0和Web 2.0的比较为大家举出了各种实例。大家可以看到,无论是del.icio.us、Blog、WikipediaFlickrYouTube还是BT,以上这些书签、新闻、知识、图片、影像、文件的提供者不再是网站运营商,而是用户自己,即是所谓的去中心化。

  当然因为文章写得比较早的缘故,最近很火的SNS(如FacebookMySpace)其中没有列举。

  在中国,我们也已经有了很多的本地化应用,比如网络相册的Yupoo巴巴变,比如视频的优酷土豆,比如SNS的校内网和开心网,比如豆瓣,比如大众点评网。如果要宣讲,最好将例子替换为以上本地化的应用。没用过?那就试试看。

  之后提到的概念方面,个人比较看重的是标签(tags)、RSS、软件即服务(SAAS)、永远的Beta版、开源软件。

  标签和RSS虽小,在我看来却非常重要。一个改变了传统的目录分类方式,提供更为灵活的资料定位方法。一个使你能够即时/实时地得到资料的更新,在我看来如果没有RSS,一个在其他方面再Web 2.0的网站都名不符实。

  软件即服务(SAAS)和永远的Beta版改变了传统的软件开发和发布模式,开源软件的合作方式本身就是Web 2.0的一种表现,大量的开源软件降低了技术的准入门槛,使许多自由的声音能够在此基础上响起。

《Ajax修炼之道 – Web 2.0入门》

  该书是The Pragmatic Programers系列中的一本,可以说是品质保证。Ajax目前并没有统一的标准和实现,该书并不是非常step by step的书,但是却是非常有大局观的一本书。不做太多的介绍,开发人员值得一读。

 

 

《集体智慧编程》

  如果光看标题和相关的关键字:算法、数据挖掘、机器学习、人工智能,你可能会知难而退。简言之这是一本很容易被错过的书。

  不过请注意英文原版还有一个副标题:Building Smart Web 2.0 Applications。再读一读章节名:提供推荐;发现群组;搜索与排名;优化;文档过滤;决策树建模;构建价格模型……。

  很多人都曾经上过算法课,快速排序、二分查找……,却不知道在何处应用。这本书却介绍如何使用“更复杂的”算法来开发如del.icio.us的链接推荐系统、搜索引擎的爬虫程序这样的实际Web 2.0应用,如何分析、整合海量的Web 2.0程序的用户数据。远比很多标题为《Web 2.0XX》的口水书言之有物。

  本书的程序基于Python语言,不过并不重要。推荐想要搞明白原理或是自己设计开发的开发人员和设计人员阅读。

December 30, 2008

软件观察-应用篇

Filed under: 4.Eric谈软件 — Eric Tou @ 2:10 pm
Tags: , , ,

  随着计算机应用的日益广泛,越来越多的应用软件投入使用,软件的安装与部署、配置与数据的多点同步等问题逐渐受到更多的关注。针对这些问题,应用软件的发展有以下几个趋势:

一、网络化

  网络状况的改进提供了硬件保障,Ajax技术丰富了用户体验,Web2.0应用的流行使用户的上网行为不在仅限于浏览网页,而逐渐转向发布-分享的模式。

  如最常用的网页收藏夹(del.icio.usGoogle Bookmarks)和输入法配置(搜狗输入法Google输入法)的网络存储。
  如笔记软件(Google NotebookEvernote
  如Office软件(Google DocOffice OnlineZoho
  如Todo-list软件(Remember the Milk
  如协作平台(BasecampCentral Desktop

  此类应用可以说是SAAS(软件即服务)的最好诠释。一个网址代替了原有的安装程序(还有服务器)。
  优点是用户不必再关心软件的安装和升级。配置信息和数据都在网络集中存储,可以方便地在移动办公时多点访问。因为应用是基于网络,可以很方便地分享与协作。而且此类应用目前大部分是免费的。
  缺点是对于网络连接的依赖,在离线时会影响数据访问。除了Google外,很多应用的受众并没有考虑到中国的用户,既没有中文的版本,在中国的访问速度也很成问题。最后,网络形式的用户操作体验与本地运行的程序还是有一定的差距。

二、Portable化

  因为技术、功能或是商业方面的限制,某些软件并不适合网络化。得益与移动设备的普及,以及移动媒介容量和速度的提升,将现有的软件改造成适用于移动设备的Portable版本,一次安装,随处运行,把应用软件的配置与数据随身携带也是趋势之一。

  比如U3与移动媒体厂商合作推出捆绑Portable软件的U3 Smart Drive,Ceedo也提供收费的Ceedo Personal版本Portable软件包
  相对的PortableAppswinPenPack提供了免费的Portable软件包。
  The Portable Freeware Collection则收录了大量Portable软件以及如何将软件Portable化的资源。

  Portable软件,或者称可移动软件,绿色软件。
  此类软件与网络化的软件相比,优点是不依赖于网络链接,运行速度有保证。程序、配置和数据随身携带。
  缺点是安装与升级仍需要用户的介入。同时由于移动设备的特点,比较容易遗忘以致造成不便,甚至影响到数据安全。
  因此Portable化比较适合个人应用目的的,不附带太多用户数据的软件。

三、Application Virtualization(应用程序虚拟化)

  简单地来说应用程序虚拟化为每个软件创建一个虚拟的空间,容纳软件运行所需要的各种资源和文件,以隔离其对操作系统的影响,同时将程序文件与其配置和数据分离,便于多个软件实例的运行。从某个角度来说Portable化也是某种应用程序虚拟化。
  当然主要面向企业应用的应用程序虚拟化并不如此简单。它往往包括了一个服务器,用于发布和管理已经针对不同操作系统虚拟化后的软件包;一个客户端,用于安装、升级和运行虚拟化软件包。

  代表性的产品有Microsoft Application Virtualization,之前名为Microsoft Softgrid,企业级的应用,需要Windows Server Active Directory的支持。
  其他同类产品有moka5Ceedo的Enterprise版本,还有国产的虚拟盒子企业版。

四、其他

  以下是比较难以分类的虚拟化产品,可以说是应用程序虚拟化的另类Portable实现

  虚拟盒子个人版,并不预先为支持的软件制作Portable版本,而是通过虚拟盒子软件将用户的电脑环境、应用程序以及相关文档进行封装,并在其它电脑上重现。
  云端软件平台,可以看做是一个客户端,从作为服务器的官方网站上下载已经定制好的软件,收录很多常用软件,面向普通用户,免费。关注。

November 24, 2008

Windows黑屏事件之后

Filed under: 4.Eric谈软件 — Eric Tou @ 9:11 am
Tags: ,

  黑屏事件过去也有一阵子了。因为至少也曾成为家庭餐桌上的话题之一,说明其影响范围确实波及到了广大人民群众。昨天看电视,头脑风暴节目又开始“严肃认真地”讨论此话题。好歹也算业内人士,便说两句。

 

  目前事件的主基调似乎是微软店大欺客,以黑屏这种不恰当的方式严重伤害了广大人民群众的感情。

  有能力的同志自然不担心,你有政策我有对策,此等小儿科手段还难不倒我等,我就是要继续用盗版。

  稍微搞得清楚状况的同志则开始寻求援助,我这个番茄花园版(对,就是前一阵被抓起来那个)有没有关系啊,哪里可以找到破解的方法啊?

  更多的同志很困惑,我的电脑是在XX电脑城买的,不知道是不是正版的。

  但总得来说你黑我屏幕就是不对的,于是便有了所谓的众怒。

 

  双方的心理活动大致如下
  微软:黑屏不爽你就花钱买正版啊!
  群众:你卖这么贵谁买啊?
  微软:嫌贵你就别用啊!
  群众A:不用这个我用什么啊?
  群众B:盗版有理!
  微软:盗版我就关你小黑屋。
  群众:你动我一下试试,我鄙视你。

 

  其实也不能怪人家微软搞垄断,很多年前,老祖宗买瓷器的时候,也是这么横。只此一家,别无分号。想盗版,门都没有,作坊门口有官兵守着呢。银子白花花地朝里进,换现在的话那叫贸易顺差,连着好几个世纪呢。一直到清朝那时候,才被强盗们大把大把地强了回去。不过现在洋人的瓷器倒是有卖得比咱们的贵,你说这个帐到底该怎么算呢。

  如今易地而处,这盗版,仍是一个海盗心态,你卖得贵,我买不起,买得起也不让你赚我这钱,我便盗,劫富济贫,只是换一种方式罢了。这两天索马里海盗又何尝不是这个口号。我们鄙视某些非洲人“我们穷,因为你们欧洲人殖民侵略我们,所以你们现在援助我们是应该的”的心态,其实盗版的心态又与之何异,弱国小民罢了。

 

  盗版也许能让我们拥有功能强大的软件,成百上千的CD、影碟,极大地开阔了我们的视野,却也使我们丧失了专注。有语云:“警惕那些只读过一本书的人”。看过数百遍星球大战的美国影迷、破纪录通关的日本玩家、用学生版软件开发出作品的印度学生,除了专注之外,没有盗版也是原因之一吧 :-)。

  盗版也许能让外国企业损失一些收益,但却对中国的相关产业造成了更大的伤害。小众的歌手因为唱片发行量萎缩而逐渐淡出,因为盗版。软件行业网游、网站、外包等领域大热,又何尝不是因为盗版。多年的积重导致了绝大多数人似乎都意识不到软件及其他有版权的东西应该是要花钱买的。  

  

  在通过对盗版的有意或无意的纵容获得一定短期利益,实现原始积累后,加强对版权的保护势在必行,是迟早的事情。只是对于决策者来说,从教育和推广各个角度,我们是否和微软这条船绑得太紧了。遥想多年前比尔盖茨访华、一系列的公关、采购案,看看今天大行其道的Windows,Office。价格总是通过供求关系的杠杆来平衡的,可如果有一天,我们不得不问自己:“我们还有其他的选择吗?”那时我们在某些方面将陷入完全的被动。

  当然我们选择是一直存在的。自从我发现了世界上还有一种叫做开源软件的东西以后,便如同发现了一个宝库。似乎耐心寻找,每一个商业软件都能找到一个开源的替代品。更关键的是,它们是免费的。以最常用的网络浏览器、办公软件和操作系统为例:正版的Office太贵,可以用OpenOffice;IE太不稳定,可以用Firefox【注1】;连Windows都不让用了,换Ubuntu Linux。【注2】
  

  不过开源软件虽然和商业软件各有千秋,但免费的午餐并不如此好吃。对于中文的支持,对于现有格式的兼容【注3】,相关支持的可获取度,使用习惯的差异等都使开源软件的推广并不容易。除了对用户的使用水平有一定的要求之外,短期之内造成TCO【注4】的上升是无法避免的事情。

  把电脑里的盗版软件全部请出去不是一朝一夕的事情,开源软件也不可能在所有场合代替商业软件,但现在开始积极地尝试总是件好事,比如为自己每月定一个“无盗版日”或是“开源软件日”“Ubuntu日”。关键不在于我们选择哪一个,而在于我们能够始终有选择。

 

  注1:可以去PortableApps.com下载移动版的OpenOffice和Firefox,PortableApps.com汇集了一些被广泛使用的开源软件,并将其打包成移动版本。可谓是居家旅行必备之法宝。)

  注2:Ubuntu 8.0版本提供了在Windows内安装的功能,可以作为应用程序安装在Windows系统内,并提供Windows和Ubuntu双启动。既免去了安装的复杂繁琐,也方便用户进行试用。

  注3:比如OpenOffice对Word的doc文档并不完全兼容,也有相当部分的网站不兼容Firefox。目前各国际标准组织已经开始通过制定标准的手段来破除这些技术壁垒。

  注4:TCO(Total cost of ownership),总体持有成本。开源软件虽然无需花费金钱购买,但转移至开源软件短期内可能造成时间和精力的大幅投入,导致效率的下降。

WPMU Theme pack by WPMU-DEV.