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

NOJ——基于 Laravel 的开源 Online Judge 实现

  •  5
     
  •   zsgsdesign · 2019-06-06 10:31:02 +08:00 · 4130 次点击
    这是一个创建于 2027 天前的主题,其中的信息可能已经有所发展或是发生改变。

    NOJ

    NOJ 是一个基于 PHP+Laravel 的现代化在线测评系统,评测机部分使用 Docker。

    上一个版本的 NOJ 已经有十年历史了,bug 无数,最初是和 NUAA 合作的但是被人家甩了,所以去年年底我们终于下定 决定重构一个现代话的版本,一扫垃圾 UI。

    所以寒假里,我一个人从除夕写道开学,搞了一个全新的 NOJ。经过多次版本迭代,NOJ 目前已经非常成熟了。多个校级比赛已经采用 NOJ 进行了,可惜的是今年省赛我们还是使用了 DOMJudge。

    目前我们校队的训练中大量使用了 Virtual Judge,于是 NOJ 顺水推舟继承了 Virtual Judge 功能,未来 NOJ 将会以每周一个 OJ 的速度上线一个新的 OJ。

    当然,作为一个 OJ,必要的功能也是不能少的,NOJ 使用 Docker 作为判题核心,采用了网站服务评测机分离的模式,同时我们也支持了评测机集群,还有一个虚假的负载均衡(误

    目前 NOJ 的技术栈主要有 PHP+Laravel+MySQL+Redis,评测部分 Go+Docker,还有一些例如测试用例生成使用了 python 实现,甚至,甚至还有为了兼容 Windows 而写的 vbs......

    NOJ 已经在开源社区 GitHub 上线,收获了 100+star,欢迎大家来 Star,Fork 或者提 Issue 哦~

    GitHub: ZsgsDesign/NOJ

    Wiki: ZsgsDesign/NOJ/wiki (非常不全)

    Demo: NOJ (最近一周晚上封外网,只能白天访问)

    有什么问题或者建议欢迎在下面回复。

    谢谢啦~

    21 条回复    2019-06-08 12:30:36 +08:00
    azh7138m
        1
    azh7138m  
       2019-06-06 10:44:25 +08:00
    先 O 了。
    判题端使用的 https://github.com/MarkLux/JudgeServer 吗?
    zsgsdesign
        2
    zsgsdesign  
    OP
       2019-06-06 10:53:15 +08:00
    @azh7138m 基于那个版本二次开发,其实开发中包括 [QingdaoU/JudgeServer]( https://github.com/QingdaoU/JudgeServer) 也有参考,以后可以一起开个源。
    azh7138m
        3
    azh7138m  
       2019-06-06 10:59:46 +08:00
    docker 是方便呐
    借楼安利下一个 win 下的判题实现 https://github.com/Azure99/OpenJudger
    jsnjfz
        4
    jsnjfz  
       2019-06-06 11:01:31 +08:00
    南邮校友支持一波,真的不错
    msrcatn203
        5
    msrcatn203  
       2019-06-06 11:21:17 +08:00 via Android
    ZLBNB (
    xiang578
        6
    xiang578  
       2019-06-06 12:11:46 +08:00
    帮定,之前只能忍受 hustoj 的界面,可惜现在用不到 oj。
    azh7138m
        7
    azh7138m  
       2019-06-06 12:34:18 +08:00
    @xiang578 界面也想重写一下的,可是没有时间呐......
    zsgsdesign
        8
    zsgsdesign  
    OP
       2019-06-06 12:47:26 +08:00
    @azh7138m HustOJ 同时代的感觉都很古老了,感觉都可以重构一个下一代版本了。话说是 HustOJ 开发者?
    azh7138m
        9
    azh7138m  
       2019-06-06 13:01:07 +08:00
    @zsgsdesign 呃,算是老用户,平时主要回答一些如何重启判题姬的问题(
    也在试着给 hustoj 打 deb 包
    cctv1005s927
        10
    cctv1005s927  
       2019-06-06 13:14:18 +08:00
    不错👍🏾,但是从前端的角度上来说,交互上还是需要提升的。

    就比如说 status 中的 table 翻页,可能是为了复用 loading,才导致整个 dom 要重新渲染的。

    实际上 Table 翻页不应该出现白屏的
    zsgsdesign
        11
    zsgsdesign  
    OP
       2019-06-06 13:24:22 +08:00
    @cctv1005s927 我们在考虑 ajax 化翻页,目前是因为 paginate 组件纯后端的缘故,改写的话可能要花点时间。同时 PJAX 支持也已经在计划中了,不过估计距离完全实现还有一段时间。
    cctv1005s927
        12
    cctv1005s927  
       2019-06-06 14:58:18 +08:00
    @zsgsdesign 浏览器一般有支持的,如果是新的请求 dom 和原来的差不多,就不会完全白屏,所以我建议你们可以在 Table 那里把 Loading 取消
    mrcn
        13
    mrcn  
       2019-06-06 18:10:28 +08:00 via Android
    不错
    JC1027
        14
    JC1027  
       2019-06-06 18:31:23 +08:00
    希望加一个 hustoj 迁移到 noj 的功能,现在好多学校都在用 hustoj (我校也是 ),感觉本 oj 最大优势是集成了 vj。
    iovo7
        15
    iovo7  
       2019-06-06 21:00:12 +08:00
    装了下,不错,star。
    不过这后台在哪进,没弄明白。
    JohnChiu
        16
    JohnChiu  
       2019-06-06 21:28:20 +08:00
    UI 很漂亮,支持一下
    zsgsdesign
        17
    zsgsdesign  
    OP
       2019-06-06 21:50:24 +08:00 via Android
    @JC1027 可以啊,可以提 issue 呀,假如喜欢的话 PR 也可以哦。我们可能会在未来直接支持 HustOJ 的 FPS 格式,也可能推出自己的标准,都还在讨论中。
    zsgsdesign
        18
    zsgsdesign  
    OP
       2019-06-06 21:51:32 +08:00 via Android
    @JohnChiu 谢谢哦,现在的 UI 都是我一个人设计的,同学说有点性冷淡 2333,我们最近扩招了全职前端,以后会更棒哦⊙∀⊙!
    zsgsdesign
        19
    zsgsdesign  
    OP
       2019-06-06 21:53:37 +08:00 via Android
    @iovo7 现在还是半成品还不太适合用作生产,麻烦谅解哦,目前我们的后台还在开发中,地址是 /admin,需要手动在数据库添加用户,以后我们写了安装脚本后会一键生成,不过目前还不行的,可能会有些麻烦。(其实我们自己都是改数据库维护的)
    azh7138m
        20
    azh7138m  
       2019-06-07 12:33:37 +08:00 via Android
    @JC1027 emmm,hustoj 现在有什么问题吗?
    JC1027
        21
    JC1027  
       2019-06-08 12:30:36 +08:00
    @azh7138m #20 没问题,只是提供一个建议
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   990 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 21:52 · PVG 05:52 · LAX 13:52 · JFK 16:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.