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

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

  •  8
     
  •   typcn ·
    typcn · 2015-05-07 19:42:41 +08:00 · 15443 次点击
    这是一个创建于 3491 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    URL -> https://leanclub.org/

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


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

    谢谢,总之,加油~
    MrJing1992
        73
    MrJing1992  
       2015-05-08 09:44:45 +08:00
    牛!
    qqjt
        74
    qqjt  
       2015-05-08 09:45:12 +08:00
    厉害啊
    udonmai
        75
    udonmai  
       2015-05-08 09:45:38 +08:00
    @typcn http://www.tutorialspoint.com/cplusplus/cpp_web_programming.htm 这个文档看上去还挺人气的,不知道思路一不一样?
    qqjt
        76
    qqjt  
       2015-05-08 09:50:18 +08:00
    点帖子里的用户名 会404 not found,是还没做用户页吗
    typcn
        77
    typcn  
    OP
       2015-05-08 09:57:33 +08:00
    @wind3110991 我 16 岁,没多少年。。
    @LINAICAI 为了用户隐私,服务器在国外,如果网络不好会很慢,墙对这个 CDN 对当时的 Google 一样,非常丢包

    @lvfujun 一个星期
    @qqjt 是的还没做
    xieyudi1990
        78
    xieyudi1990  
       2015-05-08 10:06:16 +08:00
    以前用C用异步socket写过一个论坛系统

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

    @lvfujun 我这是第一次“现学现用” C++ 写大一些的程序,就是想学学,遇到几个崩溃问题还修不了。。。
    typcn
        88
    typcn  
    OP
       2015-05-08 10:42:18 +08:00
    @master13 是不是 XP ?请使用 HTTP 方式打开
    v2Panda
        89
    v2Panda  
       2015-05-08 11:05:53 +08:00
    800126
        90
    800126  
       2015-05-08 11:06:50 +08:00
    围观,可惜没有前排了,很喜欢这种年轻折腾的劲头。
    bestsanmao
        91
    bestsanmao  
       2015-05-08 11:18:22 +08:00
    c++写web
    杀鸡用牛刀的感觉
    yulgang
        92
    yulgang  
       2015-05-08 11:20:16 +08:00
    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-05-08 11:23:52 +08:00
    @yulgang 刚刚发现一个导致服务器崩溃的问题,但是不知道哪里错了,所以我用 GDB 重启了一下服务端
    typcn
        94
    typcn  
    OP
       2015-05-08 11:24:21 +08:00
    @yulgang 点击 Retry for live version 即可
    jsq2627
        95
    jsq2627  
       2015-05-08 11:26:04 +08:00
    @typcn clock() 的精度是 100ms 级的。如果要获得更精确的时间,需要用到平台相关的 API。C++11 新增的 std::chrono::high_resolution_clock 似乎也可以。
    assassinpig
        96
    assassinpig  
       2015-05-08 11:27:50 +08:00
    觉厉,前来一顶
    jsq2627
        97
    jsq2627  
       2015-05-08 11:29:59 +08:00
    想问问前端用到了哪些框架组件?
    最近也想实现一个布局不复杂,但是细节比较多的界面,如果全部从头写觉得好烦。。。
    typcn
        98
    typcn  
    OP
       2015-05-08 11:31:06 +08:00
    @jsq2627 好的,谢谢
    @jsq2627 主要是 boost 库,异步 IO 和 Socket ,模板是 mustache
    yangff
        99
    yangff  
       2015-05-08 11:39:10 +08:00 via Android
    @lvfujun 然而c++纯粹输出JSON的话,其实并没有什么麻烦。
    反正用一些黑魔法可以直接把对象序列化。。不用的话也只是人工标记一下。。有些地方还会更爽其实。。
    hcymk2
        100
    hcymk2  
       2015-05-08 11:40:15 +08:00
    @typcn
    有时候点下一页 会直接返回false.
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1433 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 23:48 · PVG 07:48 · LAX 15:48 · JFK 18:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.