V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Reign
V2EX  ›  分享创造

也许,这是第一款基于 NoSQL 编写的 php 开源论坛程序

  •  4
     
  •   Reign · 2016-02-28 20:39:31 +08:00 · 3439 次点击
    这是一个创建于 3199 天前的主题,其中的信息可能已经有所发展或是发生改变。

    爱码士倒计时页面: www.2ma4.com/countdown
    一直以来,我就想打造一个专为极客和码农们热烈交流的社区,纵观国内 IT 论坛,基本都是一个帖子下面平行分布各种回复,每个回复之间通过 @相连接,有时经常都要找半天这个人到底是在回复谁?比如 ruby-china , phphub , V2EX , cnodejs , golang 中国 等等,这些社区都做得很精美小巧,但是,却难以将回复者之间的关系调动活跃起来。
    去年 8 月份,我便开始动手编写“爱码士”这个论坛,我希望回复者能够像网易盖楼那样,一层一层彼此热情高涨,在设计过程中我参考了网易盖楼和 disqus 等网站的盖楼设计,但这些设计都不是太完美,逐渐向内缩进的盖楼意味着盖楼的楼层数始终有个最大值,印象中网易盖楼到 70 层时便塌楼了,因此,我设计了一种新的“堆栈式”盖楼设计:
    2ma4
    盖楼一层层向上推进,理论上支持无限多的楼层
    在前端方面,码农们眼中从来都是干净、整洁、纯粹的东西是最美的设计,因此,我将爱码士整个论坛都设计的非常干净简单:
    帖子页:
    2ma4
    站内私信发送:
    2ma4
    个人 profile 页:
    2ma4
    在系统架构上,爱码士使用了经典的 MVC 架构,这个 MVC 也是内置在自己编写的一个很小巧的 php 框架中,系统存储采用了国人开发的一款基于 Google leveldb 的 nosql : ssdb ( http://ssdb.io/zh_cn ), ssdb 简单的说就是一个存储在硬盘上 redis ,其使用协议和 redis 相同,但由于数据全部存储在硬盘上,并且支持亿级数据,因而扩大了容量的同时大幅降低了成本。相对于传统的 php+MySQL+memcache(or filecache)后端设计, ssdb 可以多出很多特性,比如 setx 可以限制用户频繁对一个帖子进行回复:爱码士将每个人对于一个帖子的回复 setx 一个有存活时间的 flag ,在这个 flag 存活期内,用户无法再对这个帖子进行回复。但用户发送私信行为不能用 setx 进行限制,不可能让用户每隔 10 分钟发送一条私信吧,万一有多条连续重要的私信呢,这时,借助于 ssdb 的 list 特性,我们可以为每个用户发送私信的时间戳设置一个队列,尾部入栈,顶部出栈,这样,用户在规定时间内发送次数多于某个预设值时阻止发送。
    在盖楼的数据库设计方面,为了达到回复内容的可控性,我没有把回复 HTML 写死在数据库里,而是将回复 reply_id 以 json 形式存在 hashmap 中
    系统帖子排序分为“默认排序”和“最新帖子”,默认排序是按照 stackoverflow 的算法,感谢阮一峰老师提供的这篇文章: http://www.ruanyifeng.com/blog/2012/03/ranking_algorithm_stack_overflow.html 爱码士的默认排序也是按照这篇文章中的算法进行排序的。
    整个爱码士编写大概耗时半年,其中个人感觉最难的就是私信发送系统了,私信没有采用 websocket , php 不适合干这个,也没有采用长轮询的方式,而是 js setinterval 定时请求,通过 jquery trigger click 刷新按钮请求服务器,由于第一次使用 nosql 编写这个在线聊天系统,可能会有考虑不周的 bug 出现。
    系统前端只引用了 jquery 库,为了界面美观干净,没有使用臃肿的 bootstrap ,全站公用一个 global.js 和 base.css ,站长二次开发的时候会很方便查看代码
    从 mockup 构想,到 HTML 和 css UI 设计,然后是后端架构和数据库设计,到最后的 js Ajax 前后调用,自己花了半年的时间完成,希望大家能尊重劳动成果,一个人开发所以 bug 难免,加之第一次使用 ssdb ,希望大家能抱着平和的态度指出 bug ,目前倒计时页面已经放出,系统目前 PC 版已经制作完成, mobile 端正在制作中,待 bug 修复完毕后,我会将 PC 端代码以安装包形式上传至 github 供站长二次开发和安装

    第 1 条附言  ·  2016-03-05 08:50:05 +08:00
    看不到图片可以参考我在 oschina 上发的帖子: http://www.oschina.net/question/571926_2154048
    15 条回复    2016-03-04 19:37:13 +08:00
    alwayshere
        1
    alwayshere  
       2016-02-28 20:49:34 +08:00
    支持一下,界面设计得很赞
    stanhou
        2
    stanhou  
       2016-02-28 21:02:23 +08:00
    什么 J8 玩意儿
    movtoy
        3
    movtoy  
       2016-02-28 21:04:58 +08:00
    5 分钟没打开
    cdlcm
        4
    cdlcm  
       2016-02-28 21:07:39 +08:00
    赞一个!是否开源
    movtoy
        5
    movtoy  
       2016-02-28 21:07:53 +08:00
    你列举的这几个论坛都够蠢的。。

    回复里各种回复,看的真 jb 乱。

    微博,知乎多少年前就把回复的回复做成对话形式了。

    搞技术的人,做产品,说真的,不行!
    kisshere
        6
    kisshere  
       2016-02-28 21:13:36 +08:00   ❤️ 2
    @movtoy 也不能这么打击别人的积极性吧,一个能开源的社区至少证明作者的苦心和情怀,况且“回复里各种回复,看的真 jb 乱”哪里乱了,感觉挺新颖的啊
    ericls
        7
    ericls  
       2016-02-29 03:03:11 +08:00 via iPhone
    做得很好!
    qianmeng
        8
    qianmeng  
       2016-02-29 04:13:28 +08:00 via Android
    做的不错,很有路,加油
    tlv2013
        9
    tlv2013  
       2016-02-29 08:25:06 +08:00 via Android
    不错,加油
    yao978318542
        10
    yao978318542  
       2016-03-01 11:40:00 +08:00
    居然打不开!是 login
    micookie
        11
    micookie  
       2016-03-01 14:12:27 +08:00
    界面上乍一看、有点像 weibo 、

    不错期待上线。
    heige853
        12
    heige853  
       2016-03-02 23:50:51 +08:00
    @micookie 像新浪微博+1
    strwei
        13
    strwei  
       2016-03-04 17:43:56 +08:00
    开源论坛程序????
    zhoushiya
        14
    zhoushiya  
       2016-03-04 18:55:10 +08:00
    我晕,等了 4 天了,结果就因为贴图库被办,图片打不开就延期 7 天?闹着玩呢?
    miao
        15
    miao  
       2016-03-04 19:37:13 +08:00 via Android
    图片能否重新发下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3347 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:14 · PVG 20:14 · LAX 04:14 · JFK 07:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.