丁宇 | DING Yu

Lonely Thinker 0.4完成及0.5展望

Lonely Thinker简介

Lonely Thinker(LT)是我编写的一个小型blog系统,这一系统所追求的目标是用户体验至上、功能简单、架构轻量。至于可扩展性,至少在目前的计划中不再考虑范围之内。你可以将LT的目标理解为B/S架构且经过功能简化的iWeb

Lonely Thinker 0.4完成

从07年11月26日发布0.3开始,LT就正式步入了0.4版的开发轨道。当初给这个版本设定的开发目标有三,一是确定每个版本升级所遵循的原则,以及版本号的规则;二是完成“iconment”功能;三是更新“Spam防火墙”。

现在回头来看这三个目标均已达到(当然从功能的角度来说,第一个也算不上什么目标)。其中“iconment”功能增加又最终去掉了评论时上传头像的功能,转而鼓励评论者注册Gravatar。而“Spam防火墙”经过数次更新,也已初步显示了一定的效果:在最近的22天之内,它成功地拦截了共779条spam,平均每天约35条。而在11月初的4天内,它更是抵挡了平均每天90.75条spam的进攻!

疯狂的spams疯狂的spams-日志文件一角

在LT 0.3.14中,我大幅度改进了在“有效地阻止SPAM”一文中所提到的方法,完全重写了Comment的Model,现在Spam防火墙有了自己的Spam数据库、校验规则和校验机制,并且这三者是完全分离的,也就是说你可以很容易地增加一条校验规则而不改动其它任何代码。这让我觉得很酷!

Spam防火墙的部分代码Spam防火墙的部分代码

当然偶尔会有漏网的spam(今天一下子漏了好几条),这工作任重道远。

Lonely Thinker 0.5展望

LT 0.5的开发目标如下:

开源

这是优先级最高、最重要的目标。本来说要在08年内开源的,但由于时间及精力的关系,这个目标只能拿到09年实现了。

现在的程序架构很不合理(懒得先期构思的结果)、程序运行效率低下、代码注释不全等等问题不一而足。开源的目标之一,就是利用开源的机会强迫自己重构代码。

为了开源,需要做到:1)重构;2)添加注释;3)编写相关文档;4)在Sourceforge、Google Code或Cakeforge上给项目安个家。

升级Spam防火墙到0.2

主要改动包括:1)将拦截下来的spam自动添加到spam数据库中,已被下次判断留言是否为spam时使用,把Spam防火墙变为一个自给自足的系统;2)考虑集成一些数学算法(比如贝叶斯)来判断spam。

“访客嗅探(Visitor Sense)”

这个功能很有意思:想象一下你通过查看日志,发现最近由于一个网站推荐了你的一篇文章,给你的站点带来了许多的流量。那么从营销的角度来说,你可能希望对这部分访客做一些特殊的引导-比如有针对性的显示一段欢迎辞,这样会让他们或多或少有一种“宾至如归”的感觉。

我打算这样设计这个功能:1)设定一些规则(比如Referrer URI=http://dingyu.me/about),然后设定这些规则之间的关系(AND或OR),最后在设置相关的动作(比如显示一段欢迎辞,或者显示与当前文章相关的信息);2)规则的类型以及规则间的关系是预先定义好的,使用时进行选择。比如规则的类型只能包括Referrer URI、访问的时间、访问的IP等等,规则间的关系只能是AND或OR;3)动作的内容每次都是完全自定义的。这是为了保证更好的营销效果。

上述概念类似于下图:

Apple Mail中的规则设定Apple Mail中的规则设定

 

刚刚发现的:落伍者上的一个朋友对LT的看法


  1. fei @ 2008-12-04 04:47:17 +0800:

    - -
    看了下,你说的落伍者的朋友就是我发的帖子。我汗…………

  2. fei @ 2008-12-04 04:53:06 +0800:

    用gravatar当然是好事 这点支持
    某种程度上,这有益于用户最多的wp社区和其他社区的用户的交流,体验上更能达到“无缝”的感觉
    Spam数据库、校验规则和校验机制 三者独立,很赞的想法。但是在实现上,是用三层过滤还是可以自选组合的过滤方式?每多一层过滤,其实就是多跑一次代码。
    还有就是akismet和mollom那样的防spam数据库,之所以流行开来,也有个原因是它们有非常庞大的后台统计数据做支撑。达不到一定的数量级的时候,效果就没那么好。如果每个LT的用户都自建一个数据库,浪费资源,效果也不一定令人满意。但是选用类akismet的方式自建?那积累起来也很慢……
    个人建议lt就不要弄什么spam数据库了,直接接到akismet之类的去就好了。个人更喜欢mollom的,当然选哪个见仁见智。本地完全通过规则来过滤好了。

    恩,就先这样。等着看邮箱里会不会收到回复。

  3. 丁宇 @ 2008-12-04 04:53:08 +0800:

    [emoticon:angel]看了你的第一条评论我还纳闷呢-怎么会有这么巧的事情!原来如此 [emoticon:glasses]

    开源CMS里边我最喜欢Drupal了,用过它,从4开始用的。

  4. 丁宇 @ 2008-12-04 05:06:11 +0800:

    Akismet是要用的,但不是实时的,主要是出于速度的考虑。我打算采用cron的方式,定期从akismet上抓规则到本地数据库。
    另外不存在“三层过滤”,因为校验说白了就是跑规则,几层过滤取决于你有多少规则,规则越多速度肯定越慢,不过现在LT还远未走到性能优化的地步,现在blog的流量很小,我也没那个需求。
    看了你的blog,Drupal的主题很清爽!

  5. fei @ 2008-12-04 05:34:55 +0800:

    [emoticon:big_smile] 热烈期待~

  6. fei @ 2008-12-04 04:46:59 +0800:

    搜drupal的时候搜到了这里
    却发现不是drupal的……
    自己也正在借用drupal的理念写一个blog程序自己玩……

    - -|| 热烈期待LT的完成。

  7. 蓝蓝小雪 @ 2009-02-18 05:27:08 +0800:

    好样的,支持!

  8. 龚蓉蓉 @ 2009-03-08 02:15:43 +0800:

    葱白的说~~有机会要好好向你请教下。。。 [emoticon:glasses]

  9. xuanfei @ 2009-03-23 08:28:37 +0800:

    支持 期待中
    需要帮忙测试 可以E-我:)

  10. Penny @ 2009-04-01 11:39:16 +0800:

    Hi,Man..
    我很欣赏你,不是因为你有头脑有技术,而是我从的BLOG的风格可以看出,你应该是一个对生活挺有自己看法和欣赏角度的人.希望能够跟你做个朋友,我是在一个非常偶然的机会下浏览到此的.我的名字叫张弦. 看来有点巧合哦. 我是广东人. PS: I`m a Man.
    看到留言后,有兴趣的话就給我一只Mail吧,我等着喔..
    有空联系一下.