[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.debThay 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.localTìm và sửasudo cp examples/apache2.conf /etc/apache2/sites-available/ctuoj.local.conf sudo vim /etc/apache2/sites-available/ctuoj.local.confServerNamethành domain,DocumentRoot,Directorythà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/envvarsNế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
.envChỉnh sửa thông tin database và base urlcp .env.example .env vim .envAPP_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.
...
...






