git关于文件权限修改引起的冲突及忽略文件权限的办法

在发布项目到线上时,很多时候需要修改文件的权限,如果是使用git版本管理软件来发布的话,那么下次更新线上文件的时候就会提示文件冲突。明明文件没有修改,为什么会冲突呢?原来git把文件权限也算作文件差异的一部分。使用以下命令进行忽悠修改权限引起的冲突

 git config core.filemode false

 

jquery mobile attr问题

最近在做手机的应用使用jquery mobile 出现一些问题
$(“#idcardsn”).keyup(function(){

if(idcardsn.gender==”女”)
{

$(“#gender_1”).prop(“checked”,false).checkboxradio(“refresh”);
$(“#gender_0”).prop(“checked”,true).checkboxradio(“refresh”);
$(“.woman”).show();

}else if(idcardsn.gender==”男”){
$(“#gender_0”).prop(“checked”,false).checkboxradio(“refresh”);
$(“#gender_1”).prop(“checked”,true).checkboxradio(“refresh”);
$(“.woman”).hide();
}

});

要用prop代替attr 不然没刷新checkbox状态

HHVM 安装配置(准备全部替换现在系统)

HHVM很早就听说过,之前刚出来的时候版本还不太稳定,上周听说百度大部分系统都切换到HHVM 突然也想替换现用系统。好吧开始折腾吧!
我现在用的UBUNTU 14.04版本,为了省事使用官网的repo。结果repo都添加完了。
sudo apt-get install hhvm
[sudo] password for XX:
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
hhvm : 依赖: libboost-filesystem1.53.0 但无法安装它
依赖: libboost-program-options1.53.0 但无法安装它
依赖: libboost-system1.53.0 但无法安装它
依赖: libboost-system1.53.0 但无法安装它
依赖: libboost-regex1.53.0 但无法安装它
依赖: libboost-thread1.53.0 但无法安装它
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
好吧,我也不想动了其它的,从源代码开始:
sudo apt-get install autoconf automake binutils-dev build-essential cmake g++ git \
libboost-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev \
libboost-system-dev libboost-thread-dev libbz2-dev libc-client-dev libldap2-dev \
libc-client2007e-dev libcap-dev libcurl4-openssl-dev libdwarf-dev libelf-dev \
libexpat-dev libgd2-xpm-dev libgoogle-glog-dev libgoogle-perftools-dev libicu-dev \
libjemalloc-dev libmcrypt-dev libmemcached-dev libmysqlclient-dev libncurses-dev \
libonig-dev libpcre3-dev libreadline-dev libtbb-dev libtool libxml2-dev zlib1g-dev \
libevent-dev libmagickwand-dev libinotifytools0-dev libiconv-hook-dev libedit-dev \
libiberty-dev libxslt1-dev ocaml-native-compilers \
php5-imagick libyaml-dev

git clone git://github.com/facebook/hhvm.git
cd hhvm
git submodule update –init –recursive
cd ..

cd hhvm
cmake .
make -j [number_of_processor_cores] # eg. make -j 4
sudo make install

这上面的命令官网提供详细如下

https://github.com/facebook/hhvm/wiki/Building and installing HHVM on Ubuntu 14.04

安装完后直接可以运行了。
我这里使用的fastcgi + nginx
https://github.com/facebook/hhvm/wiki/FastCGI
hhvm –mode server -vServer.Type=fastcgi -vServer.Port=9000
nginx: fastcgi_pass 127.0.0.1:9000;
就可以了,没什么异常出现,公司的网站代码,还有我帮我朋友做的网站,一切正常。空了测试性能。

二叉树及二叉排序树的PHP实现

最近看数据结构搜索到一个文档,屌爆了.php实现的基本的数据结构和算法,二叉树、二叉搜索树、AVL树、B树、链表和常见排序、搜索算法等等都有实现,而且全部是使用面向对象来实现的,只能膜拜。ps:c++,java ruby oc都有,只能说好屌!
源码地址:http://www.brpreiss.com/books/opus11/public/Opus11-1.0.tar.gz
文档地址:http://www.brpreiss.com/books/opus11/

用 supervisord 管理进程

经常会碰到要写一些守护进程,常用做法放入后台:

nohup php taskDispatchSlave.php &

一个两个这样还可以管理,多个就麻烦了。
那天再找gearman的例子,发现一个 supervisord 的工具,相当好用,这个软件是python写的。
supervisor官方地址:http://supervisord.org,官方标语就是:一个进程管理工具。

ubuntu: sudo apt-get install supervisor
rehl/centos: easy_install supervisor or yum install supervisor
ps:如果没有 easy_install 命令先安装 sudo yum install python-pip 再执行上面的命令

我这里用的 centos:  easy_install supervisor 安装好后。

输入 echo_supervisord_conf >  /etc/supervisord.conf

在最后一行加入

[program:myworker]
command=/usr/local/php/bin/php /root/as/cli/taskDispatchSlave.php
process_name=%(program_name)s_%(process_num)02d
;修改numprocs即可同时开启多个worker进程
numprocs_start=3
numprocs=3
autostart=true
autorestart=true
;user=gearmand
stopsignal=KILL
stdout_logfile=/tmp/xxx_catch_slave.log

保存

/etc/supervisord.conf 跟多配置解释参考 http://supervisord.org/configuration.html#unix-http-server-section-settings

找到 inet_http_server 去掉注释

[inet_http_server] ; inet (TCP) server disabled by default
#port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface)

port=192.168.6.36:9080
username=xxx ; (default is no username (open server))
password=xxx999 ; (default is no password (open server))

启动 supervisord

cmd:supervisord

WEB管理

supervisor web mangage
supervisor web mangage

cli 管理

输入 supervisorctl

supervisorctl>start myworker

supervisorctl>stop myworker

supervisorctl>restart myworker

如果改了配置,加入新的进程,要进行 reload 一次

supervisorctl 命令列更多看help