论坛: 网站建设 标题: 性能表现优秀的新CGI文本论坛 复制本贴地址    
作者: oti [oti]    论坛用户   登录
aoming认为到目前为止,问题已有明确答案,本贴已被冻结,不再接受更多的回复

CCB文本论坛程序架构进行了较长时间的规划,克服了传统cgi文本系统的绝大多数弊病,自10月份测试版本发布以来,现在不仅获得了好评,而且进入持续,快速升级阶段。

1 CCB是安装最简单,最智能,的CGI软件,良好的兼容性,自适应各种空间安装几乎是全自动的。

2 CCB数据目录和源代码是完全分离的,升级最简便,升级就是覆盖源代码,不需要任何设置,您原有的数据也不会受到任何影响,维护和备份带来的好处就更不用多说了。

3 CCB象ASP一样,支持多个域名同时访问,空间搬迁,域名更换,从来不需要从新安装,数据和附件也永远不会收到影响。

4 CCB的数据目录存放在一个随机目录中,简单而有效的堵住了传统的文本数据漏洞。CCB的系统管理账号配备两个密码。如果破解一个密码的难度设为10,同时破解两个密码的难度是相乘的关系,难度提高100倍,密码均采用了MD5加密

5 CCB增加了简单而有效的附件防盗链技术, 节省网站的流量。
CCB支持文章中一次上传多个附件,数量不限。

6 CCB运行不仅速度快,而且最大的特点是运行稳定,CCB的高效文本处理技术走在了国内的最前沿。

CCB用系统级IO逻辑指针处理数据,国内率先实现了轻松处理海量数据,即使有几十万个帖子,都可以做到所有页面都保持原来一模样的速度运行稳定不变,也不会增加任何CPU消耗和文件读写量。这和CCB的程序结构和数据结构优化分不开的。
这个也和其它的一些高速度或生成静态页面的的asp php cgi文本论坛有着本质的不同,大家知道普通的论坛特别是基于文本结构的,虽然也有些asp或php的海量数据浏览速度也确实非常快,但大多数只是前几页速度快,发帖子或往后翻页速度都慢慢的降下来, 随着网站越来越火爆,帖子积累到一定程度效率会急剧下降,运行变的很不稳定,甚至崩溃造成丢失数据。

7 CCB功能非常强大,有很多独创性的功能(当然,功能强大不意味着功能繁多和全面,还有后续功能需要继续开发补充:)可持续扩展能力强,因为CCB的程序架构决定了,需要较少的改动就可以增加新的功能,开发快速而且不容易出现新bug!

8 CCB采用非常小的等字节索引文件,每个会员的文章全程记录在索引上,非常灵活,高效的用来实现了个人文集,个人精品集等其它文本论坛很难实现的功能。

9 灵活多变,扩展能力极强的功能模版系统,大家还能认出
http://www.sun126.com/bbs/ccb/index.cgi?t=digest&class=5
http://www.sun126.com/bbs/ccb/index.cgi?class=3

是普通的论坛吗?其实还是官方论坛,只是选择换精品导读模版来显示了,改动模版毕竟比改动主程序方便的多。当然,CCB目前模版开发力度严重不足,急需合作支持,上面只是个演示。 等我腾出时间,也许会一口气做它20套模版,可以模仿任何论坛的界面,是比较容易的,我美工水平太差:)还需要大家多帮助,支持,CCB早晚会美起来,而且CCB具备魔术般的模版页面灵活变换,在线切换功能。CCB的模版是以插件方式工作的,您可以开发自己的模版和官方模版互不冲突,只要放到指定目录template下CCB就会自动识别,您的后台就多了一套新的模版!

10 CCB 设计了即插即用的插件接口,可方便移植大多数的经典插件或单独的游戏,主程序升级互不受影响。

11 CCB还规划了即插即用的其它扩展功能接口,可以方便的捆绑和CCB有关或者无关的扩展功能插件,操作简便灵活,不需要修改主程序, CCB是完全开放的架构,始终在考虑如何给HACK爱好者们带来方便!其实整个CCB架构就是按照各种插件的组合体设计的,便于打包和拆卸。

12 CCB每个文章只生成一个文件,根据附件量大小不同,比传统文本论坛节约1/3~1/2的空间! 而且减少了的文件读写工作量。

13 CCB可靠性高,不会发生经常丢失数据的怪现象,数据安全性好!
CCB的列表文件非常小而且采用指针定位读写,文件读写效率非常高,CCB的列表文件不仅不容易损坏,而且不怕损坏,你可以测试一下,人为的删除CCB列表文件,系统会在极短的时间内自动恢复!

14 CCB编码方式设计合理,可以运行在国外不支持汉字的服务器上,良好的兼容性使得繁体用户也可以正常访问您的简体网站和注册,而不会出现乱码,也不会出现白屏,几乎不需要修改源代码就可直接转换为繁体或utf-8版本。

15CCB论坛自带静态页面主页生成,html模版可以随意编辑和更换

文章管理系统,由论坛的"精品文章导读+主页"构成

属于论坛的结构范围 则由"论坛+精品导读"构成

平时只要维护好你的论坛,CCB系统会自动从论坛中抽出精品文章构建主页和文章管理系统,管理简便。

模版1:
http://www.sun126.com/index.htm

模版2 http://www.sun126.com/index.html

模版3,4,5。。。略

下载地址:
http://www.sun126.com/ccb4152.zip


模版做的不好看也不精细,只是拿来说明问题,您的主页可以千变万化Dreamweaver fontpage随意编辑修改和论坛自动结合起来。

地主 发表时间: 04-02-12 20:00

回复: Aoming [aoming]   版主   登录
支持一下
up∪
居然叫Perl为“波尔”,好听,伟大:)
以后干脆叫“波儿”好了,更多几分亲切

"CCB采用非常小的等字节索引文件,每个会员的文章全程记录在索引上,非常灵活"――这个。。目前基本上都是用的索引形式啊

论坛的斑竹不错,比较有实力

[此贴被 Aoming(aoming) 在 02月12日21时42分 编辑过]

B1层 发表时间: 04-02-12 21:23

回复: Aoming [aoming]   版主   登录
  CCB系统开发历程
  摘自 中国CCB论坛  麻辣  2003-08-09.19:16 http://www.sun126.com/bbs/ccb/index.cgi
CCB系统开发历程
开始学perl的时候也尝试改一些其他的cgi论坛,由于架构的限制很难扩展和改进,我最后决定放弃了
(这个决心很难下的,我以前改的东西都扔掉了)。我请教了不少学计算机专业人士,花了几个半年多时间从头到
尾彻底了规划的本程序,到最后真正写程序仅用了一个半月。当然,需要感谢的是我更多是学了不少前人cgi论坛的经验,也深知如果程序结构天
生不合理的话,会后患无穷,升级和维护会很麻烦的。但出于兼顾perl运行效率考虑本程序仍然采用的是传统的面向功能-结构化编程方式(非面向对象.)

我现在的程序核心部分都做好了,正在进一步测试和完善,为了以后增加功能和改变界面变得轻松,为了
留出充裕的扩展余地,我的主要精力一直在反复规划程序架构和数据结构部分,中间也曾经多次修改。处理界面是我的弱点,正寻求美工帮助与合作
请多提宝贵建议,目标是以后方便开发新模版,主程序尽量不动或者少动了,便于维护

#///------------------------------------------------------------------------------///;程序原始来源:&#///------------------------------------------------------------------------------///

国内流行的一些CGI论坛和perl编程书籍示例。但绝大多数代码都是我自己渡过了无数不眠之夜
一行一行写出来的,和大多数论坛以修改别人论坛为蓝本有本质的不同,现在的程序结构是在朋友
的帮助下多次规划自行确定的。现在的CCB文本系统程序结构来源于独创.

#---------------------------------------#
#
其中涉及核心的部分代码:
#---------------------------------------#

1每个脚本前面的路径BEGIN自动识别
---来源于雷奥论坛http://bbs.leoboard.com/cgi-bin/leoboard.cgi
经扩展改进增加了CCB的特色-全自动安装程序

2快速文本搜索引擎...
---来源于《perl参考大全》13.1章文本数据库理论,自行开发独创。没有先例.

3新型高效文本数据库系统(不限制贴子数量速度奇快)...
---来源于《perl高级编程》《perl参考大全》自行开发独创,没有先例

CCB论坛工作方式和其它论坛不同,不会象其它文本论坛那样突然发生大批量丢失帖子的现象.

4template模版扩展系统
---来源于中国 perl 协会http://www.perlchina.net文章[perl全面编译]受的启发和的影响,但CCB系统属于“功能型”模版这个没有先例,不是纯html模版,自行开发独创。好处是速度快灵活性大.

5复杂模式树形风格模版
---来源于独创
6其它,自行完成,独创.

#--------------------------------------#
#

其它附属功能部分部分

#--------------------------------------#
1无限板块分类无限板块分类及分组权限..---来源于自行开发独创.

1每个文章一次无限图片上传..
---来源于德国的Gform论坛---在中国perl协会http://www.perlchina.net受的启发.

2悄悄话谈出窗口
---yuzi论坛bbs3000系统http://bbs.yuzi.net/

3stmp无组件邮件发送代码
---来源于雷奥论坛http://bbs.leoboard.com及IDB论坛http://www.xmidea.net
8社区娱乐部分插件---来源于IDB论坛http://www.xmidea.net自行捆绑

。。。。。其它,代码大多自行完成,独创.

#///------------------------------------------------------------------------------///;
特别感谢学习当中给我帮助和启示的朋友
#///------------------------------------------------------------------------------///#

B2层 发表时间: 04-02-12 22:30

回复: Aoming [aoming]   版主   登录
  [推荐]本人对CCB的一些建议...
  摘自 中国CCB论坛  liverpoolcn  2004-02-04 14:23 http://www.sun126.com/bbs/ccb/index.cgi
����首先,本人目前是用LB的,一年多了,出了三个美化版本。CCB在制作期时我就有听说了,第一个版本也见过,看到有这样的发展速度为sunluck 感到高兴,呵呵。

����下面谈谈自己的一些建议。


・界面没有做到统一,而且各分栏目没有统一的颜色规划,让人看起来好像不是在一个论坛,没有独立特色美感。

・输写发言位置还是应该在中间,否则会让会员们养成侧对显示器的习惯的,这可误人子弟啊。

・有一些地方突破了中国论坛传统,但是作为一个希望全面超越LB的论坛来说,用户数据存储这里绝对是最好的突破口,这个突破口是对于服务用户而言的,我当然知道对于论坛内核来说最大的突破口就是资源占用率。感觉用户数据库可以新增加一些内容,例如用户个人照片,个人头像等图片设置分开,生肖星座这些完全可以不要,用生日进行计算。增加其他一些爱好,联系方法,建立级别查看用户资料,一些重要资料用户可以设置不公开……等等。

・虽然CCB的首页是生成的,但是一个最大的漏洞就是没有显著摆放新用户注册链接,这也许是一个小的失误,但对于招揽新客人来说是个大问题。

・界面问题还是关键,LB的弱点在于官方原版就没有很好的美化,所以瓢虫的美化版一直是很畅销的,如果CCB在原版发行这里就做到很完美的界面设计,相信这将赢得更多的支持。

・功能确实还不够多,这是新生事物必然的。LB成功的很重要因素是后台管理强大,我本人没有领略过sunluck的后台,但是感觉上把LB的所有功能全部实现以后再添加自己的特色。


到这里为止,希望本人在CBB的第一帖不会带来什么不好的影响

B3层 发表时间: 04-02-12 22:39

回复: Aoming [aoming]   版主   登录
[quote]回复给 ...
  摘自 中国CCB论坛  麻辣  2004-02-04 16:43 http://www.sun126.com/bbs/ccb/index.cgi

回复给 liverpoolcn : [推荐]本人对CCB的一些建议......




CCB的后台功能N多已经超过绝大多数普通论坛了,和lb操作方法也不同,不知道你能不能习惯,一点主要差别,CCB是按权限分类的,LB是按功能分类的。




  [ 麻辣 2004-02-04 16:43 编辑 ]
==========================================
  感谢区长的解释...
  摘自 中国CCB论坛  liverpoolcn  2004-02-05 14:28 http://www.sun126.com/bbs/ccb/index.cgi
感谢区长的解释~

但是目前的论坛普遍都是在回帖显示这块显示了比较详细的用户资料和用户社区资料,这个在目前的CCB上很少,虽然这样很节省资源,提高速度,但是好像这样的削减改法并不是提供论坛速度的唯一方法~
==================================================
    CCB后台复杂,前台简单
  摘自 中国CCB论坛  麻辣  2004-02-05 14:39 http://www.sun126.com/bbs/ccb/index.cgi

回复给 liverpoolcn : 感谢区长的解释......




以后也想继续这个思路


B4层 发表时间: 04-02-12 22:43

回复: Aoming [aoming]   版主   登录
  CCB源程序解读之一:论坛列表的html输出方式
  摘自 中国CCB论坛  西门  2003-09-02.14:26 http://www.sun126.com/bbs/ccb/index.cgi

CCB提供论坛列表可提供html输出方式选择,不需要启动perl解释器,就象一个静态网页的速度一样。这是CCB首创的 。CCB只实现了论坛列表第一页的html输出,第二页还是用传统的cgi方法实时生成。论坛列表第一页的使用频率是最高的,如果这个时候perl还没有开始工作,你说性能如何呢?如果前几页都用这种方法,效能将会大大提升(当然也有代价)。

这个功能是如何实现的呢?

先看forms_list.cgi文件,这个文件负责论坛列表的输出
if ( $_html_forums == 1 ) { #如果标志设为使用html静态网页
    $htmlurl_1 = "$_noncgi_url/forums$FORM{class}_$FORM{'forum'}.html";

}
else { #如果是用cgi产生论坛列表
    $htmlurl_1 =
"forums_list.cgi?forum=$FORM{'forum'}&page=$_bbs_perpage$classboard$index_get";

那么这个html的页面如何生成的呢?
生成的程序在模板中,不同的模板产生不同的html页
以T1模板为例:文件html_write.cgi主要是生成T1模板的html页,这个文件共有494行(这里就不分析了)。值得提及的一点是在这个页面里麻辣使用了javascript来代替传统的文章显示的方法。

最后,哪些程序调用html_write.cgi呢
这就多了,象发贴、编辑、删贴、投票、移动等凡是改变论坛列表的就会调用html_write.cgi

B5层 发表时间: 04-02-12 23:30

回复: NetDemon [netdemon]   ADMIN   登录
这个东西有点吹!
“CCB提供论坛列表可提供html输出方式选择,不需要启动perl解释器,就象一个静态网页的速度一样。这是CCB首创的”,这个就吹大了。这是N年前,大多数论坛的做法,UBB也是这样。

另外也不是使用了sysopen(),read(),seek()等就是所谓系统底层调用,速度快,perl的作者有一篇专门阐述这个问题的文章。认为在大多数的情况下,系统调用造成更多的内核资源消耗。

他的程序我看过,表面上看起来不错,但是,当他到达像20CN这样的60000级别的注册用户,每版上万个帖子主题的时候,他基本上就歇菜了,举个例子,他在一个目录下面保存了用户资料,每一个用户好像有5个,6万x5=30万个。当一个目录下有30万个文件,就算是dir,也足以让Windows的资源管理器失去反应.UNIX好点,不过文件系统如果没有调整过,占用了N多的inode。空间不是节省了,是白白的浪费了。总之我觉得他的结构非常的不合理,没有考虑到的东西太多。


B6层 发表时间: 04-02-13 01:14

回复: NetDemon [netdemon]   ADMIN   登录
其实他现在的毛病和我当初写20CN的论坛的毛病一样,以自己的想法写,但没有经过实践,很多的情况没有仔细考虑过,一句话就是有理论没经验,例如,他的每一个帖子无论是主题还是回复,用一个文件保存,这样的好处很多,如可以实现树形结构,编辑删除非常容易,速度快,程序也相对很简单。但实际上就不是如此了,当板块有10000个主题,平均每出题5个回复,不仅文件数量难以容忍,索引文件也很大。结果效率直线往下掉,当并发连接太多,索引文件基本上处于锁定状态。结果我还是不断的否定一开始自己觉得很厉害的想法,不断的改核心,改结构,改这些倒容易,关键是还得写个脚本,遍历几十万文件,把原来的存在的数据结构改了,这才郁闷。到现在我终于明白一个道理,什么高级的算法,时髦的写法统统扯蛋,做到每打开一个页面,实际上程序就只是打一个文件,然后print出来就最无敌。当然,这样造成发帖的时候程序会有很多要搞的,但是发帖的操作相对于浏览,那简直小太多了。

那作者说的一些话我很赞同,有一个强劲的核心,功能和美观等这些东西基本上只是花点时间的东西,但怕的就是这个强劲是自己认为的理论上的强劲而已。自己写一个脚本,直接写文件,模拟注册5000个用户,每个板块发它5000个帖子,实际操作一下,就知道“实现了轻松处理海量数据”这话是多么的无力。

如果他的目的是要作为一个通用论坛,还要超越LB,那现在的这个核心其实不大妥,因为如果是虚拟主机的话,一般人家100M的空间是限制2000个文件数量。200M5000个,谁认识在作者告诉她一声,让他乘早改,免得他误入岐途。

B7层 发表时间: 04-02-13 02:38

回复: Aoming [aoming]   版主   登录
  CCB发展建议的一些反面意见  
欢迎有经验的朋友发表高见。人身攻击的话以及灌水的废话就不要说了。否则见了删除外加扣经验值




[此贴被 Aoming(aoming) 在 02月13日23时38分 编辑过]

B8层 发表时间: 04-02-13 03:44

回复: Aoming [aoming]   版主   登录

  摘自 相关回复
 
引用:
这个反对意见者,用自己的失败经验来衡量CCB,把CCB想的太简单了,CCB绝不是一般的文本论坛。

CCB不会去列目录的,他根本没看代码,按他自己的思路理解CCB,傻瓜才去dir

sysopen(),read(),seek() 资源消耗大增?建议他去多学学理论,他根本没用过这些命令,他也不知道CCB用这些命令是做什么用的,采用系统及定位是为了减少读取文件的字节数,比如一个索引文件即时达到2M ccb也仅仅读取几百个字符完成列表,而普通的论坛是open file 读取2M再foreach循环,资源消耗之差不是一个数量级别。他没领会CCB作者的含义,CCB不求速度快,但CCB的资料消耗相比其他文本论坛特别是大数据量是非常低的。

CCB灌水测试区单个栏目已经有10万个帖子了,速度确实丝毫不变,CCB列表读取索引根本用不到文件锁,还谈什么锁死?看来这位评论者旧的思想观念根深蒂固了,很难接受新东西新思路。





[此贴被 Aoming(aoming) 在 02月13日04时11分 编辑过]

B9层 发表时间: 04-02-13 03:51

回复: NetDemon [netdemon]   ADMIN   登录
算了,不讨论了,看回复一看傲人一个,反面的意见是听不进去的
sysopen(),read(),seek() 会消耗更多的资源不是我说的,是perl的作者Larry Wall说的,他都能建议Larry Wall去多学学理论了,太NB了。没法沟通了。

另外我说dir不是说论坛程序去dir。我是说这么大的文件数量,你用资源管理器打开就知道是多么可怕,他这回复继续证实了他的没经验,程序不需要,维护呢?数据迁移呢?主要问题出在对inode的占用,以及内核定位文件位置等消耗,应用程序轻松了,内核累个半死,从程序设计的角度说从理论上就说不过去。

有10万个帖子浏览速度不变有何难,一个设计不太恶心的程序就应该是不变的才对,关键是你能保证搜索的时候不变那才行啊

本来想告诉他一些实际情况,让他少走弯路,既然人家当我SB,认为Larry Wall还需要学识更多的perl理论,那就啥也不用说了,让他自己美去吧

B10层 发表时间: 04-02-13 04:26

回复: NetDemon [netdemon]   ADMIN   登录
很遗憾 20CN 论坛使用的就是sysopen(),read(),seek(),而且是在2年前就这样

另外,当文件少于16K,一次读入用foreach比seek快,而且很多,小于2M的时候不会有很大的差别,只有大于4M才有明显差别,实际情况就是这样,为什么这样,因为没有一次读入的话,内核要不断地上下文切换,这也是开销,他没算进去.


B11层 发表时间: 04-02-13 04:44

回复: Aoming [aoming]   版主   登录
老大,口舌上的东西,大家都没必要去纠缠撒。不继续讨论下去有个明确一点的答案才叫遗憾。太对不起观众了,人家也说愿意交流啊

B12层 发表时间: 04-02-13 05:01

回复: NetDemon [netdemon]   ADMIN   登录
Y的,本来我对这东西印象还不错,确实比其他很多鸟JB论坛好多了,但作者很多的介绍就真的太带欺骗性,看了他这写个回复更是心都凉了,推广自己的程序,说得夸张点我理解,但从技术角度来说太....什么了

什么“CCB用系统级IO”,perl本身就决定了它决不可能使用系统级IO,就像VB可以使用API但决不能直接调用API。

把perl的源代码看一下,看看perl对read() write()这些系统调用他本身是怎么实现怎么处理的,然后再来说什么“系统级IO”


B13层 发表时间: 04-02-13 05:05

回复: sunluck [sunluck]   论坛用户   登录
到底谁在造谣?

系统级IO 参见perl高级编程第12章 (美)
perl参考大全 xxx章..

....


B14层 发表时间: 04-02-13 05:14

回复: NetDemon [netdemon]   ADMIN   登录
并不是书上说的就是真理,这是翻译的,很多书不是说VB可以直接调用API吗?难道你接受这样的观点?我觉得在UNIX上除非用C直接来,否则就不能说直接的系统调用
对perl更是如此,实际上。open他最终使用的也还是系统的open()调用

B15层 发表时间: 04-02-13 05:19

回复: sunluck [sunluck]   论坛用户   登录
很遗憾,你也许是编程高手,但今天连续凭空臆断,实在让人无法接受,技术问题来的不得含糊,今天我有必要澄清

你说的sysopen说的没错,但你只知其一不知其二,,是因为sysopen是不带缓存的读写,你也根本没仔细看代码,CCB只有需要定位读取字符的时候才用到这些函数,其他部分是普通的open,看不出来你是想帮助CCB改进,而是上来就以高手自居凭空想像.带着偏见和自己曾经的失败经验来误解CCB,不能让人接受



B16层 发表时间: 04-02-13 05:21

回复: sunluck [sunluck]   论坛用户   登录
“CCB提供论坛列表可提供html输出方式选择,不需要启动perl解释器,就象一个静态网页的速度一样。这是CCB首创的”????

CCB的官方说明就在上面,你眼镜瞪大一些看看,CCB什么时候说过这样的话?纯属造谣生事,我不能接受。

他是第一个我不能接受的网络ID。(仅仅是网络嘛,生活中的不了解不便于评论)

我还没和谁网上争吵过。没有任何根据凭空想像就不负责任的臆断,一瓶子不满,半瓶子晃的态度来否定别人近一年的研究成果,实在难以接受,你可以到其他论坛看看麻辣怎么和其他人讨论技术问题,怎么为人,麻辣从来不这样的



[此贴被 sunluck(sunluck) 在 02月13日05时38分 编辑过]

B17层 发表时间: 04-02-13 05:23

回复: sunluck [sunluck]   论坛用户   登录
他说的10000个帖子索引文件很大?是谁告诉你的?
CCB的关键就是很小的索引文件来处理数据,和你原来设计的论坛是完全不一样的,一万个帖子才170K的索引。CCB没那么笨,CCB的特色就是索引文件不仅仅小,而且采用和数据库内部一样的定位读取方式,不管索引文件多大,总是读取固定数量的字符完成任务

CCB的树形索引原理早已经公开讨论过多次,并愿意拿出自己的成果和其他CGI论坛开发者无偿分享技术,但也不排除细节有不足。

他说的LB。。。呵呵,你可以告诉他,LB正是由于文件锁问题急需改进,也着手进行树形索引的改进和探索,CCB的观点,唯有树形索引才能解决文件锁问题,山鹰我们谈的很愉快。

你不要拿数据库来和文本做对比,文本数据库弱点就是文件文件多,你应该拿CCB和其他文本论坛来对比,正是因为这个弱点,CCB在设计数据结构的哦时候,有意减少文件数量,你肯定不知道得的是,CCB比其他文本论坛文件数量减少了三分支二!纯文本字符占用空间节至少省近三分之一到一半




[此贴被 sunluck(sunluck) 在 02月13日05时37分 编辑过]

B18层 发表时间: 04-02-13 05:28

回复: Aoming [aoming]   版主   登录
我觉得问题的焦点来自
引用:

“CCB提供论坛列表可提供html输出方式选择,不需要启动perl解释器,就象一个静态网页的速度一样。这是CCB首创的”,这个就吹大了。这是N年前,大多数论坛的做法,UBB也是这样。

另外也不是使用了sysopen(),read(),seek()等就是所谓系统底层调用,速度快,perl的作者有一篇专门阐述这个问题的文章。认为在大多数的情况下,系统调用造成更多的内核资源消耗。

他的程序我看过,表面上看起来不错,但是,当他到达像20CN这样的60000级别的注册用户,每版上万个帖子主题的时候,他基本上就歇菜了,举个例子,他在一个目录下面保存了用户资料,每一个用户好像有5个,6万x5=30万个。当一个目录下有30万个文件,就算是dir,也足以让Windows的资源管理器失去反应.UNIX好点,不过文件系统如果没有调整过,占用了N多的inode。空间不是节省了,是白白的浪费了。总之我觉得他的结构非常的不合理,没有考虑到的东西太多。


1、论坛列表可提供html输出方式选择是不是CCB首创――没必要继续讨论了
2、是否使用了sysopen(),read(),seek()后,速度一定更快,是否系统调用造成更多的内核资源消耗――双方可以写一些脚本实测,把数据公布
3、CCB的索引结构在现有基础上是否能更进一步。即使如sunluck说的CCB的设计就是尽量减少文件数量以提高速度,但文件的数量是会随注册人数以及注册人发的帖子的增加而增加的。那么在netdemon假设的论坛帖子数量巨额的时候。CCB是否还能以较好的状态运行。

我觉得双方肯定的都有一点,就是CCB的设计比以往的一些论坛优化了。
那么争论的方向我觉得应该是讨论是否还可以进一步优化,那么从哪些方面优化,如何优化,是进一步的争论话题。

你们觉得呢?

B19层 发表时间: 04-02-13 05:43

回复: NetDemon [netdemon]   ADMIN   登录
如果你是CBB的作者,我老实告诉你,CBB是我在网上见过的那些公开下载的论坛中我觉得最好的一个,技术含量最高的一个,而且和我这个论坛有很多相似的地方,包括一些我已经发现的错误也是相同的。就是一些介绍说的比较夸张。

你不要以为别人写的都是LB那样的来和我讨论。如果我是那样的写法的,我就用不着自己写了,UBB那些东西,在2年前20CN,都显得非常的不足,别说现在。

你说我否定你近一年的研究成果,而你的言论不也是否定我3年的成果和积累下来的现实情况的经验么?你说CBB一万个帖子才170K的索引,但你是否知道20CN一个版5万多的帖子才38K的索引?(我没有和你比较说比较好的意思,这些东西都是各具有点和缺点)
我只是觉得CBB不错,想告诉你一些我实际碰到而你并没有碰到的情况,当然你的程序我没有很详细的看,老实说你的程序风格我也不习惯,只是粗略的安装运了一下,程序大致的看了看而已。如果你不接受,还反过来说一些否定的话,那么我说什么也就没有什么意义了对不?我也就不用说下去了,每个写程序的都不喜欢人家说他的程序不行,特别是你这样的可以说一边学一边写的(从程序就能看出来)然后还确实有些比较不错的地方的,N多人说好。那我也就不到说不好的了,顺你意就是了,这世上少一个讨厌我的人总好过多一个讨厌我的人

B20层 发表时间: 04-02-13 05:46

回复: sunluck [sunluck]   论坛用户   登录
内核定位文件位置等消耗???

什么叫内核定位文件位置等消耗???

你发明的词汇吧,这那里象是程序员说的话,你以为操作系统也那么笨?

操作系统是按树形结构多极索引物理指针来定位文件的,假设目录下文件10万个(ntfs系统都测试过),打开单个文件时间是没什么区别的,除非你非要去dir 或者opendir。。。

希望你说话的时候,要不引用书本上的依据,要不拿出测试报告,别在胡编乱造了,学了半天编程基本的读写还没搞清楚所以无奈去玩数据库了吧?

看看我去年很早的测试报告拙作,经过N多人同时测试认可了的

CCB的官方介绍很多措词都是严格考虑的
CCB版本里面说明写的很清楚,那些是借鉴的,那些是独创的,部分特性超过大多数文本论,每个下载包里面还特别著名了借鉴前人的宝贵经验感谢。。。关于静态页面生成,CCB绝没有提到独创二字

对于NetDemon带着偏见来讨论技术,不能接受,不如说是别有用心!或者是想贬低别人抬高自己




读取文件命令测试比较,仅供参考 

麻辣 2003 

因为文件行数少了测试不出来效果,我特意做了包含整1万行的数据,大小170K。 

本机雷鸟1.1GHZ,内存256兆,IIS5.0 perliisdll环境 

#################### 
方案一 while 输出  最常用

open (FILES, "index"); 
while (<FILES>){ 
print; 

close(FILES); 
程序占用 CPU 时间:0.23 usr + 0.22 sys 合计运行时间 450 毫秒 
####################### 
方案二: 数组读取输出 
open (FILES, "index"); 
@reads=<FILES>; 
print @reads; 


程序占用 CPU 时间:4.18 usr + 0.09 sys 合计运行时间 4270 毫秒 这个方法是目前大多数CGI论坛最常用,但却是效率最低的 

换为@_; 
open (FILES, "index"); 
@_=<FILES>; 
print @_; 
程序占用 CPU 时间:3.64 usr + 0.11 sys 合计运行时间 3750 毫秒 节省一点时间:) 

################################ 
方案三: 

open (FILES, "index"); 
@_=<FILES>; 

#print @_; 
close(FILES); 
foreach (@_){ 
print; 


程序占用 CPU 时间:3.79 usr + 0.15 sys 合计运行时间 3940 毫秒 
很奇怪,和上面相同,说明,只要打印数组,就和foreach处理方式相同 
############################## 
方案4 不打印 
open (FILES, "index"); 
@_=<FILES>; 
#print @_; 
close(FILES); 
程序占用 CPU 时间:3.45 usr + 0.00 sys 合计运行时间 3450 毫秒 还是相同 
更奇怪,少一次循环,为什么时间还相同 

######################################### 
方案6,用变量代替数组直接读取输出。 

open (FILES, "index"); 
undef $/; 
$reads=<FILES>; 
print $reads; 
close(FILES); 
$/="\n"; 

程序占用 CPU 时间:0.04 usr + 0.00 sys 合计运行时间 40 毫秒 真快丫 

############################################## 
方案7 用分割变量来从新生成数组,代替数组@_=<FILES> 直接读取方式,循环输出 
open (FILES, "index"); 
$/=""; 
$reads=<FILES> 

close(FILES); 
$/="\n"; 

@_=split ( /\n/,$reads); 
foreach (@_){ 
print $_; 



程序占用 CPU 时间:0.34 usr + 0.11 sys 合计运行时间 450 毫秒 

有趣,比普通@_=<FILES> 直接读的方法要快10倍,但很是不解 

如果数组不全部输出,单纯赋值占用时间很短
open (FILES, "index"); 
$/=""; 
$reads=<FILES> 

close(FILES); 
$/="\n"; 

@_=split ( /\n/,$reads); 

程序占用 CPU 时间:0.05 usr + 0.00 sys 合计运行时间 50 毫秒 

###############################################

散列 
   
-------------------------------------------------------------------------------- 

open (FILES, "index"); 
while (<FILES>){$i++; 
$hash{$i}=($_) 


print %hash; 

close(FILES); 


程序占用 CPU 时间:0.66 usr + 0.41 sys 合计运行时间 1070 毫秒 

数组的最快方式是450毫秒,散列全部输出时间大概比数组慢一倍 

散列不输出
open (FILES, "index"); 
while (<FILES>){$i++; 
$hash{$i}=($_) 


#print %hash; 

close(FILES); 
程序占用 CPU 时间:0.09 usr + 0.04 sys 合计运行时间 130 毫秒  还是比数组慢

从hash中取出一个元素

open (FILES, "index"); 
while (<FILES>){$i++; 
$hash{$i}=($_) 



close(FILES); 
print $hash{8900};

程序占用 CPU 时间:0.13 usr + 0.00 sys 合计运行时间 130 毫秒 几乎不增加时间

数组也是,测不出时间
open (FILES, "index");
$/="";
$reads=<FILES>;

close(FILES);
$/="\n";

@_=split ( /\n/,$reads);

print $_[8900];

程序占用 CPU 时间:0.05 usr + 0.00 sys 合计运行时间 50 毫秒


########################## 
以上测试结果有的差别很大,有的差别不大。 

即使有些差别虽然是细微的,程序中如果把这些命令都采用最优化方式,相信会有效果的 

我最近在把我的论坛调用比较频繁的核心代码进行逐行检查,反复测试优化中~~~~ 

谁把其他的方法都测试以下,拿出来给爱好者继续分享,我也继续测试中,今晚测试系统级IO命令,看有没有差别

仅供参考。 

附,my测试方法
#########################
use CGI::Carp qw(fatalsToBrowser);
use Benchmark; 
$TT0 = new Benchmark; 
print "Content-type: text/html\n\n";
open (FILES, "index");
$/="";
  $reads=<FILES>;

close(FILES);
$/="\n";

@_=split ( /\n/,$reads);

  print @_;

###########################
print"<hr>";
$TT1 = new Benchmark; 
$td = Benchmark::timediff($TT1, $TT0); 
$td = Benchmark::timestr($td); 
$td =~ /(\d+)\s*wallclock secs \(\s*?(\d*?\.\d*?)\s*usr\s*\+\s*(\d*?\.\d*?)\s*sys/i; 
my $alltimas=($2+$3)*1000; 
print "<center><font color=$cpudispcolor>程序占用 CPU 时间:$2 usr + $3 sys 合计运行时间 $alltimas 毫秒"; 

exit;








B21层 发表时间: 04-02-13 05:54

回复: sunluck [sunluck]   论坛用户   登录
既然这样说,那我先不说了

我在网上很少发这么大的火,你可以去网上了解麻辣的为人

对于我说话过激的地方,我收回





B22层 发表时间: 04-02-13 05:58

回复: sunluck [sunluck]   论坛用户   登录
CCB海量帖子经过很多测试了,要不不瞎敢吹牛的,吹的越高摔的越很,这个道理我还是知道的

发帖子的时候,url地址后面加个

topic_new.cgi?forum=14&class=1&test=1000
然后回车再从新发就是同时发1000个帖子。

你可以打开代码修改一下限制,一次发一万个帖子,然后凑足20万个帖子,看看NTFS下和linux 下浏览帖子cpu占用率会不会高上去,结果确实另一般人难以致信--资源消耗丝毫不变的




关于用户资料,是这样的,用户增多并不会增加CCB的访问消耗。

但为了保证用户排行不会随着用户大量增多变慢,CCB的用户资料可以后台设定最后活动时间,超过这个时间,自动转到另外一个目录,这些用户不参与排行。



[此贴被 sunluck(sunluck) 在 02月13日06时11分 编辑过]

B23层 发表时间: 04-02-13 06:08

回复: NetDemon [netdemon]   ADMIN   登录
sysopen是不带缓存的读写 这是完全错误的 !!!!!!
sysopen只是打开文件,还没有任何的读写操作,那里来什么缓不缓存?
如果说用sysopen打开的不会进行缓存,那也是错的!
因为系统调用open()( 系统的open(),不是perl的open())的并没有指定是否缓存的flags

内核把文件读到内存的一个位置,然后让程序去取,然后他就干其他事情,你程序要读2字节,内核也是读了一块近来,这一块多少,取决于文件系统的设定,你要写,内核会在他觉得适当的时候把文件写回去,如果你有N多的内存,内核也许会在10分钟后才实际写到磁盘上。

几乎所有现代的操作系统,都不会有不说带缓存的读写的,要不带缓存,多数需要特权才行。
现在你知道为什么seek不一定快了么?

不要说我没仔细看你程序就会因为不知道实际情况而说的不正确,看你的一些说法,就知道你是存在一些误解才有那样的说法的。

B24层 发表时间: 04-02-13 06:14

回复: sunluck [sunluck]   论坛用户   登录
每一个用户好像有5个文件?

什么叫好像啊

CCB每个用户只有一个文件,你楼上再说你自己的过去程序吧,又让我发现一个你猜想,呵呵你没仔细看程序,猜想还满多的。

sysread是不带缓冲的读 这个也不是我说的。。。要不要我再给你引用理论书籍?

记住,我说的每一句话都有一定的依据。

seek是指针用来配合读文件的,你说他速度不快,那我无话可说了。

什么叫seek不一定快?CCB用的seek属于你的不一定范围吗?如果属于,我认输!

难道,去掉CCB的seek论坛效率会更高岂不荒唐了,至少你说的不符合论坛的实际情况,你下次可以拿测试报告来讲话,其他的都是猜想,想好了再说还不好。

实际情况是,上万个主题帖子(不含回复)的时候其它文本论坛就会死掉了,CCB  20万帖子依然轻松,就这样的如果你觉得CCB用SEEK不合适,有更好的方法,我一定采用。



楼上我打了个错别字,是缓冲不是缓存





[此贴被 sunluck(sunluck) 在 02月13日06时45分 编辑过]

B25层 发表时间: 04-02-13 06:30

回复: NetDemon [netdemon]   ADMIN   登录
别老是抱着一个观点说自己程序没问题,别老想到自己,你每个目录仍10亿个文件,论坛程序当然还是没问题,一样,但你怎么就不想想如果你tar一下呢,你程序不读目录,别的程序要读的阿!
系统要维护吧?你知不知道多数系统都有cron在固定时间检查文件的?比如freebsd,每天4点检查有没有suid位变化的文件,你这几十万个文件他还得一一检查,如果服务器上还有防病毒的呢?他也得读,你怎么不想想这些?一个程序,他只考虑自己,不考虑和别人的配合,这就是一个很不妥的地方了。
当然你可以说让人家设置它不要去检测某些目录,但人家为了你而牺牲自己的安全性。人家何苦呢,而这这样等于增加自己程序的依赖性

B26层 发表时间: 04-02-13 06:42

回复: sunluck [sunluck]   论坛用户   登录
拜托,不要混淆是非了

你楼上最初说的是资源消耗,不是维护备份!

文件文件多是文本结构的通病,不是CCB一家的,不需要你到这里来提醒,CCB始终也不否认这个弱点,而且CCB比其他的文本论坛文件确实少多了,明明是改进了,你怎么颠倒黑白非要和数据库相比合意?
不要混为一谈转移视线好不好?


CCB有自己的智能压缩备份解决方案,备份速度非常快(不要和数据库的比),因为备份过的数据不会重复备份。

CCB在雷奥发布的时候,还出动提到了自己的弱点
请你把情况了解了再说,什么时候说CCB没缺点了?又想扣帽子


不想说了 888

随你吧


[此贴被 sunluck(sunluck) 在 02月13日06时53分 编辑过]


[此贴被 sunluck(sunluck) 在 02月13日06时55分 编辑过]


[此贴被 sunluck(sunluck) 在 02月13日21时23分 编辑过]

B27层 发表时间: 04-02-13 06:51

回复: NetDemon [netdemon]   ADMIN   登录
我说的seek不一定快,指你说的其他的open();@_=<FH>;foreach()相对于你的CBB的sysopen()seek(0,read(),这两种方式,不指 seek本身

我看CBB那是有好几个月前了,一个是肯定不只的,至少有2个,我记得有一个是记录用户的post纪录的。你现在改成什么样我不清楚。

我没说你不用seek会更快,我是针对你说的用定位然后读出,一定比一次读入快而说的

“上万个主题帖子(不含回复)的时候其它文本论坛就会死掉”你这什么理论?我这里怎么还没死掉?这个论坛用的也是文本的阿,你以为是数据库阿?

B28层 发表时间: 04-02-13 06:53

回复: NetDemon [netdemon]   ADMIN   登录
我说过多文件资源消耗?
在那里?你给我指出来?
我说你占用了N多的inode。空间不是节省了,是白白的浪费了,而不是说你程序资源消耗?


B29层 发表时间: 04-02-13 06:56

回复: NetDemon [netdemon]   ADMIN   登录
 
引用:

文件文件多是文本结构的通病,不是CCB一家的,不需要你到这里来提醒,CCB始终也不否认这个弱点,而且CCB比其他的文本论坛文件确实少多了,明明是改进了,你怎么颠倒黑白非要和数据库相比合意?


但是,CBB相对于同样使用文本结构的20CN的论坛(就是这个)多了,而且多了很多,按照你的观点看来的话,你认为你比别人少是改进,那你现在的比我这个多了很多,从我的角度说就是没改进。还可以继续改进。
我之所以在这里"提醒",是因为一开始有人在这里发了一大堆说CBB多好的,我觉得说法有些夸张,因为我几个月前粗略看过CBB,觉得没有介绍中说的那么神奇。有一些地方的处理也显然不及20CN这个。所以想跟作者说一下一些建议,如果还可以谈,那么我可以详细的再看一遍CBB的代码,再继续交流,不过就今天的情况看来,我很失望...呵呵,我都说了,CBB比我见过的所有免费文本论坛好,但我觉得还可以做得更好,你又何苦一直说一些优点呢?我要跟你讨论的是弱点和怎么改进弱点,既然你都认为你这已经是足够的好,世界第一无人能敌了。你就当我说的都是放屁吧,别发火了,我就说我的,你就美你的,两不相干

[此贴被 NetDemon(netdemon) 在 02月13日08时10分 编辑过]

B30层 发表时间: 04-02-13 07:37

回复: NetDemon [netdemon]   ADMIN   登录
哈哈,程序是你自己的,我说话可以不负责,但你自己要负责阿
什么每个用户只有一个?
每个用户 userbox 、 username 、guestbook 下面各一个,postlog下面分回复和主题各一个,一共至少5个了。每多一个用户,就会产生了至少5个文件,我没说错啊? lb基本上没看过不清楚,比UBB6就多了,和这里比就多5倍了

我就说嘛,虽然年纪大了,记忆力衰退了,但我记性还不止于降到这样的程度,不大可能记错的。

我说这个是为了证明你说的只有一个是不对的,而我一开始说在一个目录下也是错的,顺便证实一下自己记忆力而已,没别的意思,你别在意。

你这样结构好,很好,值得我学习,以后想到什么功能就继续每个用户再增加几个吧,无所谓的,很好很好

但是关于你上面提到的sysread()这点,我是一定要纠正的,免得看到这帖子的人误会,误人子子,我一开始说的sysopen() read() seek()事实上是我打字的时候简化了一点,实际上指sysopen() sysread() seek(),以配套你说的系统低级IO。

你头一个说了sysopen()是不带缓冲的读写,这我已经指出不对,结果你下一个贴说是sysread()是不带缓存,这点我同意,因为实际就是如此。

但如果说因为“CCB用系统级IO逻辑指针处理数据,国内率先实现了轻松处理海量数据”那就完全瞎掰,你不妨说你是国内率先发明、创造并使用“系统级IO逻辑指针”这个词更好。也许我孤陋寡闻,10年来就从未听过这样一个术语,这点抛开不说,你这句话,给我的理解就是“因为我使用了类似sysopen(),sysread()这样的系统级IO,以及用seek()操纵作这支逻辑指针,结果效率很好,轻松实现了处理海量数据。”相信你的本意也是如此,如果不是算我理解错误,你解释这话意思我听。

既然你知道sysread()不缓冲,怎么用sysread()会有更高的效率,Xeon不就是比普通CPU多了点缓冲么,贵了多少,如果不缓冲能比缓冲更高效,那么大家不都买赛扬了?

perl函数read()实际使用的是系统标准IO fread(3),而sysread()实际使用的是系统初级IO read(2),read(2)是无缓冲的,你可以一次只读一个字节,虽然内核其实是从磁盘读了一块的大小,比如16K,那如果你每次读1字节,就需要1千6百次调用。虽然内核并不要去实际磁盘中读了,但你这1千6百次调用的效率,我看就不用我指明了。而fread(3),你可以参考C语言的作者Dennis Ritchie写的《C程序设计语言》,第8章有介绍fopen在标准库中的实现方法,联想一下就可以明白,fread()会调用read(2),根据fread()传入的参数,调用read(2),先一次充满整个缓冲区,然后才返回。如果是read(2)和fread(3)的比较,传入的参数一样的话,效率是基本一样的。然后回到perl上,也差不多吧,你不是说要权威人士的说法么?你看看Larry Wall说的
Perl's read function is actually implemented in terms of standard I/O's fread(3) function, so the actual read(2) system call may read more than LENGTH bytes to fill the input buffer, and fread(3) may do more than one system read(2) in order to fill the buffer. To gain greater control, specify the real system call using sysread. Calls to read and sysread should not be intermixed unless you are into heavy wizardry (or pain).
你还坚持sysread() 比 read()高效么?


[此贴被 NetDemon(netdemon) 在 02月13日14时09分 编辑过]

B31层 发表时间: 04-02-13 09:50

回复: group [group]   论坛用户   登录


B32层 发表时间: 04-02-13 11:53

回复: sunluck [sunluck]   论坛用户   登录
到底谁在瞎掰?
  摘自 中国CCB论坛  麻辣  2004-02-13 18:49
      http://www.sun126.com/bbs/ccb/index.cgi      
CCB用系统级IO逻辑指针处理数据,国内率先实现了轻松处理海量数据”那就完全瞎掰。。。

事实就是事实,CCB单个栏目10万个帖子(不算回复)浏览速度不会有丝毫变化,其他任何文本论坛没有做到这一点,也许我孤陋寡闻,国内至少目前没有我没看到,怎么会说是瞎掰呢?这是完全实事求是的。就连动网论坛官方数据库版本,整个论坛的帖子承载量也不过50万(还包括回复),你还对文本论坛要求多高呢?这不是成心在鸡蛋里面调骨头吗?另外,是仅仅采用seek就能解决问题吗?这个和数据结构有直接的关系,对于非等字节的列表,代码中用全部采用seek也没用的。
另外,我哪里有说过sysread()比read()效率高?函数用到他该用的地方就是合理的,请你引用我的原话来找漏洞,把眼镜瞪大一点,对你的频繁篡改造谣--很令人厌烦了。

你认为有其他文本论坛很早能达到这个性能,你举出例子来,包括你的作品--恐怕是失败的作品吧!至于你刚刚做的试验,不要告诉我说是今天早晨做的,你说的问题根本不存在,因为批量帖子ID是顺序++的ID号,个人文集里面不出现就对了,CCB没那么蠢连批量帖子也显示在个人文集中岂不太搞笑了?压根就没让它显示!你总是用自己习惯的思维来理解别人,你知道CCB帖子的编码规则吗?连续发贴只是用来测试。根本不是按编码规则来编的,当然不会显示了!

这位反对者不是神经有问题,就是思维混乱了,学编程学了三年,连最基本的读写没搞清楚就妄加评论乱咬人,纯属程序流氓作风,自己变态还是自得其乐?自得其乐也不要紧,不要在这里误导别人,只能说你无药可救了,告诉你吧,到今年我正好学编程仅仅一年--呵呵,我以前都没接触过,真不清楚你学了三年都在学了什么。


你为什么还继续凭空捏造,无辜诬陷别人?好好看看你的帖子,你自己已经前后矛盾了,我只能说,无可丰告了!

关于用户资料,CCB为了减少单个目录下的文件数量,把这些资料分门别类按目录存放。CCB由于多了个人文集功能,自然还要有两套个人文集的索引。以后我还可以随意增加新的功能还可以再设目录增加索引,这个是CCB的索引灵活性的表现,如果你实在较真,把这些功能删除好了。

这个问题没必要重复了,文本结构就是这样的。。。不是CCB特有的问题,鸡蛋里面找骨头谁都会找,你楼上提到和LB对比,呵呵,你找个lb的论坛数据,然后用CCB后台转换到CCB格式,你就知道文件数量差别多大了,说你颠倒黑白一点也不为过。而且你自己就自相矛盾,你说LB的程序你没看过,既然没看过你有什么权利评价?不要在出笑料了好不好

你根本不是友善的态度来帮助CCB解决不足,而是你最初的几次发言明显带有造谣和攻击性这是任何人无法接受的,后来自觉没趣了吧?你号称学编程学了三年连基本读写都没搞清到混了一套流氓作风,还在20cn这里混不觉得丢人吗






[此贴被 sunluck(sunluck) 在 02月13日19时49分 编辑过]


[此贴被 sunluck(sunluck) 在 02月13日21时22分 编辑过]


[此贴被 sunluck(sunluck) 在 02月13日21时27分 编辑过]

B33层 发表时间: 04-02-13 19:13

回复: smokingex [smokingex]   论坛用户   登录
这人怎么这么固执的呢?听惯了马屁,受不得一点打击?
我看了一下那代码,也不怎么的嘛。

不吵了,不吵了,再吵缺点就全出来了,学三年编程!?

ND呢,性子太直,讲话太“个性”了,别往心里去吧。至于我看到的代码,也就那么回事。好,是一定的,呵,至少我跟ND的看法一样,比LB好,但是,不足还是有的。

怎么我感觉CCB好像有着争天下第一的想法!?何必呢!做人虚心点不好吗?

你可以看一下,http://www.20cn.net/cgi-bin/club/show.pl?key=qXbWFbzlRQHJ&cat=tech&forum=code&page=1&position=0&id=1036662338

这篇文章。
唉。。。

B34层 发表时间: 04-02-13 20:11

回复: NetDemon [netdemon]   ADMIN   登录
好好好,你厉害,你牛B。你要我举例对吧?你现在正在发帖的这个论坛就是我的作品啊,不是摆在你眼前么?

就拿事实说话,这个版现在也有近10万个帖子了,你觉得和其他的栏目比速度少了多少?没错,慢了,因为我的设计是30000个主题。你要一样快的,可以,我修改一下就行,不过因为影响到其他的版,现在在线60人,我现在就不改了。你用10万帖子和5000帖子一样快,是要付出代价的,就是在本来小于5000的时候,其实可以更快的

年轻人别拿么激动,好话听多了,听点不好听的也是有益身心健康的。

别动不动就进行人身攻击,我说你程序不完美而已,我可没对你个人进行攻击,作为一个perl爱好者,发扬点perl精神,保持一点幽默和素质行不行?你自己说你在这里的哪一个帖子,不存在对我进行人身攻击的?

别认为你的程序天下无敌,CCB.PM算是你的CCB的核心吧?你认为这样的函数无敌么?
sub filelock {
while (-e "$_[0].lock") {$i++;
select(undef,undef,undef,0.1);
    if ($i >10){print"服务器忙,稍候...$_[0].lock";exit;}
    }
}

sub readfile {
  &filelock($_[0]);
  open (FILE,"$_[0]"); 
  my $readfile = <FILE>;
  close(FILE);
return ($readfile);
}

sub writefile {
    &filelock($_[0]);
    open( FILE, ">$_[0].lock" );
    close(FILE);
    open( FILE, ">$_[0]" );
    print FILE "$_[1]";
    close(FILE);
    chmod( 0666, "$_[0]" );
    unlink("$_[0].lock");
}

你这几个函数,你自己难道不觉得不够好?你看看你写一个文件一同进行了多少次的文件操作。
你这样的锁得方式,你的理由是什么?这是perl4之前的通常的方式,你在今天这么用你什么理由?你标榜你思想新潮,你为什么不use strict;就你这个锁,就你直接把密码明文的用cookie写在客户端。你这程序有什么可以让我夸奖的?



[此贴被 NetDemon(netdemon) 在 02月13日22时37分 编辑过]

B35层 发表时间: 04-02-13 21:13

回复: sunluck [sunluck]   论坛用户   登录



又在继续造谣,不知道你以前在这里误导了多少学习编程的人,我服你了,你高明,你写的代码水平高,我服了你了,可以了吧?给你留点面子吧,真不想多说了,早烦了
 
说CCB密码明文在cookie里面?呵呵,CCB早在4136就改为MD5加密了,让你继续说去吧

不过你挑骨头也不太会挑,全挑错地方了一个主要的问题没抓到,应该借给你眼镜

实在一时找不到,又在找代码格式的毛病,你说的use strict;

这个和CCB自吹有关系吗?CCB从来没敢说自己的代码如何漂亮,格式如何好吧。CCB很早就公开说过很多代码是早期写的并不是很好,肯定有不足的,再说这个和CCB“自吹”说的性能效率问题毫不相干吧,说你造谣不断一点不为过吧,大家谁也不傻,CCB可从来没说自己哪里都好,CCB代码当然有它自己的缺点。

你想表达你的代码按use strict;格式写的,就是水平高?kao,早在96年UBB就代码就这么use strict;写的,UBB效率之差谁都知道的。你用了use strict;就代表你的程序写的好吗?

好拉好拉,你高明,你写的代码一定水平很高,我服了你了。我还很多不会,我只是善于革新的一个初学着,小菜鸟而已,你总该满意了

[此贴被 sunluck(sunluck) 在 02月14日22时59分 编辑过]

B36层 发表时间: 04-02-13 22:35

回复: NetDemon [netdemon]   ADMIN   登录
你不用给我留面子,你直接回答我的问题

我一开始观点很明显,你这CBB好,但是文件数量还是太大
并提出如果虚拟主机如果限制了文件数量,你怎么解决?

请你正面回答,别一到说不下去,就拿出这是文本论坛的具有弱点的理由

我从一开始到上一帖为止,没有对你本身说过任何一句攻击性的话,你为什么一而再,再而三的攻击我个人

请你正面回答

我问你为什么不用use strict; 你为什么不是正面的回答,而是猜测我的意思就是用use strict;好,还举出UBB效率之差来证明,难道你认为UBB效率之差来是因为他use strict;?

请你正面回答

你一而再再而三说我造谣,你怎么不自己睁大眼睛看看我指的都是楼住发的介绍CBB的帖中的字,还有一个是aoming发的一个别人说的介绍CBB的帖中的,有哪一句是我自己说的?

在这样的情况下,你不是说说这句话本身的人造谣而是说我,你什么意思?

请你正面回答

在我已经明确的指出,我认为CBB比其他普通论坛优秀的时候,我现在要跟你讨论的是怎样改进完美CBB,你还是一而再再而三的举出CBB比其他论坛优秀的地方,是你偏离的主题还是我偏离了主题

请你正面回答

你认为我鸡蛋里挑骨头,那就是说明你这CBB是鸡蛋了,相当的完美了,但你的文字中又一次次的出现,你已经公开说过CBB有什么若点,这不是自相矛盾么?作为一个perl爱好者,你不愿意让自己的程序更趋向完美,连一个毫不起眼的不足都改过来不止,还一而再再而三的对一个对你的程序提出意见的人一而再再而三的诋毁,

请你把手放在胸口,问一问自己“我配用perl来写作么?”



[此贴被 NetDemon(netdemon) 在 02月13日23时03分 编辑过]

B37层 发表时间: 04-02-13 23:02

回复: TomyChen [quest]   版主   登录
强烈抗议楼上的用偶的语气说话。

我跟一朋友谈到这事,朋友说到一句,不觉得有点FREE给别人完善程序吗?我想了一下,忍不住还是说一下,因为,你已经把代码FREE出来了,做为一个GNU支持者,没理由不FREE一下。哪怕被BS也好。
不说废话,就一点不起眼的东西
TOPIC.pm
Line:282
代码:

    if ( $FORM{'img_url'} ne "" ) {
        $FORM{'img_url'} =~ s/ //g;
        $FORM{'article_content'} .= "<br><br>\[img\]$FORM{'img_url'}\[/img\]";
        $jpg_0 = "jpg";
    }


上面这段程序真的过关了吗?
我是指在用户不是正常提交的情况下,真的可以保证?服务器,客户都可以正常浏览。


B38层 发表时间: 04-02-13 23:12

回复: TomyChen [quest]   版主   登录
唉~~
不知道是我老了,还是我太嫩。
TOPIC.pm Line:457
代码:

unless (-e"$_noncgi_path/face/$u_myphoto"){$u_myphoto="0.gif";}


一个头像文件也去遍历文件,这是效率.
right~man~that is security and great...
=.b

B39层 发表时间: 04-02-13 23:25

回复: Aoming [aoming]   版主   登录
CCB4152版下载

B40层 发表时间: 04-02-13 23:39

回复: TomyChen [quest]   版主   登录
go on~~

代码:

if ($u_myphoto eq""){$u_myphoto="0.gif";}


u_name.cgi line:123

如此简单的判断!?

不想打击你罢了。。。,人非圣贤,是不能考虑到太多。你觉得无所谓,或者并不是什么大问题,不见得真的没问题。而我们在你已经开发好的代码上,硬是挑毛病出来,那确实会比开发一套系统要费劲得多。但是,,,确确实实是这样吧!?难道你想否认以上代码!?

[此贴被 TomyChen(quest) 在 02月13日23时43分 编辑过]

B41层 发表时间: 04-02-13 23:39

回复: xiean [xiean]   论坛用户   登录
Tomy 刚扔我一个包,打开看看,实在不太习惯作者的编程风格,也就放下不看了

我相信就代码而言,作者肯定投入了很多心血,也取得一定的效果的

但是,我不认为这话题还有争论的必要,作者发布的本来就是业余性质的论坛,既然是 Free 发布的,就应当做好各种方式的评价,有激烈的,有平滑的,这本来就是很正常的,如果作者连稍激烈的评价都无法平心去面对,那么又何必去free呢?直接把各种测试参数扔上来不就得了?

任何作品,错误总是难免存在的,既然被人指出了,不管是为什么,多少,就此问题做出实际性的回答,怎么,如今的程序员都兼职骂街了么。

大家不要争了,一个心里想的是以业余论坛第一的目标,一个是以专业论坛代码为目标,怎么可能谈得到一起去?光是代码,我就不认为 CCB 能跨入专业论坛的范围。

再就是效率,何必为某几点争来争去? Pentium VI 的普通和超线程两种处理器,难道说在任何应用下,HT的就一定要优秀?不是吧,应用的方式不同,目的不同,自然就效率的体现出现差异。效率不是体现论坛代码优秀的主要方面,何必争来争去?

明天就是情人节,快去睡觉,明天陪老婆情人吧。。。。

B42层 发表时间: 04-02-13 23:46

回复: TomyChen [quest]   版主   登录
呵呵~刚刚对20CN做了一个小测试,在打开这个版的时候,显示要比打开其他版的速度要慢。
包括帖子最多的菜鸟乐园。
但是这个版呢,就多了一个帖回复数比较多,就是这个啦。
我在想是不是这个原因?呵呵~

B43层 发表时间: 04-02-13 23:57

回复: Aoming [aoming]   版主   登录
老大这个论坛在一个帖子容量很大的时候打开会变慢

上次有个家伙问一个好象是关于相对路径的问题吧。我让他贴下原文件,结果他把几十KB的的都放上来回复了。那次给我感觉打开帖子速度非常慢。我就把他的帖子修改了,跟问题关键部分不相干的代码全del之,然后打开速度就恢复


[此贴被 Aoming(aoming) 在 02月14日00时25分 编辑过]

B44层 发表时间: 04-02-14 00:19

回复: test2002 [test2002]   论坛用户   登录

  摘自 中国CCB论坛  test2002  2004-02-14 00:23 http://www.sun126.com/bbs/ccb/index.cgi
我不懂Perl,接触CCB后才开始看--至今没有入门。本来是抱着几分看热闹来关注两个论坛的这两个帖子,
反对者(NetDemon)在你自己论坛那个帖子的B7层说的这些话和相关的言论要不要改改?留下只能说明你对CCB几乎一无所知就把一些你自己想像的东西作为罪证扣在CCB头上,一个“前辈高手”的姿态指手划脚,别说麻辣受不了,旁观者们也自会有说法--而火药味就是因此越来越浓的。。。。
B44层你的版主的话说明什么?你还在用你指责CCB的方式存储帖子数据!有一个回复多的帖子整个版块速度被拖垮。。。晕乎晕乎的。
  摘自 中国CCB论坛  test2002  2004-02-14 00:23 http://www.sun126.com/bbs/ccb/index.cgi
 


B45层 发表时间: 04-02-14 00:29

回复: Aoming [aoming]   版主   登录
楼上的,以上我和tomy也只是推测,因为看到这个论坛代码的,恐怕就只有netdemon和xiean。


B46层 发表时间: 04-02-14 00:34

回复: test2002 [test2002]   论坛用户   登录
A版主,这次好像你是好心办了坏事,本来想借此机会介绍两位Perl论坛作者交流切磋。。。结果你的老大随口评价 VS 麻辣火气上升
现在不好弄了~~~

B47层 发表时间: 04-02-14 00:38

回复: test2002 [test2002]   论坛用户   登录
我发了俩帖子,发现这个论坛浏览速度还可以,发帖太慢,大概就是NetDemon上面提到的牺牲一切保证浏览一个页面只打开一个文件的结果(大意,别和我扣字眼)~~~

B48层 发表时间: 04-02-14 00:43

回复: Aoming [aoming]   版主   登录
ok,现在帖子打开速度恢复,在我说话的同时。:)

没有,
你再看看netdemon的帖子的语气,我感觉已经转到正题上来了

B49层 发表时间: 04-02-14 00:43

回复: NetDemon [netdemon]   ADMIN   登录
46层你别瞎说,我从来没有 "指责CCB的方式存储帖子数据" ,因为这个论坛以前的时候和CBB几乎一样,我修改过好几回,尽管现在不大一样,但很是有一些相似的地方的,我职责他就等于指责自己。我一直要说的就是CBB的文件数量还是在满足他现在的速度的情况下还可以减少,不过作者一来就不是想听我的建议,而是来指责我不应该说他的论坛的不好,在这样的情况下,我想说都没机会说,因为人家一开始就把我定位在一个对CBB不满,要诋毁它,而且连sysopen()是什么都不知道的人,我要说出来我不是SB么?你没看我说的每一个观点,不管是什么,他都一概否认还一而再再而三的从人身上攻击我么?
现在慢是因为我生成了9千个帖子上来,现在这个版多了9千个主题加9千个回复,不是因为这个帖子


B50层 发表时间: 04-02-14 00:49

回复: Aoming [aoming]   版主   登录
see,so在进网站建设版块的时候速度比往常慢很都了。但是打开帖子的速度比刚才发贴前快

B51层 发表时间: 04-02-14 00:56

回复: test2002 [test2002]   论坛用户   登录
我说的是发帖速度明显比浏览慢得多
这个版块速度比其他版块慢是你们说的引用一下,那时我还没在这里注册ID呢。到现在为止也没有进过其他版块~~~
NetDemon老大,话不能乱说我还是懂的,我46楼说的是指你在7楼说的“......例如,他的每一个帖子无论是主题还是回复,用一个文件保存......”而事实上CCB是一个主题和下面的回复都存储在同一个文件。争论的导火索之一在于你后面一再以7楼的这个猜测为基础说CCB文件数目的问题--好像我没有看错吧?后来才开始涉及其他诸如代码等问题

===========================================================
打字太慢,发完帖子才发现NetDemon老大提议不再回复这个主题,就编辑一下把内容加在下面--本来和这个贴说的东西也都差不多
===========================================================

“例如,他的每一个帖子无论是主题还是回复,用一个文件保存,这样的好处很多,如可以实现树形结构,编辑删除非常容易,速度快,程序也相对很简单。但实际上就不是如此了,当板块有10000个主题,平均每出题5个回复,不仅文件数量难以容忍,索引文件也很大。结果效率直线往下掉,当并发连接太多,索引文件基本上处于锁定状态”
--这是LB的毛病,不是CCB的。麻辣最得意的就是重新构造了文本数据库包括索引读取等,尽力在解决这些问题。

这些话和CCB扯不上,而以这个作为CCB的弊病评价CCB,麻辣火气旺是可以理解的。

后面质疑CCB说的空间文件数限制在几千个以内如何解决,还要缩减数据文件存储数量的话--只有一个版面存一个文件?所有用户信息存一个文件?我以一个菜鸟的想法,打开一个几百M甚至上GB的文本文件想都不敢想

至于其他的代码一类的问题,跟我说我也不懂,而且直接和麻辣说他的代码什么地方有问题,他也不会介意,无论对错他都认真和对方交流的--在很多论坛上我见过这样的帖子,从来没有火星。


[此贴被 test2002(test2002) 在 02月14日02时50分 编辑过]


[此贴被 test2002(test2002) 在 02月14日02时51分 编辑过]

B52层 发表时间: 04-02-14 01:18

回复: NetDemon [netdemon]   ADMIN   登录
我在那边说了,一开始两个帖子我是很随意的说的,当然可能有失偏颇,后续的几个,也是在跟年aoming说,在sunluck这个id来了之后,因为它是CBB作者,我说的才是比较认真,不是随便说说。如果我说错了,大可以明确指出来,我不会不承认,但人家除了把我羞辱了一番,好像并没有明确的指出什么。请你认真地看一遍sunlook的所有回复,有哪一句指出我这个错误呢?
摆着那个sysopen()不带缓冲的错误在那里,至今不敢承认。对于我用这里的事实证明并不是除了CBB,国内的其他文本论坛都没法支撑10万帖子这样的事实,他只能用一整篇极讥讽来回答,对于我的很多问题,没有勇气回答,对一个连错误都不敢承认的人,我向来都很.....,我觉得再怎么说下去都没有意义了,因为讨论的已经不是技术了,所以对这个问题,我也不想说了。
让这帖程序沉下去吧,希望大家不要回复了,就让他过去吧

今天很不开心,不因为这样的事情,而是心爱的perl给人强奸了


B53层 发表时间: 04-02-14 02:21

回复: oti [oti]   论坛用户   登录
该轮到我说一句话了:)
无论各位所说的对与错,有则改之无则嘉勉

B54层 发表时间: 04-02-14 09:45

回复: wangshang [wangshang]   论坛用户   登录
引用: sunluck [sunluck] 论坛用户

又在继续造谣,不知道你以前在这里误导了多少学习编程的人,我服你了,你高明,你写的代码水平高,我服了你了,可以了吧?给你留点面子吧,真不想多说了,早烦了

=========================何谓谦虚?


这位反对者不是神经有问题,就是思维混乱了,学编程学了三年,连最基本的读写没搞清楚就妄加评论乱咬人,纯属程序流氓作风,自己变态还是自得其乐?自得其乐也不要紧,不要在这里误导别人,只能说你无药可救了,告诉你吧,到今年我正好学编程仅仅一年--呵呵,我以前都没接触过,真不清楚你学了三年都在学了什么。

=========================何谓修养?


你根本不是友善的态度来帮助CCB解决不足,而是你最初的几次发言明显带有造谣和攻击性这是任何人无法接受的,后来自觉没趣了吧?你号称学编程学了三年连基本读写都没搞清到混了一套流氓作风,还在20cn这里混不觉得丢人吗

=========================何谓友善?


基本读写还没学会的人,你就是采用perl6.0面向对象编程也没用,程序该烂还是烂,因为他基础的东西就没学会,还唐而黄之的大谈自己的程序专业水准,这样下去确实无可救药,他要是男子汉就把自己的程序贴出来,让大家看看在去横向对比吧。换句话说, 即使CCB代码有错误又怎样?能代表CCB整体吗?鼠目寸光吧,有点全局观念好不好,他平时就按这样的思路教他的徒弟们学编程吗。怕他自己的面子丢光?怕徒弟们接受新思路新东西?。。难以理解。

==========================何谓专业?


不是不回答你的问题,而是你态度一直不端正,贬低别人抬高自己的心态暴露无疑,自己楼上的话你自己吃掉吧。自己做的要自己负责,技术问题来不得半点虚假,你以为随便说说,就玷污技术本身吗?看看你的精彩表演吧,不要回避。

==========================何谓端正?


作为一个旁观者,尽管在技术讨论上我插不上嘴,但在个人修养问题上,某些人还是要注意下自己的形象,提点意见就是“凭空捏造,无辜诬陷别人,鼠目寸光,态度不端,玷污技术,神经有问题,思维混乱了妄加评论乱咬人,纯属自己变态,无药可救......”
啧、啧.....真想不到啊,作为一个大师级的人物,怎么跟我们这样的凡夫俗子没区别了呢?
楼上的讲得好,有则改之无则嘉勉,犯得着这样咄咄逼人吗?要想别人尊重你,请先尊重自己吧!




[此贴被 笑忘淑(wangshang) 在 02月15日02时19分 编辑过]

B55层 发表时间: 04-02-15 02:18

回复: Garu [syshunter]   版主   登录
敲你们这些,人家想提高知名度,人家想有点自我成就感,那咱就吹他两下然后提意见就是了,嘎嘎。该干啥干啥去,该写程序的继续写,该搞安全的继续搞安全,该放屁的继续放屁。

B56层 发表时间: 04-02-15 11:11

回复: wuxiu [wuxiu]   论坛用户   登录
test

B57层 发表时间: 04-03-10 08:43

回复: abctm [abctm]   版主   登录
老大好牛B啊

B58层 发表时间: 04-03-10 17:29

回复: zhangyun [zhangyun]   论坛用户   登录
这么好的帖子不要沉啊!~~给我浮起来!~~~~

B59层 发表时间: 05-03-25 19:36

回复: drckness [drckness]   论坛用户   登录
文本和数据库
哪种存诸方式更合理呢,嘿嘿

B60层 发表时间: 05-03-30 10:52

论坛: 网站建设

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号