-
Notifications
You must be signed in to change notification settings - Fork 11
installation and config
- Tải về
- Khởi động máy chủ
- Kết nối tới phần mềm chấm bài Themis
- Cấu hình
- Cách tạo Test
- Nạp danh sách bài thi và Cấu hình bài thi
- Cập nhật lên phiên bản mới
Lưu ý: Đây là hướng dẫn cho phiên bản v0.3.7
Bạn có thể tải trực tiếp bản có tích hợp sẵn UniServer tại đây (tệp có tên themis-web-interface_v0.x.x-release)
Sau khi tải xong, giải nén tệp vừa tải thành một thư mục và đặt ở vị trí tùy ý
- Yêu cầu:
- Git
- PHP/7 trở lên với các package sau:
- php-xml (
apt install php-xml)
- php-xml (
- Apache/2 trở lên
Sử dụng lệnh sau để tải toàn bộ tệp tin của dự án:
git clone https://github.com/belivipro9x99/themis-web-interface.git
Hoặc vào phần releases và tải tệp Source Code.zip hoặc Source Code.tar.gz
Sau khi tải xong, giải nén tệp vừa tải thành một thư mục và đặt ở vị trí tùy ý
Để khởi động máy chủ, chạy tệp UniController.exe có trong thư mục vừa giải nén, sau đó nhấn vào nút Start Apache để khởi động máy chủ.
Nếu khởi động UniServer gặp lỗi vui lòng cài Microsoft Visual C++ 2015 Redistributable và thử lại.
Mở trình duyệt bất kì và đi đến localhost:80 để kiểm tra, nếu trang web hiện ra là bạn đã thành công.
Để dừng máy chủ, nháy đúp chuột vào icon chữ U nền xanh trên thanh biểu tượng, chọn Stop Apache.
Tiến hành cài đặt Apache và PHP bằng câu lệnh:
sudo apt-get update sudo apt-get install apache2 php7.3 php7.3-xml
Sau khi cài đặt xong, đi tới thư mục /etc/apache2 và chỉnh sửa tệp apache2.conf. Ở đây mình sẽ lấy trình soạn thảo nano làm ví dụ:
cd /etc/apache2
sudo nano apache2.confThêm các dòng sau vào tệp apache2.conf:
Lưu ý: Thay thế
(document root)thành vị trí thư mục mà bạn vừa giải nén.
# Thay thế (document root) thành vị trí thư mục bạn vừa giải nén. # Ví dụ: # Define THEMIS_ROOT "/home/jeff/themis-web-interface" Define THEMIS_ROOT (document root) <VirtualHost *:80> ServerAdmin someone@localhost ServerName localhost ServerAlias themisweb.lan DocumentRoot $(THEMIS_ROOT) ErrorDocument 400 /lib/error.php ErrorDocument 401 /lib/error.php ErrorDocument 403 /lib/error.php ErrorDocument 404 /lib/error.php ErrorDocument 405 /lib/error.php ErrorDocument 406 /lib/error.php ErrorDocument 408 /lib/error.php ErrorDocument 414 /lib/error.php ErrorDocument 500 /lib/error.php ErrorDocument 502 /lib/error.php <Directory "$(THEMIS_ROOT)"> Options -Indexes AllowOverride All Order allow,deny Allow from all Require all granted </Directory> <Directory "$(THEMIS_ROOT)/api"> Options +FollowSymLinks -Indexes AllowOverride All Order allow,deny Allow from all Require all granted # Rewrite url RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^\.]+)$ 1ドル.php [NC,L] </Directory> <Directory "$(THEMIS_ROOT)/data/xmldb"> Options -Indexes Deny from all </Directory> <IfModule mod_reqtimeout.c> RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500 </IfModule> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost>
Sau khi chỉnh sửa xong lưu tệp lại và sử dụng câu lệnh sau để khởi động lại Apache:
sudo systemctl restart apache2
Sau khi khởi động xong, nếu không gặp lỗi thì thử mở trình duyệt bất kỳ và đi đến localhost:80 để thử. Nếu trang web hiện ra, bạn đã thành công.
Nếu máy bạn chưa cài đặt phần mềm Themis, bạn có thể tải về tại đây
Tạo một thư mục để themis-web-interface lưu lại bài nộp lên.
Ở đây, mình sẽ lấy thư mục tại D:/UploadDir làm ví dụ.
Vào trang web của themis-web-interface, đăng nhập với tài khoản admin:admin, đi tới bảng cài đặt và thay đổi ô nhập THƯ MỤC LƯU BÀI LÀM thành vị trí thư mục vừa tạo. Ví dụ như hình dưới:
Sau khi thay đổi xong, nhấn nút Lưu thay đổi ở phía dưới bảng cài đặt.
Khởi động phần mềm chấm Themis, đi tới Thiết lập môi trường hoặc nhấn F11 để hiện bảng cài đặt. Chọn thư mục vừa tạo và nhấn nút Ghi nhận. Ví dụ như hình dưới:
Do phần mềm Themis hiện tại chỉ có cho hệ điều hành Windows nên bạn bắt buộc phải sử dụng một số windows emulator như wine hoặc sử dụng 1 máy tính khác chạy Windows (sử dụng samba để 2 máy có thể trao đổi tệp tin với nhau)
Bạn có thể thay đổi cấu hình, chỉnh sửa đề bài tại tab cài đặt dành cho admin
- Yêu cầu: ID của tài khoản (không phải username) là
admin, nếu không sẽ không có quyền truy cập.
Đặt thời gian làm bài là 0 sẽ tắt thời gian làm bài
Cấu hình được lưu tại tệp data/config.json, bao gồm:
- Tên kì thi
- Mô tả kì thi
- Thư mục lưu bài
- Thời gian bắt đầu kì thi
- Thời gian làm bài
- Thời gian bù
- Công bố kết quả sau khi chấm
- Cho phép nộp bài
- Cho phép thay đổi thông tin
- Cho phép xem nhật ký chấm
Dữ liệu tài khoản được lưu tại data/xmldb/account.xml. Có thể sử dụng các trình soạn thảo như Excel để chỉnh sửa.
Hướng dẫn cách chuẩn bị một kì thi đã được nêu rõ tại trang Hướng dẫn sử dụng trong phần mềm Themis (có thể mở bằng cách nhấn vào biểu tượng dấu ? ở góc trên phải của phần mềm hoặc nhấn phím F1).
Ở đây mình sẽ lấy ví dụ cách tạo đề bài cho một bài toán đơn giản. Ta có đề bài:
Tính tổng một dãy số gồm n phần tử cho trước.
Tên tệp: SUM.pasTest ví dụ:
INP OUT 3
1 2 36 4
2 2 2 28
- Tạo thư mục chứa các test. Mình sẽ lấy ví dụ thư mục này có tên là
Task. - Trong thư mục này tạo thêm một thư mục là tên của bài. Ở ví dụ trên thì tên thư mục này sẽ là
SUM - Trong thư mục bài đó tạo thêm
nthư mục với tên làtestn(Vớinlà số lượng test mà bạn muốn tạo). Trong mỗi thư mục test chứa 2 tệp làtên bài.inpvàtên bài.out.
-
tên bài.inpchứa 1 hoặc nhiều dòng là Input cho bài làm. -
tên bài.outchứa 1 hoặc nhiều dòng là Output cho bài làm.
Ví dụ mình tạo 2 test cho bài trên thì thư mục Task sẽ có cấu trúc giống như sau:
- Task
- SUM
- test01
- SUM.inp
- SUM.out
- test02
- SUM.inp
- SUM.out
- test01
- SUM
Tệp SUM.inp trong test01:
4
1 3 4 2
Tệp SUM.out trong test01:
10
Tệp SUM.inp trong test02:
7
5 4 2 6 8 9 12
Tệp SUM.out trong test02:
46
Nguyên lý làm việc của tạo test tự động là sử dụng một ngôn ngữ lập trình để tạo các test với Input là các số ngẫu nhiên và qua thuật toán của đề bài đã cho để tìm ra Output từ Input ban đầu, sau đó tự động tạo thư mục cho test và ghi Input Output ra các tệp .inp và .out.
Ví dụ về tạo test của bài trên sử dụng ngôn ngữ Python:
# Hàm để lấy số ngẫu nhiên from random import randint # Hàm để tạo thư mục from os import mkdir # Lấy số lượng test cần tạo l = int(input()) # Chạy vòng lặp từ 1 -> l để tạo các test từ test1 -> testl for i in range(1, l+1): # Lấy số n ngẫu nhiên từ 1 -> 100 n = randint(1, 100) # biến lưu danh sách các phần tử p = [] # biến đếm tổng n phần tử s = 0 # chạy một vòng lặp từ 1 đến n for j in range(1, n+1): # lấy 1 số ngẫu nhiên từ 1 -> 1000 t = randint(1, 1000) # thêm phần tử ngẫu nhiên t vào danh sách phần tử p p.append(t) # thêm phần tử t vào tổng s += t # tạo thư mục testi mkdir("test" + str(i)) # bắt đầu viết Input ra tệp sum.inp trong thư mục testi with open("test" + str(i) + "/sum.inp", "w") as f: # in ra số lượng phần tử của test f.write(str(n) + "\n") # chuyển các phần tử của p sang dạng string để có thể nối p = map(str, p) # nối các phần tử của p thành 1 chuỗi string và ngăn cách bởi dấu cách f.write(" ".join(p)) # bắt đầu viết Output ra tệp sum.out trong thư mục testi with open("test" + str(i) + "/sum.out", "w") as f: f.write(str(s))
Đoạn mã trên sẽ tự động tạo n thư mục test từ test1 đến testn với Input hoàn toàn là các số ngẫu nhiên và Output được tính ra qua Input ngẫu nhiên đó.
Lưu đoạn mã đó với tên testgen.py và chạy trong thư mục Task/SUM, sau khi chạy thư mục SUM sẽ trông giống như sau:
- SUM
- testgen.py
- test1
- SUM.inp
- SUM.out
- test2
- SUM.inp
- SUM.out
- test3
- SUM.inp
- SUM.out
- ...
- testn
- SUM.inp
- SUM.out
- Đăng nhập vào tài khoản có quyền admin
- Chuyển sang tab cài đặt
- Tại bảng
Đề Bài, nhấn vào biểu tượng dấu+ở góc phải trên để thêm một đề bài - Nhập
Tên Tệpvới giá trị là tên của bài nộp. Với ví dụ trên thì tên tệp sẽ làSUM - Tiếp tục nhập các trường khác cho phù hợp với bài
- Nhấn biểu tượng hình chữ
Vở góc trên phải để lưu đề bài.
- Lưu ý:
- Nếu có thể nộp nhiều loại tệp cho bài thì ngăn cách đuôi tệp bằng kí kí hiệu
|. VD:pas|py|java|cpp - Những bài đã có trong phần mềm
Themisnhưng chưa được thêm vào trang web thì sẽ không nộp được bài đấy.
- Nếu có thể nộp nhiều loại tệp cho bài thì ngăn cách đuôi tệp bằng kí kí hiệu
2 phần này đã được nói rõ trong hướng dẫn của phần mềm Themis nên ở đây mình sẽ nói lại.
- Tại phần mềm
Themis, click vào biểu tượng Thư mục làNạp danh sách bài thi(hoặc nhấnF2), sau đó chọn thư mục chứa các test đã nêu ở trên. Chương trình sẽ tự động quét và liệt kê danh sách các test có trong thư mục. - Tạo một thư mục để chứa các bài làm của thí sinh sau khi chấm (thường là
Contestants), sau đó nhấn vào biểu tượngNạp danh sách thí sinh(hoặc nhấnF3), sau đó chọn tới thư mục vừa tạo.
Trên thanh phía trên của bảng điểm sẽ xuất hiện danh sách các test. Để thay đổi cấu hình của test, phải chuột vào test đó và chọn Cấu hình bài thi.
- Dùng luồng vào chuẩn: Input sẽ được đưa vào như nhập bình thường trong
cửa sổ dòng lệnh(command prompt) - Dùng luồng ra chuẩn: Output sẽ được lấy từ
cửa sổ dòng lệnh(command prompt) sau khi chương trình kết thúc
Với các bài yêu cầu lấy Input và Output từ tệp thì không cần phải tích 2 ô này.
- Điểm của test: Điểm sẽ nhận được nếu test chạy đúng
- Giới hạn thời gian: Thời gian tối đa để chương trình chạy 1 test
- Giới hạn bộ nhớ: Bộ nhớ tối đa được cho phép sử dụng trên RAM.
Nhập giá trị vào
Thiết lập chungsẽ áp dụng giá trị đó cho từng test.
Sau khi cấu hình xong, nhấn vào nút ghi nhận để lưu lại thay đổi.
available soon