2008年11月19日星期三

这集Boston Legal太扯

美国人对中国的妖魔化印象根深蒂固。

最近一集Boston Legal(S5 EP08),讲述一个在美国呆了三年的15岁中国女孩,意外怀孕,打算堕胎,最后的真相竟是:堕胎的原因是这个女孩得知胎儿是女性,作为中国人,很自然的 要把孩子。在美国人看来,中国人对性别选择已经到了令人发指的地步。还有这样一句台词:B超对中国人不是件好事。整个一集,中国人重男轻女和性别选择竟成 为了中心思想,像其他每一集一样"发人深省"。

真他奶奶的讨厌。现在中国农村都没像以前那样看重性别了吧?想象一下,一个15岁,在美国生活的女孩会因为胎儿性别原因堕胎?放他娘个屁!美剧的编剧有水 平,不过只要涉及到中国相关的话题,必定是20年前的陈词滥调,没有调查,没有体验,单凭想象和印象,便极尽污蔑鄙视之能事。让人恶心。

几乎每一部美剧都有类似情况,包括我最喜欢的House和Boston Legal,近期都有这种倾向。令人失望!

2008年10月13日星期一

无病呻吟之科幻小说

好几次,家里大清理的时候,老婆总是跃跃欲试的要把那些占据书架一大角,积攒了十来年的科幻世界杂志当废纸卖掉。在一哭二闹三上吊和威逼利诱的把戏用尽之后,我还要费好大口舌才能为这坨故纸堆争取到更长久的生存权。

的确,对科幻作品,通常的看法是不登大雅之堂,是与漫画游戏一样给少年人消磨时间用的,几十岁的人还看科幻,在很多人看来是挺可笑的一件事。另外,在信息触手可及的当下,积攒大堆故纸,似乎也是某些上了年纪的人无事可做时聊以怀旧的习惯。所以看科幻、攒杂志这样的事情,对我而言权作自娱自乐,不足为外人道。

优秀的科幻小说作者通常都良好的科学素养,对其所处时代的科学技术发展有全面深刻的认识,对科技发展的方向和可能带来的变革及影响有着卓越的敏感性和预见性。比如儒勒凡尔纳的科幻小说在今天的读者看来几乎没有科幻元素,更像是一部部历险记,这正是因为凡尔纳对他所处时代的科学技术发展有着异乎寻常的前瞻性认识,他在小说里的种种“奇思妙想”,早已被一一变成现实,甚至有些东西很难说究竟是凡尔纳预言了未来还是科学家发明家们受到他的启发创造了未来。同样,现今流行的林林种种高科技的新玩意,比如互联网、病毒、卫星、基因技术等等,在三十年前也都是科幻小说里的常客。而克拉克曾经在小说里预言的太空梯、太空核动力、地震预防、人体冷冻等技术,也正是目前科学前沿的一些主流方向。从这个角度看,不得不说科幻也是具有现实意义的。

身处于这样一个科学技术飞速发展的时代,人们对科技的进步趋向于两个极端,一方面,不论多么稀奇古怪不合常理的事情,总有人信以为真,或是认为理所应当,因为总有人去研究,总有人去控制可能产生的不良后果;另一方面,由于媒体的误导,大众反而对一些原本正常的科学领域的现象和研究小题大做、夸大其词、杞人忧天。从这个角度看,更广泛的科普教育是必要的,而优秀的科幻作品往往能做到寓教于乐,且雅俗共赏,不失为一种科普方式。这算是作为一名科幻爱好者的一个借口吧(爱好科幻是需要借口的,否则会被认为是幼稚浅薄,比较尴尬~_~)。

科幻作家往往是悲观论者,他们往往会更敏感的看到科学技术发展的负面效应,在他们的笔下,世界曾经一次又一次的被毁灭。因此,作为一名科幻爱好者,我对那些有科幻色彩的现实的第一反应,往往反而是负面消极的。下面是近来看到的几则具有科幻色彩的新闻,我的第一反应都是回忆起曾经看过的某些类似题材的科幻作品(新闻标题后面对应的是相应的科幻小说),权作自娱自乐。





2008年9月3日星期三

Chrome之画蛇添足

整整一天,到处都弥漫这Chrome的味道,原本没必要多说什么了,不过在随便记录点想法之后,忍不住手贱,狗尾续貂一下,反正也不多我一个。

关于google的浏览器Chrome,原来的很多想法不准确,比如以下几点:
 - 原以为,google会推出自己的浏览器,但短期之内(甚至三年内)不会,实际上几天之前人们还只是捕风捉影,而Chrome几乎一下子就从石头缝里蹦出来了;
 - 原以为,google即使出浏览器,也是为了给自己的现有服务提供一个定制的平台,而非与MS、Mozila、Opera和Apple以及大批山寨浏览器直接交锋的通用的桌面浏览器;实际上从对Chrome的试用可以感觉,它的目的就是一个通用浏览器,有为其自身服务提供优化的余地及可能,但绝非单纯的google服务客户端,它同时借鉴了各家之所长,虽然beta还很简易,不过其心昭昭,如果说MS的浏览器是利用了OS的优势而进行垄断,google就是利用了它的口碑和明星效应强势出击;
 - 原以为,google的浏览器至少会与其自家的服务有很好的集成;但是从这个beta来看,与google服务的集成很弱,甚至远不如Firefox方便;
 - 原以为,google的浏览器会与自家的一系列客户端软件有很好的集成,比如gtalk,picasa, desktop search,google earth等,而且与Firefox类似,必然提供设计良好的扩展机制;目前来看,任何集成都没有,设置连google toolbar相匹配的插件也没有,也没看出可能的扩展方式;
 - 原以为,google的浏览器会有很多看起来非常标新立异的东西;事实上看起来都是其他主流浏览器已经具备的特性,比如标签页预览(Opera和Firefox相应扩展),简洁的外观(Safari),url快捷输入,标签页和书签管理(各种新版本的主流浏览器)等等;
 - 从发布前的截图看,Chrome似乎很简易,直观的感觉就像gtalk那样,虽然有特色,但为了简洁而放弃很多主流IM必备的功能,所以很难成为主流;不过试用之后,发现之前的臆断很错误,google很像是在玩真的。

Chrome很多特色功能与现有的主流浏览器看似雷同,但细节上下了很多功夫,增强了用户体验,也就是在保证用户已有的浏览器使用经验的同时,用起来更舒服。比如:
* 对现有浏览器的兼容与重用。书签、密码、浏览历史、导航条等可以直接从默认浏览器中导入,完全称得上无痛迁移;
* 地址框兼作搜索框,这样一个细节的变化,不仅给google最核心的搜索功能带来了便捷,更重要的是,如果以Firefox上近来流行的Ubiquity扩展为参照,这个简洁的地址栏给mashup带来了更多的想象力,而mashup面对的是无穷的天地。虽然功能上与Ubiquity差距甚大,不过对google而言,这几乎是举手之劳了;
* 速度快。好事者已经测试并得出结论,Chrome的浏览速度是IE的40倍。这个数据未必客观公正,“速度”一词也很含糊(我想准确讲应该是指页面渲染效率和并发的web资源访问的效率),但即使只凭主观感受,Chrome比其他主流浏览器都快,甚至比系出同门的Safari(同样基于Webkit)都快,确实快。不过问题是,裸奔的Firefox也很快,Chrome现在差不多算是裸奔,不知道加上那么多插件后是否还能这么快。与速度(效率)相对的是,Chrome占用系统资源很多。
* 默认的平台支持。最重要的是google gears,这差不多相当于微软在IE里默认内置了Silverlight。尝试一下zoho,rememberthemilk,google reader等支持gears的应用,没有障碍。还有默认内置了flash plug-in,似乎其他主流浏览器第一次访问flash内容时都需要安装flash插件,google把这个约定俗成的插件变成必备的了。当然还有google对Chrome最重要的原创功能,即多线程javascript引擎V8,对用户而言它是透明的,不过访问那些重度使用javascript的应用时,有性能提高的感觉(或者是错觉?)。
* 另外还有一些细节,是很有原创意味的,比如tab可在窗口间自由拖拽,地址栏高亮显示域名,将当前页面创建为应用程序快捷方式等,书签栏包括了一个“其他书签”,很惊讶的发现安装在Firefox里的StumbleUpon的内容作为书签被导入进来(但没有delicious书签,也许是因为它属于yahoo?)

这一切都像是google在向所有用户在招手:试试我的浏览器吧,不会让你失望的,至少不会让你不习惯的。

据说Chrome这样一个beta一天之内占有了2%的桌面,很多人会很受伤,最受伤的大概是Firefox,因为google原本是Firefox最大的客户。与Sarari相比,Chrome优势也很明显,而且更容易占领各种桌面操作系统。

作为beta版,Chrome还有很多需要改进的地方,就个人喜好而言,我觉得one process per tab的方式太耗系统资源,相应的进程管理也没什么必要,标签页的管理不如firefox或ie方便,不支持gesture,浏览器本身还很脆弱,容易崩溃,等等。

接下来google会做什么?进一步改进用户体验?提供扩展机制?让Chrome更健壮?提高安全性?与google各类服务及软件的整合?我们试目以待。


2008年8月29日星期五

浅谈developer friendly

Windows XP推出的时候,XP一词几乎到了被滥用的地步。XP大概是指user experience,即用户体验。为软件付钱的是用户,所以用户体验当然重要。而开发者(以下称developer以特指)大概是“用户”的一个特例,当developer在使用一种开发工具、平台或框架的时候,developer的体验也就是用户体验。作为一个developer,很多时候更关注的是开发体验。好的开发体验可称为developer friendly。下面基于自己的体会,结合.NET和ROR两种开发体验的范例,谈谈对developer friendly的理解。

.NET和Ruby On Rails均是最先进的软件开发模式的代表,虽然它们并非一个级别的东西,但思想上有很多共同之处,这些“共通“的地方,大概就是他们”先进“之所在。我觉得它们最大的一点共通之处在于二者都花了很大的功夫在developer friendly上。另一点在于二者都力图在应用开发的不同领域(domain)内提供相同或类似的用户体验,更准确讲叫开发者体验。

先以.NET为例,.NET的出现对developer有两个重要意义:
* 一是对多语言的支持,使得developer能最大限度的利用已有的知识和经验,同时还能从统一的clr中得到同样丰富的类库与run-time支持,vb到vb.NET,java/c++到c#(还有那个被废掉的java版本的.NET实现),javascript到jscript.NET,以及现在的DLR支持下的多种动态语言的实现(ironpython, ironruby, javascript等等),而CLI(和DLR)的标准化,使得在.NET平台上扩展任何编程语言的做法在理论上是可能的。虽然我也总是认为,这只是把同样的东西(.NET framework)用不同的方式(各种基于.NET的语言)来表达,很多时间与精力花在这上面有点浪费,但是从微软的角度看,不论你从哪里来,.NET总是欢迎你,对developer来说,没有什么比直接使用已有的知识在新平台开发更友好的方式了。

* 另一个方面是在不同domain内开发方式上的趋同。原本针对微软平台的产品做开发和二次开发都需要相应的语言和方法,这种”domain"很多,传统的开发方式更多,比如桌面应用(vb, vc++等),web(asp/COM/vbscript/jscript/html/css,iis...),database(T- SQL),office(vba),mobile(embedded vb/vc)等等,一个domain内的熟手要想转到另一domain,是很困难的事情,不仅在于不同domain所需知识的差异,还包括开发方式,编程习惯等很多方面,在跨domain开发时,developer很难应用现有的经验和知识,基本上跨domain的技能都需要从头学起。而.NET从发布至今,微软的几乎所有产品都在悄悄的(或突然的)支持.NET开发,至少在编程习惯和开发方式上是这样的。
- 桌面应用自不必说,从1.0开始,Windows Forms便屏蔽了不同开发工具和语言的差异(几乎只剩下不同语言语法上的差异了),到.NET framework 3.0(3.5/SP1)对WPF的支持,从前使用的SDK和API几乎可以完全忽略。

- web应用方面,对客户端的要求只是浏览器,当大多数编程工作集中在server上时,更可以完全放弃以往ASP+COM粗糙的编程模型,而随心所欲地发挥.NET平台/语言的功效。 asp.NET提供了基于server control的web form编程模型,这种方式几乎屏蔽了web应用本身固有种种复杂因素(stateless, client/server roundtrip, debug, security, validation等等),使得web开发变得如同传统的桌面程序开发那样方便与直观(拖拽,数据绑定,属性设置,双击,编写事件代码,F5运行...),继而在ajax走到前台的时候,ajax也作为server control的extension被加入到toolbox里,在2.0的时候,masterpage,membership等原本需要大量编程才能实现的工作被抽象成了一个个out-of-box的feature,只需配置和简单编程即可使用,等等。当然webform屏蔽了太多细节,为了事件驱动的编程模型增加了太多原本不必要的东西,以黑盒子方式出现的server control给developer带来了很多不安和麻烦。为了顺应developer之意,随后asp.NET mvc作为另一种可选的开发模型被一个preview一个preview地加入进来,借鉴了ROR, django和monorails等成熟的mvc框架后,在强大的.NET framework和visual studio支持下,asp.NET mvc应该会是web开发领域的best practice,虽然其中几乎没有什么微软的创新。随着基于DLR的动态语言的成熟,rails式的DSL也不在话下,JRuby+Glassfish已经做了一个很好的榜样。

- 在database开发方面,无论DDL, DML还是DCL,原本都是SQL(T-SQL)的天下,从SQL Server 2005开始,数据库引擎开始支持.NET assembly,developer再也不必感叹stored procedure和function在实现复杂编程时的限制和不便了,除了部署时有些许麻烦,用vb.NET操作数据库实在是爽(如果有过在stored procedure里实现复杂逻辑的经历会深刻体会到这一点,虽然这不是一个好习惯)。更牛的是针对sql server所提供的报表服务,分析服务和集成服务,SQL Server安装时可以选择安装一个visual studio环境,可以用来在数据库上直接开发和部署这些服务,所以,甚至在生产环境里,developer都可以使用自己最熟悉的开发环境(visual studio)进行编译和部署,微软为developer想的真是周到。

- 基于office产品的二次开发由来已久,没记错的话,office2000以前只能使用VBA开发,2003里office里各产品开始支持.NET开发特性,visual studio里开始安装vsto扩展,到如今,vs2008里默认的项目模板包含了对2003/2007里各种产品的全面支持。office开发和部署原本是一个限制很多而且有些别扭的模式,而现在,把word/excel/infopath作为一种客户端形式,使用熟悉的编程语言,熟悉的事件驱动模型,基于完整的.NET framework,针对office的编程模型几乎与winform和webform完全统一起来,熟练的掌握winform编程的经验几乎可以没有任何障碍的转移到office应用开发上来,加上SharePoint的扩展,这种转移意味着现有的技能可能被放大到一个更宽广的领域。自身技能的可重用意味着经验知识增值和平缓的学习曲线,对任何developer来讲这都是个好消息。

- 还有一点可以说明,微软有一些很重要的努力几乎完全是为了developer friendly而做的。两个domain可以体现这一点,一是基于compact .NET framework的mobile的开发,另一是RIA方面的开发。mobile开发只了解大概,不过有一点比较明确,以前的windows CE上的应用开发一般是使用embedded c++/vb,简言之就是基于Windows CE这个小型的Windows(应该是小型而不是子集)采用非托管代码开发应用,优缺点与在windows上用c++和vb开发应用雷同,mobile开发毕竟不如desktop和web开发更广泛,所以按理说这已经足够了,在资源受限的mobile设备上,应该能简则简。之所以裁剪出个 compact .NET framework,除了移动设备硬件水平大幅度提升,j2me等移动设备上的虚拟机已有先例等原因外,给developer提供便捷一致的开发环境是一个重要原因,曾经做过简单尝试,虽然对mobile开发没有概念,但是按照开发winform的经验建立一个winCE程序(现在叫smart device了吧),拖拽、双击、事件编码,运行,直到一个手机样式的模拟器打开,程序运行起来,几乎没什么障碍,虽然实际的应用开发一定比这复杂得多,但对于一个developer来讲,这种体验必定能让人感觉到友好与自信。

- 更有说服力的是微软在RIA应用与开发上下的功夫,即Silverlight。从Silverlight的产生和发展过程即可见一斑。.NET framework 3.0发布以后,WPF是其中最酷最直观的一个新特性,不过曲高和寡,推广是个大问题,虽然微软想尽办法简化安装.NET framework的过程,也不遗余力的推vista,时至今日,仍然看不到wpf得以普及的希望。于是wpf/e出现了,'e'大概指 everywhere,能称得上everywhere的平台,大概只有浏览器,而基于浏览器的web客户端的局限性不可能从根本上解决,所以只有通过RIA。WPF的“样子 ”(和编程模型)看起来天生就与另一个早已遍地开花的RIA类似,也就是flash(flex)。在RIA上,Adobe与微软殊途同归,一个是从浏览器开始,flash到flex再到AIR,表明Adobe从网络扩展到桌面的野望。微软倒着走,既然暂时看不到wpf得以普及的希望,那就利用wpf给用户带来的印象深刻的使用体验,把wpf推广到浏览器上去。如今,真正基于wpf的应用并不多,对于普通用户来讲也无所谓有无,而所谓印象深刻的“用户”,很大程度上指的是developer,而“使用体验”也更多意味着开发体验。wpf的编程模型很优秀,有时候我甚至会想,桌面编程原本就应该是这种直觉的模型,比如以 tree结构组织的窗体和控件,本来就应该直接映射到xaml这种hierarchy结构上,用来描述UI component外观的属性,本来就该像css那样用resource和template来抽象和重用,等等等等... 从微软的角度看,他们也并没有“发明”这种新的编程模型,只是在向flex和xul等已经存在并经过实践检验的成熟的编程模型趋同而已。不过对于 developer而言,这种趋同绝对是一件好事,一个有经验的flex developer转而开发wpf或Silverlight是一件相对容易的事情,我们可以把wpf和silverlight看成是微软在向所有潜在的 developer示好的重要努力。再回头看Silverlight的发展过程,先前的wpf/e很快更名为现在的Silverlight,从名字到开发方式,都很有规划,很有章法,之前的wpf/e实际上只是一个过度,也许是因为当初有这个想法的时候很着急推出点什么,所以Silverlight 1.x 实际上只是wpf/e的别名,作为过度,它最大的问题并不在于它本身是否具有足够丰富的功能(事实上silverlight从一开始就支持各种媒体播放和很酷的交互方式,下载的run-time也很小),而是对于developer而言,它没有提供一个很好的编程模型,为了host一个silverlight组件(实际上是一个浏览器的plug-in在host),并控制silverlight与html的交互,只能通过javascript来完成。时至今日,vs2008(或其他任何一种IDE)都不能提供绝对完善的javascript编辑环境,而且javascript这种看似平常的动态语言,在充分发挥其动态特性并且代码越来越复杂的时候,会展示出其非常诡异的一面,所以如果silverlight要完全依赖于javascript的话,显然不容易被developer所广泛接受。于是微软推出了一种比较奇怪的版本策略,一方面这个从wpf/e改名而来的silverlight从beta演变成了1.0版,其后的1.x版本也都都基于同样的编程模型(javascript);另一方面Silverlight 2.0的alpha被推出,形式上与1.x同,但几乎整个run-time都被重写。实际上并不是重写,据说silverlight与wpf是从同一个代码树派生下来的,可以说silverlight的run-time是.NET framework的一个子集。第一次看到2.0的这个思路让我觉得非常惊讶,因为这意味着整个.NET framework要被挪到浏览器中,只依赖于浏览器里的run-time,而不论本地OS是否安装(或支持).NET framework。这需要多大的一个run-time啊?!当确认我的想法基本没错后,就马上开始浮想联翩了。因为这意味着.NET developer可以使用最熟悉的语言和环境来开发一个RIA程序,几乎不需要太多的额外知识,意味着一条平滑的学习曲线(当然前提是对wpf、 linq等有足够的了解)。而微软对silverlight运行环境的承诺是只需下载一个2-4M的run-time,难以置信。随后我们看到的是 silverlight的不断改进,包括加入越来越丰富的控件和对动态语言的支持等,同时runtime的尺寸一直控制在可以接受的范围内,直到2.0的 beta版本推出,北京奥运会期间NBC采用silverlight播放网络视频,使其知名度一举飙升。Silverlight 2.0实现到目前的状态,微软花了极大的努力,Scott Gu在一个专访中提到了这些努力,包括如何裁剪和如何尽可能的优化以控制尺寸。回头再看,Silverlight2.0所做的这些努力,几乎只是为了一个目标:developer friendly。(btw:采用同样策略的还有IronPython,1.x版本基于CLR实现,并行的2.x版本基于跟适合动态语言开发的DLR实现)



再看看Ruby On Rails。ROR是一个优秀的web开发框架,虽说与.NET framework并不是一个级别的东西,不过ROR的很多优秀之处体现了和.NET framework同样的理念,重要一点就是对developer而言十分友好。

与.NET开发相比,ROR并不十分强调IDE的先进性,textmate据说是DHH们的最爱,咱没有mac,不过体验过号称为textmate移植版的e-texteditor,老实讲,用惯了visual studio的developer不会觉得他们有何不同凡响之处,不过是一个对ROR开发而言便捷得恰到好处的编辑器。即便更高级的ROR IDE如NetBeans 6.1和3rdrails,也与visual studio有很大差距。而ROR的主要特点是一个框架、一种语言、一套惯例与思路。对developer而言,ROR最大特色是它的全部东西对开发而言都是实用的,也是易用的,换言之,developer friendly。

作为框架,ROR提供了shell command来生成代码,固定的目录/文件结构直接映射到MVC模式,无需配置文件(需要的话也只是几行简单yaml),大量helper方法几乎囊括了web开发中所有常用的功能,扩展很简单,写helper,放在相应的helper文件,写类库,放在lib目录,第三方扩展,放在vender目录,执行任务,运行rake即可,运行和调试很便捷,script中内置方便使用的web server,等等...就像常说的那样“框架为你规定了一切,你只需把精力放在真正重要的事情上”。

对developer而言,过多的选择有时候会让人不知所措(比如在使用php时,单单MVC框架,就有十种以上选择,再加上不胜枚举的模板引擎和数据访问方法,以及他们的组合),在纷纭复杂的选择中,花费了时间,最终却未必得到一个适合自己方案。rails则恰到好处地把所有必要的东西包装(比如ActiveRecord、 ActionPack和ActiveResource)并组织在一起,近乎于best practice,其不同版本对框架结构的调整也体现其与时俱进的生命力。“恰到好处”非常重要,这意味着框架能够在一方面能够满足大部分常规需要(不必开发大量底层重复性的代码),另一方面提供足够灵活的机制让developer有充分的扩展余地。这个“恰到好处”正是针对developer而言,“恰到好处”也是rails从众多类似框架中脱颖而出并被纷纷效仿的关键所在。

作为一种动态语言,ruby几乎是最简洁优雅的(个人认为要强于python)。ruby本身是一种通用语言,但它的动态特性使其经常与另一个词联系在一起,即DSL(Domain Specific Language),这里所说的domain可大可小,可以用来描述某种业务领域,也可以用来代表软件开发的某个方面,比如,html或css都是各自 domain内的DSL,分别用来描述web页面内容/布局和定义style。而Rails本身就是一个典型的用ruby定义的在web开发领域内适用的 DSL。也就是说用ruby语言定义一组在web开发中实用/常用的语法,这套语法接近自然语言,专门适用于web开发。打个比方,"3.years_ago"这样一个语句,实际上是rails为int类型扩展了一个years_ago方法,以简洁易懂的方式代替了通常至少需要几行代码才能实现的功能,即显示3年以前的时间。之所以定义了这样一个方法,是因为在web开发中经常会有计算和显示特定时间的需求,rails里包含了大量此类扩展,但绝不是随意为之,比如不存在一个"3.yeas_ago_plus_two_months"方法,因为就一般意义上的web开发而言,这种方法没有代表性,且不可枚举。而ruby的好处在于其开放性,如果在你的应用中确实会经常用到“n年以前加两个月”这种方法,你可以在helper或lib甚至 rails本身中扩展这样的方法。所以DHH采用ruby来实现rails并非偶然,这样一种灵活、易读的动态语言,对developer而言,是最舒服的选择。这里有个体会:即使使用cakephp或django这些与rails类似的web框架,因为编程语言上的差异(php和python),都没有使用ruby on rails时那种惬意的感受,这只是个人看法。对developer而言,大概这便是friendly的体验。

说到DSL,再补充一点。由前例可以体会,对DSL而言最重要的一点就是对domain恰到好处的抽象。 “恰到好处”可以理解,也就是前面提到的为什么扩展了years_ago方法而没有years_ago_plus_two_months方法。而“抽象” 这个词本身比较抽象,什么样的工作算是抽象?抽象到那种级别合适?没有标准答案。不过在rails里一些重要的方面体现了如何抽象和抽象到什么地步。有三个典型的方面:

* Model: 这个词就是MVC里的M,本身就有点抽象,通常理解为数据模型,在rails里,数据存储介质一般指database(当然也可以是xml,csv或一个 pojo样式的不与任何存储介质关联的实体类),对数据的抽象就是model, ActiveRecord就是model的具体体现。ActiveRecord就是一个ORM,与其他ORM工具的不同之处在于,在rails里,不需要描述实体与db映射的复杂配置文件,多数时候这种映射的依据就是convention,也就是按一些约定俗成的规则做映射,比如一个叫posts的表对应一个叫 post的model类,posts表中一个叫user_id的字段表明users表与posts之间存在一个多对一的外键关联。这种规约看起来没什么大不了,不过对于一个通用web框架而言,“以规约代替配置”这种设计理念是很大胆的,某些时候,这意味着rails里的ActiveRecord可能无法满足一些特殊需求(当然rails提供了足够灵活的机制在需要时可以用代码配置这种规约),而这种代价换来的好处是在很大程度上简化了配置,简化的代码结构,减少了依赖,目的无他,程序对developer而言更清晰简洁而已。ActiveRecord的好处当然不止于此,一旦在实体中定义了 association,就可以便捷的在关联对象之间导航,这种关联可以是1:1, 1:n, n:n, join tables, conditional joins和polymorphic associations,尤其是polymorphic associations,几乎可以实现传说中的OODB了。此外,在ActiveRecord中定义grouping,定义validation,都是非常简洁惬意的事情。在第一次看到LINQ to SQL时觉得这是非常棒的一种数据访问方式,不过随着对rails中ActiveRecord的深入了解,我简直怀疑LINQ是在照抄它的思路了。再加上migration和针对db的rake任务,以及自动生成的test框架,rails中的数据访问相关功能就完整了。

* HTML Template: rails中使用ERB作为默认的模板引擎,ERB本身功能很完善,不过与其他知名的模板引擎相比,似乎并无特别之处,有时反而觉得django的模板引擎更规范一些。rails2.0中也可以使用haml作为模板引擎,如果习惯perl的模板方式,haml也是一种很好的选择,更为清晰简洁。在这里谈起模板引擎,是因为考虑到模板的概念是对传统html的一种抽象。更准确的说,rails提供了一套比较完整的view templates,除了ERB之外,rails还提供一整套helper,比如“form_for",”text_field“等等。我们得理解web应用是由一系列元素构成的,比如客户端的html和javascript,以及服务器端用来控制逻辑和做render的代码,而html中翻来覆去使用的就是 button, div, textbox等等html控件,加之css控制外观,javascript控制行为,才组合成千变万化的web page。如果手工编写一个form,很多工作是重复或大同小异的,rails里的helper们正是对这些重复却又不尽相同的工作的抽象。比如一个 text_field方法,只提供name和value参数,他就是一个textbox,加上其他option作为参数,可以为其定义css,或响应一个 onclick事件,如果再对其扩展,它还可以成为一个带有suggestion功能的textbox。采用常规的方法实现这样的一个控件,我们需要多样技能,比如html,css,javascript,服务器端的ruby代码,甚至ajax(XmlHttpRequest)等。helper的作用就是把这些重复性的工作抽象,包装在一个个望名而知其意的方法里。虽然常用的helper并不多,但rails还是提供了大量的helper,它们可以应用在web开发的方方面面,有些功能甚至是我们想不到的,他们唯一的共同点就是都是在实践中总结出来的,有实用价值的东西,而不是像一个通用类库那样包含了方方面面,但实际上很多东西是用不到的。这种使用简洁的抽象,唯一的受益者就是developer。

* Javascript: 这种东西需要抽象吗?能抽象吗?rails给出了肯定的答案。这里说的是RJS。可以把RJS理解为一种针对ajax特性的DSL。据说高级的 developer是不用这种javascript的抽象的,我的理解是对复杂的ajax操作,RJS有一些局限性,而且RJS以Prototype和Script.aculo.us作为基础库,也妨碍的根据个人喜好使用其他javascript库,比如jQuery。不过这不妨碍我们理解和使用RJS。RJS是一种模板形式,被成为javascript generator template,与通常提交一个动作结果的模板不同,这些模板会生成如何修改一个现有的被提交页面的指令。这可以很容易地修改声明有Ajax 应答的页面内的多个元素。这些模板的动作在Ajax背景下被调用,并可更新页内容。一个简单的例子如”page.insert_html :bottom, 'list',“,它的作用是在当前页面底部插入一个'list'元素。这是一个javascript在客户端操纵html元素的例子,然而作为developer,实现这个功能(以及其他复杂得多的客户端功能),几乎不需要javascript相关知识,因为这里没有javascript代码,只有对javascript的抽象。我想asp.NET的ajax控件扩展,实际上也是类似的道理:即封装javascript以及与服务器交互的功能,屏蔽复杂细节,展现高级特性。 如果不考虑RJS的限制,对developer而言,只要会用ruby,并且了解RJS能完成哪些功能,就足够了。

上述几方面有一个共同的特点:虽然它们针对的是web开发中的不同方面(db访问,html template,javascript),但抽象的结果是不要求developer精通每一方面的知识(比如 SQL,html,css,javascript,ajax等),熟练掌握ruby和rails框架的原理基本上就够了,我想对developer而言,这意味这平滑的学习曲线和快速开发的能力。

最后,说说为什么需要developer friendly。DHH在谈论为什么要使用ruby来开发rails时的一段话很有代表性:

Ruby is a language for writing beautiful code. Beautiful code is code that makes the developer happy, and when a developer is happy, they are more productive. Ruby is unique in the way it lets you express something briefly, succinctly, and beautifully.

没错,软件开发的主体是developer,用户会选择产品,但不会去选择开发工具与框架,只有developer(广义上的)才会在意这些,developer的取向直接引导了用户的使用习惯,Windows 的成功说明了这一点。让developer感到舒服,不仅会提高生产力和产品质量,也意味着你的框架,你的平台将被广泛接受,直接影响的就是你的市场占有率。

我想,当鲍尔默在微软开发者大会上歇斯底里的高呼”developer!developer!!developer!!!“的时候,大概想到的也是这些。

2008年8月26日星期二

奥运后杂感

奥运期间,每日看着中国的金牌数量疯长,振奋和兴奋之余,偶尔会想,如果奥运会是一个展示国力和证明中国人能力的舞台,无论是承办的过程还是所取得的成绩,我们都几乎做到极致。就算是为了满足一下虚荣心吧,这个过程也是任何一个大国,包括美国和前苏联,都曾经努力完成过的。奥运一方面是一种对国家综合实力最有好的展示,另一方面也是增强国人自信的必要手段。我们已经成功的完成了这次展示,接下来呢?

中国人向来很在意别人对自己的看法,北京奥运的成功,让我经常忍不住想知道老外们作何想法。不出所料,一向自大的美国人用奖牌榜代替了金牌榜,并且吹毛求疵别有用心的讲了很多无中生有也无可奈何的蠢话;一向无耻的韩国人虽然还没来得及证明菲尔普斯和博尔特是韩国人,但他们的奖牌榜是把韩日朝放在前面比较,其他所有国家靠后,他大韩民国自然又是雄霸天下;法国人讲了很多酸话,可以理解,不必计较;英国人利用复杂的数学模型计算出不同项目金牌的含金量,结果自然是他不列颠的金牌一块顶三块,也可一笑置之。这些言论和行为艺术也恰恰佐证了北京奥运的成功。

欣慰之余,也会去想,中国社会真的是如同北京奥运所展示出来的这么成功么?体育赛场上争金夺银的同时,我们在其他领域也有同样的竞争力么?当看到中国股市上与奥运金牌榜形成鲜明对比的曲线,当看到那些关于掌握了中国经济命脉的特殊家庭的文章,当看到那些在现有法制陋规下无辜蒙冤的案例,当看到灾区那些因为资金问题偷工减料而在顷刻间化为砖泥的校舍,当看到国有垄断企业按种种“国际惯例”从数以亿记的中国消费者身上赚取暴利......我们很难得出肯定的结论。

所以,有时候会觉得很困惑:我们的社会究竟是怎样一种状况和发展趋势?我们看到、听到和经历的东西,有太多的矛盾之处。是虚假繁荣么?GDP和其他统计数据即使水分再大,连续二十几年两位数的增长也是不争的事实。是穷兵黩武、好大喜功、不计民生么?十几亿老百姓解决了温饱和基本的教育医疗住房等问题也是世界上其他任何一个国家所难以企及的,反例见朝鲜和伊朗。是思想僵化不思进取么?"中国特色的社会主义"这一思想本身及其贯彻过程,都证明了全中国自上而下的创造力和锐意进取的精神。可是伴随这些成就的,却往往都是一些负面消极的东西:贪污腐败、权钱交易、弄虚作假、司法黑洞,一方面一些有权有势的党贵们欲壑难填,竭尽敛财之能事,一方面国际金融炒家们在中国这只肥羊身上插满了吸管,中国人民积累几十年的血汗钱被轻而易举的吸干榨净。而就社会制度,更确切的说是政治体制而言,似乎完全不像我们从小受到的教育那样,有着非此即彼的区别,我们这个号称为社会主义的国家已经不再是按马克思对生产资料所有制形式的区分所定义的那种了,而这似乎又没什么不好......这么多大是大非的问题看起来都很矛盾。

生活在这个种种矛盾并存、价值观混乱的时代,很多时候我们弄不明白什么才是主流和趋势,甚至也不清楚哪些事情是被鼓励的哪些是法律、道德甚至常识所不允许的。

带着困惑,阅读了一些关于中国社会现状、由来和反思的东西,希望能收获一些判断是非的依据和能力。最终却明白为什么要推崇“摸着石头过河”,因为各种原因(历史的、文化的、政治的、经济的、国际环境的、生产力水平和科技进步的)所造成的现状,对现代中国似乎没有一种现成可借鉴的康庄大道可走,想要发展,“与时具进”就绝不是一句空洞的口号。

有一本书很值得阅读,《十亿消费者》,最初在和菜头的博客里看到介绍,后来三口气读完。这并不是一本教中国人如何奋发自强的书,相反,这是一个在中国生活工作多年,对中国社会和各种现象有着深刻认识的华尔街记者所撰写的用来告诉美国商人如何在中国经商与中国人打交道的书。正如作者和译者(乱翻书)所言,这样一本书是不可能在中国出版的,并非因为书中有何“夸张”或“反动”的言论,而是由于书中所记之事大多发生在并不久远的过去,其中一些 人物依然活跃在领导层。作为一名记者,作者基本客观的记述了这些人和事,非常专业,每每从历史到现状,阐述和分析得非常透彻,从中我们可以了解很多虽然发生在我们身边,但却很少知晓来龙去脉的事情。同时很多对现代中国人和中国文化中的弊病的看法一针见血,很多观点是作为一个中国人很不愿意看到但却完全无法否认的,有一些部分我想我是红着脸读下来的。在这一点上,和鲁迅的阿Q正传有着类似的功效。

感谢译者乱翻书,是他的高质量的翻译工作,给我们呈现了这样一本指出我们问题所在并且能够帮助我们自省的书。

从古至今,中国从不缺少思考者和实干家。我们陷入低谷时,他们努力给我们自信和向前的动力;我们爬上高峰时,他们给我们提供警示和方向。这样的人可能包括鲁迅这样冷静深刻的学者,或是袁隆平这样热情睿智的实干家,但更多的时候是那些我们并不了解但却通过不同方式从不同角度默默奉献的普通人。我相信《十亿消费者》的译者和那些关注此书并有所思考的中国读者,同样都是怀揣着一颗拳拳爱国的热心,希望客观的了解我们自身的问题,希望通过自身的努力为社会和国家作出些许贡献的人们。

再看北京奥运会,对现代中国社会,可以把它看成一场盛大的仪式,既是一场对过去成就做总结的庆功会,也是一杯为全民族壮行的上路酒,任重而道远,我们的振兴之路也许才刚刚开始。

愚人杂感,杂记之。

2008年8月9日星期六

意料中的圆满

自以为是的,在第一时间写点直观感受,早上醒来却很后悔。

回顾一下所谓的第一感受,发现和我的本意基本相反,整个开幕式,看的时候很激动,看完之后很振奋,说点感受却很消极!

反省一下为何如此心口不一,大概是想当然的认为,精彩的地方大家都看到了,无需赘述,所以目光大部分集中在鸡蛋里的骨头上,结果反而三分褒七分贬,和本意大相径庭了。前面说的不足的部分,也无意收回,不过那些只是碧玉上的星点瑕疵而已,瑕不掩瑜。

刚刚看到张艺谋在第一时间接受搜狐采访的视频,很有感触,老张讲:很圆满 ,而且是意料中的圆满。努力、艰辛、自信,可见一斑!

2008年8月8日星期五

开幕式观感

先不看评论,随心所欲地写点开幕式观感。

1. 最后这个火点得太拽,主角连个正脸都没给,更主要的,看了半天也没弄明白那是个夸父追日还是嫦娥奔月。

2. 作为世界上人口最多的国家,发挥自己的优势,利用人海战术,开场的击缶和活字表演确实震撼!一些场景很有想象力,给人留下深刻印象,比如远远走来的烟火大脚,人与科技共同完成的巨幅画卷,平地升起的巨大星球(居然还是演唱主题曲的舞台)等等。

3. 某些方面,导演水平有待商榷。比如镜头的切换,总是感觉很别扭,该有宏大场景的地方弄得小里小气,该由长镜头表现的烟火弄得很突兀,该表现细节的地方没有 重点(居然还有一个将近10秒钟不知道是谁的脚的镜头)。总之,和煞费苦心的策划与表演相比,摄像导演得太一般了。

4. 最失败的就是那个假象的借助全场观众手势放飞白鸽的环节,领导也好,观众也好,中国人也好,老外也好,都在闷热中坐了五七八个小时了,没有强制的要求,有几个愿意劳什子连续不断的做那么拽的手势,用脚趾头想也该意料到。

5. 运动员入场时,观众的欢呼声很能听出些趣味,印象比较深刻的有中华台北(欢呼声仅次于东道主),韩国(也许是我听错了,但分明有嘘声在内),伊拉克(同情弱者?),美国(为啥没见到戴口罩的^_^)和中华人民共和国(东道主)。

6. 不记得从前的奥运会是否有人墙把运动员隔离开了,篱笆墙们从运动员入场蹦跶到结束,这大热天的,谁家姑娘谁不心疼啊。

7. 大腕云集,胡总带领下的中央领导们自不必提,布什普京盖茨一干人等也都扎在人堆里冒着白毛汗,让在家喝着啤酒吹着凉风的我们看起来很爽。江伯伯出镜率蛮高的,可怜了身旁那位年事已高的前任国母了。

8. 之前看过一些评论,说开幕式表演很张很艺谋,整体来看,确有此感。不过个人认为这不是什么坏事,原本想象开幕式表演中会有很多迎合世界各国口味的元素,实 际上并没有。感觉上,基本上体现了具有张艺谋特色的中国风格,张艺谋的未必是最好的,但只有民族的才是世界的,在这样一个向全世界展示的舞台上,只有把那 些我们自己看起来老生常谈甚至土的掉渣的东西拿出来,才有价值。

9. 不能完全否定东道主的服装设计,至少全场一眼就能分辨出身着红黄服装的中国运动员来。“西红柿炒鸡蛋”,之前听过很多人这样评论,总觉得是鸡蛋里挑骨头, 太夸张。看了以后才明白,没有比这更准确的形容了:)。我们有一个很大的问题,就是总是想方设法给事物赋予太多的象征意义,队服为什么一定要和国旗的颜色 一致?表演为什么一定要2008个人?开幕式为什么一定要安排在2008-08-08 08:08?为什么要选“五个”福娃做吉祥物?有谁能清楚的说出每个福娃头上那堆奇形怪状的东西都象征着什么来着?

天公也算作美,热是热点,至少没有出现传说中的中到大雨;这么大型的仪式,或多或少有点不尽如人意的地方也都可以理解。无论如何,北京奥运会的开幕式算是圆满结束了,跟着操了好几年心的全国人们也都可以松口气了。接下来,回到正题上,看比赛吧。

2008年7月30日星期三

给自频道找找茬

个人观点:到目前为止,"自频道"比较成功,最成功之处在于,就这么个破玩意发布至今已经引来无数关注,叫好的叫骂的声音此起彼伏,单从这一点看,在注意力决定成败的互联网上,自频道做得不错。

keso 很生气,因为“自频道版权问题”,北城更关注对“博客热情”的影响,还有讨论自频道成为“超级网络媒体代理商”可能性的,还有加问号的“新媒体自掘坟墓的 又一力作”,讨论的角度很多,我看多数是因为魏武挥介绍自频道的blog写的挺张扬。咱草根没资格也没兴趣参糊大佬们的口水仗,不过既然惹得咱花时间去体 验了,不挑挑毛病找找茬心里难受。

1. 不管定位多玄乎,说到天,自频道不过就是一个带编辑功能的rss聚合而已。

2. 既然首先是个rss阅读器,就得经得起比较和推敲,不要以为加个编辑功能再放上广告就是“新媒体商业”了,还是先别太看得起自己,至少基本功能和用户体验 上先和流行的rss reader看齐吧。反正我的使用体验是,不论从哪一点来看(内容输出、feed的组织和管理、阅读体验、收藏、标识、推荐等等)都比不上任何一个主流的 rss阅读器(google reader, 鲜果,抓虾)。

3. 列举几点感觉不好的体验:
* 所谓内容就是item的正文摘要,基本上没有能全文阅读的(除了那些原本就是输出几十字摘要的feed),就这样还放个“展开阅读”和“缩进文章”的开关,挺搞笑。
* 对item的编辑,居然也是“所见即所得”的,也就是只能编辑刚刚看到的摘要(还带着省略号的),我试来试去,最后发现真要编辑就只能回到原文处copy全文再paste过来,貌似很高级的操作哦。
* 看得出来为了显示摘要,程序做过一些处理,因为“摘要”居然不只是正文的开始的百八十字,不过显然处理得不到位,凡是经过处理的原文的格式信息全丢了,乱糟糟一大片,没人会有耐心去分辨。
* 像feedburner这种被墙封了的源,通通都是验证失败。拜托,你是做数据采集的,稍微有点专业手段好不好。鲜果抓虾从来没有这样的问题。
* 还是源的抓取,太慢了,慢也不要紧,我等你去抓的时候至少给我个提示吧,害得我傻了吧唧的以为输入有误,折腾了半天,不知道自己做错了什么,这种用户体验也太业余了。还是先向别人学习一下再说吧。
* 所谓“版权问题”根本是没法保证的,原始feed里一些重要信息很多没有显示出来,我可不是瞎说,专门拿rss文件对照的,比如digg的rss,作者、 分类、评论计数等信息都有,显示出来都没了,可能是因为digg的rss输出有自定义标签吧,不过这不是不显示原文作者的理由。
* 几乎每个原始feed都有pubDate的,不过在自频道里,所有的输出都是按"分享时间"来排序的,还大喇喇的在每个feed上方标识出时间和日期,我今天导入的feed,所有item的时间都是今天,而且没有地方能修改排序,看着真难受啊。
* 基本上这是我用过的最差的rss阅读器之一。如果算上编辑和分享功能,就是我用过的最差的带编辑功能的rss阅读器了。
* 我看到“自频道”旁边的“beta”字样了,可gmail也一直是beta。这种beta做个startup不会有人说什么,不过blogbus好歹也算 有点口碑的BSP了,何况“自频道”还炒得这么凶,这种水平的产品拿出来宣传实在有点脸红。你让我来做我可能做得还不如你好,可我是草根,我也没吹牛。

4. blogbus是BSP,作为provider,它应该是内容的生产者,优势在于已有的blog平台、用户和口碑。而“自频道”基于rss聚合,本质上,它是rss的消费者。虽然都是针对rss,但并不是一码事。就好像你是一个汽车生产商,但并不意味着你一定就是一个好的车手。

5. 如果真的要做一个自媒体,现有的主流的在线rss reader更有优势,比如鲜果和抓虾,几乎用不着大动干戈,给每个item提供一个edit功能就完全可以了,可以借shared items功能输出经过用户编辑过的rss,阅读就在现有的reader或任何其他地方(只要不是现在的自频道)。或者,假想一下,给热文之类提供 wiki功能,用户共同编辑热文(如果有必要的话)再输出,这样既避免内容重复,又保证原文质量,如果再加上一些人工分类编辑的功能,那才叫真正的新媒体 自频道。

6. rss(包括众多衍生者)被发明出来的本意是提供一种开放的数据结构,将信息结构化的,便于在internent上传递,便于信息“忠实”地在生产者(如 blog)和消费者(如rss reader)之间传递。我觉得“忠实”很重要,就像正规的电子文档都用pdf,因为pdf的内容一般来说是不容易被修改的。当然这是一种防君子不妨小人 的约定俗成的办法,如果有人改动了原始pdf公文的内容并再次分发,就叫“篡改”。我理解rss也是同样的意思,原样传播是正常的,你当然可以去编辑和修 改然后重新发布,不过在我看来,这就是篡改,是没有公信力的。别人没这么做并不是别人不能,大概是不屑吧。

7. 假设如其所愿,“自频道”各方面都就绪了,结果可能就像很多人预料的那样,“突破了自动抄袭的技术壁垒”,“成为垃圾站的温床”,可以预料到的是:大量重复的、雷同的内容层出不穷,有价值的信息被埋没在更多的垃圾里,这是对用户耐心的考验,而且几乎注定要失败的。

8. 按“自频道”宣传的本意,不过是要给人们提供一种批量的自动导入和编辑内容的方法,如果人们愿意花点时间(比如去适应“自频道”糟糕的用户体验的时间),利用现有的互联网工具,谁都可以创造出更方便的“自频道”。比如:
* 使用yahoo pipes(或ms的popfly或google mashup等mashup工具)去处理rss源,都是很cool的东西,不必被流程图模样的block吓到,它做成那样就是为了给不懂编程的人来用的, 只要习惯了他们的用法,获取rss源的途径几乎是没有限制的,处理rss源的方法也几乎是无限制的,有限制的只是想象力。
* 使用任何一个online rss reader订阅自己制作的rss源,或者在igoogle,netvibes上展示你的源。定制的源可随时根据需要去修改,或者根据不同需要制作任意数量的源。
* 如果真的需要编辑rss内容(为什么?),如果恰好懂一点编程,去google app engine上申请一个app,做个导入rss的接口,做个list和form,或发挥想象力做更多的事情。
* 这些都是随便提提,可选择的方法远比这些多。对于自频道的假想用户,上述都是可以自己做到的,不需要花一分钱,需要的可能只是花点时间去了解和学习一下,DIY的感觉比被人忽悠好得多。

2008年7月17日星期四

Deploy Ruby On Rails App on Heroku - A Simple Guide for Windows User

Heroku is an amazing online deploy/development environment for ruby on rails.

Ruby on rails is popular due to its practical methodology, framework and tools, rather than an extensive acceptance by web hostings(like php). If you've tried to deploy a ror application on one of most of popular web hostings (those promised to provide 1500+G space, 3000+G/mo file transfer), you may agree with me, because they always limit you so much. Of course you can buy a dedicated server, but how about just publish a toy project before pay anything? Heroku is a good choice.

As an online service, heroku did some wonderful things, for example, an irb, an ror editor, an rails console, a gem manager, and so on. The point is, they are all run in browser, even without any rich client support (I believe it will be practically used if is implemented in a rich client). You can check these features at http://heroku.com/features.

An important feature is about "work locally". For linux user, all the necessary tools are native. For Windows user, a few additional resource are required. Here's a simple guide for Windows user.

Heroku supports two ways to transfer source code between local and server,

* A simple way is "import/export", "import" means upload a compressed source code package in .tar.gz, it's easy on linux. For Windows user, a convenient approach is to use 7z. For example, your app folder is "myapp", compress it into "myapp.tar" using 7z, then compress "myapp.tar" into "myapp.tar.gz" using 7z. Upload "myapp.tar.7z" to an existed app on heroku, done! "export" means download a .tar.gz package from heroku, uncompress it, work locally.

* The other approach is more practical. using Git and a "heroku" gem for source control.

** Git is yet another source control tool, a substitute for SVN in ror world.

** GitHub is a Git repository, Rails itself and many other ror source are currently hosted there.

** "heroku" gem is a tool which helps to manage source code hosted in github, including source control and publish source code on heroku.

** Git is native in linux, for Windows user, there are two options: Cygwin and msysGit, the former is a comphensive linux simulator on Windows. The latter is an unofficial Git implementation on Windows.

** Download either of them (they are similar if you just need Git), and install. For Cygwin, remember to select git manually.

** msysGit provide a GUI interface for Windows user, Actually, I don't think it is better than its bash shell interface. So, even as a Windows user, you'd better to know a little about bash shell.

** Open msysGit bash shell from start menu, like this:

msysGit Bash
** Register an account at github.com, the "Free" one is ok, remember the email you used (e.g. name@example.com).

** Generate a ssh-key. In the opened msysGit bash shell, input following command:

ssh-keygen -C name@example.com -t rsa

In the following steps, it will ask to provide path and passphrase, use default by pressing enter (or change them if you know what you are doing).

** Get your SSH Public Key. Input following command in shell:

cat .ssh/id_rsa.pub

The SSH Public Key (lines of strange charactors) will display in the shell, copy them (how? just like what you did in a Windows cmd shell), and paste into Github account (go to https://github.com/account, login if necessary, there's a textbox titled with "SSH Public Key"), then click "Update Keys".

** The last thing is to get "heroku" gem: "gem install heroku"

** Everything is prepared, go to see heroku's demo, or follow the next simple steps to start to develop and deploy a ror app on heroku:

- Open msysGit shell, input "heroku list". which lists all your existed rails apps on heroku;

- Input "heroku create myapp", it helps to create skeleton of a ror app named "myapp" (I guess it run "rails myapp" for you on heroku server), you can access http://myapp.heroku.com directly (of course you should make sure "myapp" is not an existed app name on heroku), a ror welcome page is waiting for you.

- input "heroku clone myapp", make a clone of "myapp" for local development. First time, it will ask your email and password which you've used to register in Github. (BTW, in msysGit shell, change directory to the location you want to put your local app. It looks like "cd /d/apps/", which equals to "cd d:/apps" in windows cmd shell. Interesting to both linux or windows user:) )

- if everything ok, you could edit your rails app with your favorite editor or IDE. (I tried Netbeans and e-texteditor, both ok.)

- Make some changes to your local app, (for example, generate a scoffold, or modify routes mapping in config/routes.rb, these will take effect after you push them to heroku), run server and test it locally. If everything ok, check in (and publish) your local source code to heroku (Github) by following commands:

- 'git add .', adds the current content of new or modified files to the index, note you should in your rails app folder;

- 'git commit -m "comments about this checkin" ' , stores the current contents of the index in a new commit along with a log message from the user describing the changes;

- 'git push', updates remote refs using local refs, while sending objects necessary to complete the given refs;

- ok, now try to access your rails app on heroku by accessing http://myapp.heroku.com,all the local changes work. 'git push' does some great things: check in source code, publish updated source code on heroku, rake db:migrate (if there's migration), restart rails server (let the changes to routes.rb takes effect), maybe include other necessary work. Great!

- Git is similar to SVN,except above options, you can do checkout, diff, merge, mv, rm and so on. Check helps as you need.

- In fact, all the above command can be used in Windows cmd shell if you setup msysGit as need. And all these commands can be used in Cygwin either.

As a ruby on rails fan, you really should take a tour through heroku, there are so many interesting features except "work locally". After deployment environment getting done as above, you are ready to publish your toy project to the world.

2008年7月13日星期日

How many things to learn?

I was/am a MS tech fan due to my job and intrerest. For a long time, I was eager to learn everything about .net. For examples:

* There are more than 200 tech books on my bookshelf, Wrox, O’Reilly and others. My wife named Wrox area as “red-light district”, and O’Reilly area as “Zoo”;

* I collected webcasts and ebooks as possible as I can find. and burn them into DVD;

* There are hundreds of feeds in my rss reader, I subscribed all the popular blogs about .net, from MSDN to Scottgu, from Codeplex to Rob Conery;

* I browse Codeplex “tag by tag”, download all the pop projects;

Unfortunately, my interest was not just about this. I was interesting in OO/P/AD, design pattern, TDD, refectoring, UML/RUP, project management, agile project, enterprise framework, networking, web design, database,java, c++, python, javascript, even ERP for a while. Recently, the terrible interest spreads to ruby, ruby on rails, then linux server when I decide to deploy my toy project, then virtualization when I decide to setup my own vps of linux…

Sounds great, right? The truth is…

* half of books on my bookshelf were not touched,

* webcasts were reviewed when they were just downloaded, but never be opened after burned,

* there are always 5000+ unread feeds in my rss reader, sometime I will mark them as “read”, but the number came back soon;

* reading source code is good, but the projects which were really carefully researched are not much.

As everyone can guess, I may be an expert on “how many things do you know?”, but not an expert of each of the listed parts, although my interest has taken most of my free time :( . Sound despressed.

Write this because I read a blog “Do you have the time to learn everything“. I agree with some of its points. It’s definitely impossible to learn everything, people should has a limited learning list with prioritization, people should learn to make choice first. I know this from beginning, but when I start to be interesting in something, I feel this is the most important. what a fool!

Life is limited, knowledge is not. But if learning is as fun as playing game or watching TV, just do it.

That’s the words to comfort myself.

2008年7月10日星期四

wubi...

As a layman in linux world, it’s glad to know there is such a greate tool for linux installation from Windows, i mean Wubi.

Wubi is not the Chinese input method.

Wubi is an officially supported Ubuntu installer for Windows users that can bring you to the Linux world with a single click. Wubi allows you to install and uninstall Ubuntu as any other Windows application, in a simple and safe way. Are you curious about Linux and Ubuntu? Trying them out has never been easier!

I tried to use PC without Windows for a few weeks at home. Frankly, it’s not a good experience for me. Ubuntu is actually better to use than other linux distribution. But in my experience, “better to use” means it is similar to Windows than others. if it’s true, why not use Windows (we have paid for OEM).

Linux should do more to contest PC desktop. When I use linux at home, I am not a software developer, and not a linux fan, I am just a computer user who likes to try different things. In most time, I read, watch, listen, write. I don’t care if it can run on different hardware platforms, I don’t like install software from source(even by apt/rpm/yum), I don’t like that I have to learn much and try more to make a BT client work, I don’t like to take half an hour to search, download, make, install and reboot to just watch an “amazing” desktop 3D effect, and so on… At last, I believe most of people in most of time could agree with me. Of course, I like linux as a server, free and powerful, but not on my desktop at home.

Linux need to be modest. do something like wubi (it’s said fedora 10 will add a similar feature), attract more people to like to try. For linux desktop, there is a huge space to improve.

说...


急事,慢慢的說;

大事,清楚的說;

小事,幽默的說;

沒把握的事,謹慎的說;

沒發生的事,不要胡說;

做不到的事,別亂說;

傷害人的事,不能說;

討厭的事,對事不對人的說;

開心的事,看埸合說;

傷心的事,不要見人就說;

別人的事,小心的說;

自己的事,聽聽自己的心怎麼說;

現在的事,做了再說;未來的事,未來再說

2008年6月26日星期四

和谐不需要理由?

google被封的时候,就像是地震,受灾的是所有人,起码个体心理上是平衡的,而且当时确信这种引起公愤的事情不会持续很久,我们都忍了,虽然最后等来的是被“阉割一新”的google。

tumblr 被封的时候,就像被抄家,本是一个方便快捷的miniblog,虽然没有熟人用,自己却很喜欢,把鸡毛蒜皮的小东西方便地放在里面,自娱自乐,别有情趣。被和谐之后,仿佛自家大门上被贴上了封条,心疼和别扭只有自己知道,在强大的gfw面前,进自己家就象是做贼,要翻墙,要带tor,以便捷为特色的 tumblr,失去便捷性,也就失去了使用的价值。

flickr被封的时候,就像隔岸观火,虽然很多人在用,毕竟自己很少用,别人抱怨就抱怨吧,牢骚就牢骚吧,谁让你们崇洋媚外,我天朝不是有yupoo么,虽然是个不折不扣的模仿者。

wikipedia, blogger, wordpress等被封的时候,就像是焚书坑儒,嬴政李斯当年在做这些的时候,有明显的政治目的:因为刚刚建立的秦帝国需要为其中央集权实现意识形态上的统一,烧了若干儒家典籍,埋了四百几十个方士儒生,目标明确,方法简单粗暴,就如同如今gfw之所作所为。倒是后来董仲舒汉武帝的罢黜百家独尊儒术,同样是出于中央集权的目的,方式方法上温和得多,也有效得多,因为“独尊儒术”是将儒学作为官学,从而吸引有才华的人学习、参与和推广,“罢黜百家”却不是将其他学派和观点一笔抹杀,只是官方不鼓励不支持,民间却还是可以自由保留和发展。以史为鉴,焚书坑儒的做法非但让人及其反感,而且效果极差。汉武帝的方法是否值得借鉴?wikipedia和blogger里面是什么?都是知识和信息啊!都是全人类的文化和智慧啊!难道就因为里面包含了在“某些人”看来 “可能会”对国民产生负面影响和误导的极少数内容,就一刀切的干掉?这都是什么逻辑啊?!

如今,“和谐”的魔爪伸向了专业网站,sourceforge, freebsd都未能幸免于难,原因???我百思不得其解......难道和谐已经不需要理由了?月光博客上一文另一文猜测了两种可能性:

其一:非常巧合的是,三天前我曾经介绍“五个最佳的编程文本编辑器”的时候,其中的一个开源项目Notepad++就是SourceForge的一个项目,该软件的台湾作者引起很大争议,因为他在该开源项目的首页声称要抵制某某运动会。

其二:SourceForge虽然也是英文界面的专业网站,但这个庞大的开放源代码软件仓库也长期被中国电信封锁,封锁的原因据说是里面有一个名为FreeNet的代理服务器的源代码软件项目

哪种解释都没法让我信服,我不相信gfw会有如此低智商的主人,也不相信相关部门的决策者有精神病。原因有二:
第一,如果某人在家里宣布抵制运动会,我们就要让他家所在的小区甚至所在的城市人间蒸发(其实并没有消失,只是让自己人看不到而已)?这种做法好听一点的叫掩耳盗铃,不好听的就是若干与侮辱人智商相关的文明用语了。
第二,知道sourceforge是什么,并且能够去下载一个开源软件的人会因为区区一道墙就被阻止了?我们的祖先建立过如此伟大的墙,汉族文明却被墙外的铁骑一而再再而三的翻墙而过,踏在脚底。我们的祖先早已明白,墙的象征意义远远大于其最初被建立时所被期望的实用价值。不想翻墙的和不会翻墙的,你只要告诉他那里有道墙,他就不会心存妄想;有心想翻墙的,铜墙铁壁也是形同虚设。

这都是很浅显的道理,我能想到,墙的主人必定也能想到,所以我认为不会是因为上述二文中所提到的原因,但事实是sourceforge被封掉了(为了证实,我刚刚趴在墙头向那边瞄了一眼, sourceforge.net/org/com,硬硬的都还在),所以一定是有什么原因的,我宁愿相信这是一次操作失误,或者有其他什么不为人知的深层原因。同时,我保留对封杀者及其列祖列宗使用大量文明用语的权利。

我觉得sourceforge的被封(姑且不论是什么原因),就像是当年的大明朝大清朝的闭关锁国,禁止民间对外交流,禁止对外通商,禁止学外语,否则咔嚓咔嚓...那个时候这么做是有道理的,彼时天朝自认乃泱泱大国,礼仪之邦,地大物博,不屑也不必与蛮夷之邦交流通商,更不愿外来的思想文化误导国民,影响教化。问题是,那个时候的天朝有这样的自信心和自豪感,现在呢? sourceforge是世界上最大的开源软件社区,是全球软件行业从业人员的智慧结晶,是软件技术学习与应用的宝库...就这样被毫无道理的拒之门外,我们有我们祖先的那种自信吗?我们的软件产业很牛吗?我们不屑于学习国外同行的技术与经验吗?我们不必参与到全球的软件发展进程中吗?一个专业的技术网站有什么能够颠覆国家政权影响社会和谐的阴谋吗?真正对sourceforge有需要的人会被挡在墙外吗?和谐不需要理由吗?

不知道政府的上访办能否接受要求互联网解禁的请求,如果可以,我的上访请求提纲如下:
1. 我是中华人民共和国公民,热爱祖国,拥护党和政府,
2. 我接受过初中以上教育,具有基本的分辨是非的能力,
3. 我是一个互联网使用者,工作和生活都与互联网相关,
4. 我坚决抵制并打心眼里讨厌xx功,x独以及其他一切破坏社会和谐安定团结的组织及其言论,即使不劳gfw,我自己也坚决把这些东西都封上,我请求gfw请注意力都放在上面,还国人一个清静和谐的互联网;
5. 我赞成非礼勿视,非礼勿听,非礼勿动的原则,对来自互联网的不健康内容做到视而不见,见而不信,同时我会尽力把这一点灌输给我的子女亲朋,肯定比gfw会尽心,所以不劳gfw,其实gfw也封不住;
6. 我强烈抗议gfw简单粗暴的工作方式,其基本工作原理是:墙上有个污点,就把屋子拆了,饭里有只苍蝇,就把食堂砸了。gfw本身是一面墙,我们理解创建它的初衷,我们也都不反对用它来屏蔽掉特定的信息,它的存在没有问题,有问题是墙的管理者,这种一刀切的工作作风是不负责任的表现,是缺乏能力的表现。
7. 建议政府的互联网管理工作也要透明化,就像越来越多的其他职能部门所做的那样。必需能经得起公众的质疑,比如:你有没有管理原则?你的原则是什么? sourceforge或wikipedia这样的网站被封掉是基于什么样的原则?这样的原则合理吗?合理不合理是由谁来决定的?如果wikipedia 里存在某些你认为不当的内容,在不屏蔽掉整个网站的前提下,你能否屏蔽掉不当内容?为什么不能?是理论上不能还是你不能?是你嫌麻烦还是你能力不够?你知道wikipedia是可以自由修改的不?你能否把一刀切省下来的时间用来组织人力物力去创建和修改wiki条目,在全世界的互联网用户面前以正视听?做这样的事情,是x功 x独x会的力量大还是我们天朝力量大?还是你不屑于去做这样的事情?难怪da‘lai在海外一呼百应,是因为我们总是害怕自己的人民看到外面的“反动言论”,所以把自家的窗户封上,小人在外面说我们坏话我们连听都听不见,更不用说出去辩白,结果外人听了小人的话,都觉得我们是坏人,等到我们想跟人家去解释的时候,人家早已先入为主了。
8. 一个有气度有自信的民族是不会整天把心思放在如何阻塞国民的视野和言路上的,人民有分辨是非的能力,人民有发表看法的权利,人民有获取信息的自由,不要自以为是的小看了人民的能力、自制力和爱国精神,不要一到开大会之前(政府的,党的,甚至眼前这个运动会)就开始大规模的突击式建设和谐社会,这是为了完成领导提出的建设和谐互联网的要求吧?!“凡是境外的,脱离控制的,用户可以自由创作内容的东西通通封掉!”,难道领导就是这么要求的吗?

“和谐社会”不是现在提出来应景的,创建和谐社会是中国人自古以来的共同理想,当”和谐“一词被动词化的时候,就应该引起注意,以"和谐"为名义的事情并不一定都是合理的,当某些事情需要被“和谐化”的时候,请考虑清楚“和谐”的目的是什么,“和谐”的原则是什么,必需被“和谐”的理由是什么,三思而后行,请不要给这么美好的一个词汇抹黑。

2008年6月15日星期日

ibeyond的小有名气

ibeyond是为数极少的我能跟真人对应上的网名,在线时间长了,到处注册,到处填写id,用同样的id成了很多人的惯例,我也一样。之说以说起ibeyond,是因为最近在浏览rss订阅的时候,不止一次看到这个熟悉的名字(比如keso的推荐,以及http://item.feedsky.com/~feedsky/applife/~7005526/77039891/5113514/1/item.html,以及作者声明后面的comments等),原因都是因为其在google app engine上写了个访问blogger的代理程序,ibeyond声明在此,让ibeyond这个人名变得小有名气的程序在此,用来访问blogger,确实是个不错的想法,使用起来也很方便。
google app engine我也试了,用了,觉得不错,一个别样的web host,能方便的访问google资源,目前只支持python以及一个精简的web框架,感觉yet another rails implementation,更贴近Django(主要支持的一种template就是Django的view template),没什么太大兴趣。不过ibeyond的小有名气让我对之前的体会更深刻:好的想法总是比工具更重要。
主观臆断一下,实现应该不会太难,google app engine提供了访问google资源的api,当然应该包括对blogger访问的api,建一个appspot(比如gfw.appspot.com),把传入的id与blogspot.com组合成url,访问之,返回之,一个blogger.com的代理就诞生了,妙处在于以google的服务器为代理,除非google app engine被封掉了。不过这很有可能,google被阉割的太多了,典型的如之前的page creator。总结一点,凡是境外的,zf没法直接控制的,并由用户自由创建内容的东西,都可能是被和谐的对象,之前的Tumblr用得好好的,NND,被封掉了,眼下的google sites,功能很好,技术很棒,但从gfw及其主人的视角来看,与page creator大同小异,早晚是被和谐的货,google app engine呢?就看ibeyond这个巧妙的想法的实现吧,即使整个google app engine被和谐,也是“情理之中”的事。所以如果哪天google app engine消失于国内用户的的浏览器,ibeyond的gfw proxy也是“功不可没”,:D。

2008年6月11日星期三

ubuntu可用

我看压根就不能指望linux来代替绝大多数pc上的windows,不论做得多好,压根就不是为普通老百姓做的,除非做成mac os,不过以免费、开源为基础的linux是不可能做成mac的,做成了mac也就不可能免费开源了。
ubuntu 8.04比之前的7.xx版本改进了很多,已经很不错了,打算尝试一下没有windows的电脑生活,看看能用多久。
仅以此帖作为ubuntu上的一项测试。

2008年5月21日星期三

脑袋凹陷续

凹陷还在,不过不太痛了,去了医院,医生很不负责的告诉我说没事,我当然希望没事,不管医生都没仔细看就说没事,总规让人不放心。我说我不知道怎么搞的,医生说他也不知道,NND我要知道还来问他?!他说不放心就排个片子,于是花了两百多块照了个CT。

看病前后不到五分钟,等了一上午,拍片前后不到两分钟,等了一下午,好在我这无大碍,那些真正有病需要治疗的人,也许需要付出的不仅是耐心,甚至有可能是及时治疗的时机。不知改怨谁?难道去埋怨地下的毛主席?

片子显示一切正常,找医生看了也没看出什么问题,就当一切正常吧。不过也许是心理作用,这些天脑袋一直晕晕沉沉,摸着头顶的大坑,心理怪怪的。怕影响大脑正常工作,做了个IQ test,还行,得了个135,聊以自慰。

IQtest挺有意思。http://www.et-express.com/psychology/iqtest2/IQ1b.htm

2008年5月20日星期二

雨在下

雷声隆隆,雨声簌簌,孤灯下,电脑前,有种惬意的宁静。千里之外的四川灾区,据天气预报,今夜也有中到大雨,电视里一位记者讲,某县至少需要三万顶帐篷,现在只有七千顶,雨夜里,瓦砾中,大灾后,不知何种心境和处境,想想不由心酸。
这次灾难让人们更清醒的认识到,人类的科技在大自然的力量下,只不过是无用的玩具,人定胜天是唯心的,是自欺欺人。然而人类也的确是一种特殊的动物,在于有思想,有意志,有精神,正是这些东西让人们在无可奈何的灾难面前也能保持那样一种状态,挺住、活下去、营救、自救、互救,用顽强的斗志与精神创造一个又一个奇迹。从这点看,人定胜天是有道理的,至少人们在自然灾难面前表现出无畏勇敢团结的精神是无法被战胜的。
这次灾难让全世界的华人有了同一种声音,听到天安门广场万众一心的呐喊声“加油四川,加油中国”,我的心,和亿万中国人民一样,沸腾了!
雨还在下,然而终究会停的,灾区的人民还在磨难中,然而终究会过去的。多难兴邦,但愿经历了这次灾难的洗礼,中国人能团结起来,万众一心,重现中华文明的辉煌!

2008年5月18日星期日

头骨凹陷

伸手一摸顶部右侧的头骨,有一处明显凹陷,带着隐隐作痛,不知何故,以前是没有的。
最近没有发生过撞击事件,和我头顶接触最多的就是闺女的屁股,因为我要时常顶着她搏其一笑。
明天要去医院看看了,很有可能是颅骨骨折,很吓人。

2008年5月3日星期六

废了

好好的人生,让房贷给废了

好好的一笔字,让键盘给废了

好好的电视剧,让广告给废了

好好的广告,让脑白金给废了

好好的猪肉,让瘦肉精给废了

好好的英雄,让美人给废了

好好的女孩,让大款给废了

好好的帅哥,让富婆给废了

好好的干部,让人民币给废了

好好的医德,让医药代表给废了

好好的书信,让电话给废了

好好的饭店,让政府签单给废了

好好的国足,让足协给废了

好好的运动员,让兴奋剂给废了

好好的生命,让医疗费给废了

好好的胃,让酒给废了

好好的肺,让香烟给废了

好好的学生,让网络给废了

好好的交规,让交警给废了

好好的法律,让法院给废了

好好的睡眠,让夜总会给废了

好好的景点,让黄金周给废了

好好的五一黄金周,让国家给废了

2008年4月24日星期四

试试ScribeFire

试一试ScribeFire,加个YouTube


ASP.NET MVC Code Camp Talk - Intro

2008年4月9日星期三

离骚

几乎是十年前,刚参加工作不久的我第一次体会了身边同事另谋高就各奔东西的经历,很不好意思的是,现在几乎想不起最早离开的那位同事的姓名了,但是让我惊讶的是,那种感觉和记忆依旧十分清晰:伤感、留恋、无可奈何......
自以为摸爬滚打了这么多年,身边同事离职的事情,没有一百,也有几十了,以为自己早已麻木,不再会为这种事情而不安,没料到当“考验”再次到来的时候,发现自己依旧很无奈,很无能,很脆弱。
从稍微客观一点的角度看,同事的离职都应该是很正常的事情,尤其对IT这个行当来说,人挪活,树挪死,一般来说都是很有道理的;从另一个角度看,当年的同事,如今分布在园区的各大公司,见面打个招呼,都觉得不错,而且离开了一个坑的同事们,机会更多,时至今日,大多都是所在公司的骨干,经济条件上,事业成就上也都各有所长,事实证明人才是需要流动的。所以“离职”真不应该是件坏事。
不过人不是机器,理性永远不能完全战胜感性,朝夕相处数年,共同度过的时间比与家人在一起的时间还多的同事,其实多半就是比普通朋友还要亲密的朋友与兄弟。当他找到你,说想要另谋高就的时候,至少对我来说,是一种煎熬。一方面既然已然提起,说明早有想法,或者已经有了很好的机会,作为朋友,即使只是出于留恋而挽留,也可能使朋友失去一次发展的良机;另一方面,如果只是祝愿同事朋友前途无量,任其去留,那么于公于私,于人于己,都不是件心安理得的事。当一个人陷入这样的两难,自然会无奈,甚至伤感。我知道不是每个人都这样想,但至少我这样,有时觉得这是一种懦弱无能的表现,有时觉得这是人之常情,无可厚非。还有一种做法可能更常见,就是版起面孔说教或诱之以利动之以情已达到把人留住的目的,这种方式与我眼下所说无关。
十年后的今天,当同事朋友打来电话,说起他的想法和机会,并且想听听我的想法和建议的时候,我又一次被这种很自我的两难考验着。对专业素养比较好的人,这种事情很好办,随便讲一些冠冕堂皇的话,就能帮助朋友打消念头或立做决断。我的素养差得多,虽故作镇定讲了很多,但自己都能感觉出矛盾所在。能感觉出来朋友也是挺矛盾,否则也不必打电话来跟我讲。他的矛盾在于一方面无心之间有了这样一个机会,待遇与工作都挺理想,另一方面在于他也同样认为在我们这样一个小公司里,同事之间朝夕相处,关系融洽,很难轻易舍弃。显然在这个时候跟我讲这样的话,他是把我当成朋友来看的,更难得的是听了我的一番啰哩啰嗦的废话之后,他居然决定先放弃这次机会。说实在的,除了感激这份信任,我还微微觉得有些惊讶。
因为,本来,就算是给朋友展望一下,共勉一下,鼓励一下,也没什么不好,至少能给他一些信心和做决断的动力,让他给自己的留下找个更好的理由。但最让我不安和难受的地方也正在于此---我甚至没有勇气和信心给他一点承诺。细想起来,之所以不安和难受,对我个人而言,更主要的原因恰恰在于我自己没有信心和动力,而这份信心和动力在两年前,在他们刚来的时候,我是有的。随着时间消磨,事情无进展,现在即使在忙忙碌碌的时候,也觉得碌碌无为,现在的我,即便有信心,也没有这份动力了。这位同事朋友电话打来的时候,我觉得有些突然,不过他说起有些工作上事情想和我聊聊的时候,我却已猜出了大半,而且竟然不觉得很惊讶。
“不觉得很惊讶”,这件事让我觉得很惊讶,细想一下,原来已经有很长时间,我都在下意识里很忐忑,很担心有人提出这样的让我两难的事情,更担心的是我会像现在这样无所适从。再想一下,之所以会这样,是因为我自己也对现在的事情感到很郁闷,对时间流逝却一事无成的自欺欺人感到很不安,将心比心,我想这些小弟兄们也会同感。每每在走廊吸烟聊天的时候,听到他们感叹时间过得太快了,我便有同感。但我都不愿多想这话的潜台词是什么,其实这是掩耳盗铃,因为不必多想,单从意识到这话里有潜台词这件事来看,就说明其实内心已经知道了潜台词是什么。“时间过得太快”,要么是因为很充实,在忙碌中不知不觉过了很长时间;要么说明很无聊,什么也没做成时间就没了。我们应该属于后者,比我年轻五六岁的同事们尚有此感,三十多岁还在满腹牢骚不知所措的我应作何感想?
十年修得同船渡,千年修得共枕眠,能修得在一个办公室里朝夕相处数年,也该是前世修了几百年才得到的缘分,失去了,浪费了,着实可惜。不过缘分和情感都需要某些目标或寄托来维系,国家是依靠共同利益组织在一起的,民族是靠传统和信仰维系在一起的,党派是靠共同纲领维系在一起的,家庭是靠共同语言和理想维系在一起的,夫妻之间没有共同语言,共同理想,那么白头偕老只能是一种痛苦。既然珍惜这个缘分,应该做点什么?世事不如意者十之八九,越活,越觉得大部分事情都不是按主观愿望发展的,实在做不下去或者无可奈何的事情,勉强无益,但最好是努力过了,没有后悔。 也许有一天大家各奔东西,各自奔向更美好的前程,那样的话,我想,无论如何,我都会祝福每一位朋友,如果是朋友,那是否朝夕相处也就不那么重要了。

离骚,我的意思是因为离开的事情而发的牢骚,文如此题。

2008年3月23日星期日

对老yuan博客<“8”的随想>的回复

原文地址:http://de6645.blog.sohu.com/76023192.html

回复:

易经讲八卦,是将我们的肉眼所见归,纳为八个基本的大现象,而宇宙间的万有、万事、万物,皆依这八个现象而变化,这就是八卦法则的起源。能够观察到的宇宙的现象,将之归纳成八大类,画成八卦,此乃超人的智慧,所以八卦是智慧之学,所以“八”的身世原本就不一般;
”八卦“引申出很多意思,比如代指方向,就有了八方来朝,耳听八方,四通八达,八面玲珑,八方支援等说法;
非但易经讲”八“,佛家也讲,八部天龙是八类佛教的护法神(天众、龙、夜叉、阿修罗、迦楼罗、干闼婆、紧那罗、摩呼罗迦),佛家八戒指一戒杀生,二戒偷盗,三戒淫,四戒妄语,五戒饮酒,六戒着香华,七戒坐卧高广大床,八戒非时食;
文人墨客也喜欢”八“,比如曹子建那叫才高八斗, 柳宗元那叫永州八记, 神话传说那叫八仙过海,说评书那叫大小八义,武侠小说管绝顶轻功叫八步赶蝉,把文章写得好的放在一块叫唐宋八大家;
其始共产党也喜欢“八”,比如八荣八耻,而且抗战要打八年,还得是八路军;
所以并不是南方人的大舌头给“八”赋予了特殊意义,“八”之所以是个好字,是个好数,一方面来自中国传统文化中的相关传统,另一方面源于人们的心理暗示。
人们在乎“八”,从一个侧面说明社会安定,经济发展,人民富足。在连肚子都吃不饱的年代,人人心理七上八下,整天七手八脚地干些七零八落的活,只为填饱家里的七嘴八舌,不至于七死八活,谁会有心思念着“八”的好呢?只有生活好了,人们随随便便吃个七荤八素,穿个七长八短,活个七老八十的时候,才会有这个闲心去操心这个“八”。
所以,正如老yuan所说,“离开了大环境,不管你有多少个‘8’,也是枉然。”

对老yuan博客<可悲可恨的小报记者>的回复

博客原文: http://de6645.blog.sohu.com/81927318.html

回复:

天下熙熙,皆为利来,天下攘攘,皆为利往。市场经济给中国老百姓带来好处的同时,代价也是巨大的,此事便为一例。便如靠山吃山靠水吃水的道理,国道上的零星的收费站便是要靠“此路是我开”的霸王行径非法收费,电信公司就要靠对国有资源的垄断占有来牟取暴利,石油公司就是要靠国家政策和对资源的垄断赚钱,仿佛是天经地义的事情。而记者手里掌握的是话语权,控制着民众知情权,这种无形的权利能量巨大,自然会有人盯上这块肥肉,明的不行来暗的,白的不行来黑的,真的不行来假的,目的无非是利用这种资源为自己牟取利益。
奈何舆论和话语权乃国之公器,任何年代,任何社会,都需谨慎处之,不能放任之流,不该完全市场化,此等行径实在卑劣,非但打不起,而且躲不起,只能严重鄙视一下,与其谈论职业道德都显多余。但愿随着国家法律和制度的健全与完善,这种不该出现的事情会销声匿迹。

对老yuan博客<沙尘中的北京>回复

博客原文:http://de6645.blog.sohu.com/82599681.html

回复:

按照重要程度和紧急程度,世界上的事情可以分为这样几类:

紧急程度
|                           |
| 紧急不重要    |  紧急重要     
|__________|________________
|                          |
| 不紧急不重要  |  重要不紧急
|___________|________________ 重要程度

通常最不需要担心的是紧急且重要的事情,比如年初南方的雪灾,数以亿记的老百姓生活在水深火热之中,全国上下,从政府到相关企业,当时的首要任务是抗灾,灾情来得紧急,对国计民生影响重大,这种事情必然是要被优先处理,并毫无疑问地投入一切可用资源;

不紧急且不重要的事情也好说,这些事情就是那些可办可不办的琐事,比如去看个电影,找朋友闲聊,这种事没有时间上的压力,没有潜在的严重后果,所以不会影响大局;

紧急而不重要的事情比比皆是,比如正在集中精力思考的时候,忽然来了一个电话要你马上下楼取个包裹,或者工作的时候忽然从外地来了个朋友,这种事情往往不重要,但必须马上处理,往往都让人无奈,比较影响工作和生活的效率。

最不好处理的是那些重要但不紧急的事情,比如读书,几乎没有一件事情是因为少读了一本书而失败的,甚至包括考试在内,但人人都知道书到用时方恨少的道理,而读书是要花时间花精力的,所以读书这件事往往总是被列在计划表,真正实施的总是远远少于计划的。

沙尘暴治理,乃至全球的环境治理,就属于典型的重要而不紧急的事情,谁都知道环境问题是大问题,后果严重,影响深远,但问题就在于“深远”二字,人性的弱点之一,就是短视,理性的克制往往会向感性的冲动低头,在处理事情上,重要的事情总要让步于紧急的事情,再重要的问题,只要后果不在当下,影响“深远”,就不会被提到日程表的最前列,与环境治理比较而言,任内的政绩更紧急,当前的经济指标更紧急,当下的就业率状况更紧急。而且,只要是对当权者、决策者和当事者而言“紧急”的事情,它的重要性就会凌驾于那些重要但不紧急的事情之上,古今中外,盖莫如此。要不然,为什么美国政府冒天下大不惟就是不在京都议定书上签字?为什么国家对小煤窑屡禁不止,而很多官员甚至不当官也要开煤窑?

辩证法告诉我们,事物是在矛盾双方的对立统一的斗争中发展的,矛盾是有主要方面和次要方面的,矛盾双方是可转化,当重要但不紧急的事情发展到一定程度却不及时处理,当图穷匕见的时候,次要矛盾就可能变成主要矛盾,不紧急的事情就会变得紧急,而且后果可能更严重,这就是客观规律,无视这个规律,必然要自尝苦果。

2008年2月1日星期五

Good morning, this is my blog in Word 2007!

Looks great!

Just have a test.

中文怎么样?这是宋体。

测试一下!这是微软雅黑,看起来很好!

2008年1月25日星期五

google是靠不住的

有人对今年的贺岁片有若干总结:看完《色戒》知道女人是靠不住的,看完《苹果》,知道男人是靠不住的,看完《投名状》知道兄弟是靠不住的,看完《集结号》知道组织是靠不住的。因为这几个片子都看过了,所以觉得这终结很是精辟!今天把google书签给弄丢了,才知道原来google也是靠不住的。

早上打开电脑,如同往常一样打开google toolbar上的书签,奇怪的事情发生了:怎么书签列表比往常短了不少?仔细一看,原本在最醒目位置的几个日常用的连接不见了,再仔细看,每一个分类都少了很多书签,几乎回到了一年前的状态和数量。通常如果不是很值得收藏的东西我是不会随便往书签里放的,如果这是一次事故,那么这次事故的后果是我在这一年里收藏的认为有价值的东西几乎都找不到了。对于每天挂在网上的人来说,收藏和组织书签是一个好习惯,书签可以看作一种对网络生活的记录,再往大了说,是一种人生轨迹。这下可好,几乎一年的人生轨迹被抹杀了。

于是手忙脚乱的做了些亡羊补牢的工作,比如导出从前常用的浏览器自带的书签列表,以及导出放在del.icio.us和StumbleUpon上的书签列表,重新合并和导入,并且凭记忆把日常用的一些书签以手工方式重新添加。费了半天劲,总算让书签列表看起来像是恢复到了日常状态。保险起见,还把书签列表在本地电脑上做了个备份。

整个过程中一直以为是自己的毛病,也许是使用不当或做了什么误操作。直到整理完,才想起没准是最不应该出错的google出了差错。查了一下,果然,很多人有了和我雷同的遭遇,比如这个

几年前人们把自己的机器看作是保险的所在,凡重要的东西,总要放在自己的电脑上,U盘上,甚至刻在光盘上才放心,电子邮箱和网络U盘终究是信不过的东西,谁知道服务商哪天就倒掉了,或者服务器挂掉了,谁知道放在网络上东西是否会被别人看见,谁知道哪天上不了网了怎么办......技术发展和网络的普及真是惊人,短短几年,人们的观念不知不觉的发生了180度的变化,存在网络上的东西即方便(随便找个能上网的电脑就能访问),又安全(放东西的地方不带个https都不好意思跟人打招呼),不用担心因为重装电脑而忘记了备份重要数据,也不必操心换台电脑怎么把老电脑里的邮件备份过来,邮件都转到gmail或live mail,文档都放在google doc或zoho,照片都放在filckr或yupoo,书签都放在del.icio.us或google bookmark,代码都放在google code或sourceforge, 文件都放在DivShare或Box.net里,心情都放在不计其数的blog里,愿望放在43things里,任务放在里Backpack和RemberTheMilk里,朋友放在facebook和43people里,音乐和视频压根不用放,他们就呆在last.fm和youtube里,更不用说人们的钱就放在电子银行和PayPal里。这种方式成了理所当然的习惯,反而放在自己电脑里的东西未必安全和方便使用。

相对从前,这是明显的进步,只不过从这次书签丢失的事故来看,即使NB如google者,也未必100%可靠。正象之前考虑过的一个问题:世界正在变平,但显然还没那么平,互联网和大公司可能99%的时间里都是可靠的,然而我们是否能用100%的信任来承担剩下的1%的不可靠呢?网络和相关应用会继续普及和发展,假如真有那么一天,WiFi信号如同手机信号一样弥漫在大街小巷,而电脑里唯一必需的软件就是浏览器的时候,相信这种“小事故”必将演变为与环境问题一样不得不由全人类共同考虑的大问题了。不过我倒是觉得可以确信,人类的理性不会将这一可能变成现实问题,在问题有可能变成(甚至潜在的)威胁的时候,人们趋利避害的本能会自然地规避风险。

君子不役于物,我往往会想,对外物过渡的依赖,是否正在使人们自身的动物本能和主观能动性退化或丧失?

2008年1月16日星期三

民工与包子

中午外出办事,遇到两件事:
两个民工捧着包子在KFC里吃,被赶了出去,形成对比的是一个捧着笔记本电脑的女孩,占了一张四人的桌子,什么也没点,就没人来让她走。
一个民工模样的人,我等在他身后买包子,他挑挑拣拣,非得让售货员翻出最下面看起来比较丰满的包子,售货员有点不耐烦,他就自己动手把上面的包子一个个往旁边翻,我一看,这包子是不能买了。

想说明两个问题:
第一,对农民工的歧视是普遍存在的,即使拿“民工”这个词来说,我并不知道他们是否从农村来的,是不是在城里打工,但凭衣着举止和言谈就下结论说他们是“民工”(尽管99%肯定),这本身就表明了我和大多数人一样存在对“民工“的态度有失偏颇。“民工”只是一个客观的称谓,主要指那些从农村来到城里打工的人群,应该和工人,农民,军人,职员等称谓相同,都是为了谋生活,对民工和“民工”这个词不应该有任何带有贬义的感情色彩在其中。对待民工理应和对待非民工者一视同仁。
第二,既然大家都应该是平等的,那么民工在城市里也应该遵守大家都公认的习惯和规则,或至少是那些普通人在任何地方都需要遵守的规则,比如对上面第二个例子,我不认为在农村会有用手翻包子的习惯。对民工有偏见固然有错,但民工欺负人也是不对的。


所以我们希望社会和谐,民主平等,并不是单方面的,无论是所谓民工,还是所谓城里人,要想得到他人的尊重,首先要学会尊重他人。

2008年1月11日星期五

Web 2.0 2007 List

来源:WappBlog

九月份新兴服务列表如下:
1、BlipBack:由OjingoLabs创建的一个可内置到Blog上的视频留言服务,通过它Blog读者就以发布视频留言给Blog作者了。详细介绍
2、好看簿:一个用图片及声音分享故事和活动的服务,感觉挺有创意。详细介绍
3、Asterpix:一个超视频创建工具。详细介绍
4、SilverLight:由微软开发,一种新型的跨平台Web 呈现技术,可以与Net 和 AJAX编程模式一并使用,号称是Flash杀手。详细介绍
5、ImageLoop:炫目的相册展示服务。详细介绍
6、书谷:会免费送书给你的网站。详细介绍
7、飞力网:中文OPML文件分享服务。详细介绍
8、Intuuch:采用Twitter模式构建的社会性网络聚合服务。详细介绍
9、Photagr:社化性网络图片收藏夹。详细介绍
10、Clip2Net:一站式屏幕截图及存储服务。详细介绍
11、AirTalk:用Adobe AIR技术构建的IM集成软件。详细介绍
12、闪聊:聊天室2.0,可嵌入到Blog的中文聊天室服务。详细介绍
13、Feedoor:又一个Feed第三方托管及合烧工具。详细介绍
14、Timeku(时库):一个类似于xTimeLine的在线TimeLine(时间表)制作工具。详细介绍
15、Google Analytics AIR beta:增强型流量统计报告桌面软件。详细介绍
16、MailOnFeed:用RSS阅读器来查看邮件。详细介绍
17、Soup:类似于Tumblr的微博客服务。详细介绍
18、FeedEachOther:社会性RSS阅读器,由来自于Yahoo! Answers 的原开发人员创建,他的界面不同于Google Reader或抓虾,看上去非常的简单,内部阅读界面使用了AJAX技术,因此在操作比较容易上手。详细介绍
19、Adobe Media Player:是Adobe公司正在研发中的,基于AIR技术构建的媒体播放器软件。详细介绍 继续.

八月份新兴服务列表如下:
1、Anywhere.fm:在线版的iTunes播放器。详细介绍
2、Co.mments:简单实用的评论跟踪工具。详细介绍
3、FeedM8:一个可帮助你把Blog Feed烧制成适用于在手机上阅读的服务,并提供了访问统计等功能。详细介绍
4、IntPDF:一家来自于国内的PDF在线生成工具。详细介绍
5、Intense Debate:提供了一个非常便于安装的新型留言系统Widget,通过它提供的功能可以取代你现有的Blog的留言系统。详细介绍
6、Disqus:新型Blog社会性留言服务。详细介绍
7、HotShare:一个可支持视频、音频、照片及各类文件的免费存储服务,每个文件上传限制为200MB,不限制上传及下载次数,速度也非常理想。详细介绍
8、阿里妈妈:一个新上线的类似于Adbrite的在线广告交易平台,与普通的广告联盟服务不同,它是把广告当作商品来买卖。详细介绍
9、BuiltWith:查看某网站是用哪些技术构建的。详细介绍
10、Fav.or.it:提供给用户更佳的方法来发现和管理自已喜爱的阅读内容,它与抓虾一样提供了评论、搜索、收藏、Tag管理等一系列功能。详细介绍
11、FeedJIT:可实时显示访问者来源的Blog Widget。详细介绍
12、YouTubeDeskTop:新型视频聚合工具。详细介绍
13、Bets4c:类似于Visio的中文版在线制图工具。详细介绍
14、Jooce:超酷的基于Flash技术的WebOS。详细介绍
15、多拍网:中文在线相册服务。详细介绍
16、Novoking创想王国:一项类似SecondLife及HiPiHi的项目。详细介绍
17、DesignMyRoom:虚拟3D房间布局设计工具。详细介绍 继续.

七月份新兴服务列表如下:
1、TwitterMail:一个为Twitter用户提供通过Mail发送和接收消息的服务,用户无需注册,只要使用Twitter用户名和密码就可正常登录。详细介绍
2、SeeqPod:一个提供音乐搜索的在线服务,用户可以通过关键字搜索需要的歌曲,提供在线收听,但并不提供下载。详细介绍
3、Fastladder:又一个国外RSS阅读器。详细介绍
4、Xtimeline:用来绘制Timeline的在线工具,由于使用AJAX技术构建,操作非常的简便,用户可通过添加事件日志的形式构建时间表,添可为每个日志配上相应的图片。详细介绍
5、易度:中文在线项目协作与管理平台。详细介绍
6、Hey!sperad:一次上传视频到多个网站。详细介绍
7、Clicki:中文web2.0统计服务。详细介绍
8、Streamy:新型阅读及分享工具。详细介绍( 手头有5枚邀请,需要的朋友请留言)
9、Genoom:一个使用AJAX技术构建的在线家谱制作工具。详细介绍
10、Wobzip:在线解压缩服务,支持7z, ZIP, GZIP, TAR, BZIP2, RAR, CAB, ARJ, Z, CPIO, RPM, DEB, LZH, SPLIT, CHM, ISO。详细介绍
11、Gelato:开源的微博客(tumblelog)平台工具。详细介绍
12、Streakr:与StumbleUpon类似的网络探奇服务,同样需要安装一款浏览器工具栏,通过该工具栏你可随机访问有趣网页、视频、图片、音乐等内容,同时它还集合了类似于MySpace的SNS社区功能。详细介绍
13、TieURL:国内的网址缩短服务。详细介绍
14、Jing:一站式屏幕录制及存储套件。详细介绍
15、Unizr:另类在线讨论组服务。详细介绍
16、Fuser:一个功能强劲的Email及社区网站消息整合工具,通过它可把多个Email帐户整合在一个地方,就像是一个在线版的Outlook客户端一样。详细介绍
17、SezWho:社会化Wordpress留言插件。详细介绍
18、EachDay:一个新型的多媒体分享工具,官方的说明是这是一个胜于Blog、相册及社会化网络的个人记忆存储及分享工具。它可以通过时间线的方式展示你的文字、照片、视频及音频内容。详细介绍
19、AideRSS:新型Feed过滤服务,它利用文章的留言数量、Del.icio.us收藏数量、Digg推荐数量及Technorati链接数量来进行缩合评定,得出一个PostRANK分数,该分数越高说明该文章就越热门。详细介绍
20、Web2PDF Online:把你的Blog文章转换成PDF文件。详细介绍
21、Bitlet:基于Web的BT客户端。详细介绍 继续.

六月份新兴服务列表如下:
1、FloorPlanner:一个专门用来设计和规划房屋布局的在线工具,使用Flash 技术构建。详细介绍
2、NewsBerry:一个帮助你制作NewsLetter的在线工具,它的UI做得非常的简洁漂亮,功能也简单易用。详细介绍
3、MassMirror:文件存储及分发工具。详细介绍
4、Synthasite:一个超强的在线网页编辑工具。详细介绍
5、BabelGum:高品质网络电视服务。详细介绍
6、FlickraDay:会自动保存你每天拍摄的照片,最终可生成照片秀。详细介绍
7、YooRL:单一链接实时跟踪统计服务。详细介绍
8、Clickcomments:Postreach提供的一个新颖的评论工具,用户无需输入任何字符只需点击准备好的图标就可发表你的看法。详细介绍
9、Dekoh:号称是挑战Apollo的桌面/Web平台的应用服务。详细介绍
10、BuzzWord:令人期待的在线文字处理工具。详细介绍
11、VuVox:又是一个非常不错的在线媒体混合工具,使用Flash技术构建,它具备超炫的显示效果,且也易于使用。详细介绍
12、Web2.0 LogoCreator:支持中文的Web2.0 Logo制作工具。详细介绍
13、BayImg:不做任何审查的图片存储服务。详细介绍
14、Yuntaa:是一个利用AJAX技术构建的文件存储及分享服务。详细介绍
15、鲜果在线:中文在线RSS阅读器新秀。详细介绍
16、NextLib:一个可方便快速地创建个人知识库的在线工具。详细介绍
17、KoolWire:在线PDF转换工具。详细介绍
18、Pownce:一个类似于Twitter基于Web的分享网络,同时还提供一个基于Adobe Air平台开发的即时通软件。详细介绍 继续.

五月份新兴服务列表如下:
1、Komoo :最早期的中文Twitter克隆版。详细介绍
2、SilverLight:微软用于对抗Adobe Flash的新技术平台。详细介绍
3、Wakoopa:社会性软件评论及交流社区。详细介绍
4、Nivio:远程个人Windows主机。详细介绍
5、Clicky:一款专门为Blog量身定制的访问统计服务,号称web analytics 2.0。详细介绍
6、Phozi:为你提供了一个方便制作大头照的途径,这是一个基于Flash技术的网络服务。详细介绍
7、BlogSigs:一个用于Blog推广的好工具,它可以把你的Blog上的最新文章自动插入到Email正文尾部,作为邮件签名档。详细介绍
8、MoboPic:一个制作手机墙纸的在线工具。详细介绍
9、LineBuzz:内嵌式Blog评论留言服务。详细介绍
10、叽歪de:又一个Twitter中文克隆版。详细介绍
11、myGOYA:超酷的Web桌面服务。详细介绍
12、TileFile :一个利用Flash技术构建的媒体文件分享社区服务。详细介绍
13、Inblogit:一个比较另类的Blog托管服务,它主要的特点在于可让用户完全掌控自已的Blog设计及域名等等。详细介绍
14、DemoFuse:可帮助用户为自已的网站制作交互式教程,无需下载并安装任何软件。详细介绍
15、有贴:不一样的网页收藏服务。详细介绍
16、Screencast-0-Matic:超强的在线视频录制工具。详细介绍 继续.

 

四月份新兴服务列表如下:
1、Fauxto:看上去就像是一个简版的Photoshop,用Flash技术构建的在线图片编辑工具。详细介绍
2、Quibble:一个集合了多种调研工具的服务,它提供投票、民意调查、问答及分类共四种工具,完全支持中文。详细介绍
3、Peepel:自于奥大利亚昆士兰的网络服务,一个在线office套件工具。详细介绍
4、MyUrlWorld :多样化的网叀收藏服务。详细介绍
5、OpenKiwi:简易实用的在线聊天服务。详细介绍
6、G.ho.st : Flash版的WebOS系统。详细介绍
7、Mindpin :中文版怏维导图制作工具。详细介绍
8、Mostat.us : 帮助你通过手机查看Google Analytics统计数据。详细介绍
9、AuthorStream:一个与Slideshare类似的PPT文档在线分享服务。详细介绍
10、RobotReplay :一个可视化跟踪统计服务。详细介绍
11、Vuze : 基于P2P技术的高清晰视频分享服务。详细介绍
12、DesktopOnDemand :远程个人Linux系统。详细介绍
13、Flektor :Falsh版多媒体混合工具。详细介绍
14、Walk2Web :另类的网页探索方式。详细介绍
15、Pixilive: 无限制图片存储服务。详细介绍 继续.

三月份新兴服务列表如下:
1、Mindomo :Flash版的思维导图制作工具。详细介绍
2、HiPiHi:类似于"第二人生"的国内虚拟三维游戏。详细介绍
3、Scribd:在线文档分享服务,上传微软的多种文档格式后,cribd会把它自动转换成Flash格式的展示框架,并提供可内置到Blog进行分享的JS调用代码。详细介绍
4、51OK : 文件存储及共享社区。详细介绍
5、Conduit : 浏览器工具栏自助创建服务。详细介绍
6、FlickrCash :超强的Flickr图像搜索工具。详细介绍
7、Whos.amung.us:可以帮助用户统计及显示,自已的Blog上当前在线人数。详细介绍
8、Adobe AIR平台(Apollo):Adobe发布的新一代Web应用程序开发平台。详佃介绍
9、Spotplex:Blog文章涮选及推荐服务。详细介绍
10、Toread:用Email进行收藏链接的服务。详细介绍
11、ScrapBlog:一款基于相片展示的在线日记本服务。详细介绍
12、BubbleGuru:在你的Blog上添加气泡视频。详细介绍 继续.

二月份新兴服务列表如下:
1、Picnik :Flash版在线图像编辑器。详细介绍
2、TurboFlix : 快速分享照片与视频服务。详细介绍
3、SlideRoll:使用Flash技术构建的图片展示服务。详细介绍
4、Imified:一个可通过IM即时通软件来摇控在线应用程序的服务。详细介绍
5、365Bloglink:Blog文章聚合及挖掘服务。详细介绍
6、百度视频搜索:百度发布的视频搜索服务。
7、SplashCast:一个多媒体混合工具,用户可通过插入图片、视频及音频等多媒体内容,制作成一段Flash视频。详细介绍
8、Cuts:用Flash技术构建的在线视频编辑服务。详细介绍
9、WriteMap:一个利用AJAX技术构建的网站地图制作工具,完全支持中文。详细介绍
10、Veoh:与传统的视频共享网站不同,Veoh不仅描供了Web视频播放页面,而且提供了一款名为Veoh Player的客户端程序,用户可下载来离线观看视频内容。详细介绍
11、PDFescape : 在线PDF查看及编辑工具。详细介绍
12、EditGrid:来自于我国香港的Team and Concepts (TnC)有限公司开发的,一款专注于在线电子表格领域的Web2.0服务。详细介绍
13、Tumblr:微博客托管平台。详细介绍
14、MindMeister: 一个利用AJAX技术构建的思维导图制作工具,完全支持中文。详细介绍
15、Aobo音乐盒:一个收藏在线音乐的服务。详细介绍 继续.

一月份新兴服务列表如下:
1、趣摘网:一项结合了Digg模式的中文网络收藏服务务。详细介绍
2、PDF Converter:免费在线PDF文件转工具。详细介绍
3、易游(Inu) :国内又一个社会性网络收藏服务。详细介绍
4、LetterPop : 一项用来制作电子期刊(NewsLetter)的服务,由来自于加利福尼亚的三个小伙创建。详细介绍
5、iloggo :帮助用户打造自已的网站Logo图片集的服务。详细介绍
6、Hey!Watch :一项专注于视频格式转揢的网络服务,需付费使用。详细介绍
7、爱酷播: 又一个中文社会性音乏分享网站。详细介绍
8、Flikzor: 视频留言服务。详细介绍
9、Joost: 一项新型宽带电视服务,志在为用户们提供高质量的全屏幕视频节目。详细介绍
10、PopAvatar: 类似于Gravatar的国内头像托管服务。详细介绍
11、Scrybe :基于 Flash技术构建的强大GTD工具。详细介绍
12、iBubble:是由JellyBarn公司创建的一个有趣的图片展示工具,它可让用户在图片上添加气泡文字。详细介绍
13、Boomp3:采用的网站模式与YouTube非常相近,它专注于音乐领域,用户无需注册就可上传及分享,或者是在线录制。详细介绍
14、Sharea:一个功能强大的社会性社区网站,在这里你可以与你的朋友或同事,分享并获得喜爱的音乐、照片及视频等多媒体内容。详细介绍
15、抽屉(Chouti):是国内的一个网络收藏服务,开发团队来自于于北京。详细介绍
16、Lingr:一款是我非常喜欢的Web2.0式在线聊天室服务。详细介绍 继续.