手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2012年02月的文章

转老王:PHPCheckstyle代码审计与Subversion钩子脚本

之所以要转这一篇文章,是在于有人在THINKINLAMP的googlegroup里提问,说是怎么在svn提交的时候对phpdoc进行检查,需要让他们强制写注释,否则就不让他们提交,于是我说了是在老王的博客上。但后来我看了一下老王新的博客,huoding.com,这篇文章不在(没有迁移到新的博客中)。所以我重新在本地复制了一下他在百度博客里的文章。
原文来自:http://hi.baidu.com/thinkinginlamp/blog/item/17476d22661ee6a94623e8d7.html

PHP代码审计方面的软件越来越多了,PHPCheckstyle算是最近比较活跃的一个。通过SVN钩子脚本的方式来调用PHPCheckstyle,可以强制代码必须符合预先设定的编码标准(比如PEAR编码标准),有助于在多人合作项目中提高代码整体质量。

PHPCheckstyle的设置:

安装真的没什么可说的,属于接插即用型的,唯一需要设置的就是config目录下的配置文件:缺省使用的是default.cfg.xml,你可以编辑它,按照官方文档适当的增减规则。不过PHPCheckstyle项目诞生时间短,不够稳定,截至0.8版本为止还有不少问题,使用前最好逐条规则进行测试。

最简单的运行方法如下:

php run.php --src /path/to/file

这样的话会生成相关的html文档,如果你想直接输出的话,请使用:

php run.php --format console --src /path/to/file

更多选项可以自己看帮助(php run.php就可以查看相关帮助)

Subversion钩子脚本:

下面设置钩子脚本,具体点说是前置钩子,也就是:pre-commit,通过钩子检查后才被允许提交到版本库。只有添加或更新的文件是需要检查的,如果是 要删除的文件,则没有必要检查;还有一个问题,PHPCheckstyle只能检查具体文件的内容,而在提交之前,我们想要检查的文件还不存在,所以我们 得生成一个临时文件,检查完再删除,另外,在生成文件时要注意其唯一性,免得多用户一起提交时发生冲突,注意事项了解的差不多了,可以写钩子脚本了:

代码(at pastebin.com):

01 #!/bin/bash
02
03 REPOS="$1"
04 TXN="$2"
05
06 PHP="/usr/local/php/bin/php"
07 SVNLOOK="/usr/bin/svnlook"
08
09 RUNSCRIPT="/path/to/run/php/script"
10
11 CHANGED=`$SVNLOOK changed -t "$TXN" "$REPOS" | grep '^[U|A]' | awk '{print $2}'`
12
13 for FILE in $CHANGED; do
14     if [[ "$FILE" =~ \.php$ ]]; then
15         TEMPFILE=`mktemp`
16         $SVNLOOK cat -t "$TXN" "$REPOS" "$FILE" > $TEMPFILE
17         MESSAGE=`$PHP $RUNSCRIPT --format console --src $TEMPFILE | head -n -2`
18         if [ ! -z "$MESSAGE" ]; then
19             rm -rf $TEMPFILE
20             echo "$MESSAGE" | sed -e "s|$TEMPFILE|$FILE|" 1>&2
21             exit 1
22         fi
23         rm -rf $TEMPFILE
24     fi
25 done

关于Shell,如果有不清楚的可以自己搜索一下,网上有很多类似的文章

钩子脚本还可以做很多事情,比如核对PHP脚本语法(php -l),而且通过管道符不用生成临时文件:

MESSAGE=`$SVNLOOK cat -t "$TXN" "$REPOS" "$FILE" | $PHP -l`

运行后,不用判断MESSAGE是否为空,而是根据退出状态来判断脚本是否有语法问题:

if [ $? -ne 0 ]

PHPCheckstyle配置和使用多少还是有点别扭,有机会试试PHP_CodeSniffer配置钩子脚本更简单

BTW:发现一个PHP Commit Hooks项目,有点意思,可以看看。
-------
---EOF---
最后,我也下载一份PHP COMMIT HOOKS项目 ,有点意思,可以少写很多了

Tags: svn, checkstyle, thinkinlamp

准备开始将本站移向国外了

经过一段时间的使用和试用,想来想去还是准备将网站全线迁移到国外了。
目前已经在一些虚拟机上跑的网站有:
http://neatcn.com  其于免费的phpfog

http://ucapi.com    基于myvirpus
在这台服务器上,还有http://ilybaby.com和http://next-image.com.cn

http://kepo.net     基于:
Burst VPS
上面还有一些站,不方便透露

本台服务器上面有一些小站,其实都已经没人用了,但是在坚持着,所以准备在到期之前全部迁出
好象burstVPS还不错,黑黑。所以,我到时候会另开一个burstVPS看看。

linode还是用不起啊

linux中的inode简单介绍

linux下面有一个很恶心的说法,就是磁盘空间再大,但如果没有inode了,磁盘也就相当于没用了(这个没用是指剩余空间再大,也存不进东西)
这种问题在ext3上很容易出现,如果磁盘格式是Ext3,然后又是用来存一些小文件(如图片、icon等小而多的文件)时,很容易出现这种问题。所以一般图片服务器都是不用Ext格式的。
虚拟机上居然出现了这种问题,所以找了一下资料,找到了这篇文章:http://www.cnblogs.com/shapherd/archive/2012/02/07/2341638.html

最近在linux上创建目录的时候出现mkdir:Cannot create directory***: No space left on device, 但是df的时候发现空间还有几百G(有同事是中文的机器出现Mkdir: 无法创建目录***,设备上没有空间)。不能继续创建目录或者touch文件的原因是Inode满了。

Inode的数量是有限制的,每个文件对应一个Inode, 那么如何查看inode的最大数量呢,

XML/HTML代码
  1. [work@*** ~]$ df -i  
  2. Filesystem            Inodes   IUsed   IFree IUse% Mounted on  
  3. /dev/cciss/c0d0p2    1154176  172807  981369   15% /  
  4. /dev/cciss/c0d0p3    88309760   51951 88257809    1% /home  

可以看到Inode的总量,已经使用的Inode数量,和剩余数量。
如果watch -n 1 “df -i”一下, 然后去创建一个文件, 会发现已用的加一,未用的减一
简单了解下Inode在文件系统中的地位:

 

大小: 21.23 K
尺寸: 500 x 236
浏览: 1215 次
点击打开新窗口浏览全图

Linux会为每一个文件分配一个唯一的inode节点。在linux中,文件的文件名、文件属性、文件内容是分别存储的:文件名存放在目录项(即 dentry)中,文件属性存放在inode中,文件内容存放在block中。Linux在查找文件时,首先先读取dentry,dentry中存储的文 件名和inode编号的一个映射表, 根据这个表找到inode编号,再根据inode找到磁盘中的文件。
可以用ls -i查看文件对应的inode编号, 也可以直接stat一个文件, 会有很全的信息。

----------

ext4好象听说是好了很多,但更多的人在做图片服务器的时候都选择了:ReiserFS,可惜它不再更新了,为什么呢?因为。。。Linux文件系统reiserfs作者:Hans Reiser被判入狱15年

 

http://linux.solidot.org/linux/08/08/30/0449258.shtml
  1. Linux文件系统reiserfs作者Hans Reiser因谋杀妻子正式被宣判入狱15年。今年早些时候,Reiser承认了罪行,并领着警察挖掘出妻子的遗体。他的陪审团在4月份判定Reiser一级谋杀罪名成立,将面临25年的监禁。但是随后政府和他进行了秘密交易,如果他透露妻子的遗体并放弃上诉的权利,他的入狱期限将降至15年。  
  2.   
  3. 在宣判前Reiser发表声明,“我真诚的为我的罪行向社会致歉。每一个生命都是神圣的,我取走了一个人类的生命,对此我感到难过。”Hans Reiser在2006年9月下午4:30杀手了妻子Nina,他用手捂住她的嘴,使她窒息而死。他暂时将其藏在浴室,后移至汽车,尸体一直在车上呆了两天直到他寻找到埋藏的地点。"  

 BTW:这里有一篇科普文章:http://www.serverfocus.org/reiserfs-vs-ext4-vs-xfs-vs-zfs-vs-btrfs

原来,reiserfs已经升级到4了。

U盘、移动硬盘的另一种格式:exFAT

NTFS和FAT32应该是我们众所周知的格式了。当然还有ext3,ext4现在也慢慢成为android用户所熟知的了(IT从业者除外),嗯苹果同样与众不同,它是HFS格式。这下子纠结了,这么多格式,怎么互相兼容呢?特别是我们的U盘、移动硬盘之类的。
在linux下面,可以很方便的读取NTFS、FAT32格式的U盘,当然,也能很顺利的写入
苹果也能顺利的读取这类格式的U盘,但,不能写入。肿么办?(不过FAT32是可以读取和写入,但不支持4G以上的文件(单个文件)【高清片一定会超】。)

不过,苹果电脑 Mac OS X 10.6.5 系统做出了一项意义重大的升级:支持 exFAT 磁盘格式,格式化成 exFAT 格式的 U 盘、移动硬盘在 Windows PC 上和苹果电脑 Mac OS X 系统下均能读写,而且支持超过单个体积超过 4 GB 的大文件。

MAC下可以直接格式化,WIN7和vista也是直接OK。不过格式化后的磁盘RW速度会略有下降,只能取平衡点了。
参考:http://www.mac52ipod.cn/post/use-u-disk-hdd-on-windows-pc-and-mac-os-x-4gb-exfat.php

按照上面的文章所说: 只把 U 盘和移动硬盘的一个分区(专门用于 PC、Mac 之间交换文件)格式化成 exFAT 就行了。

Tags: exfat, ntfs, fat32

四大微博16日全部实名注册 未实名用户将禁发言转发

如果标题是真的。。。不知道我还会不会使用微博了

新浪、搜狐、网易,腾讯四大网站微博都将在3月16日全部实行实名制,采取的都是前台自愿,后台实名的方式。3月16日后,所有未实名认证的老用户将被强制拦截,不能再发言、转发

  【《财经》综合报道】3月16日将成为北京微博老用户真实身份信息注册的时间节点,之后未进行实名认证的微博老用户,将不能发言、转发,只能浏览。7日上午召开的贯彻《北京市微博客发展管理若干规定》座谈会上,市网管办相关负责人披露了这一消息。

  新浪、搜狐、网易,腾讯四大网站微博都将在3月16日全部实行实名制,采取的都是前台自愿,后台实名的方式。3月16日后,所有未实名认证的老用户将被强制拦截,不能再发言、转发。

  2011年12月16日北京市发布《北京市微博客发展管理若干规定》其中明确规定微博中的个人注册信息需要使用真实身份。微博客账号注册信息真实是指用户提交网站注册的信息,用户使用微博客服务的名称可自愿选择。

  据统计,中国的网民中有65%的人开通使用微博,微博账户数量超过3.2亿。

    本文来源:财经网

原文来自:http://tx.southcn.com/c/2012-02/07/content_37445105.htm

为防该站删除此页,截图为证:

大小: 389.08 K
尺寸: 500 x 356
浏览: 1031 次
点击打开新窗口浏览全图

Records:43123456789