分类: Online Judge

6 篇文章

Vue-router HTML5 History 模式 Caddy配置
背景 vue-router的History模式将所有的path请求重写到index.html文件,而这么做的目的,按vue-router的说法是 当你使用 history 模式时,URL 就像正常的 url,例如 http://yoursite.com/user/id,也好看! 不过这种模式要玩好,还需要后台配置支持。因为我们的应用是个单页客户端应…
normalize-url不兼容Firefox
背景 版本:Firefox 79 CUPOJ使用了Monaco Editor+Language Server实现代码编辑器Intellisense。 而在采用TypeFox/monaco-languageclient给出的languageclient示例代码进行整合的过程中,client即浏览器端使用了第三方包normalize-url。 问题复现…
CUP Online Judge接入爱发电
CUP Online Judge是我大学期间投入时间最多的一个项目。而随着我大学四年即将画上一个句号,这也代表我对内网的CUPOJ的维护接近尾声。 因此在大四的最后一个学期,我把整个项目仔细重新包装,做成一个带文档(正在努力中)、可轻松移植部署的开源项目。 因此我接入了爱发电从用爱发电到用💰发电 https://afdian.net…
使用C++编写面向对象的动态链接库
背景 CUPOJ支持许多的语言进行编译并运行。当需要给判题机增加一个新的语言时,更改源代码内容、编译、测试、发布,整个过程需要频繁改动内部代码,这样破坏了开闭原则。 因此不妨使用动态链接库解决这个问题。 然而经过查询,动态链接库是不支持直接导出类型的。好在我们可以通过对基类的继承,在动态链接库的源代码暴露一个一个方法用于返回动态链接库提供的对象。 …
使用Github Actions自动编译、打包、发布Vue项目,并使用JSDelivr作为CDN加速
去年5月CUPOJ前端使用Vue进行了重构,因此使用Vue-CLI打包变成了每次发布新的变更必不可少的一个任务。 由于前端项目本身代码量较大,逻辑也比较复杂,打包起来对性能要求相对较高。平时都是在学校服务器直接打包后复制dist目录下的文件到指定文件夹来部署。 每次都执行同样的代码比较痛苦,便写了一个简单的脚本,把整个过程变成了一键部署。若是能够把…
快速部署CUP Online Judge判题机
经过进一步的打磨,CUP Online Judge的判题机终于独立于前后端,可以作为一个后台服务在系统运行了。 考虑到判题过程强依赖操作系统环境,因此整个过程我也打了docker-compose包,不想看下面冗长的部署内容,直接使用的可以前往CUP Online Judge NG Docker Judger体验懒人部署的快感。 系统要求 Ubunt…