CZUG技术博客
专注Python/Zope/Plone相关的技术博文
ZODB的冲突解决
潘俊勇 2009-12-13
一般的关系数据库,进行写操作之前,都会先锁住。
但是在ZODB,会采用的类似cvs/svn的方式,不是强制锁,而是事后检查merge,再提交:
检查对象是否修改了,如果发现修改了,然后停下来,设法解决冲突,如果解决成功,那就成功提交。否则,抛出异常。
如何解决冲突,对象需要有这样一个方法:
def _p_resolveConflict(self, oldState, savedState, newState):
# Figure out how each state is different:
savedDiff= savedState['count'] - oldState['count']
newDiff= newState['count']- oldState['count']
# Apply both sets of changes to old state:
newState['count'] = oldState['count'] + savedDiff + newDiff
return newState
oldState是进行事务前的对象,savedState是现在发生冲突实际保存的对象,newState是新的状态。
什么是状态?看看标准的pickle(一般就是对象的__dict__的值):
http://docs.python.org/library/pickle.html#the-pickle-protocol
需要注意的是,如果采用ZEO的方式,冲突的解决是在服务器端进行的。这样,就必须将 _p_resolveConflict 所在的包,在ZEO的进程中包含,否则不会起作用。一个简单的方法是调整ZEO的buildout配置:
[zodb]
recipe = zc.recipe.egg:script
eggs = ZODB3
zope.minmax
zc.queue
PaaS开发环境的一些想法
潘俊勇 2009-11-16
PaaS一般需要提供一个在线的开发环境。
PaaS代码编辑环境
传统的web是不适合开发的,最简单的是缺乏关键字加亮显示。
但是可以有如下处理方法:
- 可采用ajax的web端开发界面,zoho就是这样的
- 在IDE客户端插件,让IDE可以和云平台集成工作
- 外部编辑器插件,下载为文件,在本地的开发工具中开发
- 直接将云开发环境映射为虚拟磁盘分区,在文件系统上开发。
PaaS代码调试工具
2种方法:
- 可采用一些ajax的调试方法,直接在浏览器上进行异常调试
- 采用IDE插件来调试
PaaS代码的版本管理
有2种途径:
- 云开发环境自身提供版本管理,包括版本和tag、比较、回退等功能。
- 直接将云开发环境映射为虚拟磁盘分区,在文件系统上开发,利用svn/cvs等现有版本管理工具进行管理
再看数据库应用的开发
潘俊勇 2009-11-15
大部分的数据库应用,往往并不需要太多复杂的逻辑。开发人员很简单就可以开发完成。
历史上有几款软件,最开始是dbase,后来有foxpro,Excel,还有Access,号称数据库系统,但是和我们现在看到的mysql实际上定位不同,他们都有非常简单的定制开发能力。后来有powerbuilder这样的通用数据库应用开发工具,这个工具也是快速的脚本开发。
但随着web的盛行成为标准,除了Excel,大部分工具现在都渐渐走向没落。
而新的趋势,是将这些数据库应用放入云端,这将焕发新的生命力。google把excel放入云端后,和表单结合,将excel引入多人协作。
而foxpre/access这样的工具,也被zoho云化了。他的zoho app creator就是这样的。
而重量级框架上配备的一些二次开发环境,往往也同时具备基本的数据库开发的功能。由于附加服务更多,未来这种应该是趋势。
而 易度应用 数据库软件云化的一个产品。
重看脚本开发
潘俊勇 2009-11-15
复杂系统会平台化,支持脚本开发。脚本开发是最灵活的操控复杂系统的方法。脚本开发的要求是:快速达到结果。quick很重要,dirty与否不那么重要。
对脚本开发,要求快速培训,就能快速掌握,快速开发。
脚本开发人员,属于典型人类。他们不是清教徒,他们是最典型的实用主义者。他们对用户的需求往往有非常明确的认识。他们希望非常非常快速的解决他们的问题,恨自己不是bill gates。
在我的理解,其实domino/lotus notes的开发人员属于脚本开发的层次,国内很多的OA还在脚本开发的层次;还有,SAP的开发,也属于脚本开发;我们常用的批处理、bash,也属于脚本开发。脚本开发对开发人员的要求是不高的。
事实上,脚本开发深受系统集成商的喜爱。
脚本开发出来的产品,通常被认为是没有核心竞争力的。但是目前随着SaaS向PaaS的过渡,脚本开发已经成为一个新的主流。几乎所有的重量级框架,都配备了脚本开发的工具,用于个性化定制。比如salesforece的force.com,netsuie的suiteapp.com。易度,也有自己的edoapps.com。
看云识天象
潘俊勇 2009-11-15
Amazon
让你的操作系统、硬盘逐个云化。其他云的母亲,云母。
让你桌面办公环境云化,也在让你的企业办公云化。正在构造构造中的天空之城,有帝王相。
Microsoft
陆地的老牌子,在新的云端重建。整个思想要换,不容易,且静观。
37Singals
旧世界的第一个新星。有想法,能创新。独立而骄傲。
是小公司,也服务于小公司,做一些创新实用的做事的小应用。
37Singals如同苹果电脑,独立特行,世界再变,但总有自己的一批粉丝。
Salesforce
从crm软件起家,第一家上市的SaaS软件公司。
Salesforce实现了平台化,可方便其他应用集成,可使用Force.com进行二次开发。第一个提出PaaS概念的公司。
salesforce拥有大量用户,目前已经是一个软件的运营平台。
netsuite
定位生产型企业的全面解决方案,包括erp/crm/电子商务,第二家上市的SaaS软件公司。
netsuite有自己的suiteapp.com应用定制开发平台。
Zoho
山寨王,克隆专家,超大动力者。通吃者,强力杀手。定位在work online。个人和企业通吃。
这家印度的公司,实在来得凶猛,弱肉强食的世界需要这样的性格。
阿里软件
阿里软件定位做软件超市,也就是软件运营平台。提供公司和用户管理、提供软件订购、缴费的功能。
但是目前中国好的SaaS软件不多,因此这个还不火。
目前国内还有很多类似的定位的公司,包括神码,以及橙子等创业公司。我个人感觉,这个目前时机不成熟,而且可能还是需要类似salesforce依靠一个拳头产品。
易度
目前主要是企业在线工作的一个应用套件,解决企业互联网在线工作,包括文档、项目、计划、任务、报告、客户、流程等。
支持PaaS,可进行应用定制开发。具备软件运营的能力,第三方软件可挂载运营。
目前还是一朵技术型云,希望有一天,会炸成蘑菇云。


潘俊勇的Blog