.github/workflows | ||
chat_box | ||
django_ace | ||
dmoj | ||
judge | ||
locale | ||
resources | ||
templates | ||
websocket | ||
.browserslistrc | ||
.flake8 | ||
.gitignore | ||
502.html | ||
django_2_2_pymysql_patch.py | ||
dmoj_bridge_async.py | ||
dmoj_celery.py | ||
dmoj_install_pymysql.py | ||
LICENSE | ||
logo.png | ||
make_style.sh | ||
manage.py | ||
manifest.json | ||
README.md | ||
requirements.txt | ||
robots.txt |
LQDOJ: Le Quy Don Online Judge
Overview
Homepage: https://lqdoj.edu.vn
Based on DMOJ.
Supported languages:
- Assembly (x64)
- AWK
- C
- C++03 / C++11 / C++14 / C++17
- Java 11
- Pascal
- Perl
- Python 2 / Python 3
Support plagiarism detection via Stanford MOSS.
Installation
Most of the setup are the same as DMOJ installations. You can view the installation guide of DMOJ here: https://docs.dmoj.ca/#/site/installation.
There is one minor change: Instead of git clone https://github.com/DMOJ/site.git
, you clone this repo git clone https://github.com/LQDJudge/online-judge.git
.
Additional Steps in Production:
- To use newsletter (email sending), go to admin and create a newsletter.
- Change the domain name and website name in Admin page: Navigation Bars/Sites
Some frequent difficulties when installation:
- Missing the
local_settings.py
. You need to copy thelocal_settings.py
in order to pass the check. - Missing the problem folder in
local_settings.py
. You need to create a folder to contain all problem packages and configure inlocal_settings.py
. - Missing static folder in
local_settings.py
. Similar to problem folder, make sure to configureSTATIC_FILES
insidelocal_settings.py
. - Missing configure file for judges. Each judge must have a seperate configure file. To create this file, you can run
python dmojauto-conf
. Checkout all sample files here https://github.com/DMOJ/docs/blob/master/sample_files.
Usage
Suppose you finished all the installation. Everytime you want to run a local server, follow these steps:
- Activate virtualenv:
source dmojsite/bin/activate
- Run server:
python manage.py runserver 0.0.0.0:8000
- Create a bridge (this is opened in a different terminal with the second step if you are using the same machine)
python manage.py runbridged
- Create a judge (another terminal)
dmoj 0.0.0.0 -p 9999 -c <path to yml configure file>
Here we suppose you use the default port 9999 for bridge in settings.py
. You can create multiple judges, each should be in a seperate terminal.
Optional
- Run celery worker (This is server's queue. It may be necessary in some functions)
celery -A dmoj_celery worker
- Run a live event server (So everything is updated lively like in the production)
node websocket/daemon.js
Deploy
Most of the steps are similar to Django tutorials. Here are two usual steps:
- Update vietnamese translation:
- If you add any new phrases in the code,
python manage.py makemessages
- go to
locale/vi
- modify
.po
file python manage.py compilemessages
python manage.py compilejsi18n
- Update styles (using SASS)
- Change .css/.scss files in
resources
folder ./make_style && python manage.py collectstatic
- Sometimes you need to
Ctrl + F5
to see the new user interface in browser.
Screenshots
Leaderboard
Leaderboard with information about contest rating, performance points and real name of all users.
Admin dashboard
Admin dashboard helps you easily managing problems, users, contests and blog posts.
Statement editor
You can write the problems' statement in Markdown with LaTeX figures and formulas supported.
Chat
Users can communicate with each other and can see who's online.