Archive for April, 2006

Blocking vs. Non-Blocking Sockets

Wednesday, April 26th, 2006

最近有些想法,想在业余时间写个小程序,先积累一下
Introducing Nonblocking Sockets
Blocking vs. Non-Blocking Sockets
Differences Between Windows and Unix Non-Blocking Sockets
以及可能用到的东西:
libevent

The libevent API provides a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached. Furthermore, libevent also support callbacks due to signals or regular timeouts.

memcached: a distributed memory object caching system

memcached […]

程序 or 系统

Tuesday, April 25th, 2006

在计算机技术如此发展的今天,除了各大中小学校纷纷开设计算机专业外,各种各样的计算机书籍也在充斥着读者的眼球,但是这两者都有一个共同的毛病–太注重实际结果,而忽略了最为重要的规范和准则.
就那计算机软件业来说吧,如今我国每年通过各种培训和教育培养的软件人才是大大超出市场需求的,但是为何软件产业人才的需求量仍然很大的,很大一个原因就是教育的严重脱节.就拿我们今天的主题来说把,或许大部分的人都会认为”程序” 和 “系统”这两者是一样的,写一个程序或者代码你可以自由发挥,不必考虑任何效率和结构,更不用去理会它的可维护性,只要能够运行就ok,这也是当今大部分的参考书所提供的所谓参考,如清华 邮电等重点出版社出版的< **项目案例导航>等等,不能说他们代码写得不好,的确写的很好,有写小技巧也很不错,但是却缺乏了整体的规范,例如可以直接在代码里面进行数据库的连接设置和大量的数据库操作,(其实可以用config.ini去配置一些基本设置),有好的方法为什么不去积极的引导大家共同学习呢,老是用不好的方法来”教育”我们呢? 架构对于一个软件系统也是很重要的,但是教育对这方面的力度还是远远不够的,也很少作者能够透彻的分析和引导我们去学习(或许他们也没真正做过什么和架设过大型系统的框架吧.)
曾经看过一个这样的Sql代码是这样写的 select * from student,tab1,tab2,tab3 where …..
我想,很多人现在都在这么做,因为他们的参考书上是这样写的,想象一下如果一个表有10万条记录,这样全连接的效果将是很可怕的,虽然后面有where语句,但是这样做的效率将是非常的低.
上面的例子可以写成 […]

Aix上编译64位LibXml2

Monday, April 24th, 2006

CFLAGS=”-q64 -g”export CFLAGSOBJECT_MODE=64export OBJECT_MODE./configure;make -e all;make install

成也百度,败也百度

Saturday, April 15th, 2006

如果一个网站仅仅靠搜索引擎而生存,往往没有自主权,搜索引擎心情好的时候你的流量可能很快就上去了,心情不好的时候呢?即使垃圾网站发展自己的固定用户群也是最后的出路。

抛弃fastcgi

Friday, April 14th, 2006

apache+fastCgi方式跑应用在流量比较大的时候服务器的错误日志中会出现这样的错误记录:
[Wed Apr 12 15:39:56 2006] [error] [client 218.3.194.xxx] FastCGI: comm with (dynamic) server “/var/www/rails/prj1/public/dispatch.fcgi” aborted: (first read) idle timeout (30 sec)[Wed Apr 12 15:39:56 2006] [error] [client 218.3.194.xxx] FastCGI: incomplete headers (0 bytes) received from server “/var/www/rails/prj1/public/dispatch.fcgi”
出现后就再也不能接受请求了,需要重启apache
这不是rails的dispatch.fcgi的问题,php,python,perl之类的跑在fastcgi上也会有这样的错误,关于寻找这个问题解决方法的贴子不计其数,不信你搜索一下就知道了,但是解决方法却一个都没找到(我花了两个晚上时间将能搜索到的内容全读了一遍),有的说是使用的库不是线程安全引起的,有的说是超时时间太短,但是我一一试过后都没能解决,近乎绝望的时候看到了天使的到来:mod_fcgid 来自于http://fastcgi.coremail.cn/,看了里面的AUTHOR,应该是国内开发的。“mod_fcgid是一个跟mod_fastcgi二进制兼容的Apache module。
原来的mod_fastcgi因为实现方式的限制,所以可能会创建了很多不必要的进程,而实际上只需要更少的进程就能处理同样的请求。mod_fastcgi的另外一个问题是每一个CGI的多个进程都共享同一个管道文件,所有到同一个fastcgi的通讯都通过这个同名的管道文件进行,这样当出现通讯错误的时候,根本不知道正在通讯的是哪一个fastcgi,于是也没有办法将这个有问题的进程杀死。
mod_fcgid尝试使用共享内存来解决这个问题。共享内存里面有当前每个fastcgi进程的信息(包括进程号,进程使用的管道文件名等),当每次尝试请求fastcgi工作的时候,Apache将会首先在共享内存里面查询,只有在共享内存里面发现确实没有足够的fastcgi进程了,才会创建新的进程,这样可以保证当前创建的进程数量刚好能够处理客户的请求。另外,由于每一个fastcgi进程使用不同名称的管道文件,所以可以在通讯失败的时候知道到底哪个fastcgi进程有问题,而能够尽早的将其剔除。“
替换掉fastcgi后即使用ab狂刷服务器上面的问题再也没出现过了。
——————-
Update
安装方法见:Using mod_fcgid for Ruby on Rails Applications
谢谢龙在天涯的提醒。

你为什么生气?

Tuesday, April 4th, 2006

我现在所处的办事处算是简陋,我坐在第一排,仅一道玻璃门与外界相隔,玻璃门背后是大字写的公司名称,没有前台,于是我几乎就成了前台。经常有人从门外探进头来甚至是走进来推销各种各样的东西或是问有没废报纸卖,一般情况下我倒算是客气,接下人家的名片、传单或是告诉人家我们没有废品卖,除了一些时间我很忙、认真做事情外,让我不满的就是不敲门直接闯进来、在办公室里瞄来瞄去、直接问老总在不在或是往里间闯的家伙。
我为此发过火吗?那天下午至少有三五个人无视我们公司的大字招牌,进来问:您好,是不是中软XXX公司,我是来面试的。于是同事们讨论起来,说我脾气好啊,要是换别人早发火啦,有定力啊每天这么多MM来问也还能安静的坐在那写程序啊等等等等,为了表示一下我也不是好惹的,于是当下一位MM进来问是不是中软XXX的时候我就说了”那么大的公司招牌你没看见吗?”,wahahahahaha,奇怪的是这位竟然是那天最后一个问中软XXX的,真是不好意思。
为什么生气呢?为什么人家问你要不要为公司添置些什么东西的时候,在他直接去老板办公室或是问老板在不在的时候你会生气呢?
噢,前天看到一段话,好像明白了些什么……..
“如果他们没有权力做这种决定,大多数小职员会变得很恼火――于是会变得不礼貌。他们变得不礼貌因为你让他们意识到他们在生活中所处的卑微的地位――他们对于你相当合理的要求却无能为力。”—《Are you light on?》
噢,原来这些要求你办不到,原来你不是老板,原来……原来你觉得委屈…….我为这种原因生气过吗?好像没有吧,我不知道,可能想法不大一样吧,也或许有过吧。wahahahaha….
《你的灯亮着吗?-发现问题的真正所在》好几年前在书店看过,一年多前CU的FLW兄介绍我看过,每次翻到一半没看完。但是它确实是一本好书,只是我看书太慢容易分心,所以我一柜子的书几乎没有一本是完整看完的,不过我觉得即使你在一本书中只得到一个想法或是技术也就足以支付它30或是50元的成本了,不是吗?————————呵呵,上传前删了一小段话,太过激了,目的是为了表示一下我不是愤青,不过有违我的风格哈哈(如果有的话)。反正现在一般情况下,当我不明白人家问我的问题是什么或是我不是很清楚的知道的时候,我都会先问一句:你要的东西到底是什么?现在又是什么样的?(你的期望,以及期望跟体验之间的差别)是的,”如果你自己都不知道你要什么,我又怎么帮你呢?”—改自FLW兄以前的签名。应该是”如果你自己都不知道你的问题是什么?那么我能做的只是同情”大概是这意思吧。
学会问问题当然是好事,不过我还是更希望成为独立的学习和工作者。要达到这样目标,首先要明白什么是问题?具体的问题是什么,而这本《你的灯亮着吗?-发现问题的真正所在》正是一本很好的指南。
OK,离题10万里。。。。不过离题就离题吧,博客的内容需要过滤吗?下次说说这个东西。