按时间顺序,浏览所有文章

有效地阻止SPAM

| 3 条评论 2008-06-17 10:24:30

对于blog作者来说,SPAM一直是个令人比较头疼的问题。如果没有良好的防治机制,一旦被SPAM机器人盯上,那可不是闹着玩的。目前主要的解决方案是使用Captcha,让真正的留言者按照图片所示,输入一串随机生成的字符串,或是解答数学题等等。虽然攻击者仍可以写程序做图像识别,但这个难度很大,而且一旦图案有变化程序就要重写。因此CA..可以说是目前最为有效的SPAM预防方案。

但是Captcha显而易见的缺点就是:它的用户体验不好,有时甚至很糟。我见过的最恐怖的Captcha来自RapidShare,它居然要你识别一只特定形象的猫!我每次做完这步眼睛都花了!

还有一种使用也比较广泛的方法,就是利用贝叶斯等算法做SPAM识别,有些还结合了可定期更新的黑名单机制。Gmail这方面做得非常好-99%的垃圾邮件都被系统识别并自动归类了。问题是,我始终担心会有重要邮件(比如MM的求爱信……)被误判,还要时不时的去“垃圾箱”中看看。

此外也有人借助Javascript来防SPAM,因为机器人抓取网页时肯定不能运行Javascript,所以可以利用这个特点,通过浏览器事件来辨别留言者的身份。这个方法在Javascript被用户禁用时显然会失效,考虑到Firefox用户可以非常方便地禁用Javascript,我对其持保留态度。

说了半天别人的方法,我介绍一下在我的blog程序Lonely Thinker中的做法。经过半年多的检验,这一方法被证明不仅可以有效地阻止SPAM,又几乎不损害用户体验。

步骤如下:

1、在表单中添加一个值为空、名称为antispam的文本域,将其放在一个HTML容器内(比如div),并用CSS这个HTML容器隐藏(如下图):

view中的代码

2、在表单校验的部分加入对这个文本域的校验,如果其值不为空,则说明当前留言是SPAM(以CakePHP框架的model为例,代码如下):

model中的代码

简单地说,这种方法就是利用了机器人会填写所有表单域的特点而起作用的。唯一可能需要担心的,就是如何处理关闭了CSS的情况。我的做法是在表单中添加一段文字说明,你仔细看上图的话不难发现。

要特别说明一下为什么不直接把文本域用CSS设置为隐藏的。我本来是这样做的,可是发现机器人非常聪明,它似乎有一个简单的解析器,可以读取文本域的CSS,如果发现具有隐藏属性则跳过。前一阵子产生的SPAM都是这么来的,我找到原因时也非常惊讶。

当然了,机器人的作者仍然可以进一步完善他的程序,比如写一个比较完整的HTML解析器,用以对付我目前采用的隐藏HTML容器的做法,但这个有一定的难度,并且我只要让我的HTML不合法(比如没有完整闭合,或者制造标签间的嵌套错误),他的解析器很可能就失效了。

如果你的blog访问量非常大,已经到了有人专门针对你的blog写SPAM机器人的程度,上面的方法就需要改进才行了。我目前想到的一个办法是动态地调整文本域的名称,比如在一个名称池中随机的选取一个渲染到表单里,并在model验证规则的部分做动态调整。为了防止误伤那些在名称调整前载入页面、名称调整后递交表单的用户,甚至可以考虑临时记录每个人载入的文本域的名称。

WWDC 2008观感

| 5 条评论 2008-06-12 15:03:18

前夜一口气看完WWDC 2008的主题演讲视频后,激动的在床上胡思乱想了近2个小时才得以入睡。以下是在床上辗转反侧时的YY纪录:

1. Jobs明显老了

把这么八卦的内容放在第一项,感觉既对不住Jobs他老人家,又对我blog的读者有些些许的愧疚,不过这却的的确确是我的第一感受。远的不说,就是相比于年初的Macworld,这次的Jobs也明显让人感觉到了岁月的痕迹:眼窝深陷,脸色略显苍白并带有一丝倦意。虽然Apple后来证实Jobs是带病上阵的,但千万别忘记Jobs已是五十几岁的人了。

2. 谁都不是傻子

话不多说,看下图:

3. 让人叹为观止的Interface Builder

请原谅我使用这么夸张的词来形容Interface Builder(IB),实际上,我想不出更好的词了。短短几分钟的演示,便能让我们充分领略IB无以伦比的强大功能,诸如控件在界面上辅助对齐、自适应大小等功能,都是在其它界面构建工具中难得一见的。此外,作为一款专门构建界面的软件,IB本身不仅有着极佳的可用性,更有超凡脱俗的用户体验:注意到控件在由Library拖出时产生的缩放和半透明效果吗?还有那个让人拍案叫绝的居中对齐设定方式!以及在IB中旋转界面时动感十足的旋转特效(如下图)!至少从这个演示来看,用Xcode配合IB来编写iPhone应用,与其说是工作,倒不如说是一种享受!

4. 老天!iPhone上的游戏太让人期待了!

强大的CPU、视频加速卡和内建的运动感应器,再加上OpenGL和OpenAL等开放API的支持,让iPhone天生就是一个绝佳的游戏平台。尤其是运动感应器的应用,让游戏者可以体会到直接操纵的快感,不难想象,过不了多久地铁上就会有大群人拿着iPhone手舞足蹈!

如果能拉到主流游戏厂商、并且想办法延长电池使用时间的话,其它游戏机先不说,至少PSP就不用混了。

5. 微软的界面真的没救了,相信我

当我看到手机上的Task Manager时(见下图),简直不敢相信自己的眼睛!即使让我不作任何准备,直接站在WWDC的舞台上的话,我也肯定会和主持人Scott一样的表现:无话可说、跺足叹气。微软除了不断地强奸他们的用户、迫使他们学习糟糕透顶的系统外,难道就不能想出一种优雅的方式来解决问题吗!就算不采用与Apple的Push Notification Service类似的技术,也不能把PC上的Task Manager硬板到手机上来,有多少人搞得清楚进程名称和程序名称的关系?

说句题外话,我现在对Windows和Office极其反感,这样的产品设计让我觉得不可理喻-若是举起例子来,便是几天几夜也说不完。工作上也是能不用就不用,能够以开放标准(如HTML、PDF等)发送的文档我绝不采用MS的专属格式。我很庆幸存在Mac这样优雅的电脑和软件系统,能够让我能够尽量专注于任务本身,并时常在完成任务的过程中得到意外的惊喜和乐趣。

6. 前途无量的定位及其相关服务

iPhone 3G终于有了GPS功能,定位+SNS绝对是个金矿。在国内,唯一比较棘手的问题就是GRPS的数据费太贵(这个问题或许可以通过内建地图来解决,随便想的)。

7. 虽然有手写,输入仍然成问题

2.0版的软件系统提供了中文简繁体及其输入解决方案,但iPhone的虚拟键盘仍不够好用,对于Treo用户来说更是如此。英文可以有拼写检查和纠正,但中文就难做了。当然,这是问题也是机会,很期待Glider的QIM和华君的FIT能有更好的表现。

8. 在理想情况下,ME.com的网站体验应该很棒,可这只是“理想情况下”

Apple一向很喜欢在不同的平台上提供完全一致的使用体验,比如原有的.mac服务和现在的Safari,可我觉得有时候它过于理想主义了。比如ME.com中运用的大量Javascript/AJAX技术,在网速不是非常快,或者电脑性能不是非常好的情况下,使用体验可能会很糟。我在超高带宽上使用过.mac(带宽具体数值不得而知,但在50M以上)服务,感觉还有些延迟,国内大部分1-2M的ADSL就更不用说了。不过不过,ME.com的UI设计实在是太棒了,不由不赞叹!

----------------------------------------

谁有兴趣玩iPhone开发?

Cam-Trax

| 1 条评论 2008-06-05 14:10:21

在国人还在忙着研究SVCD、CVD、EVD、威力棒(Vii)、M8和山寨机的时候,老外搞出了Cam-Trax:

读《天黑以后》和《海边的卡夫卡》有感

| 0 条评论 2008-06-02 09:53:09

最近一口气连续读了这两本村上的书:《天黑以后》和《海边的卡夫卡》。

《天黑以后》

《天黑以后》和我读过的村上的其它作品有很大的不同,从表面上看起来,它所描述的并不是一个完整的故事,而仿佛只是日常生活中截取出来的一个片断而已,所以在看完最后一章后,我脑海中总是联想起贾樟柯的《世界》(这部电影中也以同样的方式讲述了几个平凡人的平凡生活),在两部作品中,你都很难看到通常意义上的起承转合和跌宕起伏,情节像拥有多个支流的、静静流淌的小溪一样,沿着不同的方向铺展开去。

然而,“我们以为目睹的东西,很可能只不过是我们的错觉”(第八章,第11段),在经过了一整夜的经历后,会讲中国话的女主人公浅井玛丽似乎最终领悟了姐姐浅井爱丽的心理,以独特的方式表现了自己对她的爱,这一被文学评论家称为“再生”的举动,才是整篇小说真正的主线。不过我个人并不十分理解“再生”的含义。

此外,正如译者林少华先生在序言部分所指出的那样,书中白川身上所具有的那种“不再是‘绝对恶’”的恶、“超出善恶标准的、甚至超出了恶的恶”,才是现代社会中最为可怕的恶!在现代社会中,这一“白川式的”恶有很多种表现形式,除了书中所描绘的那样外,至少还包括:1)人性的恶,典型如当面一套背后一套;2)中庸的恶,典型如随着其他人一起闯红灯。

《海边的卡夫卡》

《海边的卡夫卡》的结构和叙事方式同村上早期的《世界尽头与冷酷仙境》非常相像:两个看似毫无关联的故事在小说的奇偶章节间平行展开,然而随着阅读的深入,故事间千丝万缕的关系逐渐显现出来,并在小说的中后部进行了某种程度的重合。

我第一次读到《世界尽头与冷酷仙境》时,被这一独特的写法所强烈吸引,在读完全作并理解了两个故事间的关系后大呼过瘾!在《海边的卡夫卡》中,这种笔法得到进一步扩展,小说开篇的几章甚至让人产生三个故事并行发生的错觉,只是读到后来才发现,其中的两个故事实为不同时空并具有因果关系的一体,让人不由得感叹村上纯属的写作技巧。这可以说《海边的卡夫卡》与《世界尽头与冷酷仙境》的第一个较大不同。

两者之间的另外一个显著不同在于,在《世界尽头与冷酷仙境》中,两个故事之间的关联是隐形的:其中一个故事所发生的世界,位于另一个故事中男主角的内心之中;一个故事中所拥有的种种人物、语言和事件,是另一个故事中世界的投影和映射。简言之,两个世界的这种暗喻式的联系是要靠读者自己去发掘与领悟的。而在《海边的卡夫卡》中,甲村图书馆成为了两个世界交叉的点,原本不相干的种种人物和事件,都于此相互交错和影响。老实说,这样的安排是我在阅读过程中未曾想到过的,非常出乎意料。现在想来,这样的写法却更能紧紧地抓住读者的注意力,使他们对因两个世界交叉所带来的影响和后果,产生某种程度的担心、不安甚至惶恐-尤其对于读过《世界尽头与冷酷仙境》的读者更是如此。

第三个不同,就是相比较于《世界尽头与冷酷仙境》,村上的笔触显得更加内敛,隐喻愈发深沉,论理的部分也增加不少,我相信这是由于年龄的增长而自然而然出现的一种现象。

最后从《世界尽头与冷酷仙境》中引述一句来收尾:“有的东西不过很久是不可能理解的,有的东西等到理解了又为时已晚。大多时候,我们不得不在尚未清楚认识自己的心的情况下选择行动,因而感到迷惘和困惑”。

D4感受

| 10 条评论 2008-05-23 10:58:40

昨天晚上支付宝主办了阿里巴巴集团内部的第三届“阿里巴巴D4设计论坛”,有几项内容比较有趣,想拿来讨论一番。

商业需求和用户需求是矛盾的

这种说法就好像“界面上文案多了用户不看”一样,成为了一个广泛传播却又尚未被证明的伪命题。

我个人并不十分赞同这种观点。持这种观点的设计师恐怕是受了太多运营部门的影响,而把商业和用户放在了互相对立的位置上-如果想最好的达到商业目标,就要牺牲用户利益,反之亦然。所以每次的产品/界面设计,都成了运营所代表的商业目标和产品所代表的用户利益之间的折中品,是两方各自妥协的产物。

淘宝的同事以当年著名的“淘宝广告弹窗事件”为例,说明“广告弹窗”这一商业目标由于给用户带来了极大不便,遭到了用户强烈的反对,最后不得不放弃这个商业目标而维护用户的利益和需求。

这样的说法问题在于,它往往混淆了“商业目标”和“具体方案”的概念。为了实现一个特定的商业目标,设计师完全可以设计出许多不同的方案,其中有好有坏,有的受用户喜欢有的遭来反对。最好的结果,当然是设计师的方案及满足了用户需求,又因此实现了商业目标。

成功的例子屡见不鲜。比如Sony的PS2、Apple的iPhone,它们往往在上市的前几天内就被抢购一空,提前完成了销售计划这一商业目标。由于出色的产品设计,用户的需求非常旺盛,商业目标自然而言就达成了。

有人可能会说:你举的例子都是商业目标本来就和用户需求相符,所以当然不会出现矛盾。那么对于本来没有用户需求的商业目标怎么办?我的答案是:创造需求。作出伟大的产品,激发用户的兴趣,通过给产品打上独特的(文化)烙印,让用户对这一烙印产生认同甚至崇拜。把这一点做到极致的公司如Porsche、Apple等。还有一种情况就是产品成功地挖掘出并满足了用户的潜在需求,比如Ford汽车的诞生。Ford汽车的创始人Ford曾说过一句非常著名的话:“如果我当年跑到大街上问用户需要什么,他们肯定会告诉我:‘一匹更快的马’!”

设计师的三种能力

阿里巴巴的同事Eric介绍说,Yahoo!的设计师认为一个成功的设计师应该具备三种能力,即People、Numbers和Process。

People包括1)了解内外部用户(Read people);2)推销自己的观点(Be a salesman);3)(Real-time performance);4)Fight when you have to。

Numbers包括1)量化(Build in the metrics);2)应用正确的方法决策(Justify decisions with the right kind of research);3)不要过度研究(Don't over research)。

Process包括1)“平衡投入产出。不要过多去考虑和争论,有些方案可以先做出来,再看效果”(此翻译来源于Eric,原文为(Balance prep with implementation);2)自下而上的策略(Bottom up strategy);3)每个人都能成为设计专家(Everyone is a design expert)。

此外,这位同事还提到了设计师的职业规划问题,他所引述的观点认为,设计师以后可以朝产品经理的方向发展。在此我想听听大家的看法,你认为设计师以后的发展方向是什么呢?

丁宇,08年5月10日夜

关于

丁宇(Felix Ding),电脑Geek,狂热的爱书和爱乐分子。现在在Idean做用户体验设计咨询方面的工作。咨询Email: 。注:1)请先自我介绍;2)请确保你先看过“提问的艺术”。

订阅到RSS