善意提醒

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

2013-06-28

Blogger 上的博客如何提交完整的 Sitemap

Blogger 现在可以输出 Atom 1.0 和 RSS 2.0 两种版本的 feed(参见 官方说明)。不过无论哪种 feed,都只包含最多 26 个 Post。

对于通常的 feed 订阅而言,最新 26 个 Post 应该是足够了。反正 RSS 阅读器只需要最新的那几个 Post 就行。但对于想把站点的 Sitemap 提交到 Google 的 网站站长工具 去做 SEO 的情况,26 个 Post 就太少了。既然是 Sitemap,当然希望是全部的页面了,那么有什么办法呢?

这里有个老外的 页面,说明了一种办法。大致说起来就是,Google 在提供 feed 订阅的 URL 中,还有两个未公开说明的参数:start-index 和 max-results。前者表示这次的 feed 输出从哪个(序号的)Post 开始,后者表示这次最多输出多少个 Post。于是如果要提交超过(默认的)26 个 Post 的 Sitemap,就可以用类似下面这种:

http://blogname.blogspot.com/feeds/posts/default?alt=rss&max-results=500

不过,看起来 max-results=500 应该是一个上限。本人是没有那个条件去试了,博文数量差着一个 0 哩!对于博文数量超过 500 的情况,上面那个老外的博文中也提到了一个办法,就是分段提交 Sitemap。比如:

http://blogname.blogspot.com/feeds/posts/default?alt=rss&start-index=1&max-results=500
http://blogname.blogspot.com/feeds/posts/default?alt=rss&start-index=501&max-results=500
http://blogname.blogspot.com/feeds/posts/default?alt=rss&start-index=1001&max-results=500
……

反正这些页面是都提交上去了,Google 会自己把它们合并起来的。

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。反正 2GB 内存也只有 XP 能舒服点。以后这台机器就不要考虑其它操作系统了。

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

2013-02-27

360 病及其它

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

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

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

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