两年多来第二次更新博客功能
2012-06-18 00:08 by 老赵, 6020 visits话说两年多前,我从博客园搬到了这个独立博客,用的是自己写的最简单粗糙的博客程序。这个博客系统十分简单粗糙,连文章编辑都是在文本框里直接显示HTML,甚至没有文章删除的功能——因为我不需要。这就是这个博客系统目的,只为我一个人服务,我够用即可,但也必须能让我够用。自己写的博客系统胜在高度的订制性,我可以把握页面任何一寸角落。直到现在,我的博客程序只增加过两次功能,其他都是对于样式方面的小修小补,可见我这人是多么的不思进取。从某个角度说,这两次更新的目的是相同的,都是为了抵御垃圾回复。这少数的令人恶心的人和事,就能不成比例地占用我的精力。
第一次程序更新,是为了抵御自动回复,一开始时不时会出现一条垃圾回复,遍布各篇文章。我曾经试过手动删除,但最后垃圾回复发布频率提高到10到15秒一条,我完全删不过来,一觉醒来可以满眼都是垃圾回复,令人苦恼不堪。其实说到底还是我的博客回复太过容易,一个简单的HTTP Post请求便可发布成功。我也想过增加验证码,但我不想让博客回复变得麻烦,于是最后采用的是客户端和服务器端配合进行的简单的验证。具体方式有些忘了,应该是由服务器生成的时间戳附加在文章内容上,再用MD5生成签名等等。这些步骤对用户来说都是透明的,但可以完全抵御简单的重复提交。其实只是这么一个简单的手段就完全杜绝了之前那种垃圾回复,有空我重新读下之前写的代码,整理出一篇文章出来。
自动垃圾回复容易处理,但由人肉发布的垃圾回复便难以抵挡了。基本从我搬至独立博客没有多久,我的博客上就出现了一个著名的ID,强烈抵制微软各种技术。一开始我还以为这是一个业界牛人,因为他一上来就号称自己十几年前做过哪些哪些技术,列举各种名词头头是道,所以还客气地回复,一一指出他回复中错误的地方。但后来慢慢发现,这位仁兄除了列举名词似乎就没有其他的本事,抓住任何“观点”都会莫名其妙地用来黑微软,逻辑之差令人乍舌。关键是它可以如方肘子一样搬出各种“道理”,列举各种“数据”。更有趣的是,他可以做到跟肘子一样,对于各种引文选择性地采纳,即便被人指出错误也完全不予理睬,甚至完全不去做最简单地了解就来胡扯。
例如,他会在Build大会没几天就主动跑上来嚷嚷,说WinRT舍弃了.NET,还加入了各种新类型,例如IIterable,IVector,IMap等等,全然不顾真相如何。其实只要看过Build大会上最简单的介绍,就能知道Win8可以说终于对.NET提供了直接支持(在他眼里,这句话就变成了我在说WinRT是.NET的一部分),使用各种API变成系统调用,无需手动映射和封装,性能也得以提高。而WinRT中如IIterable这种集合类型,完全会被自动映射为.NET中的IEnumerable,IList或是IDictionary等等,在WinRT层面上换一个名字只是因为它是一套公用的API。事实上.NET是WinRT重要组成部分,WinRT的元数据格式就是.NET程序集中元数据的描述方式,用IL Spy类似的工具甚至可以直接查看其接口(他又觉得我认为ILSpy可以看到内部实现)。如今C#真正成为了WinRT的一等公民之一(C++自然也是,但他会认为我说只有C#才是)——但这一切对他来说都没有意义。他只要不断黑,这跟方肘子的手段一样,只要有一个人看到并相信他的说法,他就赚了。
我问过他是谁,是做什么的,有没有写过的文章发起过的讨论可以看看,但两年多来,他唯一透露的自己的消息便是自己有十几年经验,各种东西都懂,现在搞一些我不了解的东西,从来不做正面回应。我也建议过他去StackOverflow或Quora上问个问题,或是给出国内一些著名的博客,让他去问问那些人的看法,但他也无动于衷,留下的回复是“之前跟他们说过”,而现在“跟他们没什么可说的”。在我看来,他之所以能够孜孜不倦地主动来我这里挑事,最重要的一点便是我保证过不会拉黑,不会删除回复(除非是纯粹小广告)。
我这么做的目的,本来是想留下正反两方面地说法,而不因为自己的喜好而删除回复。本来这是种自律,如果在一个大家都会自觉把握讨论基本准绳的环境中,这应该是个理想的方式,可惜现在就有人不自觉地破坏这样的环境。在互联网上的发言,其实很大程度上是在拿自己的“信誉”做筹码,但像那位仁兄一样如缩头乌龟般从头躲到尾,即便信誉破产对他也没丝毫影响。他可以随便扯出乱七八糟的“道理”,而我则需要一条一条反驳,认真查找便阅读各种案例。而他却可以肆意歪曲我说的话,甚至无中生有地解读我的行为,或是找一些文章“标题”来证明他的说法,我却要在下次仔细阅读他的“举证”,并且做进一步的解释。
久而久之,我不胜其扰,但我依然不想删除回复,于是变得脾气暴躁起来,后来基本就是见他一次骂他一次。现在看来,这么做实在是十分愚蠢——因为我在不断付出我的信誉,而他却可以躲在乌龟壳后面无所畏惧。久而久之,最终损失的只能是我自己,还包括读者的体验。痛定思痛,我决定还是为博客增加一个功能,可以将某些评论自动隐藏起来,待您真心需要浏览时再登陆查看。上篇文章就是一则具体案例,本来是一篇令我感觉颇为良好的文章,却又被糟蹋了,实在令人心痛。
写了这么长,我忽然意识到似乎这更多还是为了说服我自己,让我自己做这个决定时心理可以更踏实一些。虽然开发了这个功能,但我还是希望可以尽可能地少用,毕竟它还是可以算是开了一个坏头。幸运的是,从历史上看似乎也只有那位仁兄的回复需要受此特殊待遇了。看到便隐藏,眼不见为净。
只为一个人而开发一个功能,我也算是够给那位仁兄面子了。
更新:刚才趁在公司里下班前的时间,把那位同学的内容以及相关对话都隐藏了。看着当时大段大段客客气气的回复,让我感觉自己之前浪费了那么多时间。这些文字加起来至少也有几十篇长文,如果我能把那些时间利用起来,Jscex的文档早就完成了。愚蠢啊,我真他妈的的愚蠢。
哈哈,赵姐夫这么厉害的博客系统可以开源让大家学习嘛.