PHP的多版本环境管理

多版本的不同环境开发可以方便测试代码在不同语言版本的差异表现或者兼容性,Ruby有rbenv,Python有virtualenv,NodeJs有nvm,那PHP是不是应该也有,事实上到目前位置PHP都没有这种专门的多版本环境软件,但确实有一款可以用的phpenv

phpenv是基于rbenv扩展出来的PHP多版本管理软件,所以请注意如果一个目录既有ruby版本设置又有php版本设置肯定会冲突。但一般这种情况比较少,下面就来介绍下如何来使用它!

安装

1
2
3
git clone git://github.com/CHH/phpenv.git
cd phpenv
phpenv-install.sh

如果需要更新

1
UPDATE=yes phpenv-install.sh
Read on →

使用slate快捷控制窗口

我在开发和日常使用都会有一些快速控制窗口的需求,尤其是使用大屏幕,这种需求更多。比如将一个网页快速行程左右各占一半的两个网页,比如将屏幕缩小到1/4放在某个角度,比如全屏和居中,比如快速将应用移到下一个显示器。

之前用了一款软件sizeup来实现,但是这货用了一段时间偶尔会弹出purchse,而且自定义有限。最后在各种搜索求教下找到了slate

slate是一个免费开源软件,但是没有gui窗口进行具体的配置,必须通过配置文件来实现控制,配置文件放在个人目录的~/.slate位置,通过配置就可以很快做到很方便的快捷控制,所以最强大的地方也就在把玩配置。

Read on →

SSH穿越跳板机

公司为了安全起见设置了跳板机来保护登陆通道。运维有专业的线路,不用走跳板,开发就得苦逼了,每次都要很麻烦一连串命令才能上去,对线上的调试和监控效率影响很大。

最近研究了几种方案,找到一个还算靠谱的,有需要的童鞋可以借鉴下。(环境*unix下)

配置ssh config

前提条件:跳板机和本机已经做过公钥认证

编辑自己的~/.ssh/config

1
2
3
4
# 目标服务器IP,可使用通配符
Host 10.208.*
User 用户名
ProxyCommand ssh 用户名@跳板机 exec nc %h %p 2 > /dev/null

原理分析

通过ProxyCommand,可以在开启ssh之前执行一个命令打开代理隧道,这个命令”nc %h %p”意为在跳板机上使用nc(被誉为OPS的瑞士军刀)开启了远程隧道。

PHP的PSR规范中文版

FIG组织在制定跟PHP相关规范,简称PSR。目前已有4个代码规范,近期抽空翻译成了中文版。建议做PHP的同学都关注一下。

文档仓库地址:https://github.com/hfcorriez/fig-standards

PSR规范中文版

Read on →

用Gitlab来工作

Gitlab

虽然GitLab是一个从头到位模仿Github的家伙,但是我们确实有这样的需求,并且他还是开源的。相比Gtihub来说可以减少很多成本。Github本身是有企业版可以在公司环境搭建的,但是价钱不菲,看看Github Enterprise定价就知道了,最小的也要一年5000美金,对于小团队小公司是一笔不小的投入。有了Gitlab可以几乎不需投入就能轻松有一套内部的Git管理平台。

Read on →

我的2012

很久很久没有写了。2012的最后一天,也该写点什么了,就以此借口来逼自己写一篇博文来回想自己的2012。

我做了什么?

2012是我很乱的一年,因为很多原因,做了一些不知道该不该做的事情,比如:帮了不知道该不该帮的忙,反悔了不知道该不该跳的槽,写了一些不知道该不该写的代码。为什么都是不知道该不该呢?因为我确实纠结了。为什么会纠结?因为我缺点主观!为什么我缺点主观?因为我缺点坚决!为什么缺点坚决?因为我缺点自信!为什么缺点自信?因为自己学的还太少。既然如此,那么是不是该学习了呢?是的,所以今年我看了很多书,有小鱼(@sofish)推荐的一些,有朋友那里借的一些,也有Kindle的一些,也有自己买的一些。但大部分还没有看完,非常惭愧的是,乔老爷子的传记我只看了看前言。

2012也是我很大转变的一年,都哪里转变了?我丢掉了DELL的PC,用了苹果的MBP!我用了苹果的iPad!我丢掉了Android手机,用了苹果的iPhone!对,就是卖肾三件套,但我确实没卖肾,自从用上苹果反而肾更好了。为什么呢?苹果为了节省了很多工作效率,可以有更多的时间去享受生活。

2012也是我完成一个大心愿的一年,毕业后第一次买房子给爸妈,只要他们以后住的开心就够了。

Read on →

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 →