配置mac自带的php-fpm和安装phpreids插件

直接运行,有报错找不到配置文件。
$ php-fpm
[11-Jan-2014 16:03:03] ERROR: failed to open configuration file ‘/private/etc/php-fpm.conf’: No such file or directory (2)
[11-Jan-2014 16:03:03] ERROR: failed to load configuration file ‘/private/etc/php-fpm.conf’
[11-Jan-2014 16:03:03] ERROR: FPM initialization failed
可以在/private/etc/ 目录下生成配置文件,需要root权限(sudo)
或者在普通用户有权限的目录里放置配置文件,通过–fpm-config参数指定配置文件的位置,如下:
# cp /private/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

$ php-fpm –fpm-config /usr/local/etc/php-fpm.conf
[11-Jan-2014 16:10:49] ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2)
[11-Jan-2014 16:10:49] ERROR: failed to post process the configuration
[11-Jan-2014 16:10:49] ERROR: FPM initialization failed
错误信息显示:不能正确的打开”日志“文件,原因是默认在/usr/var目录下工作,可以修改配置文件指定正确的日志文件路径

$ vim /usr/local/etc/php-fpm.conf
修改php-fpm.conf文件中的error_log项,默认前缀是/usr/var ,但并没有这个路径

error_log = /usr/local/var/log/php-fpm.log
pid = /usr/local/var/run/php-fpm.pid
或者不修改配置文件中配置项的路径,在php-fpm的运行参数中(-p)指定放置运行时文件的相对路径前缀

$ php-fpm –fpm-config /usr/local/etc/php-fpm.conf –prefix /usr/local/var
到此,php-fpm守护进程已经基本可以正确的启动了。

下面我们看下php.ini配置

# cp /etc/php.ini.default /etc/php.ini

变更own,以后修改不用老是切换root,生产环境最好不要改

# chown …

代码签名探析

“用户会感激代码签名带来的好处” – Apple Developer Library: Code Signing Guide

在 iOS 或 OS X 平台上进行应用开发时,你所需要使用的 API 大多设计得简洁明了。你可以轻易地实现酷炫的动画效果,便捷地进行应用发布前测试,或是用 Core Data 将数据安全的存储在本地。但是总有一天,你会碰上代码签名 (code signing) 和配置文件 (provisioning),大多数情况下,这会是你在心里问候某些人祖宗的开始。

如果你已经在 iOS 上开发过应用,那么你多半已经与代码签名或设备配置文件打过交道了。即使是 OS X 开发者,如果你想发布自己的应用到 Mac App Store 上去或者想参与苹果的开发者项目,那么也不得不开始为自己的代码进行签名。

大多数时候代码签名看上去像是一个难以理解的神秘黑盒。在这篇文章里我会尽可能揭示盒子内部的运作机理。

通常来说,我们无法直接看到代码签名的运作过程,它们隐藏在 iOS 系统内部和 SDK 之中。但我们可以通过观察设置代码签名所需工具的运作方式,来找出一些线索。除此之外,我们还可以参考 OS X 上的代码签名运作方式,毕竟 iOS 和 OS X 系出同源,我们可以从他们的对比之中得到很多有用的信息。

OS X 上代码签名技术和相应的 API 是在 Mac OS X Leopard 10.5 上首次出现的,这刚好是第一台 iPhone 发布的时候。这并非巧合,因为在 iOS 上,代码签名起到的作用更加重要。iPhone 是在众多游戏主机之后第一个大规模出售并且从头就开始使用代码签名的计算平台。只有在越狱之后,iOS 才能运行没有签名的代码。越狱使应用可以绕过代码签名和沙盒安全机制的全部限制,这会是一个非常危险的行为。

证书和密匙
作为一个 iOS 开发者,在你开发使用的机器上应该已经有一个证书,一个公钥,以及一个私钥。这些是代码签名机制的核心。像 SSL 一样,代码签名也依赖于采用 X.509 标准的公开密钥加密。

在 OS X 上,X.509 的基本组成部分(译者注:例如证书等)都是由一个叫钥匙串访问的工具来进行管理。打开你开发机器上的钥匙串访问应用,选择类别选项下的“我的证书(My Certificates)”,你可以看到所有你持有的私钥相对应的证书。要用一个证书设置代码签名,你必须拥有私钥,所以所有你拥有私钥的证书都会被列在这里。如果你拥有一个证书的私钥,你可以展开证书并将它的私钥显示出来:

iOS Developer Certificate in the OS X keychain

如果你要导出证书,例如为了备份(强烈建议进行),一定要记得展开证书那一条显示出私钥并将两行都选中。

还有一种可以用来快速地显示出你的系统中能用来对代码进行签名的认证的方法,那就是利用用途广泛的命令行工具 security:

$ security find-identity …

命令行有道词典

github地址:https://github.com/felixonmars/ydcv

有道词典命令行版,支持查单词和整句翻译,有网络释义等支持。可用于替代 。
适用于整天都开着终端窗口,又不想打开浏览器查询生单词的人。能快速地查单词。
支持中文和英文。
[code]
$ ./ydcv.py
> hello
hello UK: [hə’ləʊ; he-], US: [hɛˈlo, hə-]
Word Explanation:
* n. 表示问候, 惊奇或唤起注意时的用语
* int. 喂;哈罗
* n. (Hello)人名;(法)埃洛

Web Reference:
* Hello
你好; 您好; 哈啰
* Hello Kitty
凯蒂猫; 昵称; 匿称
* hello bebe

mac下通过docker搭建LEMP环境

在mac下通过docker搭建LEMP环境境

1.安装virtualbox。由于docker是在lxc环境的容器

2.安装boot2docker,用于与docker客户端通讯

> brew update
> brew install docker
> brew install boot2docker
3.初始化boot2docker,也就是在virtualbox上安装一个docker的host环境

boot2docker init
此时会下载一个镜像

4.启动虚拟机host

复制代码
:~$ boot2docker up
Waiting for VM and Docker daemon to start…
………………..ooo
Started.

To connect the Docker client to the Docker daemon, please set:
export DOCKER_HOST=tcp://192.168.59.103:2375
unset DOCKER_CERT_PATH
复制代码
这样host环境就启动起来了,根据提示设置环境变量

export DOCKER_HOST=tcp://192.168.59.103:2375
后boot2docker就能与host环境的docker客户端连接了

5.连接host环境的docker客户端

复制代码
MacBook-Pro:~$ boot2docker ssh
## .

关于git-svn使用

如果正在使用svn,打算换到git,又暂时不想放弃已有的svn代码库,可以选择git-svn。说一说我自己从svn到git的经验吧。
开始
安装最新版本的git,从git 1.5.3以后支持git-svn,git和svn的配合就要借助这个功能。
安装完毕后要做一些简单的配置。最直接的做法就是创建修改~/.gitconfig。下面是我的.gitconfig
[user]
name = Robin Lu
email = —@gmail.com
[color]
diff = auto
status = auto
branch = auto
[alias]
st = status
rb = svn rebase
ci = commit -a
co = checkout
[user]部分标示出使用者的身份,你提交的代码会自动引用这一身份信息。[color]设置命令输出的颜色。[alias]部分可以简化一些常用命令,比如在这里将git status简化为git st。
初始化代码库
首先用git-svn来初始化本地的代码库(repository)
git svn clone -s svn-repository-url
svn-repository-url部分使用svn代码库的url。如果要从trunk目录或者某个branch目录里check out,要把-s换成-T、-b等选项。具体参看man git-svn。这个命令时间比较长,因为需要同步所有的提交历史,还好只此一次,以后不会这么慢了。做完这一步,在本地就有了一个完整的代码库,包括所有commit的历史和log,已经可以开始用它来进行开发工作了。
不过,在开始开发之前,最好先做一次垃圾搜集:
git gc
它对代码库的信息进行垃圾搜集和压缩,最明显的作用就是减小磁盘占用空间。第一次做效果尤其明显。
你可以检查一下代码库的状态:
git …

iOS本地通知

为游戏添加了本地推送功能,写下来作为记录

本地通知相对于远程推送来说较简单。

IOS:

添加本地推送

/*
name:通知的唯一名字,可作为通知的id来用
message:通知的内容
time:触发通知的时候(倒计时时间)
*/
void SDKHelper::addLocalNotication(std::string name, std::string message,int time)
{
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
if (localNotification == nil) {
return;
}
//先把同名的系统通知取消(避免重复通知)
cancleLocalNotication(name);
//设置本地通知的触发时间(如果要立即触发,无需设置),如20秒后触发
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:time];
//通知的重复类型
localNotification.repeatInterval = NSCalendarUnitDay;
//设置本地通知的时区
localNotification.timeZone = [NSTimeZone defaultTimeZone];

php 5.3起弃用session_register

最近下了dedecms V5.7时,在登陆后台时,用户名和密码也没错,就是跳转不走,进不了后台管理页面,追踪了好久才发现根目录/include/userlogin.class.php中289行左右的位置及之后的位置

@session_register($this->keepUserIDTag);

使用了

session_register函数,就在这个地方卡住了,而且还@了错误信息,原来
本函数已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除。我的php版本是5.4.0的
解决方法
加入代码

 

用php切割大图片为成规则的小图

将根据xml配置,将合并后的大图切割成一系列小图

完成后会在temp目录下生成小图,确保temp目录是要写的权限

文件在这里

linux常用shell命令记录

获取本机内网IP

/sbin/ifconfig | grep “inet addr” -m 1 | cut -d “:” -f 2 | cut -d ” ” -f 1
输出unix时间戳

date +%s
从路径中获取文件名

basename /usr/bin/sort
Output “sort”.
basename include/stdio.h .h
Output “stdio”.
遍历指定路径文件

file_list=ls dir
for file in $file_list
do
echo $file
done
gdb attach指定进程名的进程

#! /bin/sh

if [ $# -lt 1 ]; then
echo “please give a name”
exit 1
fi

ENTRY=ps x | grep $1 -m 1
PID=echo $ENTRY | cut -d ” ” -f 1
while true; do

skynet启动过程_bootstrap

这遍摘自skynet 的wiki

skynet 由一个或多个进程构成,每个进程被称为一个 skynet 节点。本文描述了 skynet 节点的启动流程。

skynet 节点通过运行 skynet 主程序启动,必须在启动命令行传入一个 Config 文件名作为启动参数。skynet 会读取这个 config 文件获得启动需要的参数。

第一个启动的服务是 logger ,它负责记录之后的服务中的 log 输出。logger 是一个简单的 C 服务,

 这个 C API 会把字符串发送给它。在 config 文件中,logger 配置项可以配置 log 输出的文件名,默认是 nil ,表示输出到标准输出。

bootstrap 这个配置项关系着 skynet 运行的第二个服务。通常通过这个服务把整个系统启动起来。默认的 bootstrap 配置项为 

 ,这意味着,skynet 会启动 snlua 这个服务,并将 bootstrap 作为参数传给它。snlua 是 lua 沙盒服务,bootstrap 会根据配置的 luaservice 匹配到最终的 lua 脚本。如果按默认配置,这个脚本应该是 service/bootstrap.lua 。

如无必要,你不需要更改 booststrap 配置项,让默认的 bootstrap 脚本工作。目前的 bootstrap 脚本如下:

这段脚本通常会根据 standalone 配置项判断你启动的是一个 master 节点还是 slave 节点。如果是 master 节点还会进一步的通过 harbor 是否配置为 0 来判断你是否启动的是一个单节点 skynet 网络。

单节点模式下,是不需要通过内置的 harbor 机制做节点中通讯的。但为了兼容(因为你还是有可能注册全局名字),需要启动一个叫做 cdummy 的服务,它负责拦截对外广播的全局名字变更。

如果是多节点模式,对于 master 节点,需要启动 cmaster 服务作节点调度用。此外,每个节点(包括 master 节点自己)都需要启动 …