纯 C++ 写了一个论坛,求测试 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
typcn
V2EX    分享创造

纯 C++ 写了一个论坛,求测试

  •  8
     
  •   typcn
    typcn 2015 年 5 月 7 日 16579 次点击
    这是一个创建于 3902 天前的主题,其中的信息可能已经有所发展或是发生改变。

    BUG 可能很多,缓存溢出啊,XSS 啊都是有可能的,有问题的话告诉我。

    支持 Markdown 发帖回帖,登陆强制使用 Google Twitter GitHub 的 OAuth

    因为很多配置是写死的,而且代码也比较乱,过几天整理一下,然后写个大致的安装教程,就开源到 GitHub 上。

    服务器放在 Google Cloud 上,用了 CloudFlare 的 SSL。

    URL -> https://leanclub.org/

    第 1 条附言    2015 年 5 月 7 日
    刚刚 502 的问题已修复,在主数据库连接出现问题,返回了空内容的时候,程序依然会尝试渲染 Markdown ,因为指针不存在返回了,返回之后又尝试释放了一次指针,导致 502 ,现在应该没事了
    182 条回复    2015-07-27 23:35:17 +08:00
    1  2  
    yangff
        1
    yangff  
       2015 年 5 月 7 日 via Android
    过来帮你顶一发 跑)
    Troevil
        2
    Troevil  
       2015 年 5 月 7 日
    速度感人
    powerfj
        3
    powerfj  
       2015 年 5 月 7 日
    有一个问题,为什么用纯C++写..
    kindlepaper
        4
    kindlepaper  
       2015 年 5 月 7 日 via iPhone
    C++好牛逼,好底层,好快啊
    笑尿......
    typcn
        5
    typcn  
    OP
       2015 年 5 月 7 日
    @powerfj 练练手。。。。其实还是闲的蛋疼
    @Troevil 到底是快还是慢呢我这电信非常快啊,倒是联通连接 CloudFlare 可能有点问题。
    Troevil
        6
    Troevil  
       2015 年 5 月 7 日
    @typcn
    刚刚 :南京电信 不挂代理几乎打不卡
    现在: 貌似正常打开了,是间接性抽风吗。。
    typcn
        7
    typcn  
    OP
       2015 年 5 月 7 日
    @Troevil 现在墙对 CloudFlare 就像对当年的 Google 一样,但是一旦打开的话,内容就有缓存了,再打开就快了
    Troevil
        8
    Troevil  
       2015 年 5 月 7 日
    @typcn 话说使用了pjax吗
    typcn
        9
    typcn  
    OP
       2015 年 5 月 7 日   1
    @Troevil 不是用的 pjax 库,但是用了 pushState + ajax
    Arnaud
        10
    Arnaud  
       2015 年 5 月 7 日


    Hello 你好 张国荣来了
    vSignup
        11
    vSignup  
       2015 年 5 月 7 日
    Time: 0.001472s
    ilancelot
        12
    ilancelot  
       2015 年 5 月 7 日
    和你博客一样的主题风格
    msxcms
        13
    msxcms  
       2015 年 5 月 7 日
    其实是汇编写的
    typcn
        14
    typcn  
    OP
       2015 年 5 月 7 日
    @Arnaud 别 spam 到这啊。。。我写的还在测试,水水无所谓。。
    xdeng
        15
    xdeng  
       2015 年 5 月 7 日
    printf ?
    typcn
        16
    typcn  
    OP
       2015 年 5 月 7 日
    @xdeng 纯 C++ ,boost::asio ,直接监听 80 端口
    typcn
        17
    typcn  
    OP
       2015 年 5 月 7 日
    @xdeng 纯 C++ ,boost::asio ,Socket 直接监听 80 端口
    ugmc
        18
    ugmc  
       2015 年 5 月 7 日
    这速度确实神一般。。。。
    xdeng
        19
    xdeng  
       2015 年 5 月 7 日
    @typcn 那 怎么 格式化 内容? 解析模板?
    xdeng
        20
    xdeng  
       2015 年 5 月 7 日
    @typcn 看错了 你这应该是 ajax 异步加载的
    beautifultable
        21
    beautifultable  
       2015 年 5 月 7 日
    间歇502……
    liujiantao
        22
    liujiantao  
       2015 年 5 月 7 日 via Android
    C++写?没必要吧。。。ty肯定是锻炼能力
    typcn
        23
    typcn  
    OP
       2015 年 5 月 7 日
    @xdeng 模板是用的 mustache
    @beautifultable CloudFlare 没有健康检查蛋疼,有的时候由于线程的问题可能会崩掉,所以我开了两个,用 CF 自动分配,看来我得用 HAProxy 了
    vSignup
        24
    vSignup  
       2015 年 5 月 7 日
    @typcn 萝莉你头像呢
    typcn
        25
    typcn  
    OP
       2015 年 5 月 7 日
    @vSignup 吃了!
    typcn
        26
    typcn  
    OP
       2015 年 5 月 7 日
    @beautifultable *** Error in `./leanclub': free(): invalid next size (fast): 0x00007ff0080141f0 *** 找到原因了,一会修修
    Tink
        27
    Tink  
    PRO
       2015 年 5 月 7 日 via iPhone
    。。。。。
    szieziw
        28
    szieziw  
       2015 年 5 月 7 日
    顶,一直做下去就好了,贵在坚持
    choury
        29
    choury  
       2015 年 5 月 7 日
    你牛逼,我还只是给我的web服务器整了一个C++的cgi接口,你这整个网站都弄出来了
    typcn
        30
    typcn  
    OP
       2015 年 5 月 7 日
    @choury 哈哈,主要还是归功于各种开源库
    BetaLe
        31
    BetaLe  
       2015 年 5 月 7 日 via Android
    很快啊
    choury
        32
    choury  
       2015 年 5 月 7 日
    @typcn 居然还有spdy支持,当初我实现了一个spdy/3.1 但是效率还不如http/1.1,你这部分也开源吗
    Twinkle
        33
    Twinkle  
       2015 年 5 月 7 日
    你厉害..
    typcn
        34
    typcn  
    OP
       2015 年 5 月 7 日
    @choury 其实我只实现了 HTTP ,SPDY 是 CloudFlare 实现的,这部分建议参考 nginx
    choury
        35
    choury  
       2015 年 5 月 7 日
    @typcn 那就算了,我还是直接搞http2吧
    lincanbin
        36
    lincanbin  
       2015 年 5 月 7 日
    http://www.94cb.com/
    有的页面比我用PHP写的还要快两三倍啊。
    搞得我也想用C++重写了。
    evlos
        37
    evlos  
       2015 年 5 月 7 日 via iPhone
    @Arnaud 无意义 Spam @
    chaucerling
        38
    chaucerling  
       2015 年 5 月 7 日
    这酸爽的速度
    evlos
        39
    evlos  
       2015 年 5 月 7 日 via iPhone
    @Arnaud 无意义 Spam @Livid
    itfanr
        40
    itfanr  
       2015 年 5 月 7 日
    牛叉啊 用C++写论坛!
    tinkerer
        41
    tinkerer  
       2015 年 5 月 7 日
    同学, 怎么这样了。。。
    lincanbin
        42
    lincanbin  
       2015 年 5 月 7 日
    @typcn Web Server也是你自己实现的话,你做过并发测试吗?
    Livid
        43
    Livid  
    MOD
    PRO
       2015 年 5 月 7 日 via Android   1
    @evlos OK 删掉了两条
    typcn
        44
    typcn  
    OP
       2015 年 5 月 7 日
    @lincanbin 我在本地做了并发测试,反序列化 JSON 并输出,在 4 核的 VM 上两万左右。
    Roboo
        45
    Roboo  
       2015 年 5 月 7 日 via Android
    不错
    VYSE
        46
    VYSE  
       2015 年 5 月 7 日
    原来用http://www.webtoolkit.eu写过一个系统,这个轮子简单些
    zhoujg77
        47
    zhoujg77  
       2015 年 5 月 7 日
    顶!
    udonmai
        48
    udonmai  
       2015 年 5 月 7 日
    好酷啊啊啊,什么时候请务必写篇科普文让我拜读啊
    typcn
        49
    typcn  
    OP
       2015 年 5 月 7 日
    @VYSE 我觉得异步的会好一点
    typcn
        50
    typcn  
    OP
       2015 年 5 月 7 日
    @udonmai 不敢当,代码写的不很好,还在纠结开源
    phx13ye
        51
    phx13ye  
       2015 年 5 月 7 日
    按下一页显示false是什么鬼
    znoodl
        52
    znoodl  
       2015 年 5 月 7 日 via iPad
    其实这个帖子是发给前天问c++能干嘛的那个人看的
    VYSE
        53
    VYSE  
       2015 年 5 月 7 日
    @typcn 那个也用了异步asio,这库后来merge进了boost
    evlos
        54
    evlos  
       2015 年 5 月 7 日
    Time: 0.001795s 是不是用 ms 做单位比较好?可以和其他论坛程序做对比 :)
    typcn
        55
    typcn  
    OP
       2015 年 5 月 7 日
    @phx13ye 下一页空的话应该是“该页面没有任何内容”才对啊
    @evlos 计算时间是按 CPU 时钟的,只能先算出来除以 CLOCK_PER_SEC ,默认是秒,* 1000 就可以了
    800126
        56
    800126  
       2015 年 5 月 7 日 via Smartisan T1
    膜拜中。
    ljcarsenal
        57
    ljcarsenal  
       2015 年 5 月 8 日
    厉害。。。
    wind3110991
        58
    wind3110991  
       2015 年 5 月 8 日
    膜拜下,楼主开源时记得@ 一下我,楼主写c++多少年了?
    wind3110991
        59
    wind3110991  
       2015 年 5 月 8 日
    再mark下,这网页刷新速度真快。。。
    owlsec
        60
    owlsec  
       2015 年 5 月 8 日 via iPhone
    简直。。
    LINAICAI
        61
    LINAICAI  
       2015 年 5 月 8 日
    破坏了c++在我心目中的速度形象。。。
    LINAICAI
        62
    LINAICAI  
       2015 年 5 月 8 日
    切换分类好慢好卡的感觉 没有做异步吗
    另外黑色背景好难受啊
    不过好酷的样子
    loading
        63
    loading  
       2015 年 5 月 8 日 via Android
    用的什么数据库,这个性能瓶颈怎么没人问?
    lvfujun
        64
    lvfujun  
       2015 年 5 月 8 日
    @typcn 楼主你写了多长时间才写出这个网站的?
    oimotis
        65
    oimotis  
       2015 年 5 月 8 日
    在手机上看到,直接吓尿了,赶紧爬起床尿尿,顺便用电脑给楼主回个贴支持一下!
    heqichang
        66
    heqichang  
       2015 年 5 月 8 日
    强悍,支持开源顶一个^_^
    init
        67
    init  
       2015 年 5 月 8 日
    开源不? 想学习啊
    silvernoo
        68
    silvernoo  
       2015 年 5 月 8 日
    哒,关注求开源。
    mahone3297
        69
    mahone3297  
       2015 年 5 月 8 日
    赞一个。。。
    xuhaoyangx
        70
    xuhaoyangx  
       2015 年 5 月 8 日
    速度感人。不知道是不是网速问题
    xuhaoyangx
        71
    xuhaoyangx  
       2015 年 5 月 8 日
    赞一个....
    udonmai
        72
    udonmai  
       2015 年 5 月 8 日
    @typcn 可能你对很多东西要求比较高啦,如果之后优化的好的话,还是很期待开源或者写文章讲讲哒,毕竟 C++ 写 web 是很久以前出现的事情,现在没几个人做过,也不了解。比如我的话,可能能想到的就是先得自己实现一个 cgi,然后如你所说的要有处理 HTTP 请求的功能快,比如 web server,再者是逻辑代码,就像 web 框架,框架也得有很多功能,渲染页面等等。不知道我哪里漏掉了,总之这并不是一个很轻松的任务,至少在我看来,所以我很想看看你的思路,好好学习一番~

    谢谢,总之,加油~
    MrJing1992
        73
    MrJing1992  
       2015 年 5 月 8 日
    牛!
    qqjt
        74
    qqjt  
       2015 年 5 月 8 日
    厉害啊
    udonmai
        75
    udonmai  
       2015 年 5 月 8 日
    @typcn http://www.tutorialspoint.com/cplusplus/cpp_web_programming.htm 这个文档看上去还挺人气的,不知道思路一不一样?
    td width="48" valign="top" align="center">qqjt
        76
    qqjt  
       2015 年 5 月 8 日
    点帖子里的用户名 会404 not found,是还没做用户页吗
    typcn
        77
    typcn  
    OP
       2015 年 5 月 8 日
    @wind3110991 我 16 岁,没多少年。。
    @LINAICAI 为了用户隐私,服务器在国外,如果网络不好会很慢,墙对这个 CDN 对当时的 Google 一样,非常丢包

    @lvfujun 一个星期
    @qqjt 是的还没做
    xieyudi1990
        78
    xieyudi1990  
       2015 年 5 月 8 日
    以前用C用异步socket写过一个论坛系统

    如果只是个人使用, 个人专业有不在前端技术这块, 用C写一个完全不需要太久.
    xieyudi1990
        79
    xieyudi1990  
       2015 年 5 月 8 日
    @xieyudi1990 s/用C写一个完全不需要太久./用C写一个完全是可行的, 且不需要太久./g
    typcn
        80
    typcn  
    OP
       2015 年 5 月 8 日
    @xieyudi1990 纯 C 各种繁琐啊。。麻烦
    ve2x
        81
    ve2x  
       2015 年 5 月 8 日
    Time: 0.000369s
    Winny
        82
    Winny  
       2015 年 5 月 8 日
    好厉害
    ipconfiger
        83
    ipconfiger  
       2015 年 5 月 8 日   1
    以前在学校的时候就跟一个硕牛在BBS上打嘴仗,当时用php在写论坛,他非常的看不起各种高级语言,属于汇编原教执主义者,他坚持要跟我比赛写一个BBS,他用汇编。在我的BBS上线后的某一天,他居然跑来注册了,并发帖宣布他的BBS走出了重要的一步,他用汇编重写了整个HTTP协议栈,现在终于可以处理http请求了......
    master13
        84
    master13  
       2015 年 5 月 8 日
    ERR_SSL_VERSION_OR_CIPHER_MISMATCH
    顺便请教一句,C++写的和现在快速开发的论坛相比,优势在哪里?
    lvfujun
        85
    lvfujun  
       2015 年 5 月 8 日
    @typcn 不然你以为为什么要有脚本语言?
    C++写这种网站就只能练练手.如果公司都用c++写网站?那场面太美......不敢想象.
    如果楼主仅仅是抱着锻炼的心态写这个网站是非常好的.要是抱着装X的心态.....还是尽早改正.
    思想最重要语言仅仅只是工具.
    附一个我的替问
    http://v2ex.com/t/185208#reply1
    当我像你这个年纪的时候我还在搞什么抓鸡一类的东西.你比我早几年走上了正道.继续加油吧!
    lvfujun
        86
    lvfujun  
       2015 年 5 月 8 日
    @master13 弊大于利.而且弊要大太多了.
    typcn
        87
    typcn  
    OP
       2015 年 5 月 8 日
    @master13 没啥优势,除非写的性能太渣被攻击之类的。

    @lvfujun 我这是第一次“现学现用” C++ 写大一些的程序,就是想学学,遇到几个崩溃问题还修不了。。。
    typcn
        88
    typcn  
    OP
       2015 年 5 月 8 日
    @master13 是不是 XP ?请使用 HTTP 方式打开
    v2Panda
        89
    v2Panda  
       2015 年 5 月 8 日
    800126
        90
    800126  
       2015 年 5 月 8 日
    围观,可惜没有前排了,很喜欢这种年轻折腾的劲头。
    bestsanmao
        91
    bestsanmao  
       2015 年 5 月 8 日
    c++写web
    杀鸡用牛刀的感觉
    yulgang
        92
    yulgang  
       2015 年 5 月 8 日
    This page (https://leanclub.org/) is currently offline. However, because the site uses CloudFlare's Always Online technology you can continue to surf a snapshot of the site. We will keep checking in the background and, as soon as the site comes back, you will automatically be served the live version. Always Online is powered by CloudFlare | Hide this Alert
    typcn
        93
    typcn  
    OP
       2015 年 5 月 8 日
    @yulgang 刚刚发现一个导致服务器崩溃的问题,但是不知道哪里错了,所以我用 GDB 重启了一下服务端
    typcn
        94
    typcn  
    OP
       2015 年 5 月 8 日
    @yulgang 点击 Retry for live version 即可
    jsq2627
        95
    jsq2627  
       2015 年 5 月 8 日
    @typcn clock() 的精度是 100ms 级的。如果要获得更精确的时间,需要用到平台相关的 API。C++11 新增的 std::chrono::high_resolution_clock 似乎也可以。
    assassinpig
        96
    assassinpig  
       2015 年 5 月 8 日
    觉厉,前来一顶
    jsq2627
        97
    jsq2627  
       2015 年 5 月 8 日
    想问问前端用到了哪些框架组件?
    最近也想实现一个布局不复杂,但是细节比较多的界面,如果全部从头写觉得好烦。。。
    typcn
        98
    typcn  
    OP
       2015 年 5 月 8 日
    @jsq2627 好的,谢谢
    @jsq2627 主要是 boost 库,异步 IO 和 Socket ,模板是 mustache
    yangff
        99
    yangff  
       2015 年 5 月 8 日 via Android
    @lvfujun 然而c++纯粹输出JSON的话,其实并没有什么麻烦。
    反正用一些黑魔法可以直接把对象序列化。。不用的话也只是人工标记一下。。有些地方还会更爽其实。。
    hcymk2
        100
    hcymk2  
       2015 年 5 月 8 日
    @typcn
    有时候点下一页 会直接返回false.
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2730 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 15:08 PVG 23:08 LAX 07:08 JFK 10:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86