Monthly Archives: March 2009

一些纠结

事情是从上个礼拜和 Youhan Sun 的聊天开始的,他说了他的去向,又说了原子的去向,还有於喆、蔡艳的去向。从同一个班级里出来,现在我和他们差距如此之大,除了略有失落之外,我还是从心底为他们高兴。我们这些人中间,注定有些是要创造奇迹,有一些也许不能,然而我们曾是一个集体,我想以后也是。
于是在给父母的电话中,还是迫不及待地告诉了他们这些喜讯,然而,这终究是要自寻压力啊。父亲的反应果然是那样,说,他们都可以,其实你就是不肯吃苦,现在开始还来得及啊……于是又说去美国读研好,比在香港好云云。美国,在我看来是虚无飘渺的。即便去过一次,也确实有让我喜欢的地方,然而,更多的是不踏实,给我的不安让我不能久留。大约是我的坚持还算有效,父亲说,当然,在香港读也可以。我不知道剩下的半句话是不是,不读研不可以……
一直以来,我确实觉得需要读研的,特别是还没有长久留在香港的打算,在中国大陆这样如此看重学历的地方,研究生都没有的话,我想很难找到一份薪水丰厚的工作。然而其实一直以来我也不清楚研究生到底是学些什么,既然叫研究生,大约是搞研究吧?后来听人说我才注意到,Master 是有两种的,就拿我们系的来说,M.Sc 那个要交学费的,M.Phil 是拿工资的,M.Sc 的课大都在晚上,方便人家下了班来读夜校,M.Phil 不是,你读这个的话,就是在给教授做一个全职的工作了……于是论文凭,M.Phil 当然是比 M.Sc 要硬一点。于是,我是要读个 M.Phil 才对吧?
可是一想到,M.Phil 做研究,写论文,突然又觉得,我真是能做那些事情的人吗?看研究生的课程,很多7字开头的课我确实有兴趣,然而再看注释,却发现,那是专门开给人家 M.Sc 兼职课程的。至于 M.Phil 的课,我反倒是看着有些迷糊,哦,那些课,我也不知道是不是学得来啊。
不知道哪天开始父母亲给我做了个假定,就是我适合做研究。大约是看我不懂得和人交流,又不敢在公众面前说话,只好整天躲在实验室里做研究了。也许我也曾经是那么想的,在我说“我将来要做一个科学家”的时候。
毕竟还有不少时日给我做决定,撇开研究生的问题不想。摆在眼前的 FYP 倒又令人纠结,那么多题目里面,有一些是我觉得有趣的,我应该能做好的;还有一些是我觉得很挑战,不知如何下手,可能什么都做不出来的。我觉得有趣的那些,是给读完大学就出去工作的同学准备的。我觉得不知如何下手的那些,是给想读研,继续研究的同学准备的。
我是要让我开开心心做一年却对日后的读研没有太大帮助的 FYP,还是要做一个不知如何下手,又不知要做出什么,却也许对日后有所帮助的 FYP?
想起 Prof. Ng 的话,我真要做一头驴子么?

校内出错的那几分钟

貌似最近通过搜索 校内 502 Bad Gateway 来到此页面的同学越来越多了。简单明了的告诉你,这是校内的服务器不行了,不是用户的问题,也许等等就好了,如果等等也不好……那……校内,你倒底行不行啊? — Updated on 2 Jun, 2009

晚上开着校内的时候,突然弹了个框出来,说是 502 Bad Gateway,然后按刷新就看不到校内了,看到了……我熟悉的 nginx 502 错误页面~ 当时就想,校内又出错了啊,还是 nginx,可以研究一下哈。

立刻问了一下小野猪,他说校内是可以上的,就是有点慢。而我却是立刻返回 502 页面,服务器 nginx 0.6.32,校内正常的服务器应该是 resin 才对。两个人访问结果不同的情况,除了我 RP 差之外,还是有其他原因的,我猜就是我这两天碰巧在搞得 DNS Round Robin

$ nslookup xiaonei.com
Server:        208.67.222.222
Address:    208.67.222.222#53

Non-authoritative answer:
Name:    xiaonei.com
Address: 211.157.20.6
Name:    xiaonei.com
Address: 211.157.20.3
Name:    xiaonei.com
Address: 211.157.20.2

和 google.com 一样,xiaonei.com 解析的时候也会有三个 IP,DNS Server 会在每次回复的时候改变顺序,不过究竟用哪个 IP 还是客户端说了算,有时候 DNS Cache 久了,你可能长时间使用一个 IP 访问。不过这个在减低服务器负载上还是有效果的,因为人多了之后,还是大致上 IP 均分的。

DNS Round Robin 的实现是很容易,然后也有很大的弊端:由于 DNS propagation delay 通常要很久,几十分钟到几个小时甚至几天都有可能,所以如果一个服务器要临时下线的话,客户端是不知道这一情况的,还是会继续访问那个 IP,并不会被自动分流到好得 IP 上去。当然还是可以在 router/firewall 上把下线的 IP 分给某一台在线的服务器,不过要做到完全平滑过渡似乎是不大可能了(你至少得把所有 TCP 连接给断开才能改吧?)

回到校内这个问题上来…… 我试着反复清空 DNS cache,情况是,有一个 IP 返回 502,两个 IP 是好的,之后似乎情况又有变化,甚至有一段时间有两个 IP 是 502…… 于是猜测校内在重启 back-end server,但由于 DNS round robin 并不能解决平滑过渡的问题,即使是三只服务器依次重启,我还是遇到了出错的页面。

至于 nginx 的出现,我并不觉得惊讶,因为 nginx 的优秀性能总能让用它的人从中受益,校内可能省了点硬件的钱,我们则得到更好的用户体验~ 对于校内背后的服务器结构,我依旧迷惑。最外层是 squid,直接打 IP 就能看出来,而且即使 nginx 报 502 的时候,同一个 IP 还是能看到 squid,所以 squid 是最外层。然后是 nginx,可是再里面呢?resin?如果用 nginx 做 reverse proxy 的话,他的 server tag 是不会变的,永远都会自称 nginx,这个和 Apache 不同, Apache mod_proxy 做 reverse proxy 的话,server tag 是显示的 back-end server 的 server tag。于是迷惑了,更加奇怪的是,既然用到了 nginx,为什么校内的静态图片却是在 Apache 上呢…… 也许要等下次,下下次,不知道多少次校内出错的时候才能猜出来了~~

中国人只会山寨?

开始有个习惯每个月看看 NetCraft 的 Web Server Survey,了解一下最新的服务器发展。通常总是那么几个产品上下沉浮,感觉也就和看浏览器市场占有率差不多。却没有浏览器竞争来的激烈,服务器排名也没那么好看。

和浏览器不同的是,服务器可以是独家享用的,Google 的 GFE 就是占据 第三的宝座,却不能让外人尝鲜。这也说明 Google 的强大,看了报告总是想,他一家公司做的服务器,自家用,竟然能排到第三

然而,2月的报告出来看了感觉很雷……真的,真的是雷了。Google 的第三没了……给腾讯抢走了……竟然,是腾讯!仔细看看倒也觉得不出奇了,腾讯出了个自称是 QZHTTP 的 Web Server,然后把旗下 QZone 的网站都给换上了 QZHTTP。NetCraft 的统计是按照域名算的,而 QZone 是无数子域名的泛解析,我不知道是不是每个 QQ 用户都会自动拥有 QZone 的子域名,反正这一下子就是来了2千万个域名,nginx 说是发展很快,出道这几年也才有3百万个站点……

于是大家的好奇心也就不在这“为啥有这么多站点”上面,而是,QZHTTP 到底是个什么东西?略加搜索,在某外国友人的博客找到此文

外国人也是关心 QZHTTP 的,不过他们会比我们多想一点,就是,怎么是“中国人”做了个牛逼服务器出来?于是激烈的讨论也就展开了。所谓激烈,自然是有各种观点,基本分了这么几类:

  • 技术派:QZHTTP 不知道用了啥技术,也许就是换了名字的 Apache?IIS都有可能啊。拿各种软件测一下,好像是 thttpd?不过在没有可靠信息的情况下,也不能乱说。我宁愿知道更多有关的信息啊。
  • 中国人爱山寨派:QZHTTP,呸!明显是山寨的 Apache 啊,中国人 Windows 用盗版的,迪士尼乐园有山寨的,Web Server 肯定也是假的!
  • 国货当自强派:我就是腾讯的!QZHTTP 就是我们自己写的,和 Apache 什么开源软件,通通没有关系!
  • “中国人都不行”之无逻辑派:中国人能写 Web Server?那牛奶里怎么会有三聚氰胺的?
  • “楼上某些人法盲”派:你们想什么啊,抄就抄呗,开源的 License 只规定,改了之后如果发布出去,才需要公开代码。人家只是改了自己用,给别人提供服务,那就不用公开源代码啊。那明明是合法的嘛。法盲们,回家好好看看那些 License 吧~
  • “对对!中国人都不行”之反语派:是啊是啊,中国人都不行,完全不懂创新,只会抄袭。什么指南针、印刷术、火药、造纸术,通通都是抄的。开源软件的协议里都写了嘛,本软件的代码大家随便看,随便改,就是中国人不行~

对于 QZHTTP 和相关讨论,我的观点和认识是:

  • QZHTTP 应该不是简单的 Apache 换了名字。我想腾讯没有必要这么做,因为 qq.com 还是用的 Apache,而用 Apache 不是什么丢人的事,除非腾讯玩非主流~
  • 自称来自腾讯的某人说法太过绝对了一点。has nothing to do with 说的轻松,我不否认腾讯有能力写一个自己的 Web Server,但是我觉得一个程序员在开始写 Web Server  之前没有好好研究过 Apache 或者其他优秀的开源项目就动手,是难以令人置信的。
  • 中国人的不注意知识产权以及食品安全问题,早已伤害了各国人民的感情,也许脆弱的不仅仅是我们,但最后受伤的还是我们。
  • 老祖宗创造四大发明的那个时代已经远去,要证明中国人除了山寨还是会创新,或者山寨也是另一种创新,这都得靠我们自己。

浮躁

又有不少日子没写东西了,因为一直都没有心思写。

IMG_0099

工作上一直以来都是顺利的,因为没有什么压力,给我的任务也从来没有硬性要求。基本上就是,会做就做,不会就学,再不行就回报:这个没法做。倘若我真的不做,我想也不会找第二个人来做的,他们会花钱出去请人吧~nginx 做 Reverse Proxy 的那个项目拖得越来越久,以至于最终通不通过我都不关心了。也是,这个问题目前一共两个方案,不用 nginx 就用慢一点的 apache,大致意思都一样。随你们挑哪个啦,反正两个都是我做的……

Work Study 的空闲时间是挺多的,然而回顾过去的几个月,好像也就那么过去了,并没有因为时间多而做出什么来。记得刚开始几个月是玩 WoW,后来不玩了,大概研究一阵 Django 之类,然后无聊就看电视剧,把 NCIS 追完,再开始看 Grey’s Anatomy,但是看了一季却看不下去了,突然间就,不想看了,就和当初突然不想玩 WoW 一样。

有时候想法挺多的,觉得学习一下 python Django Twisted 之类的东西也挺好,或者也会突发奇想觉得可以做一个什么项目出来。但是真正着手要开始时,又突然退缩了,啊,这么复杂的事情我一个人怎么做的来?

最近的感觉就是心烦,很浮躁。没有心思静下来做事,总有一种随时要发生什么事件的感觉,就是要放下手头的事情,立即走。于是,看电视剧前想着,我一定不会坚持看完的,还不如不看;玩游戏前想着,我怎么能做到像他们那样每日准时上线去 Raid,还不如不玩;有好的想法,要写一个应用,又觉得,没有个 partner 整天督促我,我怎么会写得下去,还不如不写……

于是,每天消耗最多的时间的几件事:

  • Python-CN 邮件列表,看帖,吹水(我基本没有能力回答问题)
  • nginx 邮件列表,看帖,看 bug 和 update
  • 豆瓣 Mac 和 Python 小组,可以回答一下问题
  • 吐露湾畔,吹水
  • Google Reader 看同学们的博客,瘾科技,爱枣报……
  • 校内,我也不知道为啥要上这个……我都n久没更新过任何东西了~