kbs on debian

都是逼出来的,.PASSWDS 的问题快要把人整疯了。干脆快点移植到KBS上算了。

等我有空了,再写一下KBS在debian上的安装吧。
现在比较详细的安装说明可以参考这里:http://www.newsmth.net/bbsanc.php?p=196-4-1-2-4-1

  • 关于.PASSWDS
  • .PASSWDS存放userec在smth1.2和KBS之间数据结构不同,所以是需要转换的。不过我比较了一下lilac版本和kbs的userec结构,大小一样,居然能够兼容,也就是说可以不加转换的使用。
    不过好事多磨,在kbs的登陆界面,输入marvel居然说错误用户,在水母求助无果。后来仔细一看,原来是kbs的MAXCLUB定义是256,而lilac定义是1024,所以结构体的大小变化了,也就无法载入用户信息了。
    修改这个定义,重新编译,done。发现marvel能够进入,但是marvela、marvelb等都无法进入,sigh。仔细一对比,原来是kbs的MAXUSERS才定义20000,而lilac定义为40000。所以很多用户都被截掉了。
    这次索性全部对照着修改define值,编译,启动,ok。

  • 关于十大
  • /*
    *本部分于2007.07.10添加。
    */

    前两天就发现无法添加十大,以为问题不大,所以就没放在心上,而且主体部分没有完成,所以打算以后处理。昨晚把东西弄得差不多了,今天准备看看十大。

    今天带实验的时候看这部分东西,发现不是那么简单的。poststat 这个东西比较 e,涉及到/etc/posts/day.0,还有共享内存的部分。查了半天,无果,逼我使用gdb。调试到最后,发现是writestat函数中的get_records_from_id每次都失败。
    不解,但是涉及到结构体的东西,就不好做了。(从这点上来说,相对于结构体串行化,我还是喜爱xml这种数据存储方式,简单明了,损坏易恢复)于是自己写了一个程序来读讨论区的.DIR文件。结果发现新发的帖子的id号突然变大,例如原来是2000,新发的帖子变成了200000。涉及到共享内存的东西我就郁闷了,不好调试。
    最后没有办法,停服务,清共享内存,覆盖.BOARDS文件,覆盖.DIR,世界清静了……

    这个解决了。但是诡异的事情在后面:

    KBS 对十大增加了不少功能,最特出的就是十大模式了,用户能够实时的读取十大信息。但是我怎么弄就是不行,告诉我当前没有十大信息,但是/etc/posts/day明明已经生成了,ft!
    没办法,这种情况下唯一的做法就是读代码。kbs 是将十大信息放在了全局的共享内存 public_data结构体 的top_header中。poststat 的时候读入,但是我猜程序启动的时候应该会读day.0载入。
    最后终于发现错误在哪里了。原来我在调试的时候增加了一个新版,但是后来覆盖.BOARDS文件的时候这个版消失了。但是day.0文件依然存在,所以程序会加载旧的十大信息。不幸的是那个消失的版面的文章在十大第一,所以当程序处理到这里的时候,误认为十大的信息不存在。

    解决方法很简单,删除day.0,整个世界又安静了……

    刚刚收到lanslot的信,收到KCN的授权书了。可惜给我的信箱是基本上废弃的hit信箱……

    /*
    *本部分于2007.07.10添加完毕。
    */

  • 关于automake
  • /*
    *本部分于2007.07.12添加。
    */
    安装kbs的时候先要运行以下./autogen.sh。
    但是我运行之后出现错误:
    automake: bbs2www/phplib/Makefile.am: not supported: source file `../../src/lilacfuncs.c’ is in subdirectory
    automake: libBBS/Makefile.am: not supported: source file `$(top_builddir)/libBBS/site.c’ is in subdirectory
    automake: libBBS/Makefile.am: not supported: source file `$(top_builddir)/libBBS/default.c’ is in subdirectory

    查了一下,我的automake是1.4的,就是这个问题。解决方法很简单,到/usr/bin下面。
    apt-get automake1.8
    unlink automake
    ln -s automake-1.8 automake

    此外,还需要用同样的方法对aclocal进行处理,将其替换为1.8版本。
    /*
    *本部分于2007.07.10添加完毕。
    */

    /*
    *本部分于2007.07.19添加。
    */

  • 关于新用户注册
  • 本来都做好了,新用户需要邮箱激活。可是今天移植主站的时候发现没有起作用,ft。

    回头一看,原来我写的代码都在LILAC_REG_MARVEL定义里面,而lilac.h文件中由于版本问题,这个定义被覆盖了,所以一点我的代码都没有进去。

    添加#define LILAC_REG_MARVEL 1即可。

  • 关于用户自定义键
  • deem把这部分修改了,如果用户找不到自己home目录的definekey文件,则会使用默认的系统define.lilac文件。
    移植的时候没有考虑这个,而且测试的人员可能都自己定义了,所以这部分没有发现。今天按照deem的修改一下definekey.c,就ok了。
    /*
    *本部分于2007.07.19添加完毕。
    */

  • 关于bonline
  • /*
    *本部分于2007.07.21添加。
    */
    发现cron中的bonline运行有问题,输出是一长串的No database selected。
    错误很简单,就是没有找到数据库,修复方法如下:
    1,修改etc/sysconf.ini,添加:

    MYSQLHOST = “127.0.0.1”
    MYSQLUSER = “root”
    MYSQLPASSWORD = “xxxx”
    MYSQLSMSDATABASE = “dbxxxx”
    MYSQLPORT = “3306”
    其中xxxx就不说了。按一下”~”生效。

    2,修改mysql服务器的root密码为xxxx。
    3,建立数据库dbxxxx:
    mysql>create database dbxxxx;
    mysql>USE dbxxxx;
    mysql> CREATE TABLE bonline (
    id int(10) NOT NULL auto_increment,
    bname varchar(20) NOT NULL default ”,
    users int(11) NOT NULL default ‘0’,
    nowid int(11) NOT NULL default ‘0’,
    bdate date NOT NULL default ‘0000-00-00’,
    bhour int(2) NOT NULL default ‘0’,
    min int(2) NOT NULL default ‘0’,
    PRIMARY KEY (id),
    KEY bdate (bdate)
    ) TYPE=MyISAM COMMENT=’bonline’;
    现在就可以运行bonline了。

    //////////////////////////
    突然发现以上部分用处不大,因为紫丁香系统中没有NEWSSMTH的宏定义,所以post_brdlog没有用,所以上面的数据也没有用。
    相应的,紫丁香是用了usage来生成版面信息的。

    但是telnet和web的热门版面不一样,telnet是按照版面人数排序的,而web是按照平均在版面的时间来排序的。由于存在挂机的现象,可能版面只有一个人在,但是平均在线时间很高,所以我改了一下统计方式,让web也按照人数来排序。在此作为备忘录。

    /*
    *本部分于2007.07.19添加完毕。
    */

    Need 4 Speed

    进度,进度,赶进度!

    前天风风火火的找smile要前台和后台的接口,做了一个。昨天开个会,确定一下,smile晚上给了我文档。

    今天早上开始做,感觉我做的时候就是在赶时间,coding的时候可以听到风在呼呼呼呼的在我耳边呼啸而过,真的又一种开极品飞车的感觉。到下午的时候就做的差不多了,把能做的东西全部做完了。

    妈呀,没见过人的潜能能够发挥到这样的。大前天晚上看了一晚上的jsp入门,今天就把前端弄完了,我也许是安拉的秘密使者(伊斯兰的paper中说耶稣是安拉的使者尔撒圣人)来祝那个项目一臂之力的。

    可惜smile告诉我要回家一趟,过两天才能过来。看来最短路径又得增加了,明天看看lanslot是不是要装服务器,希望老婆不会再放我鸽子了。轻松一天,后天再战吧。

    勇气

    词:光良 曲:瑞业

    终于做了这个决定 别人怎么说我不理 只要你也一样的肯定
    我愿意天涯海角都随你去 我知道一切不容易
    我的心一直温习说服自己 最怕你忽然说要放弃
    爱真的需要勇气 来面对流言蜚语
    只要你一个眼神肯定 我爱你的意义(我的爱就有意义)
    我们都需要勇气 去相信会在一起 人潮拥挤我能感觉你
    放在我手心 你的真心
    如果我的坚强任性 会不小心伤害了你
    你能不能温柔提醒 我虽然心太急 更害怕错过你

    困啊

    最近睡眠真不好,总是八九点钟就醒了,看来夏天真不是睡觉的好时节。

    sigh,洗洗脸出去。刚出门口,挣扎着睁开惺忪迷离的眼睛,有一只手搭在我的肩膀上面。还好当时反应比较慢,不然不得被活活吓死……

    回头一看,居然是cliff,这家伙竟然不去上班,蹲在我公寓外面投窥我,等我出来好趁机搭讪,嗯,还好被我看透了。一起上楼,分手,无事。

    实验室的网关挂了,上不了网。去六楼大屋,就是有点热。没办法,下午用两张椅子搭成的简易设备上休息一下,去interview一下下,备受打击的到cliff那里磨蹭了一个小时。

    写完blog开始看ipc,bbs怎么用这玩意儿,挺不稳定的。

    真想过狗狗一样的日子……

    休息一下

    over

    lilacbbs

    建立这个站真不容易,有好多因素需要考虑。法律上,伦理上,lanslot最清楚了。看看旧的丁香是怎么死的:http://lilacbbs.com/bbscon.php?board=Black_Soil&id=316828。现在新丁香在内测,你需要先登录才能看。也可以到http://hi.baidu.com/lilacbbs看《近期的回顾》系列。

    作为技术方面,我可以不用考虑那么多复杂的人和事请,只要面对系统和代码。当然,这也不是一件容易的事情。要让smth1.2适应新的系统真不是一件容易的事情,不过还好有神奇的debian。还有感谢那很老的服务器,能够让debian识别出它的光驱来,总之那天安装系统和bbs基本上没什么问题。感谢上帝和RMS、Linus一干人等,让我那天过的还算顺利。

    之后,基本上就是测试各种功能,也许这段时间,sysop 和 blacksoil 是两个大版。每天都会收到N多bug report,大部分是以前系统的问题,这个暂时无法解决;另一部分是新系统的问题,有可能是一些东西没有配好。总之问题不是很大。

    最关键的是新站定位的差别,要求很多源码级的改动。首先把deem的所有认证去掉,添加自己的激活方式。还要做到telnet和web整合,这部分挺郁闷的。不过还好,最后搞定,基本上没有问题。后来出现的问题主要集中在net和com的域名解析和term的显示上,这也是我无能为力的。

    以前说好事不出门,现在看来真是胡说。感觉还没怎么宣传,昨天的在线人数已经超过了300,刚才还到了377。oasis和vivian还上来了,还有一些我觉得不会上来,至少不会这么快上来的人也上来了。

    站本身没有什么,关键在于人。正是有了一群与紫丁香共存的站长和站务,和一大批热爱和关注紫丁香的朋友——暂且不关心这个紫丁香到底是哈工大紫丁香还是紫丁香社区——才有了一个有生命力的社区。

    也许有很多人在盯着这个社区,有人想让它存在,有人想让它倒下,还有人想利用它分一杯羹,大千世界,这不仅是一个bbs,更像是一个浓缩的社会。

    总之,我知道自己在做事,在做一件好事,至少是像google说的那样:不做恶。

    记住这个名字:lilacbbs

    脊骨

    还在看当年明月的连载,那些关于他是不是作弊的争论已然不重要了,重要的是一种习惯,能够每天都会有一些期盼,会读到一些东西。前两天忙bbs的事情,没有时间看。今天发现有四篇未读了,看来我已经有两天没有去看了。当一件事情真正融入到自己的生活,那就没有办法不去做了,不然就会觉得仿佛少了什么一样。

    不谈历史,不谈假的东西。但是,我们的确可以从粉饰的太平中找出山崩前的蛛丝马迹,也能从无数假象中找出真相。明朝算是一个很黑暗的时期了,尽管有郑和下西洋的壮举,由资本主义的萌芽,但是也掩盖不了它的孱弱。外不能保家卫国,朱元璋祖孙虽赶走蒙古人,然后世却不能拒其于国门之外,乃有“土木堡之变”和“庚戍之变”;内不能安民清政,虽有朱元璋酷刑惩治贪官,但还是却出了无数严嵩之流,更别说弄权的王振、刘瑾、魏忠贤等人了。

    我原以为在这样一个时期,政局一定是黑暗无比,正如万马齐喑。却没有想到,那个时代,还那么多鲜活的名字。明朝有著名的锦衣卫,监视百官的一言一行,放到现在,大家的脑海中浮现的一定是一幅法西斯国家的景象,但事实是明朝有一群言官,品秩不高,却敢骂皇上,直接骂,毫不留情地骂,在中国历史上恐怕只有明朝有这种事。我常常想,即使放到现在,人们也不敢当面说core们的不对吧,更别说明朝之后清朝的那些文字狱了。

    明朝的读书人是很有骨气的,相比来说,后世的却像是被阉割过了一般。读明月的文章,很多士大夫都是上书言事,家里就准备棺材等死,而大家都以此为荣。当时的环境就是名声远比生命重要,宁可舍去性命不要,也不能背一生骂名。

    昨天读到杨继盛死谏嘉靖,当一个穷苦的读书人,奋斗了几十年,终于凭借自己的努力,谋得一份官职。本应谋得官位带来的种种便利,至少应该静静的等到退休,混个衣锦还乡,但是杨继盛却没有这么做。相反,他以性命相搏,弹劾朝中的第一权臣——严嵩。

    他知道自己面对的会是什么,除了死还是死,根本没有任何胜算。没有钱、没有权,也没有后台,他有的,只有那时读书人中“舍生取义”执著的信念。知其不可为而为之,是为悲壮。就像谭嗣同一样,要用自己的血肉谱写一个时代的序篇。

    但是杨继盛受到的折磨却比谭嗣同更惨。他在狱中受酷刑,晚上独自用碎碗片刮骨去腐肉,神情安定,那幅画面,太让我震撼了。关羽这样的硬汉,恐怕在这位文弱书生面前也会汗颜的吧。时常我们会听闻人的潜力会有多大,例如一个人被大树压倒,竟然用小刀割掉自己的大腿脱身。人家是为了求生,但是杨继盛却更像是一心求死。他一直被关了三年才英勇就义,而其间受的苦难自不必言。

    我一直觉得,一个人做的事情是我不能做,甚至是不敢想的,无论他做什么,都值得我佩服。驱动他们去做的,永远是一股常人难以理解的信念。人说,只有偏执狂才能成功,也许他们说对了。

    正因为这些不怕死的人,才让大明朝不是一无是处,正是这些人,才让我们看到了希望。中国在任何时候,都不缺脊骨,尽管经过了清朝的残酷镇压和洗脑,读书人的正气还是会沿承下去的。

    当然我说的脊骨不是整天胡乱叫爱国的愤青们,激进,不是有思想;单纯,不是善良。愤青,永远只是人家的一枚棋子。我说的脊骨,是那些看得清世界,还有骨气和信念的人。也许明月写的王守仁正是这么一块脊骨。至于他,明月的评价是完人,我也不都说了,大家看他的原文就可以了。

    做完搜索

    这年头,感觉自己做的事情越来越没有谱了。干信息按全的做网格已经挺搞笑了,最近的项目还要做搜索引擎,ft一个。

    smile师兄开始说要我做分词之类的东西,看来要和自然语言的混了。不过后来google一下,可以用Lucene做,这样底层的建索引、倒排这些东西我都可以不关心了。只要专心做中文的分词即可。

    其实Lucene有自己的中文分词类CJKAnalyzer和ChineseAnalyzer。原来以为可以用它俩就可以了,毕竟是官方的嘛。没想到下载下来,就是两个java源文件,运行一下,发现前者就是将所有的文字分为两个字的词组,后者和StandardAnalyzer一样的,更别说什么词库了,那个晕啊。

    没办法,继续googling,找到一个segment.jar,这个有词库,分得还可以,基本上能按照词库里面的词把文章分开了。下面的工作就是将它改造为Lucene的Analyzer,这部分就是分析+copy+paste+重写,晚上基本上做完了。除了分出的词的startoffset和endoffset有点问题之外,基本上能做索引,搜索了。

    革命尚未成功,继续吧。

    resume

    要注意隐私了,突然发现别人把我的简历直接下载,拿去网站上当模板供别人下载了。这种做法太tmd yd了。都没经过我的授权。看来需要作一些access control了。

    方便和隐秘始终是一组矛盾。

    良知之学,知行合一

    一直在看当年明月的《明朝的那些事儿》,基本上是我每天必做的功课。

    以前看王守仁,当年明月似乎对王守仁的“执行合一”的思想很崇拜,用了很大的篇幅写,他觉得是中国明朝之后最重要的哲学思想。最近看到徐阶,他算是王守仁的传人吧。少年得志,但是因为轻狂得罪了权贵,发落外地,经过十年的磨练,终于悟得了心学的真谛。

    我觉得当年明月说的很有道理,我摘抄一段:

    我的一位哲学系毕业的好朋友曾经这样对我说:大学里不应该开设哲学本科专业,因为学生不懂。

    这是一句至理名言,作为这个世界上最为高深的智慧,哲学是无数天才一生思考、生活的结晶,他们吃过许多亏,受过许多苦,才最终将其浓缩为书本上的短短数言。

    一个二十岁的青年人是不会懂得这些的,他们太天真,太幼稚,他们或许能够在考试中得到一百分,却不可能真正了解其中的含义。所以他们虽然手握真理,却无法使用,满怀热情地踏入社会,却被撞得头破血流。

    ……

    说教没有用,礼仪廉耻没有用,忠孝节义也没有用,这些玩意除了让人昏昏欲睡外,并没有任何作用。

    在剥除这个丑恶世界的所有伪装之后,徐阶终于找到了最后的答案——利益。

    胸怀天下、舍生取义的绝对道德确实是存在的,可惜的是这玩意太高级,付出的代价太高,从古自今,除了个别先进分子外,大多数人都不愿消费。

    利益,只有充足的利益,才有驱动人们的魔力,这就是这个世界的真实面目,极其的残酷,却异常的真实。

    面对这个残酷的现实,徐阶终于明白了知行合一的真意,无论有多么伟大正直的理想,要实现它,还必须懂得两个字——变通。只有变通,只有切合实际的行动,才能适应这个变化万千的世界。

    也许我们接受了太多的正规教育,以至形成的价值观太正确、太绝对了。但是世界是多元的,圣人之道未必能用于小人。

    也许我还太小,无法理解心学的真谛。希望如果有一天,我真的领悟到了,那时候我还没有变的像采尼那么疯。