修改风讯4.0SP5分页代码

风讯的分页代码有四类,三类是为终极栏目准备的,一类是为内容爷准备的。关键性的程序代码是在\admin\PublicSite目录下的Public_Function.asp文件里。

用记事本打开,取消“自动换行”,代码的层次有非常明显了。从Function Get_More_Page_Link_Str这行开始是处理分页的程序。很明显,Case 1、2、3代表了分类的三种分页方式,代码很简短,修改起来应该也很容易,但是似乎没有惹这个麻烦的必要,由于分页太长产生的问题可以用样式表来解决。

这三段代码过后就是内容页分页代码。很复杂,因为它有很多判断用来控制长度。这段改动较大。改动的目的是区分上翻页控制区、数字区和下翻页控制区,给他们加上ID,以方便CSS控制。

处理分页的最后一行我改成了这样:Get_More_Page_Link_Str=”<divpage_nav””>”&Str_Link&”</div>”,让整个翻页代码具有一个ID,以方便样式表控制。

在之前的改动中犯了一个错误:为了照顾内容翻页代码,我在这最后一段代码后使用了两个</div>结尾。内容分页是没问题了,但是所有的列表分页全错了,而且导致布局的DIV错乱。原来这个结尾的容器是所有分页代码共用的,所以一定要保持它的纯洁。

SiteFactory1.0试用手记(第二阶段)

逐步发现了动易SF的一些问题:

一、上传文件管理的问题
在文章被删除,并彻底清空回收站后,所带的上传图片不会被清除,上传文件管理栏目也没有清除无用文件的选项。长此下去,势必造成文件混乱和所占空间的加大。动网的IWMS.net从一开始就有这个功能,风讯的.NET正式版本也声称会做进这个功能,所以动易如果缺少这个实用的清理功能会是一个比较大的遗憾。
动易的管理员回复说内容之间可能有共用文件,所以不能在删除时清理,但是我觉得可以采取对照文件和内容字段中文件进行比较的方式进行无用文件清除。

二、采集项目的问题
当被采集地址带端口号的时候(比如http://192.168.0.1:8888)建立采集规则的时候取得地址和进入字段采集规则都会有问题。
动易管理员认为端口号的网站是特例。我觉得也有道理。

三、采集项目转移的问题
1、建立一个采集项目,并且顺利采集完一个栏目。清除采集历史记录。
2、复制这个项目,修改部分信息开始另外一个栏目的采集。
这时候会发现他似乎把老项目中的地址库给带过来了,重新采过一遍后才开始采第二个项目新加的地址列表,而且老地址全部失败。
通过“点击浏览”这些失败的地址,发现内容发生了一些变化,比如从原来的http://www.0791.net//html/2007-07/3848.htm 变成了 http://www.0791.net/html/html/2007-07/3848.htm 。
我想这可能是一个疏漏。

四、采集中,内容采集的“分页”栏目保存、修改会造成参数的混乱。
很简单的一个测试就能发现的问题。
内容页添加一个规则,并且指定翻页设置为从”源代码中获取分页URL”,随便写点什么,存盘退出。
立即修改此规则,再看”源代码中获取分页URL”中,什么都没有,所填的字符串出现在“从源代码中获取下一页URL”中。
幸运的是,如果第一次建立规则后不去修改它,他们一切工作正常,这个问题也许是载入的时候JS把文字填错了地方?

五、分页方式中有一种模式没有任何意义。
动易现在只是简单的把栏目批量分页的机制搬到了内容分页中过来。其实“批量制定分页URL编码”在目前来说是没有意义的,因为内容页的分页至少需要两个变量:一个是当前页面名称,一个是自动递增的数字,而栏目页只需要一个自动递增的数字就可以了。
建议用链接符的概念解决这个问题。以下URL为例子
http://www.xxxxx.com/news/888.html
http://www.xxxxx.com/news/888_p1html
http://www.xxxxx.com/news/888_p2.html
在这个序列中,URLhttp://www.xxxxx.com/news/888.html是中列表采集中获得的,所以在批量设置中就不考虑他,而是让使用者设置链接符为”_p”,数字id是从“1”到“2”,判断这个参数插入点的方式就是整个URL的最后一个.的左侧。
这种处理机制可以解决大部分的分页问题,因为现在的分页一般都是这么考虑:原始URL+链接符+参数+后缀。只要在这个模式内,并且ID设置范围足够大,就可以把所有分页信息通杀。

六、其他遗憾
SF自动下载功能只能采集图片,而不能处理SWF。这个功能在早前的IWMS中就有了,不知道风讯会怎么处理。
速度的体验非常不好,在AMD2200+的本机测试中感觉机器延迟现象明显,象是老迈的感觉,没有ASP风讯和IWMS的感觉好,生成的速度还可以,但是生成一个没什么内容的首页也要将近26秒就太过分了。
标签过多,而且没有什么解释,虽然可定制的能力非常强,但是……大部分看不懂,需要SQL和XSL的丰富经验。
风讯的采集实在太垃圾,不知道新版会做成怎样。等出来以后要做个对比看看。SF的感觉好像是个RC3,而不是正式版。不过风讯的RC竟然还有功能未提供测试,不知道是不是想做成精品.

由“.NET不同版本不可共存”理解应用程序池

IIS6里引入了应用程序池概念。但是……多个应用程序池有什么意义呢?就用默认的应用程序池网站运行得不也挺好么?况且,建立的新应用程序池要在哪里才能调用呢?

首先声明,我不懂具体的官方说法,以下来自于我的主观猜想,至少我这么理解在实际工作中是没有问题的。也许,这就是技工和工程师的区别吧!

现在越来越觉得IIS不是一个简单的东西。上次是因为URL转向,这次是因为应用程序池。其实“应用程序池”的“池”概念换成“线程”就好理解了,一个应用程序池就是一个专门处理网站应用程序的线程。一般的情况下,就我们用的这些网站应用程序拜托给一个默认线程处理就够了,即使有多个网站也没关系,一个默认应用程序池强大到足够应付他们,以至于你会怀疑这个世界上是否有存在多个处理线程的必要。

但是多个应用程序池的设计可以解决一些特殊的需要。比如:一个网站应用程序拼命占用资源,你需要单独限制他的资源占用数量;有多个程序,当他们发生错误时的处理机制你想要设置成不同的处理方法:留言板如果占用CPU资源超过30%就终止他,新闻系统则不做这个限制;在一台服务器上同时存在.net 1.1和2.0的时候,你需要把他们放在不同的应用程序池中,否则他们“有你没我”。

当管理员的应用层次提升,产生了这些特殊的需要,就需要一个解决方案,否则就有人说MS的东西如何如何烂了。

每一个不同的应用程序池,就是一个独立的网站应用程序执行环境,他们相互独立,以保障网站稳定运行,即使遭遇程序死循环等故障,也不至于把所有应用程序全部搞瘫痪。网站以目录为单位,可以在应用程序设置中“创建”一个应用程序,指定他们分别加入不同的应用程序池,在运行的层面将不同资源需要的程序隔离开来。比如服务器上所有的咨询程序都进入咨询应用程序池,所有的内容管理程序都进入默认池,所有疯狂占用资源的程序都进入限制应用程序池,锁定最高资源占用率,附加清理回收规则。

理解了应用程序池这个处理机制后会发现,它可以解答一些难以处理的问题,比如.net程序只占用不释放内存,导致内存不足的问题;虚拟主机管理如何限制多用户之间的资源分配问题;如何让一个网站只能运行.NET,不能运行ASP的问题。

还有一个相当模糊的概念今天也可以澄清了,那就是程序的用户角色问题。以往分配程序的读写权限,往往就是直接给任意用户,或者用户组设定权限。理解了程序池概念,你可以为一个程序池单独新建一个账户,然后为这个账户单独设定系统用户权限,实现网站用户间的彻底隔离,提高系统安全系数。

对于至强这样的服务器,也许在程序池中增加WEB园的数量,实现多线程下的多线程处理,还会对系统效率有不少的提高呐!

没想到,搞个动易SF,把这么多以前模糊的概念搞明白了,又解除几个便秘问题,爽。

SiteFactory1.0试用手记(第一阶段)

安装版本:SF 3.13更新版

1、安装过程挺顺利,不过据说从动易老程序迁移会发生一定的困难;
2、采集功能很强大,但是开始和结束标签不能太简单,否则会抓不到内容。IWMS的采集我从来没有成功过,风讯的对内容也挺挑,动易的嘴还不算叼。最重要的是可以自定义字段采集,不象其他系统固定采集字段。采集的东西不会无故更改内容。对比测试下,分页采集的功能比独立运行的“火车头”还完整可靠,的确有过人之处。
3、默认情况下文章和栏目都不生成静态,速度慢,压力大,生成之后速度快很多。对栏目设置静态生成等选项需要对栏目按右键,一般不看说明书的人不会想到网页中按右键才能设置属性。
4、FCK编辑器会更改标点符号为字符编码。
5、如果设置了分页标题就一定要选中手工分页,否则就没有分页效果。用标题式分页就必须将第一页标签放在最开始位置,否则设置两个分页,会生产出三页来,并且牛头不对马嘴。
6、采集生成速度与风讯ASP、IWMS差不多。采集的时候CPU经常99%。采集后的文章不可以默认审核通过,在管理中只有一页一页地审核。
这个问题动易有了官方解决方案:

问题:采集文章不会自动审核?
解决:在添加或修改采集项目时,在字段设置时,把状态字段的值设置为指定值:99就可以了。99就是代表终审通过的状态码。

7、如果是复制的采集规则,那么上次的采集地址还在,并不会清空。当新规则运行的时候会再来一次,并且地址是错误的。这个问题估计会得到修复。
8、如果嫌后台列表每页的文章数太少,不适合批量操作,可以把每页显示数调大。在动易后来,这个参数是可以随时调整的。这个设计不错。
9、删除文章后,其所附带的附件不会被同时删除,也没有清理机制。

动易SiteFactory与风讯dotNetCMS的初印象

这两家公司在CMS的asp阵营中可以说是两个大脑袋(巨头)。以前因为动易安装是要注册组件的,而风讯是开放源码,所以着重了解了下风讯。因为研究出了将免费版升为SQL版的方法,所以将风讯并且实际应用了两个站,虽然感觉有些问题有待完善,但是总体感觉还是不错的,特别是ASP代码修改起来相对容易,风讯将样式和标签分开的做法比较适合我的思维方式。

不过,ASP毕竟是老了,现在这两家都推出了自己的asp.net产品。动易的叫SiteFactory(简称SF),风讯的叫dotNetCMS(权且叫DNC)。DNC在RC1、RC2版本出来后试用了一下,只是为了感受一下后台的氛围,结果比较失望,没有什么让人兴奋的地方。ASP版本的一些问题,比如编辑器依然存在问题,一些基本的东西还是没有改变,似乎是用c#语言重写的ASP版本。从动易和风讯的论坛来看,动易明显在这次升级中占上风。因为C#比ASP复杂得多,熟悉asp.net环境的学习过程也相对困难,所以我认为风讯即使在未来的一周之内开放源码,愿意了解它的人也不会很多,除非……用了他的ASP版本,没有什么其他的升级选择。

了解动易SF是从说明书开始的。说明书写得很专业,计算机专业书通行的通行风格。相比之下风讯的就差远了,一个没有什么清晰条例的WORD文档而已。还有一个显著的变化就是两家公司的网站差距也越来越明显,动易此次改版一去往日的陈旧感觉,而风讯就好像要倒闭一样没有任何变化,及时是网站的消息、教程也都大半年没有更新了。

两个程序的发布也比较有趣,虽然记得不是很清楚,但是给我的印象就是动易是追上来的。动易先是开放ASP源码,请安全组织测试自己的安全性,风讯为了应对就放出了自己ASP往期产品的SQL版。然后动易率先开放测试NET版本,风讯在压力之下也赶紧发布测试。3月6日动易发布正式版,12日风讯也赶紧发出正式版,也许是底气不足,免费版本还要推后到22日。表面上看似乎是为了商业利益考虑,不过我认为这是没有底气的表现,也许他需要时间添加一些激动人心的东西,以挽回慢一步的尴尬。

从已经获得的信息看,两个.NET系统的都不默认支持ACCESS。确实,功能这么强劲条件下很难有闲情做到同时兼容两种数据库。风讯不知道最后会如何。

动易SF中更改栏目概念为节点,建立模型概念。其实这种概念重组很象当初风讯将标签和样式拆分的做法,突破了以前CMS的弊端。而从风讯目前资料看,在这个问题上没有突破。

动易SF模型可以让用户自建数据表,自定义字段。这很激动人心,特别是对数据库编程不在行的设计人员。难能可贵的是才采集功能中也能逐字段按自定义模型采集,这解决了风讯一直困扰我的问题。而且采集可以后台执行,不用担心ASP下的意外中断。编译执行的程序和脚本确实不同。

动易的标签设计肯定是受了风讯自由标签的启发,虽然我还没有亲自实践,但是从介绍看,只要掌握了这种标签建立方法,会比现有的风讯自由标签更灵活。

动易的标签建立是我最疑惑的部分。ASP版本下我很难入门,这次的SF说明书也没有很直观的解释标签系统,我比较担心它没有风讯的样式加标签形式直观易懂。不过如果仅仅是这么一个问题的话倒是可以接受,毕竟好用和易懂之间总是要找个平衡点的。

动易详尽的制作精美的使用说明,改版后的网站,论坛的超高人气,让人觉得可靠。风讯每次发布新程序都喜欢拖在最后时刻,宣布发布测试版、正式版也感觉是在动易的紧逼下匆忙进行,让人对其稳定性心怀猜测。

IE下的浮动造成的右边距问题解决方法

设置一个宽800像素的容器,然后让容器里的A元素左浮动。一切正常。

这个800像素的容器如果设置左内填充(比如50PX),问题就出现了:容器的右边似乎出现了一个50PX的占位。而且这个占位的变化很不确定,似乎跟A的长度有关。

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml“>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
<title>无标题文档</title>
<style type=”text/css”>
<!–
.px800 {height: 50px;width: 800px;background-color: #FFFFCC;padding-left: 50px;}
.px800 a {line-height: 50px;background-color: #FF9900;font-size: 14px;padding-right: 20px;padding-left: 20px;float: left;}
–>
</style>
</head>
<body>
<div><a href=”#”>上山打老虎</a><a href=”#”>上山打老虎的人</a><a href=”#”>上山打老虎的人的枪</a><a href=”#”>上山打老虎老虎的人的枪的子弹</a><a href=”#”>上山打老虎老虎</a></div>
</body>
</html>

解决方案是:在A的样式中指定不换行:white-space: nowrap ,问题就消失了。在firefox下没有这个问题,如果设置A右对齐也没有这个问题。我不知道这个现象是不是已经讨论过了,能不能给个解释,是什么造成了这个莫名其妙出现的占位。如果他确实产生了内填充,那么设置一个不换行样式应该还是不能解决问题的啊。恳请有识之士赐教。

为了便于不使用IE6的同学查看效果,贴上对比图。


存在问题的图

加上禁止换行后的图