善意提醒

如果您打开本站很慢,布局排版混乱,并且看不到图片,那么可能是因为您还没有掌握用科学的方法上网的本领。

2013-06-27

自己写了个帮助快速替换hosts的工具

替换hosts对于会的人而言并不是一件复杂的事情。不过仍然稍嫌繁琐:目录本来就比较深,还要涉及到文件复制和改名。稍一不留意还有搞错掉的可能。

两个月前,我终于无法忍受了,自己写了一个批处理来解决这个问题。人容易出错,人会烦,机器不会出错——如果你程序写对了的情况下。作为程序员,就应该有自己动手丰衣足食的觉悟。因此就有了SetHosts.bat的第一版:
@echo off
pushd %SystemRoot%\system32\drivers\etc\
copy /y %1 hosts
popd
只这样显然是不够的。在命令行下敲指令,这不是我的初衷。虽然Windows的Drag&Drop可以省很多事情,但我还想做得更多。把这个BAT注册成某个特定后缀的文件的默认打开程序不是很好吗?这样以后直接双击文件就可以完成替换了。

于是当时我自己用regedit在注册表上填写了关联文件打开方式的相关信息。现在我可以双击hosts_cn.fkw或hosts_us.fkw来快速地应用某个我事先准备好的hosts文件了。
应该说,自己用用,这样是足够了。不过我还想做的更好一点。让程序自己完成这个填写注册表的过程,不是更好吗?于是有了SetHosts.bat的第二版:
@echo off
if {%1}=={} goto install
if {%1}=={/u} goto uninstall
if {%1}=={/U} goto uninstall
pushd %SystemRoot%\system32\drivers\etc\
copy /y %1 hosts
popd
goto :eof
:install
set MY_TEMPREGFILE=%TEMP%\temp.reg
set MY_SETHOST=%~f0
set MY_SETHOST=%MY_SETHOST:\=\\%
echo Windows Registry Editor Version 5.00>%MY_TEMPREGFILE%
echo.>>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\.fkw]>>%MY_TEMPREGFILE%
echo @="Fuckwall.Hosts">>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts]>>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell]>>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\edit]>>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\edit\command]>>%MY_TEMPREGFILE%
echo @="\"C:\\Windows\\Notepad.exe\" \"%%1\"">>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\open]>>%MY_TEMPREGFILE%
echo [HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\open\command]>>%MY_TEMPREGFILE%
echo @="\"%MY_SETHOST%\" \"%%1\"">>%MY_TEMPREGFILE%
regedit /s %MY_TEMPREGFILE%
del /q %MY_TEMPREGFILE%
set MY_TEMPREGFILE=
set MY_SETHOST=
echo 处理程序安装成功
echo 您可以双击后缀名为fkw的文件来直接更换hosts
echo.
pause
goto :eof
:uninstall
set MY_TEMPREGFILE=%TEMP%\temp.reg
echo Windows Registry Editor Version 5.00>%MY_TEMPREGFILE%
echo.>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\.fkw]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\edit]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\edit\command]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\open]>>%MY_TEMPREGFILE%
echo [-HKEY_CLASSES_ROOT\Fuckwall.Hosts\shell\open\command]>>%MY_TEMPREGFILE%
regedit /s %MY_TEMPREGFILE%
del /q %MY_TEMPREGFILE%
set MY_TEMPREGFILE=
echo 处理程序反安装成功
pause
goto :eof
这下不仅注册有了,注销(反安装)也有了。以后看到fkw后缀的文件,就可以快速地Fuckwall了。……于是今天方校长就请病假了。

如果整代码有困难,那么可以从下面两个链接之一进行下载:
Dropbox: https://dl.dropboxusercontent.com/u/44933633/SetHosts.bat
Mega: https://mega.co.nz/#!Bhx2yYoR!ElR26mi-iGqx5WU3YJks8ViINKEE_wlv1Y32Mil6UEU

2013-05-09

赶一下白宫请愿的早集

最近关于白宫请愿的话题很火,在其光环作用下,飘猪老鼠林昭神马的很快就过气了,连京温还没怎么热就已经要温了。我也想就这个事情说上几句,免得后面喋喋不休。

有意无意中看到知乎上的某个问题的一大串回答让我是又好笑来又好笑。很多人连白宫请愿是怎么回事都没搞清楚,就开喷。我们先来看看人家的Introduction。需要注意的是以下这句:
If a petition gets enough support, White House staff will review it, ensure it’s sent to the appropriate policy experts, and issue an official response.
我替不懂英文也不知道Google Translate的同志翻译一下:如果一份请愿得到足够的支持(票数达标),白宫工作人员会审读,确保它会被发送给适当的政策专家,并给出一个正式的回应。

所谓正式的(或者说官方的)回应,也可以是「这个问题不在联邦政府职权范围内,我们无能为力」这种。这只是一个政府与民众互相沟通的渠道而已——人家说得很明白,一个工具。外国人办事比较认真,回复不像我们这边这样马虎了事。但人家也并没有义务一定要给出某个特定的回答,更不是某些人理解的「票数达标就得照我说的做」——说实话,我真怀疑这种智商属于人类吗。

实际情况是,如果票数没有达标,请愿根本不会到白宫工作人员那边。系统自动把它归档(Archive)了。FAQ上说得更直接——Remove。当然,我并不怀疑一毛们的刷票能力。不过,别忘了人家还有Moderation Policy。另外,每个请愿的页面上,都有着红色的Report this Petition as Inappropriate。出于尊重读者智商的缘故,看到这里的我就不翻译了。

事实上,一毛们的搅混水行为,对白宫或白宫网站甚至都形不成什么有效的骚扰。条款规定,多份陈情可以用一份回应来应对。要是垃圾请愿多得厉害,还可以把适度条款搬出来。
骚扰行为更主要的意义,在于向国内民众展示类似这样的意思:「看,白宫网站是搞笑用的。」以期阻止将来的更多请愿可能会对干部子女和家属造成的实质性威胁。题外话戳一句:小的们真是太体恤太懂事了。大王叫伊去巡山,伊把山上的屎都给吃了。

具体在眼下这个环节,我希望能阅读到这里的读者在将来能做这样两件事情:
  1. 对于有意义的请愿,在自愿的前提下,投上自己的一票。足矣。
  2. 对于无意义的请愿,不投票,并且举报。这也算意见表达,别给脑残和一毛留情。
我相信,看到这里的读者都是有足够判别能力的。不再啰嗦了。
不过我还想对某些人说一句:注意你们的IP地址,别老用61398的。你们没看见外交部发言人每次都满嘴的沫吗?

2013-05-05

让GoAgent直接使用自己指定的Google服务器IP地址

一直很疑惑,为什么proxy.ini中把[google_cn]下面的hosts改成了自定义的IP地址,但日志中显示GoAgent客户端还在寻找其它的Google服务器IP,并试图作为GAE代理进行连接。


因为一直都算还能用,所以就没下决心来解决这个问题(发现自己真的很懒)。但最近GoAgent客户端自己找到的IP越来越不靠谱,有时候甚至会导致一半左右的请求都会被重试,实在是太浪费时间了。而且第一次使用的时候DNS解析导致的等待也让人很不爽。所以终于决定来看看到底是怎么回事。

一看代码就明白了,问题很简单:GoAgent客户端针对[google_cn]这个Section有特殊行为。它会去从www.google.cn和www.g.cn这两个域名进行解析得到IP(好像会无视proxy.ini中自己设的地址或IP),然后进行建立SSL连接的测试,根据测试情况决定是否切换到[google_hk](这又是一个特殊行为)。

这种做法,对于初级用户可能会比较适合。但如果想自己控制GoAgent客户端使用哪个Google服务器IP,最好是另外开一个Section,比如[google_cn2]或[google_us]之类。这样就不会碰到代码里面预设的这些特殊行为了。

PS: 以上内容基于GoAgent 2.1.11/2.1.15测试。

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条了吗?如果只是走一步看一步,人类存活不到现在。你可以自己这样做,但要求别人也跟自己一样,要么是站着说话不腰疼,否则不是脑残就是别有用心。

2013-03-21

如此错误检查,还不如不要

今天在查一个Bug。表面现象很奇怪,至少让测试组觉得很奇怪。故障现象是这样的:
有一个列表框,如果里面只有两条记录,那么没事。如果有三条以上的记录,那么在删除记录时会「随机」出现程序无响应的情况。

上面这段错误描述中,「随机」二字之所以打引号,是因为其实不是随机的。只是测试组的同事没有找到规律而已。只要按从下到上的顺序进行逐个删除,就很容易遇到故障。

这种现象,有经验的程序员一看就知道跟序号、数组之类的东西有关。
果不其然,在代码中我找到了这样的一段:
pItem = ListView->Selected;
for (; pItem != NULL;)
{
    int iWhich = (int*)pItem->data;
    if (iWhich >=0 && iWhich < ItemArray.GetSize())
    {
        ItemArray.RemoveAt(iWhich);
        ListView->Delete(pItem->Index);
    }
    pItem = ListView->Selected;
}

这里解释一下,ListView->Selected能拿到列表内当前选中的第一行,而ItemArray是一个项目组自己实现的数组对象。这两个东西都没啥毛病。

坑爹的代码就是这一句:
if (iWhich >=0 && iWhich < ItemArray.GetSize())
我能理解,写的人是想把iWhich的取值限定在某个区间。因为这个iWhich接下来会被用作数组下标。如果越界,后果不堪设想。有这个意识,是好的。
但是,仅仅意识到这个问题,还不够。接下来还有问题了:iWhich会越界吗?什么情况下会?

我相信,如果写这段代码的人当时有问过自己这个问题,那么就不会有这个Bug了。
这个iWhich来自一个pItem->Data,这是一个ListView行对象附带的DWORD类型的数据,其值是由使用者(程序员)赋值的。
也就是说:如果你给它正确赋值,那么就不会有不正确的值出现。如果它有问题,那么是你前面的程序造成的。

也许还是有程序员会担心,这个pItem->Data会不会什么时候被改掉。也可能赋值的地方是另一个程序员写的。而写这段代码的程序员出于防御性编码的目的,写下了这样的判断。那么OK,没有关系,判断就判断吧。可是判断为FALSE的时候怎么办呢?
他什么都没有做。

其实,判断为FALSE之后,从ListView中删掉这一行,应该是安全的。从上面的代码中可以看出,删除行的时候,只用到了pItem->Index。这是由操作系统自行维护的值,不会存在Data那种「可能没有正确赋值」的情况。
又或者,实在不放心,那么直接把整个函数return掉,甚至报个错,也是可以的。
现在的处理方式就直接导致了死循环。这是很糟糕的情况,单核机器的用户甚至可能会几乎没有机会来做什么处理。

好了,上面这些就是我这篇博文想说的:有防御性编码的意识,很好!但是处理方式也要正确有效。你不应该在避免一个错误的同时,引入另一个错误。

那么,最后还有个遗留问题:iWhich为什么会越界呢?
我想,对于合格的程序员,这个问题不应该成为问题。所以我就不说了。

2013-03-03

用了五年的笔记本XP系统重装了

其实重装系统这种事情也没什么可写的。无论是重装系统还是拆机换CPU,我都已经轻车熟路了。不过过程中还是遇到了几件值得加深记忆的事情,权且当作流水帐记一下吧。

这次换了个CPU:把AMD MK-36换成了AMD TL-66。MK-36只是64位而已,但由于用的是XP 32位版,其实没有任何优势。TL-66增加了主频,而且变了双核,可以说是鸟枪换炮了。这要搁在当年买笔记本的时候,不说TL-66根本没面世,就算有得选,也不是加几百块钱能了事的。现在淘宝上一百来块就搞定了,还送了个耳机。

换了CPU,Chrome卡的问题还是没能解决,于是把系统给重装了。本来准备上Win7,结果发现装64位版本的话disk.sys不支持,也没有官方驱动能解决这个问题。如果上32位版Win7,显卡驱动可能也是个问题。这款笔记本官方只提供Vista的驱动。最后还是装回了XP。反正2G内存也只有XP能舒服点。以后这台机器就不要考虑其它操作系统了。

但重装了系统,仍然没有解决Chrome卡的问题,而且卡得愈发厉害。最后终于发现是电池的问题,拔掉电池就一切正常了。现在依然很正常地在用,只是谷歌拼音的切换略慢,有时候刚呼叫出来的时候会丢几个键击。电池上有个垫脚,导致现在本子变成三脚猫,不得已只好找了一叠名片来垫上。

2013-02-27

360病及其它


提到不要用360,总会有人跳出来问:你有更好的吗?
别人说自己笨就算了,没怎么见过把自己的笨拿出来秀的。不过算了,术业有专攻,确实不能期望每个人都有及格的信息安全相关技能。那么,这个逻辑是否正确呢?是不是没有更好的替代品之前,360尽管是个臭流氓,但仍然是个还算不错的选择呢?

要我说,这是一种典型的把自己的XX寄托在别人身上的毛病。这毛病极坏!不过,所有使用360的人,或多或少都有这个毛病。
自己安全不安全?不知道。不知道要去弄明白啊!他不,他去听360的。360说我安全,360说我体检一百分,360说你的电脑高风险,360说你给我装的GoAgent是病毒。

许多年前,有一群人也是,觉得某个党挺好,于是什么都相信它。于是他们觉得找到了替代品,旧的那个可以不要了。于是旧的那个被赶到了一个小岛上,后面的事情大家都知道了。
人民是很容易偷懒的,一旦他们觉得某个英雄可以拯救他们,某个国王英明贤德,他们很容易就会把一切都交付了。国人如此,其他国家的人民同样是如此。不过区别是,不少其他国家的人民已经从历史的教训中学得比较聪明了,而我们的政府还在不停地对我们的人民洗脑、欺骗。
360也一样。把操作傻瓜化的同时,一切都拱手交给它了。我还记得《WALLE》里面飞船上那些人类,一切都交给了机器,以至于变得肥头大耳四体不勤站都站不稳活像笼子里的哈姆太郎宠物鼠,自己却浑然不觉。不同的是,船长与方向盘搏斗的时候,所有人都在为他加油,没有傻逼跳出来说我们活得挺好的挺舒服的要吃有吃要睡有睡要玩有玩安全和谐别给劳资破坏来之不易的大好稳定局面。

好吧,我再次承认,不是所有人都有及格的信息安全相关技能(事实上是大部分人都没有)。这不丢脸,就好象我不会任何武功,来个强盗一刀就把我给灭了。只是,我也不会去做那些危险的事情,爬上火车打架就留给007他们吧。不具备信息安全相关技能,就自己小心谨慎一点。查杀木马你不会,预防堵漏你也不会,物理断网你总会吧?怕中木马,污七八糟的网站就少去晃荡,盗版软件就少去下载。怕网游被盗号,就别扔那么多钱和时间进去玩,更别去到处翻什么破解外挂。老在垃圾堆里刨吃的,人能健康吗?步行街上那么多漂亮妹子你不去追,宅在家里玩什么网游?妹子会传染你艾滋病吗?12月1日的讲座你真该好好听听。怕网银丢钞票,就别去玩网上支付,货到付款总会吧?什么你不会数钞票……?思想有多远,你就给我滚多远。

2013-02-07

关于GFW请愿的那些事儿


白宫网站上那个关于GFW的请愿活动,我最开始是在周末看到的。大约在一月底的时候。

因为个人原因,周末上G+的时间并不多,基本上就是瞄上一眼,发评论都不一定有时间。当时只是简单把PO转了一下(G+还没有收藏功能真遗憾)。一方面因为我之前在「死星事件」中刚知道白宫网站请愿这事儿,觉得这次活动还有那么一点儿小意思,值得去做一下。另一方面,当时那个PO是以一个教程的形式写出来的。也许作者的初衷是想让读者无需任何脑力即可操作,但结果就是那段文字看起来相当复杂,普通人(包括我)一眼看上去就会觉得「哎呀这么麻烦啊」。当时我的想法很简单:这大概是一个要花点时间的事情,等有空再做吧。反正截止日期我看过,2月24日,还有近一个月,中间还有春节假期,时间大把的有。

后来没过两天,我发现这件事情其实很简单。起码比我上1号店买个牛奶要简单多了。唯一的问题就在于,即使用Gmail注册,确认邮件也是过了一阵子才收到,至少没有像大多数网站那样秒到。流程稍微一卡,我转过头就做别的事情去了,以至于这事儿最终分了两步才完成。不过我想说的是,过程真的很简单,除了一个邮箱无需任何其它条件,也没有什么后遗症——如果你连转发政治PO都不怕的话。

再后来,签名进展异常缓慢。我签的时候有三千多,现在也才刚过一万。估计信息就只在一个不大的圈子里面传播。同时,还有网评员和小秘书在信息流动过程中捣蛋。总结了一下,我大致见过以下论调:
  1. 投了也没用。
  2. 懒得去理这样的破事。
  3. 侵犯GFW工作人员的自由!
  4. 太麻烦!
  5. 不懂英文!
  6. 不是只有美国籍才能投票吗?
  7. 什么是GFW?

有兴趣的话各自对号入座。至于对这些论调,我就不发表评论了。不是没有话说。要说的话很多。但是相信各位至此已有相关的心理准备,在下就不多啰嗦了。
我Google+个人资料里面的个人宣言是这样写的:人在做,我在看。不是我以老天爷自居。所谓众生相,其实谁都看在眼里。至于在不在乎,那就只有各位自己心里去掂量了。不管诸位在不在乎,这破事儿,反正我,是看定了。