月度归档:2011年09月

如何让多个进程监听同一个TCP端口

通常我的服务器上都会启用多个php-cgi程序,有时候这样做是很必要的

1. 可以同时让多个进程处理请求,负载均衡。
2. 避免一个进程崩溃时,在重新启动前,无法及时提供服务。

启用多个相同服务进程必然需要考虑共用一个socket。对于php-cgi程序来说,是通过stdin文件描述符来传递这个socket。

工作原理如下:
继续阅读

一道C语言趣味题

在某群看到,

趣味题:
编写原型为int foo(int i, int n)的c函数,实现打印i,i+1,…,n-1,n,n-1,…,i+1,i的序列。要求函数内只能有一条语句,只能有一个分号,只能有一个printf,并且只能用这个printf输出。不允许使用if、else、do、for、while、goto关键字。

没有给出参考答案。下面是我自己写的一个方法。
继续阅读

File Into PNG,用PNG封装文件

众所周知,PNG是一种无损的图像压缩存储格式。“无损”意味着我们除了可以把图像数据存放到PNG容器之外,还可以把非图像数据(例如文本、音频、视频等)数据压缩并存放到PNG容器中。现在似乎还没有这类软件可以让我们直接把数据压缩到PNG,据说iceboy大牛写了一个(纠正一下,不是iceboy,是twd2同学啊),没有用过(似乎需要Windows和.net运行环境)。详见:http://twd2.me/index.php/archives/1036

花了一晚时间研究,我也用Python写了一个压缩和解压缩的程序,同时支持在线使用,入口:

http://lab.xiaoxia.org/file2png/

例如,把一个CPP代码封装到PNG里,用图片查看器可以看到下面的一坨:

拉伸一下看看,
继续阅读

修复KDE桌面

不知道从哪一天开始,我发现我的KDE桌面的面板不再半透明了,移动窗体也不会半透明了。桌面面板的背景还是一团很糟糕的黑色,难看死了。
我在网上搜索KDE non-transparent panel等,没有找到任何有用的解决方案,所以最后还是自己瞎折腾!!!

1、首先,我注销掉KDE桌面,然后按Ctrl+Alt+F5使用终端登录,这样就不会启动KDE桌面。我把主目录下的”.kde”改名,然后回到图形界面里登录用户,KDE的半透明效果好了,恢复到了默认的KDE桌面,很干净。包括电源管理、网络连接的方案、桌面插件都没有了。

2、注销KDE桌面,回到终端。把改名后的.kde目录复制一份,然后把~/.kde/share/config/下的某些项目尝试删除,然后在图形界面登录,看看面板透明的问题有没有解决。

3、最后发现,删除了~/.kde/share/config/plasmarc之后,面板透明问题就解决了。

PS,导致KDE桌面无法半透明的问题,是我舍友改动了我的桌面效果设置引起的,他看到此博文自己来自首了!

2011年中秋节快乐

明天就是农历的八月十五,小虾提前祝大家中秋假期玩的开开心心,快快乐乐!

不过,我在家里住了一天,明天也准备坐车到广州去了。中秋那晚跟上一年一样,不能在家里过呢!不过,带了不少月饼,哈哈!华工C12未预定的同学赶紧下手吧!
继续阅读

值得一看的一堆语录

昨天在某空间闲逛就转载了这个,结果被疯转!现在,保存到博客上,分享给更多的人。

同时,分享一个《乔布斯在斯坦福演讲》

1、98年 马化腾等一伙凑了50万创办了腾讯 没买房;98年 史玉柱 借了50万搞脑白金 没买房;99年 丁磊用50万创办163.com 没买房;99年 陈天桥炒股赚了50万 创办盛大 没买房;99年 马云等18人凑了50万 注册阿里巴巴 没买房。如果当年他们用这50万买了房,现在估计还在还着银行的贷款吧。

2、年轻的我们必须懂得:1、你不勇敢,没人替你坚强。2、没有伞的孩子必须努力奔跑!3、自己选择的路、跪着也要把它走完。4、不要生气要争气,不要看破要突破,不要嫉妒要欣赏,不要拖延要积极,不要心动要行动。5、宁愿跑起来被拌倒无数次,也不愿规规矩矩走一辈子。就算跌倒也要豪迈的笑

3、人生三大遗憾:不会选择,不坚持选择,不断地选择;人生三不斗:不与君子斗名,不与小人斗利,不与天地斗巧;人生三修练:看得透想得开,拿得起放得下,立得正行得稳;人生三大陷阱:大意,轻信,贪婪;人生三大悲哀:遇良师不学,遇良友不交,遇良机不握。人生三大不争:不与领导争锋,不与同事争宠,不与下级争功

4、一个人,如果你不逼自己一把,你根本不知道自己有多优秀。一个人,想要优秀,你必须要接受挑战;一个人,你想要尽快优秀,就要去寻找挑战。一个人,敢听真话,需要勇气;一个人敢说真话,需要魄力。一个人的知识,通过学习可以得到;一个人的成长,必须通过磨练。
继续阅读

My First OpenGL Application (Using PyOpenGL)

这个应该是OpenGL的hello world了。

上计算机图形学的老师还花了两节课去给同学讲解怎么在windows安装配置opengl,以及怎么编写第一个opengl程序。其实,如果用Ubuntu+Python,只需要安装一个python-opengl就行了。

apt-get install python-opengl

然后编写以下几行代码运行:
继续阅读

写了一个Web Gateway做Proxy

因为EMSVPS的服务器实在有太多的问题,故现在改回比较稳定的burst.net机器。现在Paypal支持Unionpay的卡,5.95USD/mo大概人民币38元。burst.net的机器提供512M内存和2个IP地址,内存充足的时候跑起Wordpress的确轻松很多了。现在一个IP用作博客服务,另外一个IP用作提供一些Web服务。

因为不同的Web服务都需要监听一个服务端口,为了能让他们共用一个IP上的80端口,需要一个代理分发请求的程序。例如
访问http://lab.xiaoxia.org/server/*的请求分发到localhost:10000的服务,
访问http://lab.xiaoxia.org/whois/*的请求分发到localhost:10001的服务,
而访问http://lab.xiaoxia.org/*的请求,直接获取www目录下的资源文件,例如index.html。

因为使用的都是同一个域名,不同的只是路径,要根据不同的路径选择不同的服务端口,我使用了正则表达式来解决这个问题。

效果见 http://lab.xiaoxia.org/
继续阅读