HD 语录,节选一些技术断言作为参考 -- Zoom.Quiet [2004-08-09 22:42:52]

散见于 china-Python

1. 关于治学

呵呵,前段时间与一个朋友在讨论开源的想法时,
我想明白了一件事,就是它让一个个体有自己的成就的快乐。
而我自己是一个喜欢快乐的人。 :) 
在最艰苦的时候我都在笑着,我不能让自己死在现在这个巨大僵尸公司里。
----HD

我个人认为这样的事要这样来考虑:
1.需要有一个项目或几个项目的发展以让大家真正实做以深入进去,而不是两片嘴皮就完事。
2.需要的情况下mail lists是可以分的呀,为什么只在一个里边讨论呢?
3.项目必然会自我独立起来的,会有自己的mail list、wiki,但是python chinese是一个孵化器
4.如果想多样化,就需要有人能担起挑头的任务。而且真正的开源起来,而不是打击或是封闭起来。
我个人认为这是一种境界,我做maven chinese时被很多人吃笑,说这样的东东没有商业价值。
但是,我为什么一定要先去考虑它的商业价值呢?
为什么不能将自己的东东分享给大家而找到更多与自己一样的同类人,一起飞翔呢?
:)
5.人类的头脑有三个思想是值得捉摸的
 懒惰、窃取、交换
我们要看清这里的规律,让自己健康起来,建立起一个
 勤奋、共享、有所求有所取 的心态。
做了十几年的代码了,能与大家分享的心态方面的东东就这点。
----HD

2. 关于开发

我的工作中,我尽量回避对技术的处理复杂度。
在unix中,我认为最为经典的就是将一群小而简单的应用,综合起来解决了非常复杂而难以解决的事务。
最简单的想法也许就是最好的想法。尽量避免复杂的实现。而将复杂的实现放入周期性的整理中去。
----HD

3. 关于经验

>  唉呀呀!随着交流的深入才发现原来如比…………
> 嗬嗬嗬,都是在长期痛苦下才逐渐形成的优化解决方案哪!
为什么会有系统版本的升级?为什么会有协议的升级? :)
这样的升级,说实话,我用了近一年的时间呢。
 
> 不过你每次的尝试,是如何在不影响现有运营的条件下进行的?
这又是软件工程的问题,真正系统开发和升级的时间很短,前后不过两三个月的时间,
但是运营的问题才是真正消耗我时间的事。

> 如何评估优化效果的?专门的评测软件包?自个儿的测试脚本?
呵呵,机器资源使用的下降,速度、发送量,这不是一下就看的出来吗?
测试的方法多种,看情况而定了。我们用python写了很多的原型,大部分原型就转换成了生产系统了。

> 协议的确是网络应用的灵魂!
> 可惜一切流行的协议都是西人创立的,都是数学家弄的?
> 我们只有利用的份儿,国人的QQ好容易有了一些市场,居然不肯开放,
有牛人开发了Linux 平台的client ,腾讯竟然马上关闭了相应的端口!!!
唉,为什么所有人都想做牛顿?苹果掉下来一次就够了,不能天天到处掉苹果罢。 :)
 站在巨人的脑袋上不好吗?腾迅哪个烂人,我不想说了。

> 现在无线网络,开始了多媒体的负载,twisted 作为服务平台有相应的优化??
mm7是基于xml的,协议和交互定义的是可扩展性,但一点没有关注性能。所以我可以告诉你,
现在全国的彩信中心没有一个不负载到头的。现在移动天天都在想怎么扩容,但是彩信现在的负载实在太差了。
这是我们要学的,必竟我们不能天天买一群小型机来处理无聊的xml呀。而wap现在的wbxml是一个很好的点子呢。

> /******** [2004-07-15]10:19:13 ; HD wrote:
> 
> >>  网络通讯应用必须对各种相关协议有深刻的理解,
> HD> 我从2001年就开始做短消息的应用了。如果现在还不理解也难以面对自己这么多年的工作呀。 :)
> 
> >> 兄台学的是通讯嘛?
> HD> 偶可以说是没有上过任何大学的任何专业。 :(
> 
> >> 否则看那些协议文件实在是苦哪!
> HD> 我认为协议是设计的精髓,如果设计好一个协议可以让系统以法拉利的速度去感受它的美妙感。
> 
> >> 宁可直接抓取代码片段,照猫画虎!
> HD> 初期只能这样的。
> 
> >> 可是,无法恰当优化的了,
> HD> 哪是,优化就是基于理解,取只会让你被别人的思想征服,而没有任何想像力。
可见我blog上的《创意是第一生产力》一文,是我深刻的认识。
> 
> >> twisted 兄台是如何发现的??
> HD> 说来经历很长了。在我没接手这个项目时,他们最早使用的vc来做的开发,
周期长而没有优化的感觉,使用的是cmcc提供的dll。后来使用了java,还是用的cmcc提供的jar。
在我接手后,我开始进行改造,目标是将系统的负载容量由每天50万的负载(四台IBM服务器)提高到平均一台每天负载500万处理。
> HD> 第一步的改造尝试了基于http/java的内部协议和java的ismg接口。失败
> HD> 第二步改造尝试了基于java rmi的内部协议和java的ismg接口。中庸之道
> HD> 第三步改造尝试了基于java自定义的xsmpp的内部协议和java的ismg接口。有所提升
> HD> 第三步改造尝试了基于java自定义的xsmpp的内部协议和python的ismg接口。大幅度提升
> HD> 第四步改造尝试了基于python自定义的xsmpp
> HD> plus的内部协议和python的ismg接口。再次大幅度提升
> HD> 第五步改造尝试了基于python自定义的xsmpp
> HD> plus的内部协议和增强型架构以及python的ismg接口。达到了我们自己无法想像的低负载
> HD> 最终系统五台机器,承担了包括ismg接口、数据库、业务处理、基于php的web业务管理系统的所有工作,
还有一台是做单点故障的备份。单天达到1000万时,机器的负载没有超过5%的。..............
> HD> 后来,发现自己基于socket的开发越来越复杂了,在考虑使用Medusa
> HD> Server,但是这实在是一个不活路的项目。就又发现了twisted。
今年我比较多的工作在考虑twisted的可用性和适应度。
现在已经有很大的趋势就是在项目中使用twisted。
也需要有好的项目来验证twisted的可用性、可扩展性和安全能力。
> 
> 
> HD> ----HD

还想说明的事就是python只是让我找到了一个在性能和可变更能力上一个非常好的语言。
freebsd是我找到的一个易管理和高负载的操作系统。
但是系统架构、协议制定、服务内部的结构才是之前的哪个项目成功的基础。
----HD

我们关心的是网络上会有一个节点存储一些帐户的存储。如网络硬盘。在web
interface上,我登录了,要看我有多少文件存在服务器上,下载我的存储的一个文件。这个流程的内容如下:

1.登录
web--->index(login)
2.看文件列表
web--->index(checkuserserver(userid))
web---->uss(checkuserlist(userid))
3.下载文件
web--->uss(recvfile(userid,fileid))

USS(统一存储服务器/服务),是我对这个项目的目标服务器的简称。
我们可以看到index的作用就是认证和找到用户在哪个存储节点上
真正该用户的存储的细的操作就会跑到uss上去做了。

这样可以实现有效的分载,index server就是过路客,而不是工作者了。
这个架构是我一直以来总结出的经验。要考虑到单点故障这样的至命问题。
----HD

>>> python在公司中的推广和用途有什么想法和实际经验?

呵呵,这方面我感觉是一个社会问题,而不是我们的行为问题。
php我想是一个与python最为相似的语言,python过去走过的一些路和php早些时间很相像。
只是php的针对性很强,大家一下就为它的目标所吸引,迷住了。
而python的目标是什么?python的特性是什么?
大家往往忽略了这一点,都在讨论它能做到什么,不能做到什么。
其实在mail list中已经有很多大侠说过很多它的特性,我总结一下,
给各位感受一下:
1.python是胶水。
  它是一个能嵌入其它语言,和让其它语言嵌入其中的大胶水。
  你可以使用python灵活的利用各个现有或是说是大家擅长的特性完成一个非常酷的工作。
2.python是一个足够简单的语言。
  学习它是很简单的事,只要认真一些,我自己只使用了一周的时间。
3.python是一个足够深入细节的语言。
  开发者们已经给我们提供了差不多是全部

可以使用到的功能的模块组,它可以操作大多数c语言可以操作的数据和功能。
如何应用到公司,我觉得是一个自然的过程,它的应用足够多了,就会有社会效应了。
如果大家只是学学、看看、了解一下,哪么它永远都只是爱好而已。