# bkdnOJ 2.0 - v.05.27
* **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/~~ -> http://1509.ddns.net:3000/admin/
* Hoặc:

* Tài khoản: `admin`
* Mật khẩu: `admin`
### Chức năng đã thêm
* Trang Admin mới:
* Read: list và detail Problem, Submission, Judge.
* Create: Thêm mới Problem từ Zip
* Edit, Delete: Problem
Chức năng sẽ thêm tiếp theo:
* Hoàn thiện một vài thao tác khác (edit, delete) chưa có xử lý logic
* Phân quyền
* Contest
## Admin. Thêm Problem mới từ Zip:
Truy cập vào trang quản lý tài nguyên Problem:
http://1509.ddns.net:3000/admin/problem/

Chọn một tệp tin Zip với nút `Choose File` và nhấn `Add (upload File)` để bắt đầu thêm mới.
Tệp Zip nhìn chung sẽ có định dạng như sau:
* Chứa một file cấu hình để thiết lập Problem. Hệ thống sẽ tìm file có đuôi là `['.ini', '.conf']` để đọc cấu hình. Một zip chỉ nên chứa 1 file này.
* File cấu hình sẽ gồm các dòng trống, các dòng comment và các dòng `Key=Value`. Ví dụ:
```
; Đây là comment
code = ProblemA
name = Tiêu đề Problem A
; Optional
time_limit = 2.5
memory_limit = 250000
allow_submit = 1
icpc=1
```
Cụ thể, các key-value ở trên sẽ được gán vào trong đối tượng Problem theo bảng như sau:
| Các key | Kiểu value |Thuộc tính tương ứng| Mô tả |
|-|-|-|-|
| `['shortname', 'code', 'codename', 'probid']` | String ký tự chữ, số và `-_`. |`shortname`| Code định danh Problem |
|`['name', 'title', 'problem', 'code', 'codename']`|String|`title`|Tiêu đề Problem|
|`['time_limit', 'timelimit', 'time', 'tl']`|Số thực|`time_limit`|Giới hạn thời gian đơn vị giây. Nếu không có mặc định là `1.0`|
|`['memory_limit', 'memorylimit', 'mem_limit', 'memlimit', 'memory', 'mem', 'ml']`| Số nguyên | `memory_limit`| Giới hạn bộ nhớ đơn vị KB. Mặc định: `262144` (256MB).|
|`['short_circuit', 'skip_non_ac', 'icpc']`| Boolean | `short_circuit`| Dừng chấm nếu có test sai. Mặc định `0`. |
|`['partial', 'allow_partial', 'ioi']`| Boolean | `partial`| Cho phép ăn điểm từng test đúng. Mặc định `0`. |
|`['is_published', 'published', 'public', 'allow_submit']` | Boolean | `is_published` | Cho phép User bình thường nhìn thấy và nộp bài |
Ngoài ra, nếu có lỗi sẽ có thông báo lỗi tương ứng cho người quản trị.


* Chứa một file `.pdf` làm đề bài. Hệ thống sẽ tìm những file có tên sau: `['statement.pdf', 'problem.pdf', 'prob.pdf']`, và lựa chọn file được tìm thấy đầu tiên.
* Chứa những cặp file `(/a/b/c.in, /a/b/c.out)`, hai file cùng một cặp in/out nếu có chung tiền tố `/a/b/c`.
* Các file in là file có đuôi `('.in', '.input', '.inp', '.i', )`
* Các file out là file có đuôi ` ('.out', '.output', '.ans', '.a', )`
## Admin. Xóa Problem
## Admin. Xem Submission và Judge