星期五, 十月 06, 2006

telnet-based BBS八卦 section 3 (原创)

说明:本系列文章,作者为Hok-men Chan;本系列文章纯粹yy,纯粹八卦;除特别标出外,在2003年11月至2004年3月间写成。并且,本文的发布与再发布均须遵循GNU Free Documentation License。

标 题: telnet-based BBS八卦 section 3 (原创)
(Wed Mar 31 15:43:49 2004)

telnet-based BBS八卦

Author: Hok-men Chan ( hokmen (dot) chan (AT) gmail (dot) com )

License: GNU Free Documentation License
(link: http://www.gnu.org/licenses/fdl.html )

Copyright:

Copyright (c) 2004 Hok-men Chan
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".


3. telnet-based BBS的web界面

3.0 关于telnet-based BBS的web界面的“月经”贴

telnet-based BBS的web界面之不美观,为人诟病。于是常常有人在bbsdev之类的版面上post request,要bbs的开发者学php forum那样把BBS的web界面搞美观些。

以前的bbs2www和njuwebbsd,html代码嵌在c代码里面,不利于专业的美工对telnet-based BBS的web界面进行美化,加上bbs开发者和bbs热衷者都喜欢用telnet界面,以至于web界面美化的功夫做得不够。

3.1 web界面需要向以数据库为基础的cgi/php forum的界面学习

漂 亮实用的web界面能吸引到更多的用户(而且从技术层面上,如果telnet-based BBS要引入IM、wiki或者blog,web界面会比较容易开发一些,具体在下面谈)。虽然web界面的管理效率比telnet界面低很多,但除非 telnet界面的客户用特殊的浏览器(比如说某天emacs上出现了一个for BBS的telnet client且能把链接的图片下载和显示,甚至能浏览网页,或者某天qterm上也出现了浏览网页的功能),web界面或者说浏览器仍然是看图片
和点链接的好东西。

这 方面,telnet-based BBS的web界面就需要向cgi/php forum的界面学习了,尽管在技术上并不难。目前在兼容firebird2000的telnet-based BBS上已经有了smth的wforum界面和电子科大的ut界面。不过后者在mozilla系列和opera上的显示有很大问题。ptt的web界面, 虽然是只读的,但其仿tavi(一种wiki程序)界面也做得相当不错的说。

除了这些仿cgi/php forum的界面外,日月光华站的web界面用上了不少漂亮的图标,仿win xp界面,做得也相当漂亮。

3.2 web界面需要用到模板吗?

由于telnet-based BBS的功能接口,web界面的确需要发展出一些接口或者说html的接口模板,让html从webbbsd或者cgi程序里独立出来,以方便专门的美工进行网页设计
和美化。而smth的web界面则已经实现了php化。

现 在已经有人在Firebird2000系列的派生版本上尝试加进XML的因素,针对不同的浏览器来让他自己开发的tiny httpd抛出不同的XML(原因比较简单,做telnet代码的那位现在用上MozillaFirebird了,而他自己正在用debian),并且这 些XML代码可以独立出来,让美工进行美化,这对于telnet-based BBS来说,应该是个好消息。

3.3 web界面专用的tiny httpd

apache太大和占用太多内存了,也占用了相当多的cpu资源,而且很多功能都是web界面的telnet-based BBS所不需要的。

于是nju的nju webbsd出现了。我知道的还有pukebbs代码所使用的sanry webbsd。但这些webbbsd目前仍然出于发展初期,各种各样的bug很多。在bbs.nju的BBSDEV板上相当多关于njuwebbsd的bug描述。

另外,也可以用squid反向代理的方法,来降低telnet-based BBS的web服务所消耗的主机资源。smth和ytht也正在做这些事情。

3.4 web界面和libBBS

由于是telnet-based BBS,web的cgi或者webbbsd所用到的telnet代码也很多。为了让代码可重用,一些telnet-based BBS出了libBBS,让telnet代码和web代码都可以调用。

3.5 telnet-based BBS需要让它的主服务器和webbbsd分开吗?

个 人觉得有这样的必要。尤其是用apache做web界面的deamon的BBS,web服务消耗了许许多多的cpu资源。如果某个BBS的web界面的在 线id数量占在线id总数的相当大的部分,把web服务器独立出主服务器或者讨论区存储服务器,用NFS或者其它星状的分布式文件系统的client来访 问后者,是后者的负载的好方法。用NFS或者其它星状的分布式文件系统的理由是web服务对bbs讨论区和精华区的读写i/o没有bbsd那么密集,而且 这样做基本上不需要对web服务的程序做改动。

但此时,系统维护者要考虑的是NFS和其它星状的分布式文件系统的效率和文件锁的问题了。