Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

What to do next? #12

Open
14 of 20 tasks
cong258258 opened this issue May 16, 2022 · 3 comments
Open
14 of 20 tasks

What to do next? #12

cong258258 opened this issue May 16, 2022 · 3 comments

Comments

@cong258258
Copy link
Member

cong258258 commented May 16, 2022

评测机 todo:

  • 评测机 docker 化(enhancement, urgent)
  • 消息队列(enhancement, important)
  • diff 超时将会引发整个评测机宕机(bug, urgent)
  • 评测时内存 overhead 优化(bug, medium)
  • 编译时沙箱(bug, #low)评测机抓鬼日志 #2
  • git clone 后加入 supported_files 参与编译(enhancement, low)
  • 评测时 RE 优化

Web todo:

  • contest 与 homework 界面 api 化,渲染表格交给前端,后端只提供 json(enhancement, urgent)
  • judge_details 界面 api 化,这样才能避免前端主动刷新页面来获取 running 的评测结果(enhancement, important)

前端 todo:

  • 页面利用率与显示效果优化,尤其是表格(enhancement, medium)
  • contest 与 homework 界面自定义排序(bug, medium)
  • markdown 与 latex 协作时的多行公式渲染(bug,low)

管理界面 todo:

  • markdown live preview(bug, medium)[Admin] problem management markdown preview bug #10
  • 比赛管理彻底 curd (目前没有支持学生列表、题目列表的查询、在查询结果上的删改)(enhancement, low)
  • 用户管理 remake(使得助教可以解决学生忘记密码的问题)(enhancement, medium)
  • 数据包上传前的正确性检测(enhancement, medium)
  • 数据包分块上传与成功提示(enhancement, important, notoriously difficult)

文档 todo:

  • 除了管理员界面有个用户手册,别的开发文档是真的一点都没有 乐 不想分级了
  • 添加:OJ 上默认被评测的可执行文件必须是 code

其他 todo:

  • IPV6 数据上传缓慢(bug, important)
@cmd2001
Copy link
Member

cmd2001 commented Feb 9, 2023

随便翻翻 GitHub 看到这个项目 在此提一点小建议
根据目前文档完成度 全部服务Docker化指日可待

  • Web 服务 Dockerfile 构建 (mysql和redis分离 Web添加执行数据库初始化的逻辑 配置文件直接映射)
  • 评测机 Dockerfile 构建 (映射配置文件 token可用env传递 测试API用于health check)
  • 数据服务 Dockerfile 构建 (挂载存储文件夹即可)
  • docker compose 一键部署
  • Github Action 自动构建镜像 并存储于 Github Registry

@Musicminion
Copy link

这个OJ算是我大一梦开始的地方了,过了三年再来看发现还是挺惊喜的(功能也完善了许多)

耗时一整天试图迁移到docker,发现要解决的问题实在太多(难度还是有点大),我做了一些简单的修改

  • 增加了docker-compose的文件
  • 构建用的dockerfile
  • 一些环境变量配置的配置(

差不多做到了能评测这一步,但是一评测编译反而直接崩了,仓库连接:https://github.com/Musicminion/TesutoHime

可能可以用来参考一下。

说实话这个项目迁移到docker是个大工程,排除掉那些dockerfile、compose文件的编写还有很多要处理的。

提几个小问题(建议)

  • 比如数据库初始化的东西只能通过脚本来搞,导致用docker还得加上很多脚本,上面的cmd2001说的也很有道理
  • 像这种数据库连接,如果连接失败没有提示(或者warning)我甚至不知道一个组件比如web是不是连上了数据库,redis(

@Alan-Liang
Copy link
Member

这个OJ算是我大一梦开始的地方了,过了三年再来看发现还是挺惊喜的(功能也完善了许多)

感谢关注!

耗时一整天试图迁移到docker,发现要解决的问题实在太多(难度还是有点大),我做了一些简单的修改

其实装进 docker 里这件事情还停留在远景规划;~~没想到除了我们自己,竟然真的有别人会试图把这东西跑起来。~~最近我们部署了好几个 oj 的 instance,装进 docker 里确实会方便一些。

  • 增加了docker-compose的文件
  • 构建用的dockerfile
  • 一些环境变量配置的配置(

差不多做到了能评测这一步,但是一评测编译反而直接崩了,仓库连接:https://github.com/Musicminion/TesutoHime

估计是沙箱没法 setuid;docker 本身已经是在一个 user namespace 里面运行的了,里面再 subuid 可能需要一些类似于 docker-in-docker 的配置。我不知道有没有办法把 setuid 传进 docker 里;不行的话可能就得 --privileged 了。

可能可以用来参考一下。

非常感谢!(现在运维组几个人都是大二、大三的,对 docker 都不是很熟……)

说实话这个项目迁移到docker是个大工程,排除掉那些dockerfile、compose文件的编写还有很多要处理的。

把生产环境迁到 docker 里面大概是个更大的工程……

提几个小问题(建议)

  • 比如数据库初始化的东西只能通过脚本来搞,导致用docker还得加上很多脚本,上面的cmd2001说的也很有道理

是说 web 在启动的时候检测并创建数据库吗?应该是可行的。

  • 像这种数据库连接,如果连接失败没有提示(或者warning)我甚至不知道一个组件比如web是不是连上了数据库,redis(

是这样的;现在 web 启动的时候根本不会试图连数据库,来请求的时候才会连。当然等到来请求的时候就直接 500 了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants