一些纠结

事情是从上个礼拜和 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久没更新过任何东西了~

ARP 擒贼记

注意!本文涉及标题党

之前一直在做的一个 reverse proxy,在 RHEL 上用了 nginx 。基本功能是根据 cookie 做 load balance 和特定网页内容的替换。功能上是没有问题了吧,性能的话我觉得能满足公司需要,虽然看上去不是太好。

这个小项目一直是不顺利的,主要原因就是 nginx 得不到认可。基本上和每一个人说我用了什么的时候,都要先介绍 nginx。Net Craft 给的报告是不难看,好歹也算第四大应用广泛的 Web Server 了。前三是 Apache、IIS 和 GFE。Apache 做 reverse proxy 太慢,IIS 我不会用(也不知能不能做 reverse proxy),GFE 是人家的私人珍藏…… 那么用 nginx 还是有些道理的吧。

昨天,正当梁生还在质疑 nginx seems too young to be proven 的时候,我们的 server 开始变得不稳定。基本上就是好一阵坏一阵,不能用的时候错误很奇怪,不是连不到而是 connection refused。不但网页看不到,连 ssh 都连不到。连上的 ssh 也会在几分钟内断开。起先是以为网线接触不良,但是看 message.log 没有看到 eth0 down 的迹象。于是只好带着疑问下班,哦,我真不愿意看到这种情况啊。梁生会不会得意的笑,哈,我说你这 server 不行吧,too young~

我知道这个问题和 nginx 是无关的,应该是网络问题。硬件是不大会有问题的,我一直以为这还是软件的问题。不知道为啥,遇到诡异的局域网问题,我就会自然的想到 ARP。百度上搜 ARP 的结果是恐怖的,Google 上要好些,曾几何时 ARP 劫持在中国大陆的泛滥,让很多人以为这是一个病毒的名字。我是觉得处处防范的企业内部出现病毒是不大可能的,而且现在的故障不像是 ARP 劫持,倒像是……哦,谁偷了我的 IP 啊~~

Keats 给我的信息是很有用的,就是不断地 ping 那个 IP,TTL 值竟然会变,一会儿 64 一会儿 128,64的时候能连上,128就connection refused。于是问题变得清晰起来,这分明是两台机器嘛,RHEL5 的默认 TTL 是 64 的,返回 128 估计就是给某台 Windows XP 抢了 IP。于是乎,arp -a 蹲点蹲了一阵,终于让我揪出了抢我 IP 的 MAC Address~ 交给 Keats,剩下的事情,就不是我们 Team 的啦,Technical Team 的同事们加油啊,你们有什么妙招根据 MAC 地址把那台机器的主人找出来吗……

First Runner Up,是第二名啦

IMG_0084

这个礼拜六不用上班,不过之前报了个 IBM Inter-University Programming Contest,所以还是要出门。好在比赛是在下午,懒觉还是有得睡的。

去年我也参加了这比赛的,就为了参赛皆有的 2GB USB 手指,和宇哥、刘坷折腾了一下午,果然什么奖都没拿到,除了手指外还有踊跃参与的证书。不过这次好像有些觊觎那奖金了,于是也多准备一下。和小万、徐伟超一路去中环,也不忘提醒小万,嘿,你是 Team Leader 啊,快准备获奖感言啊,别一会儿啥都不会说啊。

皇后大道中9号,33楼,Clifftons,那个地方已是第二次去,轻车熟路,桌上茶水任饮,我也不再客气,整杯咖啡先。未几,各校选手纷纷聚首,会场已然人头攒动,登记,领衫,都和去年没有啥分别。 Continue reading

Twitter 和饭否同步

Twitter饭否上看到 Zhaonc, aka Nelson 同学一直在折腾同步,我闲得无聊,也开始折腾这事。他的研究结果是,饭否发的消息最后能自动跑到 Twitter 上,并写得此文 Twitter与饭否同步。于是我非要逆向行驶,目标是搞个 Twitter 发的消息自动跑去饭否的方法,方法现在找到了,于是我开始写本文……

啰嗦完毕,说正事。那些国外的第三方工具啊,大都是不认识饭否的,认识饭否的又竟然不认识中文。Ping.fm 倒是支持 Custom URL ,我尝试写个脚本让他支持饭否,可是又发现速度奇慢,还老丢东西。最后一怒之下自己写了个脚本,用最笨的办法吧,却是最靠谱的。放到 Dreamhost 上 cron 了10分钟一次,效果奇佳。 Continue reading

坐劳斯莱斯回家过年

第二次使用自助登机,就是那种长得像 ATM 的机器。把身份证往上一拍,它便知道你要去哪里,于是可以亲自选座位,登机牌跟着轻松吐出。今天仔细看了一下座位,挑了个前排的,这样着陆了出飞机比较快。

事实证明我挑的还不错,第九排,正好是紧急舱门后的一排,也就是说,和第八排之间的距离相当于两排椅子。空间是相当的宽敞,唯一的缺点不能把行李放在脚下了。很快我又发现了此座位更大的好处──正对着空姐的座位嘛~这不成了看美女专座了?如果空姐是美女的话~很不幸,今天在这里服务的是一位大哥……还好空姐座位是有两张的,我猜一会儿还有个姐姐会坐在那里。

确实是那样,起飞的时候,我原本是在看杂志,不过起飞的仰角不利于阅读,我只好向前看。果然那位空哥和另一位空姐在我正对的座位坐下了。现在空中服务员这个职业已经不再那么神秘,甚至感觉空姐的素质也不如早前──我不是说相貌,我是说,坐姿。

刚起飞的那阵是无聊的,不能看杂志,耳朵又没能快速适应引擎的噪音,不能入睡。不过我还是发现了解闷的事,研究我对面这对空哥空姐。空哥的手落下的时候,拍到了大腿,然后顺势来回摸了几下,停在了膝盖上。这本是平常的一个动作,很多人都有无聊摸膝盖的习惯。然而我只注意到,他手下的腿似乎不是自己的……那是他旁边空姐的大腿诶~难道,有奸情?后来觉得是自己太过邪恶了,因为很多人还有拍别人大腿的习惯,我大约是冤枉那空哥了。

侧身看窗外的时候,我看到了飞机的引擎。可能是与以前座位的角度不同,我发现引擎外面有个从未注意过的图案。仔细一瞧,那不是劳斯莱斯么~两个叠起来大写的 R 字,上书 Rolls,下书 Royce。一琢磨,对啊,劳斯莱斯就是造飞机引擎的啊,人家 BMW 当年不也造过。于是乎心中顿时无比舒坦,敢情回家过年,我是坐着劳斯莱斯跑一来回,这么想着,不久我便呼呼睡去。

没有我的同学聚会

同学聚会

昨天高中同学聚会,元锡说,人很齐,来了30多个。不只是一点遗憾,这次,又没有我。我已然不止错过一次了。然而,可能是最后一次这么齐的聚会了,以后,我也不知如何去想象,我只知道我们这些人要聚一起是不容易的。

看了原子寄给我的一些照片,自然是开心的。他们甚至在省中找了一间教室,坐下来,和跃跃说说话,颇有怀旧的味道。只可惜,昔日的省中早已一去不复返,房子都是新的,逝去的永远只能是记忆了。

我不知道他们谈了些什么,大约会有半年之后的去向吧。又一次各奔东西的时候了,这一次,要散布得更远呢。有时候我会想象多年之后的日子,当我和同事或者朋友们出行到某个遥远的城市时,我骄傲的告诉他们,这里有我的同学呢,他在当地一家公司……

然而,又想到多年后的自己。我也不知道会在哪里,倘若突然有同学来访时,我是不是能悠闲地请他喝下午茶,告诉他我有自己的车子,房子,甚至还带花园……还是对他说,日子不好过,我们家二小子幼儿园开学,我正想办法筹学费呢……

See Also

人肉,五毛,阿三……和其他

请注意:此文涉及标题党 及 火星人 🙂

无意中发现了 Mechanical Turk Amazon 旗下网站,点过去发现,是个类威客网站。原本以为是那种像 rentacoder.com 的网站,写代码赚钱。仔细一看之后不是,这里的活儿通常都比较不需脑子,或者不需技术,又挺费力,赚得也不是很多(相比给人写代码)。然而在看着顺眼的情况下,我还是注册了一个帐号稍加挖掘……这站点果然是了不起的。

列3个这里比较典型的任务:

  • 给公司名字 找网站地址,电话号码
  • 给学校名字 找本年度开学和放假日期
  • 给博客地址 判断评论是否 nofollow

任务回报 USD 0.01~0.1 一次不等。都不需啥技术,nofollow 那个只需理解啥叫 nofollow 就行:就是超链接是不是写着   rel=”nofollow”, 这个是关于 SEO 和 spam 的,说清楚就有的说了,但是要干活儿不用知道那么多~ Continue reading