最近在维护NYOJ2.0
的一些BUG
,由于判题机采用的是HUSTOJ
的判题机,所以就必须了解一下HUSTOJ
的源码。
HUSTOJ
的源码开源GitHub,我们可以clone下来自己部署一个。地址是:hustoj
首先是几个个重要的配置文件的位置:
/home/judge/etc/judge.conf #判题端配置文件
/home/judge/src/web/include/db_info.inc.php #数据库及web端的一些配置
/etc/php5/fpm/php.ini 或 /etc/php7.0/fpm/php.ini #php的配置
/etc/nginx/sites-enabled/default #nginx的配置文件
对于很多的对于判题机以及oj的配置,都需要修改以上的配置文件.
这个在配置文件/home/judge/src/web/include/db_info.inc.php
中修改,里面的第23行,static $OJ_LANGMASK=
,这个值代表了允许哪些语言。可以从下面获得
(nyoj2.0在这里/var/www/OJ/trunk/src/nyoj-v2/app/config.php
)
我们在源码中定位一下,/home/judge/src/core/judge_client/judge_client.cc
这个文件,在130行可以找到对于语言的定义:
static char lang_ext[18][8] = { "c", "cc", "pas", "java", "rb", "sh", "py",
"php", "pl", "cs", "m", "bas", "scm","c","cc","lua","js","go" };
按照顺序编号从0到17,
语言 | c | cpp | pas | java | rb | bash | py | php | perl | c# | oc | fb | sc | cl | cl++ | lua | js | go | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
代码 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | |
1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048 | 4096 | 8192 | 16384 | 32768 | 65536 | 131072 | ||
0启用1禁用 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | langmask: |
0 | 0 | 0 | 0 | 16 | 32 | 0 | 0 | 256 | 512 | 1024 | 0 | 4096 | 0 | 0 | 32768 | 0 | 131072 | 169776 |
按照二进制位,0代表启用,1代表禁用,最后会有一个01串,然后把这个01串翻转一下,转化成十进制就是我们要求的值.比如我们只允许C,C++,JAVA,PYTHON
提交,那么最后的01串是111111111110110100
,十进制的值是:262068
.
Python
显示为Python3
找到这个文件:/home/judge/src/web/include/const.inc.php
修改对应的语言显示即可.
RE
问题参考知乎专栏:https://zhuanlan.zhihu.com/p/24498599
在对应的页面添加以下js
HUSTOJ
地址:/home/judge/src/web/template/bs3/js.php
nyoj2.0
地址: /var/www/OJ/trunk/src/nyoj-v2/app/web/view/pc/problem/problem.html
/var/www/OJ/trunk/src/nyoj-v2/app/web/view/pc/contest/problem.html
<script type="text/javascript"
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
script>
仅对于nyoj2.0
修改trunk/src/nyoj-v2/app/web/view/pc/problem/getsubmitpage.html