[DEPRECATED] - Hiện project sẽ dừng phát triển và chuyển sang sử dụng VNOJ. Xem repo ở đây
OJ này được fork và chỉnh sửa lại từ NOJ. Chi tiết có thể xem qua repo gốc ở đây: NOJ. Đây là OJ chính thức của CLB Tin học - khoa CNTT&TT trường ĐH Cần Thơ.
Ngôn ngữ hỗ trợ (15)
Language | Compile/Run Command |
---|---|
C | /usr/bin/gcc -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c99 {src_path} -lm -o {exe_path} |
C11 | /usr/bin/gcc -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c11 {src_path} -lm -o {exe_path} |
C++ | /usr/bin/g++ -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c++11 {src_path} -lm -o {exe_path} |
C++14 | /usr/bin/g++ -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c++14 {src_path} -lm -o {exe_path} |
C++17 | /usr/bin/g++ -DONLINE_JUDGE -O2 -w -fmax-errors=3 -std=c++17 {src_path} -lm -o {exe_path} |
Java | /usr/bin/javac {src_path} -d {exe_dir} -encoding UTF8 /usr/bin/java -cp {exe_dir} -XX:MaxRAM={max_memory}k -Djava.security.manager -Dfile.encoding=UTF-8 -Djava.security.policy==/etc/java_policy -Djava.awt.headless=true Main |
Python2 | /usr/bin/python -m py_compile {src_path} /usr/bin/python {exe_path} |
Python3 | /usr/bin/python3.7 -m py_compile {src_path} /usr/bin/python3.7 {exe_path} |
PHP7 | /usr/bin/php {exe_path} |
Javascript | /usr/bin/jsc {exe_path} |
Go | /usr/bin/go build -o {exe_path} {src_path} |
C# | /usr/bin/mcs -optimize+ -out:{exe_path} {src_path} |
Ruby | /usr/bin/ruby {exe_path} |
Rust | /usr/bin/rustc -O -o {exe_path} {src_path} |
Haskell | /usr/bin/ghc -O -outputdir /tmp -o {exe_path} {src_path} |
Free Pascal | /usr/bin/fpc -O2 -o{exe_path} {src_path} |
Plaintext | /bin/cat {exe_path} |
Free Basic | /usr/local/bin/fbc {src_path} |
Feature
Base on NOJ Feature
Trình duyệt yêu cầu
Chrome |
Firefox |
Internet Explorer |
Edge |
Opera |
Safari |
---|---|---|---|---|---|
69 and above | 62 and above | Not supported | 69 and above | Not Supported | 13.1 and above |
Triển khai trên các hệ thống dưới đây để dễ dàng nhất và tránh gặp các lỗi linh tinh :)
- Ubuntu 20.04+
- CentOS Linux release 8.0+
- Không sử dụng Windows
Cài đặt trước những thứ sau:
Note:
- Các phiên bản đã được test trên Ubuntu 20.04. Trên các hệ thống khác cần chú ý phiên bản khi cài đặt.
- NodeJS nên cài đặt bằng nvm.
- Các hướng dẫn tiếp theo được thực hiện trên Ubuntu 20.04 [amd64] dùng Apache2, các distro khác thực hiện tương tự, riêng trường hợp dùng Windows, Nginx lỗi không support :)
- wkhtmltopdf 0.12.6
Bước này thường sẽ gặp lỗi
wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb` sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
Thay vì google search rồi vào StackOverflow thì ta chạy mấy dòng sau để fix:dpkg: dependency problems prevent configuration of wkhtmltox: wkhtmltox depends on xfonts-75dpi; however: Package xfonts-75dpi is not installed. wkhtmltox depends on xfonts-base; however: Package xfonts-base is not installed.
sudo add-apt-repository "deb http://archive.canonical.com/ $(lsb_release -sc) partner" sudo apt --fix-broken install sudo dpkg -i wkhtmltox_0.12.6-1.focal_amd64.deb
- Clone project
git clone https://github.com/lvdat/NOJ.git cd NOJ
- Config host, ví dụ tôi dùng domain
ctuoj.local
Tìm và sửasudo cp examples/apache2.conf /etc/apache2/sites-available/ctuoj.local.conf sudo vim /etc/apache2/sites-available/ctuoj.local.conf
ServerName
thành domain,DocumentRoot
,Directory
thành đường dẫn đến thư mục NOJ/public, file config sẽ giống như vầy:Disable default site, enable rewrite, NOJ and reload Apache2<VirtualHost *:80> ServerName ctuoj.local DocumentRoot /home/levandat/NOJ/public <Directory /home/levandat/NOJ/public> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
sudo a2dissite 000-default sudo a2enmod rewrite sudo a2ensite ctuoj.local sudo service apache2 reload
- Cài đặt package
sudo apt install php-intl php-gd php-mbstring php-zip php-curl php-mysql php-xml php-dom composer install
- Để tránh lỗi phân quyền và mò mấy tiếng để fix thì tôi đề xuất đổi user chạy các task của OJ thành current user.
Đổi user apache:
Sửa user và group
sudo vim /etc/apache2/envvars
Nếu bạn dùng php-fpm thì tự search cách đổi, php thường không cần. Hoặc nếu bạn không thích cách này vẫn có thể chmod theo docs của Laravel.export APACHE_RUN_USER=lvdat export APACHE_RUN_GROUP=lvdat
- Set up Database
mysql -u root -p CREATE DATABASE noj CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'noj'@'localhost' IDENTIFIED BY 'nojsobruh'; GRANT ALL PRIVILEGES ON noj.* TO 'noj'@'localhost'; FLUSH PRIVILEGES; \q
- Tạo file
.env
Chỉnh sửa thông tin database và base urlcp .env.example .env vim .env
APP_URL=http://127.0.0.1 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=noj DB_USERNAME=noj DB_PASSWORD=nojsobruh
- Set key mới
php artisan key:generate
- Migration
php artisan migrate
- Install passport (for API Auth Services)
php artisan passport:install
- CI npm
npm ci
- Build static
npm run production
- Add NOJ label
php artisan babel:install noj
Đã set up xong web interface.
...
...