作者Dopin (ats.twbbs.org)
看板PttSuggest
标题Re: [建议] 优文恢复+新优文系统
时间Fri Dec 4 11:54:21 2009
※ 引述《wa007123456 (大笨羊)》之铭言:
: 小弟我相信优文可以是好文章的来源:)
: 每个版都会有一个评监的新选项
: 如果通过评监
评监本身就隐含许多问题 Q_Q
: 才可以在那个版申请优文
: 同时会检查 每个帐号第一推 算一推
这种问题被提过许多次 主要还是怕灌水问题 或是乡民情结
然而给板主个人裁定 板主主观认定不见得公平 也是问题多多
: 但是完全不知道BBS的原理
http://OpenSVN.csie.org/pttbbs/trunk/pttbbs
懂 C 家族的话抓回去啃应该很快就可以摸懂
: 我猜每一个版是一个结构体
每个板只是一个(或数个 分散式摆放)目录 一个/几个 索引
每个看板资料单位如下 (下面的 fileheader 也是同理 反正这个 pttstruct.h
啃过了大概就知道可能怎麽运作看板与文件 :p
http://opensvn.csie.org/pttbbs/trunk/pttbbs/include/pttstruct.h
typedef struct boardheader_t { /* 256 bytes */
char brdname[IDLEN + 1]; /* bid */
char title[BTLEN + 1];
char BM[IDLEN * 3 + 3]; /* BMs' userid, token '/' */
char pad1[3];
uint32_t brdattr; /* board的属性 */
char chesscountry; /* 棋国 */
uint8_t vote_limit_posts; /* 连署 : 文章篇数下限 */
uint8_t vote_limit_logins; /* 连署 : 登入次数下限 */
uint8_t vote_limit_regtime; /* 连署 : 注册时间限制 */
time4_t bupdate; /* note update time */
uint8_t post_limit_posts; /* 发表文章 : 文章篇数下限 */
uint8_t post_limit_logins; /* 发表文章 : 登入次数下限 */
uint8_t post_limit_regtime; /* 发表文章 : 注册时间限制 */
uint8_t bvote; /* 正举办 Vote 数 */
time4_t vtime; /* Vote close time */
uint32_t level; /* 可以看此板的权限 */
time4_t perm_reload; /* 最後设定看板的时间 */
int32_t gid; /* 看板所属的类别 ID */
int32_t next[2]; /* 在同一个gid下一个看板 动态产生*/
int32_t firstchild[2]; /* 属於这个看板的第一个子看板 */
int32_t parent; /* 这个看板的 parent 看板 bid */
int32_t childcount; /* 有多少个child */
int32_t nuser; /* 多少人在这板 */
int32_t postexpire; /* postexpire */
time4_t endgamble;
char posttype[33];
char posttype_f;
uint8_t fastrecommend_pause; /* 快速连推间隔 */
uint8_t vote_limit_badpost; /* 连署 : 劣文上限 */
uint8_t post_limit_badpost; /* 发表文章 : 劣文上限 */
char pad3[3];
time4_t SRexpire; /* SR Records expire time */
char pad4[40];
} PACKSTRUCT boardheader_t;
: 然後每一个文章新增後
: 会有一个List储存推文资料
那个 list 也是索引 每个文件单位资料如下
http://opensvn.csie.org/pttbbs/trunk/pttbbs/include/pttstruct.h
typedef struct fileheader_t { /* 128 bytes */
char filename[FNLEN]; /* M.1120582370.A.1EA [19+1], create
time */
time4_t modified; /* last modified time */
char pad; /* padding, not used */
char recommend; /* important level */
char owner[IDLEN + 2]; /* uid[.] */
char date[6]; /* [02/02] or space(5) */
char title[TTLEN + 1];
/* TODO this multi is a mess now. */
char pad2;
union {
/* TODO: MOVE money to outside multi!!!!!! */
int money;
int anon_uid;
/* different order to match alignment */
struct {
unsigned char posts;
unsigned char logins;
unsigned char regtime;
unsigned char badpost;
} vote_limits;
struct {
/* is this ordering correct? */
unsigned int ref:31;
unsigned int flag:1;
} refer;
} multi; /* rocker: if bit32 on ==> reference */
/* XXX dirty, split into flag and money if money of each file is less
than 16bit? */
unsigned char filemode; /* must be last field @ boards.c */
char pad3[3];
} PACKSTRUCT fileheader_t;
: 利用foreach() //我知道C应该没有这个功能
基本上目前台湾现存的 BBS Dist. 大多是 base C :) 而且也用不到这玩意儿
BBS 都有自身的工具程式(针对 所有/特定 使用者/看板/外部呼叫 等) 跟线上修改
资料的专用函式 所以 "应该" 也用不到这种没有 "特殊化" 的函式呼叫
: 这样可以吗^^"
详读 Code 以後 你就会发现绝大部份的文字 BBS "没有" 外部资料库 也 "几乎没有"
C++ Code 大概找不到 C# --> 包的越多的东西效能往往没有增益
而 PTT 系统是针对大量使用者与资料特化的 BBS 所以许多可能造成人力作业负担的
都有必需考量其实用性 当然造成系统负担的优先会被排除掉
最後 优文系统本身在 Ptt 的实用性如何就不是我的讨论范围 (逃) 程式面很好达到
就是 但我想考量的不是程式面 :p
--
SOB Pack 已於日前 Release 出 gcc 3.x 版, 欢迎还活在 Maple 2.36 SOB Version
回忆中的朋友们一起来讨论下列相关 :
1.
maple 2.36 2.
SOB 3.
Atlantis Version
telnet to bbs.bsd.com.tw Boardname : ATSVersion
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.70.65.28