登录 |

gpg: keyserver receive failed: keyserver error

2010年09月30日 上午 29:33 | 作者:

replace keyserver.ubuntu.com with any of the following servers:

pool.sks-keyservers.net
subkeys.pgp.net
pgp.mit.edu
keys.nayr.net
keys.gnupg.net
wwwkeys.XX.pgp.net - replace XX with your country code (fr, en, de... etc) 

安装percona-server(mysql)

2010年09月30日 上午 25:02 | 作者:

/etc/apt/sources.list

[shell]
deb http://repo.percona.com/apt karmic main
deb-src http://repo.percona.com/apt karmic main
[/shell]

导入证书

[shell]
sudo su
gpg –keyserver subkeys.pgp.net –recv-keys 1C4CBDCDCD2EFD2A
gpg -a –export CD2EFD2A | apt-key add –
[/shell]

卸载mysql5

[shell]
sudo apt-get remove mysql-server-core-5.1 mysql-client-5.1
[/shell]

安装

[shell]
sudo apt-get install percona-server-server percona-server-client
[/shell]


			

调整更改ubuntu时区/时间,locale

2010年09月14日 上午 31:31 | 作者:

http://www.blogjava.net/mstar/archive/2008/07/01/ubuntu_set_time_timezone.html

更改时区、时间

执行
tzselect
按照提示进行选择时区
sudo cp /usr/share/zoneinfo/Asia/ShangHai /etc/localtime
执行
sudo ntpdate cn.pool.ntp.org
cn.pool.ntp.org是位于中国的公共NTP服务器,用来同步你的时间

时间
sudo date -s 20080701

更改locale

修改/var/lib/locales/supported.d/local

比如:
en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_CN.GBK GBK
zh_CN GB2312

然后运行locale-gen就可以了。

或sudo dpkg-reconfigure locales

怎样设定locale呢?

设定locale就是设定12大类的locale分类属性,即 12个LC_*。除了这12个变量可以设定以外,为了简便起见,还有两个变量:LC_ALL和LANG。它们之间有一个优先级的关系:
LC_ALL>LC_*>LANG
可以这么说,LC_ALL是最上级设定或者强制设定,而LANG是默认设定值。
1、如果你设定了LC_ALL=zh_CN.UTF-8,那么不管LC_*和LANG设定成什么值,它们都会被强制服从LC_ALL的设定,成为 zh_CN.UTF-8。
2、假如你设定了LANG=zh_CN.UTF-8,而其他的LC_*=en_US.UTF-8,并且没有设定LC_ALL的话,那么系统的locale设定以LC_*=en_US.UTF-8。
3、假如你设定了LANG=zh_CN.UTF-8,而其他的LC_*,和LC_ALL均未设定的话,系统会将LC_*设定成默认值,也就是LANG的值 zh_CN.UTF-8 。
4、假如你设定了LANG=zh_CN.UTF-8,而其他的LC_CTYPE=en_US.UTF-8,其他的LC_*,和LC_ALL均未设定的话,那么系统的locale设定将是:LC_CTYPE=en_US.UTF-8,其余的 LC_COLLATE,LC_MESSAGES等等均会采用默认值,也就是LANG的值,也就是LC_COLLATE=LC_MESSAGES=……= LC_PAPER=LANG=zh_CN.UTF-8。

所以,locale是这样设定的:
1、如果你需要一个纯中文的系统的话,设定LC_ALL= zh_CN.XXXX,或者LANG= zh_CN.XXXX都可以,当然你可以两个都设定,但正如上面所讲,LC_ALL的值将覆盖所有其他的locale设定,不要作无用功。
2、如果你只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定 LC_CTYPE=zh_CN.XXXX,LANG=en_US.XXXX就可以了。这样LC_CTYPE=zh_CN.XXXX,而 LC_COLLATE=LC_MESSAGES=……= LC_PAPER=LANG=en_US.XXXX。

服务器安装流程

2010年09月2日 下午 04:08 | 作者:

服务器列表

[shell]ip hostname server core memory
114.112.179.9 ajax.ch 后台服务器 4核 8G
114.112.179.10 web.ch 前端服务器 2核 8G
114.112.179.11 db.ch 数据库服务器 2核 8G
[/shell]

修改默认主机名ubuntu

/etc/hostname

修改hosts

/etc/hosts

[shell]127.0.0.1       localhost ajax.ch
114.112.179.9   ajax.ch
114.112.179.10  web.ch
114.112.179.11  db.ch
[/shell]

编辑软件源

/etc/apt/sources.list

[shell]
deb http://mirrors.163.com/ubuntu/ karmic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ karmic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ karmic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ karmic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ karmic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ karmic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ karmic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ karmic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ karmic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ karmic-backports main restricted universe multiverse
deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all[/shell]

导入dotdeb的验证密钥

[shell]gpg –keyserver keys.gnupg.net –recv-key 89DF5277
gpg -a –export 89DF5277 | sudo apt-key add -[/shell]

更新软件源

[shell]apt-get update[/shell]

下载安装php53.dotdeb缺失的两个库文件

根据操作系统选择下载安装对于的版本(32位=i386,64位=amd64):

[shell]
wget http://us.archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb53_1.6.dfsg.4~beta1-5ubuntu2_[i386|amd64].deb

wget http://us.archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb53_1.6.dfsg.3~beta1-2ubuntu1.8_[i386|amd64].deb
wget http://us.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu38_3.8-6ubuntu0.2_[i386|amd64].deb
dpkg -i *.deb
[/shell]

安装SVN,导出源代码

[shell]

cd /home/onoboss

svn co http://www.onoboss.com/svn/chs/trunk/

[/shell]

设置可写目录权限

[shell]
chmod -R 0777 ~/src/templates_c/ # 模板缓存
chmod -R 0777 ~/src/union_img/ # 联盟图片
chmod -R 0777 ~/src/images/te/ # 个人头像
chmod -R 0777 ~/src/viscera/folder_chat/ # 聊天文件
chmod -R 0777 ~/src/warlog/ # 战场日志
[/shell]

安装nginx

[shell]
apt-get install nginx
ln -sf ~/etc/nginx/sites-available/defalut /etc/nginx/sites-available/default
ln -sf ~/etc/nginx/fastcgi_params /etc/nginx/fastcgi_params
[/shell]

安装php+常用扩展

[shell]
apt-get install php5-cli php5-cgi php5-fpm php5-mysql php5-gd php5-curl php5-memcache php5-apc php5-xdebug
ln -sf ~/etc/php5/fpm/php.ini /etc/php5/fpm/php.ini
ln -sf ~/etc/php5/fpm/php5-fpm.conf /etc/php5/fpm/php5-fpm.conf
[/shell]

创建onoboss帐户

[shell]
# 创建帐号
useradd -G admin -s /bin/bash -m  onoboss
# 设置密码
passwd onoboss
[/shell]

安装MySQL

[shell]
apt-get install mysql-server
ln -sf ~/etc/mysql/my.cnf  /etc/mysql/my.cnf

/etc/init.d/mysql stop # 关闭mysql
rm /var/lib/mysql/ib_logfile* # 删除innodb默认日志文件,重启后新建,否则会导致innodb引擎无法启动
/etc/init.d/mysql start # 启动mysql
[/shell]

安装nfs

为什么选择安装到ajax.ch(9)而不是web.ch?
读取是远远多于写入的,因此要把文件放到读压力的服务器:
web.ch通过nfs服务写入文件到ajax.ch;ajax.ch提供持久连接服务,需要频繁检测文件是否存在等io读操作。

安装流程:http://wiki.onoboss.com/?p=170
共享目录:

vim /etc/exports
[shell]
/home/onoboss/src/union_img web.ch(rw,sync,no_root_squash,no_subtree_check)
/home/onoboss/src/images/te web.ch(rw,sync,no_root_squash,no_subtree_check)
/home/onoboss/src/viscera/folder_chat/ web.ch(rw,sync,no_root_squash,no_subtree_check)
/home/onoboss/src/warlog web.ch(rw,sync,no_root_squash,no_subtree_check)
[/shell]

vim /etc/fstab
[shell]
db.ch:/home/onoboss/src/union_img /home/onoboss/src/union_img nfs nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 0 0
db.ch:/home/onoboss/src/images/te /home/onoboss/src/images/te nfs nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 0 0
db.ch:/home/onoboss/src/viscera/folder_chat /home/onoboss/src/viscera/folder_chat nfs nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 0 0
db.ch:/home/onoboss/src/warlog /home/onoboss/src/warlog nfs nosuid,noexec,nodev,rw,bg,soft,rsize=32768,wsize=32768 0 0
[/shell]

foreach中unset引用元素?

2010年09月2日 上午 40:14 | 作者:

<?php
$array = array(1,2,3);
foreach($array as &$value) {}
$value = 4;    //var_dump($array);
unset($value); //var_dump($array);

array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
&int(4)
}

array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(4)
}


foreach中unset引用&元素,只是unlink了引用(没收了变量的&)

使用Xdebug跟踪代码执行|xdebug_get_function_stack|debug_backtrace

2010年09月1日 下午 47:17 | 作者:

Xdebug的很多功能是以附加的调试语句的形式出现的,可以使用这些语句获得关于应用程序的附加信息。例如,可以查找到当前场景调用的类、方法或者函数,以及调用起始的文件和代码行。例如,代码清单8-8演示了一个简单的调用跟踪信息。

代码清单8-8 使用Xdebug跟踪调用栈

<?php
class MyClass {
public function myCaller($other) {
$other->myCallee();
}
}

class MyOther {
public function myCallee() {
printf("%s", xdebug_call_class());
printf("::%s",    xdebug_call_function());
printf(" in %s", xdebug_call_file());
printf(":%s\n",      xdebug_call_line());
}
}

$a = new MyClass();
$b = new MyOther();

$a->myCaller($b);

这个例子会输出以下信息。

MyClass::myCaller in /path/to/xdebug.php:4

你还可以调用xdebug_get_function_stack()方法,它会返回到这一点为止的关于函数调用信息的一个数组。这个函数与标准的debug_backtrace() PHP函数很相似。

如果需要确定某个脚本两点之间调用过的所有函数和方法,例如当执行过程进入另外一个组件时,就可以使用Xdebug函数跟踪功能。这些跟踪记录了对某个文件的所有调用情况,可用于事后分析。使用以下函数启动和停止函数跟踪功能。

* void xdebug_start_trace(string filename [, int options])。这个函数用来启动跟踪函数调用。options值是一个位掩码值,它允许使用XDEBUG_TRACE_APPEND常量添加跟踪记录文件,使用XDEBUG_TRACE_COMPUTERIZED常量创建计算出的结果的输出格式,甚至可以使用XDEBUG_TRACE_HTML常 量创建一个HTML格式的表格跟踪记录。

* void xdebug_stop_trace()。当希望停止跟踪功能时,可以调用这个函数。如果不调用stop函数,跟踪功能将在执行过程结束时自动停止。

代码清单8-9显示了如何跟踪方法调用。这个例子修改了之前的代码,将最终的调用代码封装到跟踪语句中。

代码清单8-9 使用xdebug_start_trace跟踪代码执行

xdebug_start_trace('trace');
$a->myCaller($b);
xdebug_stop_trace();

TRACE START [16:53:57]
0.0010      57964    -> MyClass->myCaller() /code/xdebug.php:21
0.0011      58104     -> MyOther->myCallee() /code/xdebug.php:4
0.0011      58104      -> xdebug_call_class() /code/xdebug.php:10
0.0011      58128      -> printf() /code/xdebug.php:10
0.0014      58196      -> xdebug_call_function() /code/xdebug.php:11
0.0015      58196      -> printf() /code/xdebug.php:11
0.0016      58196      -> xdebug_call_file() /code/xdebug.php:12
0.0016      58244      -> printf() /code/xdebug.php:12
0.0017      58244      -> xdebug_call_line() /code/xdebug.php:13
0.0017      58244      -> printf() /code/xdebug.php:13
0.0018      58244   -> xdebug_stop_trace() /code/xdebug.php:22
0.0019      58244
TRACE END [16:53:57]

Xdebug还允许获得脚本的当前内存使用情况、高峰内存使用情况,以及脚本开始运行之后所花费的时间。

gif2png sprite

2010年09月1日 上午 00:55 | 作者:

动画图片一般都是使用gif格式,不过在游戏中,gif的帧率和播放速度就不太好控制了,解决办法就是使用png sprite(google
)技术,看图:


查看全文 »