[技术贴]关于Rich Client的一点个人看法(补充)

昨天令狐对我的《[技术贴]关于Rich Client的一点个人看法》提了一点意见,特别是指出了其中的一些错误,我已经在那里改正,非常感谢。

后来我们就XUL(Gecko)和RIA(Flex)两项技术作了一番比较,因MS的技术依赖于.net平台,故Smart Client不在讨论之列。以下为讨论内容,引用部分为令狐语:

>不过Gecko这个也还不错的,它的思路跟Flex不是很一样。XUL关注的是前端,后端只要是Web Service就行。据我所知Flex后端的服务器是专用的。

是的,flex需要一个即时编译后端,用于在第一次访问时把服务端的MXML和ActionScript编译成FLASH。在这点上(指不需要专用的服务端)XUL的确不错,但必须承认,XUL在客户端能做的事远远少于RIA,还是很多事要靠服务端来做。

>这一点你说错了。支持XUL的实际上是Gecko这样一个渲染器。像FireFox这个软件本身就是利用XUL作出来的。XUL在客户端可以做事情的,不过不是通过http协议,而是一个专用的chrome协议,通过这个协议,XUL可以访问本地资源。

 这个协议我知道,它可以访问本地资源吗?

>可以的,你想想FireFox不是可以读取本地配置文件么。呵呵。不过chrome协议需要配置和安装RDF文件,这个比较麻烦(就像Fx的扩展那样,不装是不能用的)。

还有就是对图形/媒体的支持,XUL跟FLASH相比还是有差距的吧。

>对媒体的支持毫无疑问是Flash强了。

总的来说,XUL的复杂性还是大些,并且它不能通过装插件之类的方式使别的浏览器支持,这也是个很大的问题。

>XUL其实一方面是可以做Rich Client,另一方面,它可以做像FireFox这样的桌面程序。这一目标跟Avalon倒是比较接近。

要把GECKO集成到LINUX上去

>呵呵,好像现在是有人在做这事啊。准备把Gecko集成到Gnome里(两个项目名字倒有点像 -_-||)。

[技术贴]关于Rich Client的一点个人看法

上午跟516就这个问题聊了一会,觉得有点用,就整理记录一下吧。

我觉得Rich Client的目标是要在Thin Client和Fat Client之间找到一个中间点。今年的《程序员》第2期有一个RIA(这里用的是广义的RIA概念,包括几乎所有RC技术)的专题讨论得已经比较全面了。

现在主要的RC技术有几个派别:

  • Microsoft的基于.net技术的所谓Smart Client,秉承MS一贯的概念混乱的传统,Avalon/XAML大概也可以网罗在其中。
  • Macromedia基于Flash的RIA,主要是如Laszlo 及 Macromedia Flex这样的实现。
  • Mozilla的基于Gecko浏览器核心的XUL,目前好像只有FireFox浏览器支持FireFox本身就是用XUL写的一个在Gecko上运行的应用(多谢令狐指正)
  • Java的Applet/WebStart,Applet已经是赶不上趟,WebStart大概也差不多了。
  • 最后是基于已有技术的实现,主要是用DHTML实现的,如Bindows、Isomorphics。

以上主流的RC技术(前三个)中有一些共同点:

以XML为核心,基本上就是用XML来代替Thin Client中HTML的地位,辅以少量的客户端脚本,通过SOAP/WebService与服务端交互,提供比Thin Client更多的功能,以及接近于Fat Client的更好的用户体验,并保留Thin Client易于发布等优点。

所以说它是Thin Client与Fat Client之间的一个中间点。

以目前的情况来看,最有希望的是前两项技术,基本上都可以达到上述兼备Thin Client/Fat Client优点的程度。XUL虽然比那二者要轻量得多,但功能相对来说也差得多,还是比较接近于Thin Client。Java技术则是比较接近于Fat Client,而且开发复杂性较高。至于DHTML,本质上还是完全的Think Client,功能都是靠大量的客户端脚本来模拟,在客户端占用资源过多,功能略差,而且存在浏览器兼容问题,个人不看好它。

谈到RIA时,516说他“好不容易和公司的平面设计师想出个flash/java的方案,想不到人家已经做到这个地步了”。

所以说,及时了解国外最新技术的动向是很重要的。

很久米有米天一日了-全国爱耳日

这个日倒是形象生动:3.3就像一对耳朵。

《人体漫游》中介绍过,耳朵里的听骨是人体中最小的一块骨头。

今年春节晚会上最值得了一看的节目就是《千手观音》。不过节目结束后那个白痴主持人还特地说了一下她们是聋哑人,她很感动云云。感觉就像刚吃完一顿盛宴后,又端来的一碗漂着死苍蝇的涮锅水汤一样。春晚就是酱紫被糟蹋鸟。

据说全国的聋哑人中,有相当一部分是因为在幼儿时期不当使用抗生素所致。去年七月一日,国家将所有抗生素列入处方药。不幸的是,那些对儿童不当使用抗生素的通常不是儿童的父母,而是医生。以药养医式的医疗产业化如何能够避免以后再出现此类悲剧?

RPWT严重鸟

中午吃完饭回来,等电梯时人多,有个老外很厚道地让我们一帮人先了,他自己在外面等下一趟。

在电梯里除了我们公司的人以外,还有几个是楼上别的公司的。他们在谈到那个老外时,开玩笑说刚才应该问问那个老外:

Are you going down?

偶就在一边很猥琐地笑乐。

[技术贴]用Python 2.3操作XML时遇到的编码问题

最近在学习Python。不过因为Python2.3不支持GB2312编码,而我的程序需要用到中文,只好用了标准的UTF-8编码。

用了一个月也没有发现什么问题,不过周一时,当我需要通过minidom修改一个XML文件中的TextNode里的中文文本时,在保存时就会出错。查来查去找不到问题所在,令狐说Python有一个SIG(特别兴趣小组)专门处理XML的,有一个PyXML。于是我又下载了这个东东装上,但是还是有问题。

不过倒发现这个PyXML里面带了一个XPath的实现,简直是太好了,有这个东东我可以省很多代码。

因为正则表达式处理的需要,我要先把原始字符串从GB码转成UTF-8:

content = unicode( content, "mbcs" )
content = codecs.getencoder( "utf-8" )( content )[0]

这样的串在内部是以UTF-8编码的ASCII串存在的。当写入XML的TextNode时,就会把它当作ASCII编码转成UNICODE,因为它原来已经是UTF-8编码的,这样在XML保存时,就会再进行一次ASCII到UTF-8的转换,因为UTF-8的代码范围超过ASCII的范围,所以被当作错误ASCII码导致异常。

解决的办法也很简单,就是在写入XML的TextNode时,把要写入的内容指定为UTF-8编码的UNICODE:

node.replaceChild( doc.createTextNode( unicode( newtext, "utf-8" ) ), node.firstChild )

当然,保存为XML文件时也要注意,不能直接以ASCII文件的方式保存,而要指定成UTF-8编码的文件,方法如下这样通过codecs:

def saveToFile( file_name, content ) :
f = codecs.open( file_name, "w", "utf-8" )
f.write( content )
f.close( )

最后,如果要保存前面那个UTF-8编码的ASCII串content,同样需要转换为UTF-8的UNICODE才行:

saveToFile( "content.htm", unicode( content, "utf-8" ) )

更多关于Python中用UNICODE处理中文的技术细节,参考令狐推荐的这篇《[Python学习]Unicode及编码处理心得

敢不作为?

八卦消息报道:信息产业部于2月23日下午3时终于出台了中国高清碟机行业目前惟一的指导性标准:《高密度激光视盘系统技术规范》,确定了张宝全所代表的EVD阵营在此次标准大战中,获得了胜利。

在DVD的时代,因为专利费的问题,我们已经吃了很大的亏,这一次是一个机会,无论如何不能让日本鬼子再次占到领先地位。

但是……

>据阜国数字副总裁刘丹介绍,早在1月10日,阜国就破解了凯诚高清的HDV算法实际上是Divx技术只修改了8个字节的而来。

不知道是不是真的。如果是真的,那么HDV的竞争者EVD和HVD又是什么样的内幕,就不得而知了。也还好这次获胜的不是HDV。

张宝全是个精明的投资人:

“谁也别指望地产能一辈子赚钱,但EVD却能。因为我投资的是标准。”

他知道,只要垄断了高清碟机的标准,他不用生产就可以坐地收钱,比做房地产还爽。所以当信产部对该标准的出台拖拖拉拉时,他不惜以状告信产部“不作为”相威胁。另一方面,他也借此得到相当广泛的支持,搞得信产部跟中国足协差不多了,甚至还不如,简直就像是卖国贼。

张宝全果然很强。

关于不作为的事,我想到上周末的《七分之一》,其中就说到东北某镇民政部门工作人员,因为没有及时行使法定的救助义务,导致一个流浪人员死亡,被当地检察机关以“不作为”起诉。虽然最后他被免于刑事处罚,但他想不通:

罪犯都是干了坏事才会被检察机关起诉,什么都没干怎么也会成了被告?

信产部这次被张宝全告也是如此。

作为政府机构/公务员,什么都不干也是犯罪。因为你们在花着纳税人的钱。

当我们的政府机构/公务员都有这样的意识的时候,那才会是人民幸福的时候。

从抢钱说起

昨天的《道德观察》说了一件事:成都金牛区某商业区发生一起抢劫案,劫匪被众人擒获,而被抢的27万元现金掉了一地,在场的人们自觉地围成一个圈保护散落在街头的钱,等着失主用了半个小时时间把钱全部捡回来,居然一张都没有少。

这很难得。但,这也是一种“意外”。

其实这种街上散钱的事以前也有报道,但几乎无一例外是遭遇哄抢。不要说是钱了,别的物资也一样。据说某地发生过一起运输大豆的汽车发生交通事故,倾覆在路边,等到有关部门赶到时,车上的大豆已经被人哄抢一空。

假设如果钱刚掉时,那些人不是帮着保护,而是往自己口袋里装钱,那么结果肯定是演变成一场哄抢,结果肯定是那个失主损失了。

但当作保护工作的人达到一定的数量,形成了一定的势力时,就会对那些心里想着趁乱抢钱的人造成一定的威慑。就算是刚开始有一两个人捡了钱到自己口袋里,在这种情况下也不得不拿出来。所以反而结果是一张都不少了。

从众真是一件很奇异的事情。

什么叫头头?头头就是很够很好地利用这种从众心理,操纵众人干成一些事的人。不论是好事还是坏事。^O^