百度首页 | 百度空间
 
文章列表
 
2008年04月24日 星期四 下午 04:27
作者:老王

CakePHP的前景似乎越来越风雨飘摇了,这几天,CakePHP三巨头PhpNut,Gwoo,Nate正在起内讧,起因是Gwoo,Nate觉得PhpNut作为领导却对项目进展不上心,只顾打自己的小算盘。所谓占着茅坑不拉屎。

从我个人的观点,我一直不喜欢PhpNut,虽然他是CakePHP的老大,但是这厮相当狂妄,当初一句“Keep the house clean”就把Dho从核心团队扫地出门,足见其自以为是的本性,今天他也是罪有应得。

按最新的
类别:Cakephp | 评论(11) | 浏览()
 
2008年04月23日 星期三 下午 04:59
作者:老王

一台Web服务器:Lighttpd + PHP(fcgi)。本来一直运行好好的,突然发现若干PHP脚本不能运行了,页面显示500错误,Lighttpd错误日志记录:

(mod_fastcgi.c.2462) unexpected end-of-file (perhaps the fastcgi process died): pid: 0 socket: unix:/tmp/php-fastcgi.socket-3


开始以为是Lighttpd某些模块设置影响了PHP脚本的运行,可是反复试验没有发现问题,无意中发现是PHP的问题,其错误日志大小已经达到了2G。

# php-cgi -i | gre
类别:Php | 评论(8) | 浏览()
 
2008年04月09日 星期三 下午 09:33
作者:老王

补充:
本文中,似乎我对Web MVC的理解有问题,最近这个老生常谈的话题把我折磨的够呛。这里我再理理思路:传统的MVC概念是应用在桌面软件之上的,V可以查询M,C可以改变M。一条判断MVC的很重要的原则是View是否能动态的感知Model的变化,这在桌面软件上是很简单的,只要使用观测者模式就很容易办到,但是到了Web环境下,因为HTTP是无状态的,我们无法让View去观察Model,
类别:Php | 评论(22) | 浏览()
 
2008年04月08日 星期二 下午 09:41
作者:老王

印象中,已经遇到好几次类似“老王”这个样子的”乱码“了,每次都是到处Google找转换方法,今天才发现mb_convert_encoding本身就可以实现这个功能:

echo mb_convert_encoding('老王', 'UTF-8', 'HTML-ENTITIES');
类别:Php | 评论(7) | 浏览()
 
2008年03月29日 星期六 下午 10:50
作者:老王

这个陷阱在PHP里存在很久了,先看代码:

<?php
$array
= array(1, 2, 3
类别:Php | 评论(21) | 浏览()
 
2008年03月28日 星期五 上午 11:06
作者:老王

MySQL相当有个性。可能它也喜欢徐志摩的《再别康桥》:悄悄的我走了...。

今天遇到类似的情景,MySQL只是冷冷的说:MySQL server has gone away。

大概浏览了一下,主要可能是因为以下几种原因:

一种可能是发送的SQL语句太长,以致超过了max_allowed_packet的大小,如果是这种原因,你只要修改my.cnf,加大max_allowed_packet的值即可。

还有一种可能是因为某些原因导致超时,比如说程序中获取数据库连接时采用了Singleton的做法,虽然多次连接数据库,但其实使用的都是同一
类别:Mysql | 评论(4) | 浏览()
 
2008年03月24日 星期一 下午 09:20
作者:老王

前些天我写了一篇《PHP实现透明化事务处理》,讨论了如何利用装饰模式实现事务处理。如果具体点说,它是一个透明的装饰模式,因为装饰类和被装饰类实现了共同的接口。可惜当梦想照进现实的时候,我们猛然发现纯粹透明的装饰模式并不多,因为既然我们的类需要被“装饰”,很多时候就不可避免的要引入一些新方法,这些方法在原有的接口里是没有定义过的,对于这种情况,我们称之为半透明的装饰
类别:Php | 评论(5) | 浏览()
 
2008年03月06日 星期四 下午 08:13
作者:老王

事务是极其重要的,不然代码就和炸弹差不多,即便现在它能正常运行,可是说不定啥时候就会爆炸。

先看看一般情况下,我们是如何实现事务处理的,以AdoDB为例,代码如下:

$conn->BeginTrans();
类别:Php | 评论(22) | 浏览()
 
2008年03月04日 星期二 下午 08:31
作者:老王

==============================================

不要直接使用__autoload(),而应该使用spl_autoload_register(),这样可以避免出现命名冲突。

==============================================

尽量使用$_SERVER[‘REQUEST_TIME’](此变量在PHP5.1以上有效),而不是time(),因为time()不仅是一个函数,还涉及一次系统调用。

==============================================

Rowset和Resultset是两个很容易混淆的概念,它们的区别在于得到Rowset后,就
类别:Php | 评论(5) | 浏览()
 
2008年03月03日 星期一 下午 04:30
作者:老王

什么样的代码算是好代码?逻辑区分清晰的代码就是好代码。可惜总有一些难啃的骨头,让我们的代码从好变坏,下面讲一个例子。

假设我们的代码是类似CakePHP风格的,其中有一个模型Article,还有一个控制器ArticlesController。

加入一些需求:

我们在ArticlesController控制器中操作Article模型的时候,如果执行了模型的save操作,那么就执行一些动作,比如说发送一封邮件,告诉老板某个文章已经保存了(老板说不定会因为这个功能而更加欣赏你)。

需求本身并不复杂,但是在哪
类别:Php | 评论(5) | 浏览()
 
2008年02月26日 星期二 下午 08:39
作者:老王

SVN有很多钩子方法:

* start-commit
* pre-commit
* post-commit
* pre-revprop-change
* post-revprop-change
我们设置post-commit文件的内容:
/usr/bin/svn update /path/to/repository --username yourname --password yourpassword

设置可执行的权限:chmod +x post-commit

------------------------------------------------------------------------------

顺便说一句,别忘了设定Apache,以防止SVN目录被浏览:
类别:Linux | 评论(1) | 浏览()
 
2008年02月22日 星期五 上午 11:12
作者:老王

一直没弄清楚NuSOAP里如何处理可选参数,今天才发现解决方法异常的简单:

$nusoap->wsdl->addComplexType(
    
类别:Php | 评论(2) | 浏览()
 
2008年02月16日 星期六 下午 09:58
作者:老王

数据迁移中字段的unsigned问题

Rails数据迁移中,对一个int字段,比如说ip字段:

新版本:t.integer :ip
老版本:t.column :ip, :integer

不过这样生成的是int(11),没有设置unsigned,如果一定要用unsigned,可以采用一个权宜的方法:

t.column :ip, "int unsigned"

多少有点怪,而且t.column这样的老式写法已经不推荐了,其实最好的方法还是:

t.integer :ip, :unsigned => true

可惜这种写法不知道啥时候才
类别:Ruby And Rails | 评论(0) | 浏览()
 
2008年02月14日 星期四 下午 08:41
作者:老王

在旧版本的数据迁移中,以创建表为例,用法如下:

class CreateProducts < ActiveRecord::Migration
def self.up
    create_table :products do |t|
      t.column :category_id, :integer
      t.column :title, :string
      t.column :description, :text
  
类别:Ruby And Rails | 评论(1) | 浏览()
 
2008年02月13日 星期三 下午 04:57
作者:老王

Rails升级到2.0.2,发现以前的Depot无法运行了:

class AdminController < ApplicationController
scaffold :product
end

出错信息:

undefined method `scaffold' for AdminController:Class

这是因为新版的Rails已经把scaffold剥离为插件,安装scaffolding插件

还是无法运行:

undefined method `paginate' for #<AdminController:0x33243dc>

这是因为scaffolding插件里使用的还是老式的分页方式,接着安装classic_pagination
类别:Ruby And Rails | 评论(6) | 浏览()
 
     
 
 
文章分类
 
 
Linux(25)
 
Apache(12)
 
Mysql(19)
 
Php(45)
 
 
 
 
 
 
     
 
文章存档
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
     
 
最新文章评论
   

顶一下
 
 
 
 
 
     


©2008 Baidu