無標題文檔

让我们一起忽悠 Spam 机器人吧

很多人的 Blog 都被 Spam 机器人骚扰,有的甚至已经到了无法容忍的地步。这是一种不幸,同时也是一种荣幸。不幸的是那些无聊的 Spam 尽是发一些广告消息,而荣幸的是它给我们带来了流量。

很庆幸我的 Gracecode.com 的流量还不足够引起 Spam 机器人的重视。但是防患于未然,毕竟不是每个 Blog 都是喜欢垃圾评论的。下面根据我看到的、学到的结合我自己的经验在不影响用户体验的前提下说说防止 Spam 的「小窍门」。

别和我谈论如何美化验证码图片,因为我想网站访问者和我本人都不喜欢那些图片的。

防止 Spam 垃圾评论

Spam 其实是很傻的,傻到它似乎无法去辨认 Javascript 和 CSS。防止它们我们只要在 from 中加入一个空的 textarea 就可以了。然后运用 Javascript 和 CSS 将这个 textarea 设置为隐藏就可以了(现在主流的浏览器都支持 CSS 和 Javascript)。

然后我们在服务器端测试这个 textarea 是否有输入,如果有输入那么就十有八九是 Spam 机器人。因为普通「人类」访问并提交这个 from 的时候他是无法看见这个 textarea 的。

防止 Trackback Spam

有时候道理一点就通。那么类似于 Trackback 这样的外部可写操作就非常的简单实现防止 Spam 了。比如我们设定一个 Trackback 的链接地址的 HTML 代码如下:

<a href="http://www.gracecode.com/trackback/blackhole" 
    id="trackback_id">Trackback</a>

然后根据当前的文章内容(比如 ID 等)运用 Javascript 将这个 trackback_id 的 href 值修改成正常的 Trackback 的地址就可以了。让 Trackback Spam 掉入无尽的黑洞里面吧!

总结

上面只是一点的「小窍门」而已,非到万不得已千万不要让用户输入那些该死的验证码。我个人认为这样在麻烦用户的同时,同时也麻烦了自己(很多人在花心思思考如何将自己验证码做得美观)。

最后,让我们一起对付 Spam 机器人吧,包括 Gracecode.com 在内的广大 Blogger 不怕你!

使用 Gtalk 实时关注网站的留言情况

前几天 wiLdGoose 兄弟 打电话给我,说他的服务器被网监给查封了,原因是因为某个虚拟主机下的论坛发布了「不和谐」的内容。他现在对用户留言等非常的关注,生怕再次出现这些内容,我想这是无可奈何的事情。

当我和他聊到我的 Blog 有没有留言审查功能的时候,我回答是没有。他很意外的说这样会不「安全」的,随时可能会被和谐。

留言的审查我个人感觉对于我那么「懒」的一个人来说会非常的麻烦。而且加入留言审查以后用户留言每项都要审查通过,对于用户来说他们的留言会不能马上看见,而对于网站的管理人员核定每项的留言是否「合法」,这也是一件非常繁琐的事情。

我想了一下找到了一个折中的办法。

通常我们使用 RSS 输出每天更新的文章聚合。而事实上用户的留言内容也可以通过 RSS 来输出,然后点击这条信息跳到用户所留言的那条文章详细页面中。最后可以根据留言的「合法性」决定是否删除用户留言。

制作和编写这样的 RSS 程序我想对于一般的程序员来说是非常容易的事情。但是如何将 RSS 输出的内容实时的反馈给我们管理人员呢?我们有 RSS 阅读器,但是我们不可能每天重复的打开阅读器关注用户的每条留言,而我这个时候想起了一个名叫「 哪吒 」的服务。

哪吒 服务提供了实时通知 RSS 更新的服务,它支持 MSN/Skye/Gtalk 和 Email 的实时通知。这样我们就可以在 哪吒 上注册一个帐号,然后一边开启 Gtalk,一边随时关注网站的留言情况。

出于安全性考虑,你也可以设置成此条 RSS 为私有订阅。这样你就不用在 Blog 本身开发留言审查功能和邮件通知等功能,节省了我们大量的重复劳动时间。

最后,比如我绑定的 Gtalk,用户如果有新的留言。它会跳出如下的窗口通知你,你的网站被人踩过了:

https://friable.rocks/_/2007_10_30/1193739447.png

选择 PostgreSQL, MySQL, Oracle 数据库我之见

最近公司的项目选择了一个全新的数据库系统作为开发平台,我也正在努力的适应在此数据库下的开发是使用。对于很多用户(包括我们程序员)都对于选择何种数据库往往一头雾水。而我以前也经历过此阶段,下面我想谈谈我的看法。

由于本人只是使用过 PostgreSQL, MySQL, Oracle 这三种数据库。这三种数据库也非常有代表性,下面的讨论我只针对这三种数据库而言。有关其他的数据库请大家自行推敲。

版权问题

MySQL 和 PostgreSQL 都是开放的数据库系统。MySQL 的使用协议比较的复杂,从简单的方面看,它是基于 GPL 协议的(为 MySQL 的用户可以得到 MySQLAB 的支持,并使用 MySQL 协议)。PostgreSQL 系统是完全基于 BSD 协议的,这这一点它比 MySQL 更加的「自由」。

GPL 协议要求用户必须公开你修改以后的代码。而 BSD 协议则可以自由的用在商业用途上,无需任何的限制。

而 Oracle 是完全一个商业的系统。它的使用完全是需要付费的,并且不能修改、拷贝其代码和程序甚至文档。

成本

成本相对版权而言。按照上述三种的数据库系统,如果按照费用的计算来讲。Oracle 的支出是最高的,MySQL 相对来说所付的费用稍微少一点。PostgreSQL 则是完全免费的。

支持

对于数据库的后期技术支持是非常重要的。Oracle 数据库有由于是商业产品,所以他的支持自然非常的周到。按照国内的情况,MySQL 和 PostgreSQL 的支持基本上是依靠网络和社区。

吞吐性能

从技术的角度上将,由于三种数据库的应用对象不一样,所体现的性能并不相同。Oracle 适合中大型的系统开发和维护,性能适合海量数据的存储。而 MySQL 则是适合中小型的系统快速的开发和维护,PostgreSQL 则标榜自己是「功能最全的开源数据库系统」,性能自然不俗。

而我从我个人的使用经验来说,打一个形象的比方:Oracle 好比卡车、MySQL 好比皮卡、而 PostgreSQL 好比是客车。

稳定性

对于稳定性能来说,这三种数据库都可以适应 7×24 小时的考验。相对性能来说,我的个人经验是 Oracle 的稳定性是最好的,MySQL 其次,而 PostgreSQL 次之(相对而言,这三种数据库的稳定性都是很优秀的)。

总结

说道这里,你可能对于这三种数据库还是难以抉择。我的个人意见就是,按照实际的项目的需求、规模和成本考虑出发。

Oracle 是大中型项目的首选,而它的支出比较高。相对经济的替换方案是 PostgreSQL(但它需要更多的人工支出)。

对于中小型的项目,MySQL 则完全是可以胜任的。Lamp 系统在开源界的性能是有目共睹的。

而对于程序的开发来说,Oracle 常和 Java(JSP)搭配,MySQL 则一般和 PHP 搭配,PostgreSQL 则可以和多种程序链接。

附:

一家之言,仅作参考之用。下面我摘一下来自 searchoracle.com 的一则经典的回答

PostgreSQL, MySQL, Oracle or other? ===

> QUESTION POSED ON: 26 April 2002

Which should I choose: PostgreSQL, MySQL, Oracle or other? The application is not Web-based, and the database contains 50 tables with the biggest table containing 18 million rows (6GB total). The engine should have:

good backup/restore to/from file service # ability to lock at row level # fast inserting, updating posts

> EXPERT RESPONSE

Which database version do you select? That\'s a tough one. It all depends on a lot of different factors. You\'ve listed a few factors, but not all of them. The biggest one is price. How much can you afford? Oracle will cost much more. And MySQL is free as long as you follow the GPL. You state that you want the ability to lock at the row level. Oracle is one of the best at this, but MySQL with InnoDB is making progress. You also stat that you want fast inserts and updates. For that, I\'d go with Oracle. A properly configured Oracle database will run really nicely.

Other factors to consider are the expected number of concurrent users, the expected data growth, and that application. Like I said, there are lots of factors to consider. In these cases, it\'s not a bad idea to hire a consultant to help in your determination so that your company doesn\'t waste time and money.

我该选择 PostgreSQL, MySQL, Oracle 还是其他?(注:时间为 2002 年 4 月 26 日)

我的项目不是一个 Web 项目,数据库大概有 50 个表最大的可能包含了一千八百万条数据(大概有 6G 的数据)。我该选择什么数据库呢? PostgreSQL、MySQL、Oracle 还是其他?所需的要求必须包含:

良好的备份/恢复系统 # 具有行锁定功能(lock at row level) # 具有良好的性能

专家回答:

到底您该选择哪个系统?这个问题非常的难以回答。这是居于不同的需求而定的。您只是列出了一小部分的要求,并没有全部列出您到底需要什么。最大的问题可能是成本的问题。您的预计支出是多少呢?Oracle 可能需要您更多支出。MySQL 是基于 GPL 协议的,所以它的支出相对少些。您需要有行级锁定功能(lock at row level),我想 Oracle 是最好的权责,但是 MySQL 包含了 InnoDB 以后也具有此良好的性能(译注:自 MySQL 3.2 以后已经具有此功能了)。再次,您需要有良好的性能。老实说,我更倾向于 Oracle。具有良好配置以后的 Oracle 性能会让人非常的满意。

还有其他的需求就是有多少的用户使用您的数据库,数据库的增长幅度,还有就是其上的应用。想我上面所说的,需要考虑的因素有很多。我并不能完全决定您到底使用哪个数据库,我想您或许需要一个顾问评审您具体的应用了以后才可能最终决定下来,这并不需要很多的时间和投入。

这三种数据库近年的趋势图

https://friable.rocks/_/2007_10_29/1193654980.png

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章