Mac下快速安装PHP框架Yaf

Yaf是国内PHP大神Laruence基于PHP扩展开发的框架。主要特点就是速度快,效率高,比使用PHP代码开发的框架性能都要高很多。据大神说已经用上了新浪Weibo上,TPS提升了76个百分点。具体可以参考Yaf的主页。 在Mac下安装开源软件和服务器软件当然没有Ubuntu的apt-get顺手,但也有MacPortsHomeBrew等优秀的包管理器,我目前使用的是后者,因为它用起来更简单,可以让你去专注做需要专注的事情。 最近几个项目准备用Yaf开发,所以提交了Yaf的Brew脚本上去,如果大家有兴趣也可以贡献一些好用的PHP Brew,让大家用起来都方便。具体可以参考homebrew-php项目 关于Brew的安装,基本上一个命令就搞定了,具体可以参考HomeBrew安装
    ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)
接下来需要将PHP的Brew库tap到本地(homebrew-php项目可以安装大部分常用的php扩展) Read on →

为何要做日志

对于程序员来说,做日志的习惯是必不可少的。当线上服务有问题的时候,却发现没有日志,那真是不应该。做日志就能解决这些问题,写好日志有助于线上系统发现和解决问题,有助于日后分析问题提供依据,有主意开发时调试和跟踪问题。简而言之,做日志的目的就是“方便找问题”。 几乎每一个有良好技术系统都会有很好的日志,最常见的就是Http的的access log,Nginx和Apache的日志就是很标准的一种。
202.17.8.20 - - [01/May/2012:02:23:22 -0400] "GET /phpMyAdmin/index.php HTTP/1.1" 404 480 "-" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.220 Safari/535.1"
我们可以在Apache配置中找到日志的格式配置
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined

我们今天的主题不是Access Log,所以这里就不再说明,有兴趣的可以去翻阅Apache手册,下面进入正文。

Read on →

PHP的PSR-0命名标准

PSR是Proposing a Standards Recommendation(提出标准建议)的缩写,是由PHP Framework Interoperability Group(PHP通用性框架小组,简称PHP-FIG)发起的,通过他们命名就可以看出,这是个主要是针对框架通用性而做努力的开放性小组,他们的在Github上有自己的仓库地址,目前只有一个被接受的标准,那就是PSR-0标准,标准定义了PHP自动加载的命名规范和文件路径规范。 针对PSR-0标准主要提到了以下几点: Read on →

PHP新概念包管理器Packagist

几乎每种语言都有包管理器。Java有Maven,Python有easy_install,Ruby有gem,Nodejs有npm。说到PHP当然也有PEAR,但我一直认为PEAR是设计最烂的一个包管理器:依赖处理不到位、配置复杂、命令行难用,有时候还会报错。一直期待有个新的包管理器,甚至想自己写一个(可能不太现实,但想写的心早有了)。 Packagist(http://packagist.org/)被我发现了,这个包管理器符合我对包管理的需求,使用起来非常简单,而且是开源的,并且可以很方便的提交自己的包,只需要开通帐号即可。但这篇文章将主要介绍使用的方法。 Read on →

HTTP新增状态码(2012年5月)

最近发布了 RFC 6585 。在手册中提到新增了4个状态码。 HTTP依然在不断改变,这正是我们所期待的,这些新的状态码在REST或者基于HTTP协议的服务中将非常有用,这篇文章将告诉你它们的作用和如何使用他们。 Read on →

为何选用PHPStrom

PHPStrom是由Jetbrains这个鬼才公司开发的PHP IDE,和另外一款产品WebIDE使用同一个内核,在易用性方面,个人认为已经远超现有的NetbeansEclipseZend Studio等平台,而且Jetbrains是一个很勤快,可以让人看到一直进步的一个公司,所以比较放心。从Java IDE IDEA(目前版本号已经到12)来看,绝对是一家值得信赖的公司,而且在前瞻性和潮流上比其他平台都要看很多,比如GtihubTwig的支持,都是原生的。 虽然有人追捧Sublime Text 2,也有完全VIM来做PHP开发的,对于IDE的选择来说只能说“萝卜白菜,各有所爱”。做为开发者,要用IDE的目的就是希望自己可以快速高效的开发代码,专心于代码的流程、逻辑和质量,而让IDE自动完成一些重复琐碎的工作,提升开发效率。PHPStorm是我用到过写PHP最给力的IDE,除非开发非常迅速之外,也有很多非常前卫的功能支持,开发团队(据说是曾经开发VS的团队)也非常给力,基本上是每个月都有小升级,每个季度都会有大的升级。 Read on →

Hiphop和Quercus的使用对比

Hiphopfacebook这个超级技术宅的作品,目的是希望通过将PHP编辑成可执行的二进制文件来加快PHP的效率,其实在平时中,大部分公司遇到的瓶颈是网络服务层的问题,如果一个后台服务不稳定,绝对比加快一点PHP的执行效率要狠的多,但对于facebook这种技术超级大的公司来说,解决任何细微的效率问题都可以使用户体验上升。

QuercusResin的开发商Caucho做的,新的Resin版本已经内置并开启了Quercus的支持,如果需要跑PHP,如果需要PHP调用JAVA,那Quercus是最好的选择,另外官方给出的benchmark来看,Quercus跑MediaWikiDrupal的效率要整整提升了四倍。而且PHP代码是无需编译的放到目录即可使用,当然如果你需要更快,也可以编译。整体的兼容性也比Hiphop要强很多。

Read on →

Pagoda Box: 使用GIT发布PHP应用的分布式云平台

云计算是最近热门的话题,国内也有很多公司在赶这班车。比如新浪的SAE,是类似于Google GAE的一套SAAS开发平台,现在支持PHP,JAVA,Python。后来阿里云盛大云推出了各自的云平台,前者是一套全面的云平台,后者更趋近于AmzonEC2,是一套云资源平台。 国外的云趋势也更是凶猛。在PHP界就有ZENDPHPFOG推出了各自的开发平台。最近出现了一家以GIT做为代码发布的PHP应用云平台-Pagoda Box,其强大的管理后台和易用的界面给开发者提供了一种更好的选择。 Read on →

IE下iframe不同域操作cookie的解决方法

这周花了不少时间在IE浏览器上,有一个项目是基于IE内核浏览器而且应用场景是在IE下IFRAME来实现,并且IFRAME和父级窗口不同域,而且要操作COOKIE,估计很少人碰到这种场景,但这就被我碰到了。 刚开始的时候不太相信IFRAME里面的页面操作自己的cookie竟然会出现问题,但遇到IE我就感觉自己弱爆了,果然会碰到这么一个问题。于是乎想办法解决,读到了_Franky 的《关于p3p 简洁策略,以及浏览器的支持情况.》才对P3P有了进步一步的了解。但是抛开教主对P3P的解释,我认为P3P就是一个旧时代的产物,完全是因为MS太敏感导致。就像Fenng《对操作系统的迷思》一样,太敏感造就了这种复杂,反而没有带来任何好处。 Read on →

一个标准化的SVN流程

一套标准的SVN开发流程,自己做了一下,一图胜千字。