2009/08 26

Posted by rollenc

Last modified on 2009-08-26 08:31
2009/08 6
【转】高级PHP应用程序漏洞审核技术
Converting from Subversion to Mercurial
三种流行操作系统的内核比较
Serendipity 1.5 beta 1 This blog is using s9y 1.5 now.

Posted by rollenc

Last modified on 2009-08-25 13:54
2009/07 8








上面都是宝宝在第三天时的照片.



这一张第四天的照片.好狠的眼神!



这是7月7号的,第十一天的照片.脸长胖了.眼巴巴的,好可怜的样子.5555

Posted by rollenc

Last modified on 2009-07-08 17:00
2009/06 1
购物搜索的前景分析
Google购物搜索 Google的中文版终于推出了。不知道会带来什么影响。。。
Displaying row number (rownum) in MySQL
A B2B site for Telecommunication Products and Companies
16 PHP Frameworks To Consider For Your Next Project

Posted by rollenc

Last modified on 2009-06-11 00:41
2009/04 25
用途: 当业务需要调用一个比较耗时外部资源时使用, 最常见的是从外部API获取相关内容

使用方法:
1. 建立外部资源脚本。 如示例中使用t.sh。 当然, 也可以直接使用curl等命令行
2. 准备好参数, 提供给pipe脚本
2. 使用popen调用脚本。 调用之后,就不用关心了。
3. 开始其他的和pipe不相关的逻辑处理
4. 其他处理完成之后, 使用fgets等方式,获取popen的数据


示例代码:

php程序:

# get argument for pipe here if it has.

#start pipe
echo 'call popen start: '. date("H:i:s"), "\n";
$pipe = popen(dirname(__FILE__) . '/t.sh', 'r');
echo 'call popen end: '. date("H:i:s"), "\n";

#Other code here
sleep(5);
echo "Here is my code. time: " . date("H:i:s"), "\n";

#read pipe result
while ($s = fgets($pipe,1024)) {
echo $s;
}


pipe脚本:

echo 1, `date +%T`;
sleep 1;
echo 2, `date +%T`;
sleep 10;
echo 3, `date +%T`;


输出如下:

call popen start: 10:16:40
call popen end: 10:16:40
Here is my code. time: 10:16:45
1, 10:16:40
2, 10:16:41
3, 10:16:51


代码方面, 我们有三个sleep。
php中一个 sleep 5,
sh中两个sleep, 10+1
如果使用串行的方式, 那么用时应该是10+1+5 = 16秒。
而使用pipe方式, 用时仅为:max(php, pipe) = max(5,11) = 11秒。

PS:很抱歉,空间服务商看起来不喜欢popen这个字眼, 所以只能将起替换成全角的了。请在使用时,替换一下吧:)
Defined tags for this entry:

Posted by rollenc

Not modified
2009/04 22
程序员的8个级别,你想成为哪一种?

自己给自己的评价,是第四阶段:
工作杰出的程序员

你做为一个软件工程师的职业生涯非常的成功,因为你的工作能力相当杰出,你从来不会为找不到一份你满意的好工作好发愁,你的同事也非常尊敬你,每一家你工作过的公司都因为你的加盟而在某些方面得到了增强。


而问题也很明确,正好是今年的我在思考的问题:

你接下来的方向在哪呢?


接下来方向在哪里呢?

想了半年了, 还没有结果。所以,半年来一事无成。

1. 停留。
正如上文说的, 从来不会为找不到一份你满意的好工作好发愁。 也许这样也很好,也是不少人追求得一种境界。所谓“知我者谓我心忧,不知者谓我何求”, 不少人认为我很优秀了, 已经得到了这样的一个水平。而自己,却始终担心着, 接下来,我该如何?
没有人给我答案。 只是知道, 自己不能停留。

2. 行动。 将自己已经具备的能力作为行动, 转化为直接的经济价值。
在去年的一些性格分析中,了解到自己的性格偏向于思考型。 而提升方向是将提高自己的执行力。 将自己的想法转变为实际行动。今年的开初,也重点在这一方面。 做了一些垃圾站和一个手机资源网站的雏形。但结果真的很糟糕。自己毛糙的性格,在执行上不太得力。拍脑袋,丢三落四,后期推翻前期的规划。自己的行动总在一个怪圈中绕弯弯。
不得志。

3. 钻研。 继续去了解更多的技术细节,技术实现,技术解决方法等等。
从性格上说, 这是自己的一种消极表现。在不得志的情况下, 喜欢封闭自己, 将自己陷入技术中, 学习, 研究, 乐此不彼。 同时也会去隔离外部的一切交流,沟通。
这种性格和方式, 是我目前能够获得“工作杰出的程序员”这一个自我评价的源泉, 继续发扬,得到的, 是“知名程序员”, 还是程序员30岁的尴尬?
不确定。yanger给我建议是去成为一个“知名程序员”,因为我真的适合做程序。 这句话应该是赞扬的话,我却常常会将其理解对为自己性格弱点的一种讽刺。

4. 性格转变
我真的适合做程序。 但是我怕遇到老程序员的尴尬,也不甘于去做一个老程序员。目标是架构师。技术是核心, 而不可避免的, 要学会沟通, 要学会领导。
提前准备着一些东西是否必要, 是否是我目前急需准备的东西。
我想是的。 很多人却告诉我不是。


迷失了。 从来没有像这样迷失过。

接下来方向在哪里呢?

静下来,放慢脚步,等等灵魂的脚步,看看他怎么说。。。

期待你的声音,请告诉我,

接下来方向在哪里呢?

Posted by rollenc

Last modified on 2009-04-27 14:59
2009/04 22
更换Mysql数据目录后, mysql服务器无法启动。
解决方法记录如下

1. 停止mysql服务
sudo /etc/init.d/mysql stop

2. 修改my.cnf文件,将
datadir = /var/lib/mysql
改为
datadir = /www/mysql

3. 移动文件
sudo mv /var/lib/mysql /www/

4. 重启mysql服务
sudo /etc/init.d/mysql restart

5 发现启动不了。查看系统信息:
Apr 21 11:03:16 rollenc-Ubuntu kernel: [ 7105.064106] type=1503 audit(1240282996.414:72): operation="inode_permission" requested_mask="rw::" denied_mask="rw::" fsuid=113 name="/www/mysql/ibdata1" pid=13604 profile="/usr/sbin/mysqld"

Google之后, 发现这是mysql在Ubuntu下的bug。 部分版本会出现。解决方法

6. 安装apparmor
sudo apt-get install apparmor
sudo touch /etc/apparmor.d/disable/usr.sbin.mysqld
sudo /etc/init.d/apparmor start

7. 编辑apparmor配置文件, 将其中的 /var/lib/mysql 修改为/www/mysql
sudo vi /etc/apparmor.d/*mysqld
sudo /etc/init.d/apparmor restart

8. 重新启动服务
sudo /etc/init.d/mysql restart

9 Done,一切正常。


Posted by rollenc

Not modified
2009/04 19
服务器前端已经抛弃了apache,改用了nginx。但subversion还需要依赖apache来访问。
因此, 又将apache中心装起来, 给了一个另外的端口。
在nginx上做一个proxy。完成三者的结合。

详细方式:

1. 安装subversion, apache,libapache2-svn,并设置好dav_svn.conf. 详情请参考 在linux(Ubuntu)下安装subversion
2. 修改apache的端口为10800, 避免和nginx冲突
sudo vi /etc/apache2/ports.conf
3. 重新启动apache。
sudo /etc/init.d/apache2 restart
4. 增加site-enable文件,建立nginx到apache_svn的proxy

server {
listen 80;
server_name svn.xfce.cn;

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:10800;
}
}

5. 重新启动nginx
sudo /etc/init.d/nginx reload

完成。

Posted by rollenc

Last modified on 2009-04-19 13:15
2009/04 19
由于服务器修改,或者备份的原因,你可能需要对Subversio的源进行迁移。
迁移方法有几中。 最直接的是将库文件直接copy到新的位置就好。
如果原来的svn版本和新的svn版本不一样的话, 这样迁移并不是很安全。

更安全的方式也很简单,如下:

1. 导出:
svnadmin dump ~/svn/dede > svndump

2. 将svndump文件copy到新的位置

3. 导入dump文件:
svnadmin load /home/svn/dede < svndump

完成
Defined tags for this entry:

Posted by rollenc

Last modified on 2009-04-19 11:34
2009/04 14
以下代码为在linux下, 批量将指定后缀的GBK文件转化为UTF8格式。


for filetype in php txt csv js css conf sql html tpl
do
for i in `find . -name "*.${filetype}"`;
do
mkdir -p `dirname /var/www/target/$i`;
iconv -f gbk -t utf-8 $i -o /var/www/target/$i;
done;
done;


Update: 4月16号修改, 增加 filetype 循环

Posted by rollenc

Last modified on 2009-04-17 05:58
2009/04 3
TODO list 有Firefox扩展,便于管理自己的TODO
一游游戏网 在线Flash游戏。用来消磨时间最好了。
使用Mysql来搭建可扩展的SNS网站(浅谈)谈论了关于MySQL分表的方法。尾部的几个连接相当有用
学习豆瓣好榜样--网站架构
Zend Framework: Connecting to 2 databases
大量小文件的实时同步方案
技术人员的晋升路线
Peer to Peer (P2P) in Flash Player 10 beta
Bye bye MySQL? Oracle买了Sun, MySQL的前途确实不容乐观
Defined tags for this entry:

Posted by rollenc

Last modified on 2009-04-25 04:42
2009/03 27
类似iGoogle, Baidu也作了一个个性化的主页, 具体名称还不确定,预览图如下,访问地址已经释出了。 先睹为快:



预览地址: http://220.181.6.16/ (如果该地址失效, 请回复通知, 谢谢)

Posted by rollenc

Last modified on 2009-03-27 03:12
2009/03 26
1. sudo apt-get install vsftpd

2. vi /etc/vsftpd.conf

修改以下设置:

anonymous_enable=NO #拒绝匿名用户

local_enable=YES #使用本地用户

write_enable=YES

local_umask=022

Posted by rollenc

Not modified
2009/03 22
近期在重新学习音标,发现上面的写法大变,和自己以前的写法变化很大.

找了一下资料, 发现以下表格:




特别在新老音标中, 有一些音标形同音不同, 长音也不再有:后缀标示. 头大!

也了解到, 之前我们使用的是英语音标,即Jones音标; 新音标方式是美国音标,即KK音标.
也记起来, 目前我小弟的小学课本使用的也是KK音标.

Posted by rollenc

Last modified on 2009-03-22 14:11
2009/03 20
1. 安装依赖的包
sudo apt-get install libboost-dev automake libtool flex bison

2. 安装ruby, gem
sudo apt-get install ruby rubygem ruby1.8-dev

3.下面make时需要require mkmf,需要sys-proctable
sudo gem install sys-proctable

4. 下载thrift,解压
wget -O thrift.tgz "http://gitweb.thrift-rpc.org/?p=thrift.git;a=snapshot;h=HEAD;sf=tgz"
tar -xzf thrift.tgz
cd thrift

4. 安装
./bootstrap.sh
CONFIG_SHELL=/bin/bash ./configure --pref-x=/opt
make && sudo make install

Posted by rollenc

Not modified

(Page 2 of 34, totaling 497 entries)