zend studio 安装git插件

搞php的用zend studio这个ide工具的开发人员应该不在少数,而对于我们团队开发使用svn和git版本控制软件也特别多的。我们公司团队使用的是zendstuido 10与git这两个软件。但默认情况下zendstuido并不支持git这个插件的,这个时候需要我们来手动安装git插件。方法如下:

zend studio菜单:Help -> Install new software… Continue reading

RESTful Web Service Cookbook 学习笔记

每个HTTP方法都具有特定的主义.
GET 的目的是得到一个资源的表述
PUT 用于建立或更新一个资源
DELETE 用于删除一个资源
POST 用于创建多个新资源或者对资源进行多种其它变更

不要将GET方法用于不安全或非幂等操作.因为这样做可能会造成永久性的、不到的、不符合需要的资源改变。

在所有上述方法中,GET被滥用的情况最少,因为GET既安全又幂等。

crud

参考:http://www.ibm.com/developerworks/cn/webservices/ws-restful/index.html

rest-mi

善用 PHP-FPM 的 slow log 分析问题

节前公司站点出现了莫名的 502 错误,在服务器配置上拆腾未果,重新开始怀疑程序问题。

关于 502 错误,具体可以参考以下两篇文章:
《自动检测 PHP-FPM 的错误并重启的 PHP 脚本》
《NGINX + PHP-FPM 502 相关事》

根据错误提示(11: Resource temporarily unavailable) ,排除掉服务器配置的问题,自然而然就怀疑是资源被程序占用光了。

这些资源包括数据库连接、文件数、锁等等,如果一个个去猜解调试甚至是走读代码,未免太费时间,也未必能发现问题所在。

好在 PHP-FPM 提供了慢执行日志,可以将执行比较慢的脚本的调用过程 dump 到日志中。 Continue reading

iptables规则的查看、添加、删除和修改[教程]

在 Linux 中 iptables 实际上只是一个操作 Linux 内核 Netfilter 子系统的“界面”。顾名思义,Netfilter 子系统的作用,就是 Linux 内核里挡在“网卡”和“用户态进程”之间的一道“防火墙”。 也就是说 iptables 工作在用户态,它和我们平时开发的应用程序完全一样的,只是它的作用是用来操作 NetFilter 的一个工具。而 NetFilter 工作在内核态,它们的关系,可以用如下的示意图来表示:

图来自极客时间

在 iptables 中存在四表五链的概念。

表分别为 filternatrawmangle ,当数据包抵达防火墙时,将依次应用 raw、mangle、nat、和 filter 表中对应链内的规则,其中表的应用顺序为:raw -> mangle -> nat -> filter,而表中链的规则自上向下依次执行,执行中有可能跳转到其它链中继续执行。

iptables Processing Flowchart

如果按七层网络协议的话,则 ipables 中的数据流向为

(来自Netfilter 官方的原理图)Packet flow in Netfilter and General Networking

其中每一层又分为”INPUT PATH“、“FORWARD PATH” 和 “OUTPUT PATH” 三种。对于”INPUT PATH” 和 “OUTPUT PATH“包含四个表,而对于” FORWARD PATH“而言只包含两个表。

如果想查看指定类型的表通过 -t 参数指定,如

$ iptables -t nat -L

可以显示所有 nat 表的规则,如果不指定 -t 参数,则默认只显示 filter 表规则。

四表:

filter 负责过滤功能。对应 iptables_filter 模块
nat  网络地址转换。对应 iptable_nat 模块
mangle 对数据报文拆解、修改、重新封装的功能;对应 iptable_mangle 模块
raw 关闭nat表上启用的连接追踪机制;对应 iptable_raw 模块

五个链:

PREROUTING 是在包进入防火墙之后(入站)、路由决策之前做处理
POSTROUTING 是在路由决策之后(出站),做处理
INPUT  在包被路由到本地之后,但在出去用户控件之前做处理
OUTPUT在去顶包的目的之前做处理
FORWARD 在最初的路由决策之后,做转发处理

详细的请查看man iptables,下面我们只对常用的 filter 介绍一下其用法,这里省略了参数 -t filter

1、查看

iptables -nvL –line-number

-L 查看当前表的所有规则,默认查看的是 filter 表,如果要查看 NAT 表,可以加上 -t NAT 参数
-n 不对ip地址进行反查,加上这个参数显示速度会快很多
-v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
–line-number 显示规则的序列号,这个参数在删除或修改规则时会用到

2、添加
添加规则有两个参数:-A-I 。其中 -A 是添加到规则的末尾;-I 可以插入到指定位置,没有指定位置的话默认插入到规则的首部。

Continue reading

linux下安装coreseek提示”/src/sphinx.cpp:22292: undefined reference to”错误的解决办法

今天在64位的Centos5.8系统下安装coreseek的时候,发现编辑的的时候总是出错

/root/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22292: undefined reference to `libiconv_open’
/root/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22310: undefined reference to `libiconv’
/root/coreseek-4.1-beta/csft-4.1/src/sphinx.cpp:22316: undefined reference to `libiconv_close’
collect2: ld returned 1 exit status
make[2]: *** [indexer] Error 1
make[2]: Leaving directory `/root/coreseek-4.1-beta/csft-4.1/src’
make[1]: *** [all] Error 2
make[1]: Leaving directory `/root/coreseek-4.1-beta/csft-4.1/src’
make: *** [all-recursive] Error 1

在其它机器上未发现此错误.

一开始以为libiconv的问题,又重装了几次还是一样,最后终于找着办法了
编辑:
./src/MakeFile文件

LIBS = -lm -lexpat -L/usr/local/lib
改成
LIBS = -lm -lexpat -liconv -L/usr/local/lib

就可以了。

http://www.coreseek.cn/products-install/install_on_bsd_linux/ 的最下方也有这个问题的解决办法.