# bkdnOJ v2.0 - Phiên bản ngày 22/05/22 Hai giao diện, Front-end là giao diện cho người dùng, Back-end là giao diện cho staff, admin. * **User**: http://1509.ddns.net:3000/ * Tài khoản: `tester02` * Mật khẩu: `alksdjflajslkdfj` * Có thể tạo thêm qua giao diện web * **Staff**: http://1509.ddns.net:8000/admin/ * Tài khoản: `admin` * Mật khẩu: `admin` ### Chức năng lớn đã thêm * **User**: Problem, Submission, Judge xem danh sách có phân trang, chi tiết; nộp Submission * **Admin**: Tạo, chỉnh sửa Problem, Judge; Tải zip cho Problem Chức năng sẽ thêm: * Phân quyền truy cập, sửa xóa tài nguyên * Giới hạn thời gian/bộ nhớ riêng cho mỗi Problem và Language * Dọn dẹp và thêm bộ tìm kiếm cho giao diện Admin ## Admin. Thêm Problem mới: Truy cập vào trang quản lý tài nguyên Problem: http://1509.ddns.net:8000/admin/problem/problem/ ![](https://i.imgur.com/o8CBGYN.png) `Test Data Profile` có quan hệ 1-1 với `Problem`, được tạo ra tự động khi `Problem` được tạo. Nhấn vào `Add Problem` để mở Form tạo Problem. ![](https://i.imgur.com/Yhs9awO.png) Chúng ta tạm thời bỏ qua `Content, PDF, Source`. ![](https://i.imgur.com/JNNjQcL.png) Những thiết lập ở trên chỉ ảnh hưởng Problem ở bên ngoài Contest, ở chế độ luyện tập. Để thiết lập problem ở bên trong Contest, trang Contest sẽ có thiết lập riêng. Nhấn `Save and Continue editing` để tạo Problem và ở lại trang. ![](https://i.imgur.com/voqvB84.png) Lúc này, `Test Data Profile` tương ứng được tạo ra, nhấn vào **Link** để đến form chỉnh sửa dữ liệu chấm. ## Admin. Chỉnh sửa dữ liệu chấm: ![](https://i.imgur.com/xSTapXV.png) File zip sẽ chứa bao gôm những cặp file Input/Answer, và file pdf chứa đề bài: * File Input là file có đuôi `.i`, `.in`, `.inp`, `.input`. * File Answer là file có đuôi `.out`, `.output`, `.ans`, `.answer`. * File PDF được chọn là File đầu tiên khớp với những tên sau: `statement.pdf`, `problem.pdf`, `prob.pdf` Những file khác hệ thống sẽ bỏ qua, không xóa cũng không đọc. ![](https://i.imgur.com/kccx6vZ.png) Admin hệ thống sẽ có thể chỉnh những thiết lập ở trên tại phiên bản hoàn tất của bkdnOJ. Chúng ta thử up file zip sau: ![](https://i.imgur.com/XDpz7ie.png) Chọn file, sau đó nhấn `Save`. Vì ứng với mỗi cặp in/out, hệ thống phải tạo ra một object `TestCase`, nên tùy vào kích cỡ file mà hệ thống xử lý nhanh hay chậm. Nếu file zip có file PDF hợp lệ, trường PDF của Problem tương ứng sẽ được update. ### Admin. Xem Testcase của Problem Ta truy cập vào bảng TestCase, thông qua http://1509.ddns.net:8000/admin/problem/testcase/ hoặc ở `Problem > Test cases` (ô 1, hình bên dưới) ![](https://i.imgur.com/SgUZ3tG.png) Tại đây sẽ liệt kê tất cả object `TestCase`, ta lọc theo Problem bằng filter `By Problem` (ô 2, hình trên), nhấn vào mã bài tập để lọc TestCase của bài tập đó. ![](https://i.imgur.com/1c1T4Bq.png) Tại phiên bản hoàn tất, ta có thể chỉnh cụ thể từng `TestCase` nhưng hiện tại thì chức năng này chưa được test. ## User. Xem Problem vừa được tạo Lúc này, User đã có thể đọc và làm bài. ![](https://i.imgur.com/3jHAT0C.png) ![](https://i.imgur.com/VlBLUMB.png) ![](https://i.imgur.com/xTf5dpZ.png) Giao diện nộp bài GET kết quả mỗi 5s. Tại phiên bản hoàn thiện, bkdnOJ sẽ sử dụng websocket để real-time và giảm số lượng request.