Tag Archives: 校内

near ihouse and PGH

我在断断续续的火警铃声下,更新我的 blog。

不知从何时起,写一篇 blog 变得越来越难,每天的生活都好像 nothing special,一天被问几十遍 how’s going 的结果都是还可以。曾经一度喜欢抱怨,最后也终于变成懒得抱怨。

人人和微博上到处都是羡慕嫉妒恨,我写不完一篇长文,140字的 twitter 也不行,想说的只有一个字,唉——

校内出错的那几分钟

貌似最近通过搜索 校内 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 上呢…… 也许要等下次,下下次,不知道多少次校内出错的时候才能猜出来了~~

校内开放API:让我们一起抄袭?

先是Facebook开放了一部分代码,之后是校内开始要开放API。这二者有没有必然联系,我不知道,但至少看起来都该是好事。

在校内看了有关API的东西,一些讨论,和那个尚未完成的wiki。现在遇到这种新东西,已经不是很怕了,因为总是可以看Documentaion。然而这次校内的API令我很迷茫,我不知道这究竟是什么,一些人说可以用了,一些人说用了有问题,我说我不知道API在哪里……文档做得实在是太糟糕了,或者说,完成的部分太少了,能供人参考的部分很少。而现在正在做开发的那些人是怎么得到信息的呢?很大程度上,通过Facebook的API。

在校内的API文档稍稍有所进步的时候我再来看这个API,稍加研究,和Facebook的对比,我才发现他们是出奇的相似。从应用的工作原理,到API的函数名,参数名,格式,基本上都是一样的。而如果我想用PHP来写校内应用,该怎么办呢?校内目前提供的官方client library是java的,于是我可以去Facebook下一个PHP的client library,然后把里面的facebook改成xiaonei,FB改成XN,FBML就是XNML……基本上就能工作了……

我本是想,如果没有官方PHP的library,我自己写也未尝不可,然而看了Facebook的代码,我忽然发现,他们写得实在是太好了,我自己写决不可能做得那么简洁、高效,自己写也比拿Facebook的改慢的多。于是,我为什么不拿来改呢?或者说,我为什么不抄呢?

解决的client library,我们再来想究竟写什么应用,在没有任何想法之前,我们很有可能想看看别人写出了什么应用。然而,很不幸,校内上目前似乎还没有谁写出了什么能够用的应用,于是,我们又来到Facebook,这里的第三方应用实在是多得数不清,其中不乏想法精彩,制作出色的东西。而这些,搬到校内上应该也能成功。于是,我们为什么不port呢?我们为什么不抄呢?

校内开放API,我希望这是一件好事。可以预见的就是几个月之后的校内上,会出现各种好玩且有用的第三方应用。然而,我也不希望看到,这些应用中有许多是从Facebook上照搬过来,克隆而成。API的开放,提供的是自由和创新,不是让开发者们跟着校内一起抄袭,或者帮着校内抄袭。

fanfou=好好学习,天天校内

今天ice告诉我说,校内把饭否屏蔽了,当时就想不可能。首先,我用的饭否图片插件,css中background贴上去的,总不可能屏蔽图片吧,那其他的图片也没了?再说,校内和饭否不存在什么竞争关系,人家千橡大公司不至于这么小家子气,还屏蔽饭否……

再一细问,原来……涂鸦板里的fanfou自动替换成了好好学习,天天校内…… 真是哭笑不得,校内果然和猫扑是一家的,千橡就是牛逼,还玩这一套。我真想看哪天校内上冒出中国人民公共安全专家大学来。

然而这种拙劣的替换手段,基本上是可以无视的。好办法我是没有,不过笨办法倒是几秒种内就想了一个。 Continue reading

把饭否添加到校内的简单方法

校内和facebook最大的差距除了页面混乱之外,还有一点就是api。

用饭否的时候发现它api做得还是不错,而且本身提供了图片、flash、javascript的插件,所以肯定是所有地方都能放了。

在校内上放饭否基本很容易,涂鸦版里加一句

即可

然而这样只是插在了涂鸦版里,不好看。如何用饭否取代校内自己的“我的状态”呢?稍稍动用一下css其实也不难…… Continue reading