Xupeng's blog

Code Swarm

Code swarm 是一个可视化项目,最常见的用途是把代码仓库的提交历史可视化,changesets 以时间顺序回放,每个发生变更的文件作为一个闪亮的光点从各处汇聚在对应的 committer 身上,把项目的演进历史以视频的方式形象地呈现出来,通常还会配上激动人心的背景音乐,令程序员们潸然泪下。

No SOPA! 将我的域名从 Godaddy 转出

近来美国在尚未通过的 SOPA 法案上产生了巨大争议,该法案最邪恶的地方在于,它使得 ISP 和版权方有权利因为某网站上有一点侵权内容而“拔其网线” - 使其域名无法解析,此权利也很容易被滥用。

迁移到 Octopress

用了三年多 Wordpress,由于实在很懒,没有写过多少东西,但跑在 Linode VPS 上的 Wordpress 却一直占用了很多资源,几个 PHP-FPM 进程加上 MySQL 就用掉了将近 400MB 内存,却没有什么访问量,觉得很不划算,再加上 Wrodpress 越来越臃肿,就想把它换成一个静态内容发布系统。

2.6.38 / 2.6.39 + XFS 的性能极差

线上的 MySQL 服务器一直都在使用 XFS 文件系统,性能和稳定性都表现良好,使用的内核版本是 2.6.29,经过时间和访问压力的验证,表现也不错。

前一段时间在测试几款 SSD 产品,考虑到 XFS 在内核 2.6.38 之后才加入了对 FITRIM 的支持(ref1 ref2),就在 2.6.38 和 2.6.39 上对 SSD 做了测试,测试结果却让人大跌眼镜,XFS 在 2.6.38 和 2.6.39 之上的性能差到完全不能接受。

SCGI与线程

最近在写一个配置推送客户端,结构如下图:

cfgreceiver architecture

每一个应用服务进程会起一个额外的线程,与 ZooKeeper 保持连接,需要变更配置时,将新配置更新到 ZooKeeper,ZooKeeper 将配置推送到所有的客户端,客户端收到配置之后,即时更新进程内的配置信息,并将更新配置成功与否、延时、错误等信息反馈到 redis,以这样的方式做到不重启服务更新配置。

Lion下精确调整音量

升级到 Lion 后一直在忍受着很大的音量,戴着入耳一格音量也觉得很大,找了两句 applescript,写成了一个符合我使用习惯的脚本,这下可以精确地把音量调整为舒适的大小了:

MySQL Collation问题

在从 5.0.x 向 5.1.x 升级的过程中,使用 mysqldump 备份某张表之后,向5.1.x中导入时却遇到重复数据的错误:

1
ERROR 1062 (23000) at line 65: Duplicate entry '1003-' for key 'uk_cat_name'

在防火墙后面部署PPTP Server

在防火墙后面部署 PPTP server 需要额外的 iptables 支持,所需要的 iptables module 有:

1
2
3
4
nf_nat_pptp
nf_nat_proto_gre
nf_conntrack_pptp
nf_conntrack_proto_gre

诡异的MySQL内存突增问题

一个稳定运行了大半年的 MySQL 5.0.84 实例,InnoDB buffer pool 为 15GB,正常情况下会使用 17GB 左右物理内存,但是它的物理内存使用量突然在五分钟内飙升至 35GB,导致 kernel 忙于 OOM 而使整个服务器处于假死状态,不得已重启了系统。