关于动态网页开发语言,如PHP,ASP,ASPX等,以及对页面标准,如XHTML,CSS等的内容

YT的反广告贴子的策略

[夜晚 2008年12月16日 19:08 | by gs ]
广告帖子年年有,最近特别多
至少在几年前,广告帖子就已经存在,当时这些帖子主要是由程序自动登录论坛发布的。有这样的一些人,分析各大论坛程序的登录流程,并收集使用这些论坛程序的网站作为一个数据库,使用程序来批量访问这些网站,在上面发布广告。
对付这些注册机是相对简单的,只要设置一个比较好的注册问题就可以了,最常用的还是验证码。在以前,YT使用自己修改过的验证码机制,几乎挡住了所有的注册机器人(也许是所有的,不过没法精确计算)。在使用了信的验证码机制以后,YT的广告帖子数骤然下降。这种大好局面维持了一段时间以后,就被破坏了。
起初还以为是更新的注册机器人已经绕过了YT的验证码机制,不过据后来的情况分析,这些死灰复燃的垃圾帖子似乎并不是和以前一样是由注册机器人发布的,取代机器人的是——活人。
是活人的话,验证码就形同虚设了。到目前为止,我观察到的广告中QQ华夏的广告占了超过一半的份额。看来腾讯财大气粗啊,有如此多的钱来雇佣活人来发布广告。不过我不太清楚QQ华夏这种广告模式的运作过程,希望知道的人能介绍一下。
Tags: , ,

百度傻掉了,竟然收录503网页

[晴 2008年9月22日 01:53 | by gs ]

前段时间YT服务器挂掉了,因为那次严重的雷暴天气,据偶收到的消息,很多小区的路由都被雷劈了,于是抢修抢修抢了很久我们小区才恢复,在这段时间里YT服务器自然也就连不上网络了,即使电力供应正常也是枉然。
于是YTS断网期间我就把dns.bbxy.net指向了我在桂林的这台电脑的IP,自己做起临时服务器,并放了个紧急状态的网页,提供简单的“路过~”功能,这样就比一个简单公告有爱多了,多多少少也让用户有个发泄的地方囧= =
这个紧急状态的网页,并不对搜索引擎开放,我根据用户代理来判断一个访客是不是搜索引擎蜘蛛,是的话就不显示紧急状态网页,而以一个 HTTP 503 消息代之,并建议其在86400秒——也就是1天后——再来访问。百度的蜘蛛我就使用了baiduspider这个标识,我也亲自测试了一下,在用户代理中加入一个搜索引擎蜘蛛的代码去访问这个紧急状态页面,结果是返回 503 Servvice Unavailable

08.7.24 YT数据灾难简记

[不指定 2008年7月28日 22:27 | by gs ]
那天,偶在测试程序,不小心删除了Dv_Topic表
本来是想删除测试数据库中的Dv_Topic表的,没想到失手删除了正在使用的数据库的Dv_Topic
失手过程是,偶用鼠标右键点击表,选择删除,接着另一只手立刻按下了回车,虽然按下回车之后偶立刻发现了这素主数据库,但已经来不及了,回车已经按下去了
这下麻烦大了,在MSSQL2005管理器中找了一下,没有发现恢复功能,于是咨询度谷,发现一个Log Explorer for SQL,说可以根据SQL日志恢复被误删除的表。于是偶就把这东西下载回来,但是安装的时候却提示出错,看安装日志它竟然说无法打开某键值,而那个键值保存的是MSSQL安装路径。偶真是不知道它怎么会无法打开那个键值,明明是一个很普通的键值,没有权限限制的键值,竟然打不开,真囧。
没办法,这软件不能用,只好另寻他法了。
不管怎么样,偶先从一个月前的备份中回复了Dv_Topic表。
偶曾经修改了动网的程序,让Dvbbs.Execute方法把所有执行过的SQL语句都记录下来,不过因为使用了ASP的缓存,所以并不能完整记录所有执行过的SQL语句,不过记录大部分还是没有问题的。首先偶就从这些SQL日志中筛选出INSERT INTO Dv_Topic和UPDATE Dv_Topic的语句,然后把这些语句重新执行一遍,预计可以恢复大部分的主题数据。
接着偶就这么做了,不过完成以后结果并不乐观,有不少帖子的数据还是没有回来,另外主题ID的数据也对不上号,肯定是漏记录了某些INSERT的语句,导致主题ID这个自动编号字段乱了。
又要另寻出路。
想到动网的数据库设计是有很多数据冗余的,Dv_bbsx表就有不少冗余,于是偶就想到可以利用这里的冗余数据来恢复YT的帖子主题数据。
果然这方法很不错,Dv_bbsx表中记录有帖子所在主题的标题和主题ID,有了这两个信息偶就可以回复主题数据了。于是偶写了一个SQL,把丢失的主题数据列出来,接着插入到Dv_Topic表中。插入完毕以后,偶又写了一个SQL语句来更新Dv_Topic中记录的主题的回复数。这方法很管用,大部分的主题都恢复了,仅仅有极少量的帖子主题ID重复,无法回复(实际上要恢复也是可以的,不过偶懒得管这么多了,也就几张帖子而已,而且都素不重要的帖子)。美中不足的就是帖子的点击数无法恢复。

这次灾难影响还不算太大,因为大部分数据都回来了嘛。不过这事还是提醒偶们,在进行诸如此类危险的数据库操作时,千万不要使用键盘,使用鼠标是最安全的。
Tags: , ,

这里说的缓存是指在Web开发中的缓存
这里就以论坛为例子进行说明,在其他的应用上,比如说文章系统、留言板等地方都可以应用这种技术

在论坛中,我们在将帖子保存到数据库的时候都希望能尽量保存帖子原貌,也就是不对用户提交的帖子进行任何修改,有UBB代码就保留UBB代码,有需要转移的HTML标签就保留这些HTML标签。只有在输出这些帖子的内容的时候我们才将帖子中的UBB代码进行转换,HTML代码进行转义。
保留用户帖子的原貌是很有意义的,假如以后需要进行论坛调整,我们就需要用户提交的最原始的数据了。比如说,用户提交的帖子中有一个敏感词,如果我们不保留用户帖子的原始数据,直接把这个敏感词替换成XXOO保存到数据库里面,在将来我们想解除对这个敏感词的屏蔽的时候我们就无法恢复用户这个帖子里面的敏感词了。

既然是在输出的时候才将用户提交的原始帖子数据进行处理,转义HTML,替换UBB标签,屏蔽关键词,这样做就要进行大量的处理,而且都是字符串处理啊,很耗时间的。那怎么办呢?
办法之一就是给帖子做缓存。

在ASP中估计Application占用的内存大小

[阴 2008年7月6日 13:18 | by gs ]
通过遍历Application,我们可以很容易地得到每一个Application。但Application中可以保存不同的数据,以及数组,这就给我们确定一个Application对象占用的内存大小带来了麻烦。不过,ASP还是留给了我们一条途径,可以取得每隔一Application对象的大小,这条途径就是在ASP中不常用的JavaScript。
在ASP文件中,除了<% %>标记内是VBScript代码以外,我们还可以在此标记之外编写一段JavaScript的代码,不仅如此,我们还可以在 <% %> 中的VBScript脚本调用到我们用JavaScript写的脚本。这样就好办了,我们可以用VBScript遍历Application,并写一个JavaScript的函数来计算每一个Application占用了多少内存。
遍历Application的代码就不写了,这里只给出JavaScript部分的代码。
分页: 1/6 第一页 1 2 3 4 5 6 下页 最后页 [ 显示模式: 摘要 | 列表 ]