2013-04-10

修改GoAgent客户端以支持Mega


为了能用来访问Mega,对GoAgent客户端代码做了略微的修改。不过首先要说明一下为什么会有这个修改。

Mega是个总部位于New Zealand的网盘服务。服务器当然全世界都有,但至少在我这边ping值不好。严重的时候600ms以上,并且丢包。这样的话,不管本地有多少带宽,实际上也是不可用的。总不可能花上一整天的工夫来传一个ISO吧。
开着VPN会快,但流量和费用都是问题。于是很自然地想到了是否可以通过GoAgent之类的GAE代理来访问。Google服务器与Mega之间的带宽应该是不成问题的,而Google服务器与我之间的速度也是我可以在一定程度上控制的。不过测试下来发现GoAgent不支持OPTIONS这种HTTP Method,而且这个局限性是GAE导致的。GAE只支持GET/POST/HEAD/POST/DELETE这五种HTTP Method。偏偏Mega在登录和上传下载的时候都会发OPTIONS请求,于是这个方案一度被搁置了。
后来Mega的速度进一步下降,有时候一整天都传不完一个100M的文件。于是这个方案又被我拿出来考虑。这次我准备绕开服务端的限制,直接从客户端下手。OPTIONS请求涉及的数据量是很小的,文件传输用到的CONNECT之类才是主要的带宽压力。因此可以让客户端在遇到GAE服务器无法处理的HTTP请求时,直接将其发到目标服务器。由于Mega目前还没有被GFW给IP黑洞,因此应该可以在一种“混合模式”下被通过GoAgent访问到。

下面介绍一下修改方法,以GoAgent 2.1.15版(2.1.17还需要服务端改动才行)为例:

首先在local/proxy.py中找到这两行:
"""rules match algorithm, need_forward= True or False"""
need_forward = False
第一行是注释。而下面这个need_forward,就是用来控制是否把一个请求直接送出(FWD),而不是送去GAE服务器进行中转。

在后面的if语句前,加入这样的内容:
if self.method != 'GET' and self.method != 'POST' and self.method != 'HEAD' and self.method != 'PUT' and self.method != 'DELETE':
    if host not in http.dns:
        http.dns[host] = list(set(http.dns_resolve(host)))
    need_forward = True
非Python程序员也应该很容易读懂这段代码,不过要提醒一下:Python中缩进是很关键的,改代码时一定要用空格正确地缩进。
最后,别忘了把下面那个原来的if改成elif。

这样改过之后的GoAgent客户端,在遇到GAE服务端不能处理的那些HTTP请求类型时,就会把它们直接发到目标服务器上。
从理论上讲,这个小修改不会对GoAgent的翻墙能力有任何的增加,但可以让它具有更大的适用范围。一些原来不能用GoAgent访问的站点(比如上面提到的Mega),现在可以用它来访问了。GAE的流量按天计算(VPN一般按月,VPS也是)。并且因为可以使用多个GAE账号,因此流量基本上是免费且无限的。Mega那50GB的大空间,终于具有一定的可用性了。

2013-04-08

论天赋与竞争


今天偶然谈到一个话题。我发现,一个健康、聪明的宝宝,能够给爸妈省下非常多的钞票。换句话说,这就是体能、智能在生存竞争上的优势的具体体现。
只是,我觉得,原始社会的时候就是这个游戏规则,到现在咱们还是这个规则,这个社会体系是不是建设得太失败了一点?

我总觉得,人类社会发展到现在这个阶段,从技术或生产力上讲,应该已经有能力解决成员的基本生存问题(温饱)了。那么,区分成功还是失败,或者说人们奋斗的目标,应该是看一个人能不能实现自我的价值,做自己想做的事。有的人可能不擅长打猎,有的人不会种田,但是他可能会唱歌,这可以使他人愉悦。不需要一个人什么都会。即使他不会任何直接产生食物的技能,也不会饿死。社会化分工,这就是人类社会出现的意义。

在社会形态发展还不完善的时候,可能有的人还是会有生存问题。艺术家要是画卖不出去,也会有生计问题。所以这才需要社会形态继续发展。一方面生产力要更高,才能有足够多的资源来供养这些不直接生产生活资料的人。另一方面,需要保障制度的逐步建立,需要合同方式的完善,来消除因为成员个体的分离带来的沟通上的问题。——无论政治还是经济,本质上都是在解决沟通问题。

一个能够保障个人基本权利(包括生存权)的社会,才能更好地保障多样性。否则世界上将只存在猎人和农民,人类社会也就不会再进步。基因需要多样性,社会成员同样需要多样性。即使是所谓人渣,也有他存在的意义和价值。所谓的天赋,包括体能、智能,乃至于道德上的高低,都不应该成为淘汰个体的理由。

我并不是说天赋不应该有优势,而是说这些天赋上的(貌似)弱者不应该必然被淘汰。丛林法则是一种自然状态下低等级的演化规则,其重点是“适者生存”。而既然是“适者”才能生存,那么其演化所产生的结果必然越来越趋向于适应某一种特定的环境。一旦环境发生非常大的改变,或者说“游戏规则改了”。那么演化的结果就可能会变得毫无意义,甚至整个种族都会有危险。而其原因就是,本来也许能适应新环境的成员,在之前的演化中被无情地淘汰掉了。

我们人类是(目前看来)有一定智力的种族,也希望能拥有其它动物所不具备的改变自身命运的能力,那么就一定不能按照动物的演化规则来生活。所以我觉得,如果一个现代社会里面,成员还要为了基本的生存条件而奋斗,要像动物一样靠天赋进行生存竞争,这个社会的设计和演化是失败的。

不过也许这个社会中有一部分成员就是想让其他人活得像动物,弱肉强食。谁知道呢?!

2013-04-03

也谈“量刑要适度”


看到有的人在说什么“量刑适度”,真心觉得搞笑。
这种人,就是把公私权混为一谈分不清的那类人。

要动用公权力侵犯私权时,疑罪从无原则无疑是非常重要的。因为双方力量并不对等。
而个人之间的质疑乃至问罪,没有必要搞什么疑罪从无。双方力量都是对等的。一方可以质疑,另一方也可以回应。一方可以乱扣罪名,另一方也可以把真相公之于天下让大家看看。就算捅到媒体,舆论一边倒。你可以骂别人傻逼,可以觉得别人真的是傻逼,可以骂群众无脑盲从,可以愤世嫉俗愤然删号滚蛋。但人家就是有这个权利。发表自己的见解,没有问题,但想修改游戏规则,是很不明智的。

从另一方面看,对于公权,不仅不能疑罪从无,还应该要用最恶意的角度去揣测。这个原则,也应该可以适用于双方力量明显不对等的情况。没有人会认为保护伞公司不应该接受政府同样的待遇吧?

更何况,有的时候,超出目前状况之外的恶意揣测,往往是为了自我保护,而不是要加害于他人。黄浦江上的猪,没有检测出可感染人类的病毒,就应该为此放一百二十个心了吗?目前还没有证据显示H7N9可以在人类之间传染,于是友人咳嗽高烧也可以不用防护地去探病吗?没有上过CSDN,于是就不用修改密码了吗?没有反对过伟大的党,于是就可以举手支持73条了吗?如果只是走一步看一步,人类存活不到现在。你可以自己这样做,但要求别人也跟自己一样,要么是站着说话不腰疼,否则不是脑残就是别有用心。