收到了ubuntu的光盘

9月23号提交的申请,今天在宿舍楼下看到了邮件,25天,还算正常。去ubuntu的网站查了下,是28号通过的。以前不少同学都有,本着需要的原则,一直没申请过。上次发现学院机器居然有光驱,就搞了一个。

有美金做支持就是牛,说申请10张也很容易,但审核时间会长点。

ubuntu envelope

背面写着“按运装手续要求,我们为每张光盘安装申报价值0.13欧元”。

ubuntu envelope

照例还是一张盘和贴纸。

详细的申请方法可以参照ubuntu中文站的wiki

采用新的防Spam方法

前阶段在一些朋友的建议下,去掉了日志评论的验证码。说老实话,这也是我一直想做的,可无奈这又是抵御Spam最好的方法。而后,安装上Spam Karma 2,也是目前最好的防垃圾评论插件,几天下来效果还不错。

问题是,我发现他的功能过于强大,受宠若惊;此外,还会自己加三个表,记录Spam、logs还有很多特征信息。长此以往数据库会变得奇大无比,对于以后的升级、搬家都会有麻烦。我感觉这就是sk2的尴尬,过小的站点用不上如此强大的功能,而大的站点则会因为存的Spam过多,数据库过大而放弃。

这种类型的插件基本不可信任,只能自己寻找办法了。从自己动手阻止 WordPress 垃圾评论这篇日志得到启发,因为Spam的原理是找到页面里的textarea就会自动去填,我便伪造了个隐藏的,如果有内容,那肯定是Spam无疑。但这样做并不保险,如果Spam使用xml-rpc的方法发布的话,就无法防御了。对于wordpress的这部分,我并不了解,只是推测。

尝试一天后,发现两条Spam。对我来讲,国内的人肉Spam还不会关注我这样的站点,99%的垃圾评论都是国外机器友人自动发布的,于是便添加了评论审核。对于没有任何中文字符的评论,将不能通过,请留言的朋友们注意了。但这应该也只会影响到少数纯英语或纯表情的朋友,谁会留个言一个中国字没呢?

实现方法很简单,在wp-comments-post.php文件里加入下面两行即可。但改动wordpress源代码的行为对于以后的升级肯定是不利的,可以考虑做成插件。目前太简单,先看看效果吧。

if (!preg_match('/[\x80-\xff]./', $comment_content))
  wp_die('Sorry, comment without a single Chinese character cannot be accpeted!');

10月17日更新:
在wp-comments-post.php中添加代码并不能有效防止robot,因为他是直接用xml-rpc,并不在textarea中填入数据,所以也不会走这里的验证。我现在用的是自己写的一个小插件,在wp_blacklist_check的函数中加入认证,并且屏蔽了href和strong的使用。另外,对于黑名单匹配的记录,不再识别为垃圾评论写入数据库,而是直接拒绝,这样一了百了。目前效果相当好。

Servlet Confusion 1 — 相对和绝对路径

相对*.do,绝对/*.do。

  • DD(web.xml)文件中的url-pattern只能绝对路径,即/*.do,根地址为应用目录。
  • <form action=”” >中的路径一般写相对,即为DD文件中定义的servlet-mapping的url-pattern。例如DD中<url-pattern>/proName</url-pattern>,action=”proName”。若action要写绝对地址,则必须从服务器根写起,因为container是从server开始分析的。例如action=”/webapp/proName”。
  • HttpServletResponse.sendRedirect(String)
  • 参数可以指定为相对路径、绝对路径或其它WebURL。

    假设通过http://localhost/myApp/cool/bar.do请求到达该方法所属的Servlet。

    相对路径:response.sendRedirect(“foo/stuff.do”)。容器相对于原来请求URL的目录加参数来生成完整的URL—http://localhost/myApp/cool/foo/stuff.do。

    绝对路径:response.sendRedirect(“/foo/stuff.do”)。容器相对于Web应用本身加参数建立完整的URL—http://localhost/foo/stuff.do。

    其它Web应用:response.sendRedirect(“http://niye.name)。容器直接定向到该URL。

  • HttpServletRequest.getRequestDispatcher(String)
  • 参数可以指定为相对路径或绝对路径。

    相对路径情况下生成的完整URL与sendRedirect方法相同。

    绝对路径与重定向不同,容器将相对于Web应用的根目录加参数生成完整的URL,即:request.getRequestDispatcher(“/foo/stuff.do”)生成的URL是http://localhost/myApp/foo/stuff.do。

先写这么多,其他基本类似。