Personal tools

潘俊勇的技术生活

这里是潘俊勇的技术博客。 联系我: panjunyong at gmail dot com

Plone 4.0比Drupal, Joomla 和Wordpress快3倍

潘俊勇 2010-03-04

曾在去年年底荣获Packt出版社最佳非PHP开源CMS大奖的 Plone ,最近表示 即将发布的4.0版本比其竞争产品Drupal, Joomla 和Wordpress快3倍

Plone以功能强大著称,其上拥有数百个插件产品,但Plone的性能一直被很多用户所非议。为了提升性能,Plone4.0采用了编译型面模版引擎。

文章指出标准安装的Plone 4.0最新版本在作者的笔记本上每秒能够相应22个请求,而其他产品在不使用缓存的情况下,只能支撑4-5个请求。

Plone4.0现在 已经发布了最后一个alpha版本 ,预计在今年5.1前后发布。

值得注意的是,Nokia最新的 qt开发框架网站qt.nokia.com 采用Plone搭建,而国内SaaS先锋易度网也宣告其 基于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

详细参看: http://www.zope.org/Documentation/Articles/ZODB2

评论...

PaaS开发环境的一些想法

潘俊勇 2009-11-16

PaaS一般需要提供一个在线的开发环境。

PaaS代码编辑环境

传统的web是不适合开发的,最简单的是缺乏关键字加亮显示。

但是可以有如下处理方法:

  1. 可采用ajax的web端开发界面,zoho就是这样的
  2. 在IDE客户端插件,让IDE可以和云平台集成工作
  3. 外部编辑器插件,下载为文件,在本地的开发工具中开发
  4. 直接将云开发环境映射为虚拟磁盘分区,在文件系统上开发。

PaaS代码调试工具

2种方法:

  1. 可采用一些ajax的调试方法,直接在浏览器上进行异常调试
  2. 采用IDE插件来调试

PaaS代码的版本管理

有2种途径:

  1. 云开发环境自身提供版本管理,包括版本和tag、比较、回退等功能。
  2. 直接将云开发环境映射为虚拟磁盘分区,在文件系统上开发,利用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。

评论...

 

本站由 润普公司资助, 采用 易度CMS 构建。

广而告之:润普公司 易度云办公平台,包括 易度文档管理系统 易度项目管理系统 , 易度部门管理 ,均采用Zope 3/BFG技术开发。
沪ICP备05008050