php-fpm init.d 启动脚本

五 4th, 2010
834 views | 没有评论

php-fpm在PHP 5.3.2以后的版本不支持以前的php-fpm (start|restart|stop|reload) 了,自己动手丰衣足食。
/etc/init.d/php-fpm :
阅读全文…

标签:

PHP 5.3.2 FPM 分支 Bug

五 2nd, 2010
117 views | 1 条评论

PHP 5.3.2 开始建了个集成FPM的分支了。
正常下载PHP源代码 解压 cd 解压目录

下载fpm
svn co http://svn.php.net/repository/php/php-src/trunk/sapi/fpm sapi/fpm

confiruge make make install 一路下来没什么问题。
启动php-fpm时提示 [pool www] start_servers(20) must not be less than min_spare_servers(35) and not greater than max_spare_servers(35)
min_spare_servers在php-fpm.conf里设置的是5这里变成了35,明显有问题。

在源代码sapi/fpm/fpm/里找了下发现提示在fpm_conf.c 在460行,细看发现else if判断有问题
将 459 行的
config->pm_start_servers < config->pm_max_spare_servers
改成
config->pm_start_servers < config->pm_min_spare_servers

460行的
config->pm_max_spare_servers
改成
config->pm_min_spare_servers

重新 make && make install
php-fpm 顺利启动!

顺带罗嗦下,原来的PHP版本打 path时php-fpm带的 start stop restart reload 在这个分支里已经不能用了。
以后这里要自己写脚本了。

标签:

Bash 的 dirs popd pushd

四 2nd, 2010
41 views | 没有评论

1. dirs: 列出目录堆栈
2. pushd: 向目录堆栈保存目录
3. popd: 从目录堆栈中获得目录,然后cd进去

覆盖原有的cd命令每次cd都把目标目录入堆栈

1
2
3
4
5
6
function cd {
    if [ -n "$1" ]; then pushd $1 > /dev/null
     else pushd $HOME > /dev/null
    fi
}
alias pd='popd > /dev/null'

“unset -f cd”来取消自定义的cd函数

标签:

xmanager GDM IPV6

十二 26th, 2009
111 views | 没有评论

有台旧机器安的是Debian 5.0.3(升级到unstable),内核2.6.32-trunk-686。在xp下通过xmanager过去一直XDMCP连接失败。
/etc/gdm/gdm.conf
[xdmcp]
Enable=1
Port=177
已经xdmcp支持已经开启。
nestat -nalp
看到177端口也已经开了。就是连不上。。。

netstat -nalp | grep gdm
udp6 0 0 :::177 :::* 1500/gdm
发现gdm监听的居然是udp6 也就是IPV6的177口,没监听udp的177。
将 /etc/sysctl.d/bindv6only.conf 文件
net.ipv6.bindv6only = 1
改成
net.ipv6.bindv6only = 0
重启搞定。

备注:Debian最新的unstable很奇怪,试了几种方法想把IPV6关掉都关不掉。
lsmod | grep ipv6又没有显示。

标签:

Google chrome 主题制作

十一 26th, 2009
277 views | 1 条评论

自从有了合适的鼠标动作插件 nkGestures ,就把把常用浏览器换成了chrome。顺便研究了下chrome的插件及主题机制。今天突然想给chrome换个灰黑色的theme,google官方站点上的主题看的上的实在是少,又不想主题过大。所以自己动手做了一个简洁的主题。
随手记下笔记

制作
“C:\Documents and Settings\GGSDDU\Local Settings\Application Data\Google\Chrome\Application\chrome.exe” –pack-extension=”C:\blog.seateng.cn”

试用
chrome.exe –load-extension=”c:\blog.seateng.cn”

修改后重新打包
chrome.exe –pack-extension=”c:\blog.seateng.cn” –pack-extension-key=”blog.seateng.pem”

可以下载官方的crx包改后缀为zip,解压缩到目录看下json内容基本就OK了。只要知道制作流程剩下的就是无尽的折腾了。

相关资料:
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/theme/theme_resources.grd
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_pro

主题:
blog.seateng.cn

标签:

script 标签的onload事件

十一 9th, 2009
74 views | 没有评论

下午解决个页面异步加载触发的问题记录如下。

需求:页面需要从js文件加载完数据后触发显示数据的函数。
Google之得解。

贴码如下:

var url      = "http://host_name/example.js";
var script  = document.createElement("script");
script.type= "text/javascript";
script.language="javascript";
script.src=url;
if(script.addEventListener){
	script.addEventListener("load", callback, false);
}else if(script.attachEvent){
	script.attachEvent("onreadystatechange", function(){var target = window.event.srcElement; if(target.readyState == "loaded") callback.call(target);});
}
document.getElementsByTagName("head")[0].appendChild(script);

function callback()
{
//TODO Show Data
}

备注: onreadystatechange 事件有两次触发一次是loading事件一次是loaded事件,loading事件应用无关,加判断区分之。

再Google之已经有老外做了个loadScript库解决类似问题地址如下:
http://design-noir.de/webdev/JS/loadScript/

Stay Hungry. Stay foolish!

九 1st, 2009
6 views | 没有评论

乔布斯2005年斯坦福毕业典礼的演讲。荐!

把每一天当作生命里最后的一天去活。求知若饥,虚心若愚!

标签:

回味《肖申克的救赎》经典台词

七 23rd, 2009
146 views | 没有评论

很喜欢《肖申克的救赎》这部电影。94年上映的电影在硬盘里长期保存,还时不时翻出来回味。应该是看了不下6遍。
电影中的很多台词很经典,下午和同事聊天引到。想起收集了些经典台词放上来。

最喜欢的是瑞德在修屋顶喝啤酒的那段旁白:
The colossal prick even managed to sound magnanimous.
“那个凶狠的家伙竟试着显示出他的宽宏来。”
Red knocks back another sip, enjoying the bitter cold on his tongue and the warm sun on face.
瑞德仰头又喝了一口,享受舌尖上那啤酒的清凉,温和的阳光映在脸上。
We sat and drank with the sun on our shoulders, and felt like free men. We could’a been tarring the
roof of one of our own houses. We were the Lords of all Creation.
“我们团坐在一起喝着啤酒,阳光洒肩头仿佛自由人,就像在修缮自家房顶,仿佛我们是一切的主宰。” 阅读全文…

标签:

动态 Mysql 日志分析

六 27th, 2009
129 views | 没有评论

Mysql 一共记录 4 种日志
1. The Error Log
2. The General Query Log
3. The Binary Log
4. The Slow Query Log
从MySQL5.1.6开始,General Query Log和Slow Query Log开始可以写到文件或者数据库表中,并且日志的开关,保存方式的修改,都是Global级别动态修改。
也就是说不需要重启服务器动态生效了。
日志保存到数据库表
root@mysql-server>SET GLOBAL log_output=TABLE;
日志保存到文件
root@mysql-server>SET GLOBAL log_output=FILE;
root@mysql-server>SET GLOBAL general_log_file=’/tmp/general.log’;
root@mysql-server>SET GLOBAL general_log=on;
root@mysql-server>SET GLOBAL slow_query_log_file=’/tmp/slow.log’;
root@mysql-server>SET GLOBAL slow_query_log=on;
保存到数据表则是在mysql.general_log和mysql.slow_log 默认ENGINE为CSV
SET @old_log_state = @@global.general_log;
SET GLOBAL general_log = ‘OFF’;
ALTER TABLE mysql.general_log ENGINE = MyISAM;
SET GLOBAL general_log = @old_log_state;
可以动态修改日志保存表引擎。
具体的一些配置用法可以参考Mysql Doc就不再累赘。

利用这个功能,脑子里就有了个数据库服务器定时监控系统的雏形。大概的功能是可以在指定的时间段内(而非实时)开启被监控数据库服务器的日志功能,获取并保存日志,出报表给DBA分析,起到抽样日志分析的作用,这样的好处是只需监控数据库的高压时间就可以找到系统的短板。

最近在Mysql圈子里看到挺多人研究XtraBackup(开源MySQL在线热备份工具)顺便在这里也啰嗦下,有兴趣的自己研究吧。XtraBackup 下载地址

标签:

Erlang Tail-recursive

五 18th, 2009
17 views | 没有评论

在Erlang中的两种递归写法
普通递归:
recursive_sum([H|T]) -> H+recursive_sum(T);
recursive_sum([]) -> 0.
尾递归:
sum(L) -> sum(L, 0).
sum([H|T], Sum) -> sum(T, Sum + H);
sum([], Sum) -> Sum.
在Erlang文档效能向导部分有说明,尾递归比普通递归更快。
普通递归H+recursive_sum(T);在recursive_sum(T);返回之前H都会被压入stack等到返回结果再计算。
递归越深,内存将被吃的越多。面向过程编程或者面向对象编程也会常用到递归函数。当在Erlang这种函数式编程里无疑将更经常使用递归函数。所以更应该注意递归函数的效率和系统开销。
反过来在面向过程或者面向对象的语言中也可以用尾递归来提高效率减少系统开销。
阅读全文…

标签:
Pages: Prev 1 2 3 Next