ACM封榜滚榜技术记录(qduoj)

封榜

在计划时间,关闭management里的contest管理的Real Time Rank和Status,实现封榜。

滚榜

项目开源
(本项目无后端,只有前端~)

1. 得到比赛提交数据

  • 首先进入oj-postgres容器(数据库)
docker exec -it 容器名 sh
  • 登录onlinejudge账户
    (在yml文件中查找数据库对应的账户密码(这个可以类比于进入电脑的账号密码),以及容器的数据库的名称(这个可以类比于电脑里的cde盘))
psql -U onlinejudge
psql -U onlinejudge

psql语法拓展(菜鸟教程)
- \l // 列出所有数据库
- \c 数据库名 // 进入数据库
- \d // 列出数据库所有表名
- \q // 同时退出账户和数据库回到容器根目录
- \d 表名 // 列出表中的所有字段

字段的概念:字段其实就是数据库中表的列。
批处理:就是项目部署的一套操作

  • 将本次比赛的提交记录搞出来
copy (select * from submission where contest_id='本次比赛的后台id') to '/home/1.csv' with csv header
// 将onlinejudge数据库中的submission表中的所有contest_id字段为本次比赛的后台id的行,保存到1.csv文件中并复制到oj-postgres容器的home目录下。
  • 将1.csv从docker容器的home目录复制到云服务器上
    参考资料
docker cp 容器名:(注意这里不能有空格)/home/1.csv(这里指明具体复制文件) /home(服务器目录下)

// 若复制报错解决措施
- chmod 777 /home // 给oj-postgres容器的这个目录777权限(可写权限),在容器根目录执行
  • 通过xtfp将1.csv搞到本地物理机上
  • 对1.csv进行筛表
    根据开源项目中的 a,b cpp文件筛出需要的字段,其余删掉,最后删掉首行。若cpp汉字出现乱码,在记事本里打开即可。
    特别注意: a表中的时间字段需要将空格全部删除,因为a.cpp读入时没用gets。
excel全选中,查找替换中,将空格全替换
  • 将a.cpp,b.cpp,更改cpp中的路径为对应筛表的路径,运行cpp。将结果保存到两个记事本里,并将其改为json文件。替换掉原来的data文件夹中的所有文件。
    特别注意: json文件的命名需与源文件相同(12th…),否则需要修改js文件夹中的scrollboard.js文件实现自定义。
  • 修改index中的title,以及github上提到的时间(时间写data文件夹中的那个包含时间的文件的最小值12点,封榜时间往后推即可),奖牌等。
  • 将img文件夹拉入,并将index下图处加上这句话为网页加上logo。这里的名字必须与文件夹中的文件夹名,文件名一致。
    在这里插入图片描述
  • 修改js文件中的scrollboard.js文件的下图位置为你的data文件夹中的含题号的那个文件中的最小题号。
    在这里插入图片描述
  • 将以下文件打包到一个文件夹,上传到云服务器
    在这里插入图片描述

2. 利用nginx部署网页前端实现访问(nginx反向代理)

实现
网页的访问主要依赖于index.html,以及其中提到的依赖路径和文件。

通过访问nginx所处服务器公网ip + nginx服务器然间占用的端口,访问nginx反向代理服务器内搭建的网站。

nginx反向代理能实现翻墙~


注意: 阿里云服务器root用户无法远程连接。。
更完善的ACM赛事滚榜开源项目
仔细研读ing…

©️2020 CSDN 皮肤主题: 1024 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值