2009年6月22日 | 分类: Web | 标签:

STOMP 是 Streaming Text-Oriented Messaging Protocol 的缩写。

与 HTTP 协议类似,STOMP 传输内容也是可以直接阅读的,类似:

MESSAGE\n
destination:/queue/a\n
message-id: 234\n
\n
hello world\0

每一个消息被称为一个 Frame,由 type、header 和 body 三部分组成:

type:
=> MESSAGE\n

header:
=> destination:/queue/a\n
=> message-id: 234\n

bdoy:
=> hello world\0

完整的 STOMP 协议规范请参考 http://stomp.codehaus.org/Protocol

STOMP 的优势:

  1. 人类可以阅读、实现非常简单
  2. 有大量现成的客户端实现
  3. 越来越多的服务器和中间件支持 STOMP
  4. 可以通过 ActiveMQ 或 StompConnect 等使用 JMS
  5. 轻量级服务端实现

STOMP 的缺陷:

  1. 官方规范不够严谨
  2. 参考实现 ActiveMQ,以及其他实现官方存在 long standing 问题
  3. 使用 \0 作为 body 结束符,使得二进制数据的传输变得困难
  4. 不同实现存在差异,应用程序从一个 STOMP 服务迁移到另一个服务有潜在的问题
2009年6月19日 | 分类: QeePHP | 标签:

饭否用户通过 http://fanfou.com/qeephp 即可随时了解到 QeePHP 的最新动态,以及 SVN 更新日志。

2009年6月1日 | 分类: Python | 标签:

刚刚接触 Python 开发 Web 应用,一定会听到 WSGI 这个词。

今天看了一下午文档,总算搞明白了 WSGI 是什么 :)

WSGI 干嘛的?

WSGI 实际上是一个接口规范,完整定义参考:PEP 333 — Python Web Server Gateway Interface v1.0

引用原文:

This document specifies a proposed standard interface between web servers and Python web applications or frameworks, to promote web application portability across a variety of web servers.

简单来说,WSGI 定义了一个 Python 应用程序(或框架)与 Web Server 之间的接口,让 Python 应用可以在不同的 Web Server 上跑起来。

阅读全文…

2009年5月30日 | 分类: QeePHP Edge | 标签: , ,

在 QeePHP 2.2 中,将新增一个组件:DataMapper。

DataMapper 与现在的 ActiveRecord 一样是 ORM 服务组件。不同之处在于 DataMapper 更强调面向对象的风格,并且提供了一系列的自动化工具来提高开发效率。

有关 DataMapper 的设计思想,请阅读“Sexy ORM”。

经过努力,对于模型的解析已经接近完成。

BaseMember(源代码) 是所有会员模型的基础类,定义了所有类型会员都具备的基础属性和关联。而 Member(源代码) 是更一般化的会员,提供了针对会员领域的特定设置。

由于 DataMapper 对继承特性的良好支持,我们可以很容易的将领域模型进行拆分,拆分后的每一个领域模型都只关注自己应该承担的责任:

从源代码看,适用于 DataMapper 的模型更清晰易读。领域中必须的概念和内容都可以通过源代码来呈现,避免了现在 ActiveRecord 模式导致的数据结构和行为被人为分割的问题。

DataMapper 主要依赖于 PHP5 的反射来解析模型类。解析结果包含了模型的方方面面。由于解析结果可以轻松的缓存,因此 DataMapper 对模型类的解析并不会导致性能问题。

DataMapper 组件接下来的工作:

  • ActiveRecord 和 DataMapper 将使用同一个 ORM 基础架构,这样可以满足不同需求的开发者,并且能够充分保障已有的代码资源;
  • 为 DataMapper 提供一系列的自动化工具,完成诸如模型类转换为数据表设计等工作;
  • 在 WebSetup 中为 DataMapper 提供支持。

总的来说,我们希望 QeePHP 2.2 更符合面向对象开发的原则和实践,能够为开发者提供更好的开发体验和基础支持。当然,我们也会保证 QeePHP 2.2 的性能不会出现下降(实际上在 ORM 部分,性能应该会有显著的提高)。

2009年3月27日 | 分类: QeePHP | 标签: , ,

DRY 是 Don’t Repeat Yourself 的缩写,意思是不要重复你自己。具体到代码上就是同样的功能不要实现两次。

比如我们经常会遇到这样的查询:

  • 查询最热门的文章;
  • 查询最近撰写的文章;
  • 查询最近撰写的热门文章。

上述三个查询,第三个实际上是前两个的组合,我们可能会写成这样:

$most_articles = Article::find('is_hot = ?', true)->getAll();
$hot_articles   = Article::find()->order('created DESC')->getAll();
$most_and_hot_articles = Article::find('is_hot = ?', true)
        ->order('created DESC')->getAll();

显而易见,这样的代码违背了 DRY 原则。

阅读全文…

2009年3月27日 | 分类: QeePHP Edge | 标签: , ,

Sexy ORM — 全面革新的 ORM 系统

前言:

QeePHP 提供了一个全功能的 ORM 系统,能够完善处理各种对象间的复杂关系,为开发者采用面向对象设计来解决业务问题提供了有力的支持。不过实践中,我们也发现 QeePHP 现有的 ORM 系统存在各种不足。因此,全面革新 ORM 系统成为了一项重要的任务。该任务名为:Sexy ORM。

 

Sexy ORM 是 QeePHP 下一个版本的重点之一,目标是为 QeePHP 提供一个更容易理解和使用的 ORM 架构。

在 QeePHP 现有 ORM 架构的基础之上,Sexy ORM 更符合面向对象开发的思想,并且为团队协作和高效开发提供了更多的支持。

阅读全文…

2009年3月20日 | 分类: QeePHP, Web | 标签:

QeePHP 已经开发了接近两年,期间架构并没有太大的改动,很多开发者对 QeePHP 的开发流程很感兴趣,特别是规划、功能设计等方面。

阅读全文…

2009年3月20日 | 分类: Review | 标签:

装上了刚刚发布的 Internet Explorer 8 简体中文正式版,感觉有好有坏。

装完启动打开 http://qeephp.com ,第一感觉就是页面渲染速度变快了。而且滚动时不会有拖拉的感觉。再打开 http://www.dualface.com ,页面渲染的速度感(相对于其他浏览器)就更强了。特别是带有 Flash 的页面滚动起来很流畅,FF 和 Chrome 都略微有点迟滞的反应。又试了几个常去的网站(新浪淘宝),发现页面渲染速度确实很不错。

不过 JavaScript 的速度还是慢得离谱(主要是 Chrome 太快了 :)),和其他浏览器简直没得比。话说 MS 搞编译器、虚拟机也是很多个年头了,怎么不把 JavaScript 的执行速度提上去呢。难道因为 MS 认为 JavaScript 是 Silverlight 的最大对手,与其增强 JS,不如利用 IE 的市场占有率来打压 JS?

—– 华丽的分割线 —–

使用了一会儿 IE8,打开 WP 后台,发现有些小问题(CSS 上的毛病,IE 再次 QJ 了 W3C 标准,前端的兄弟要疯了),还好有个“兼容模式”可以用,确保了页面显示不乱套(MS 真是有自知之明啊)。

初步体验而言,IE8 相对于 IE6 是个很不错的浏览器。既有提高,又能保持和 IE6、IE7 在页面渲染上的兼容性,国内盗版商应该考虑尽早普及 IE8,嗯嗯。

2009年3月4日 | 分类: QeePHP | 标签:

现在 Twitter 用户 follow @qeephp 即可随时了解到 QeePHP 的最新动态。稍后我们还会将 SVN 更新中与 QeePHP 相关的条目自动发送到 Twitter。

2009年2月27日 | 分类: PHP | 标签:

距上一次发布 5.2.8 版本,只有 3 个月左右。从更新日志看主要是修正几个安全问题。

回想起 5.2.7 发布后就爆漏洞,赶紧又发布 5.2.8,PHP 团队对安全问题的处理还是有很多不足。

————————

主要更新:

* 修正 imagerotate() 的安全问题:当图片不是 truecolor(应该是 24bit 的色彩深度)时,没有正确验证背景色。由 Hamid Ebadi, APA Laboratory 报告,Scott 修正 (Fixes CVE-2008-5498)。
* 修正解压缩包含相对路径的 zip 导致 PHP 崩溃的问题。Pierre 修正。
* 修正 explode() 使用空字符串做参数,$limit 参数为负数时的行为。Shire 修正。
* 修正传递畸形字符串给 json_decode() 导致内存分段寻址出错的问题。Scott 修正。

除了上述四个安全性问题,另外修正了超过 50 个 bug。

Page 1 of 212»