update bonus doc
This commit is contained in:
@ -35,8 +35,8 @@ add_definitions(-DZSTD_STATIC_LINKING_ONLY)
|
|||||||
|
|
||||||
# 设置一个布尔类型的选项,用于控制是否启用高级功能,如日志(业务日志、程序日志、容错校验日志)、并发、快照等
|
# 设置一个布尔类型的选项,用于控制是否启用高级功能,如日志(业务日志、程序日志、容错校验日志)、并发、快照等
|
||||||
option(ENABLE_ADVANCED_FEATURE "Enable advanced features" OFF)
|
option(ENABLE_ADVANCED_FEATURE "Enable advanced features" OFF)
|
||||||
option(OJ_TEST_BPT "Enable OJ test for B+ Tree" ON)
|
option(OJ_TEST_BPT "Enable OJ test for B+ Tree" OFF)
|
||||||
option(OJ_TEST_BACKEND "Enable OJ test for backend" OFF)
|
option(OJ_TEST_BACKEND "Enable OJ test for backend" ON)
|
||||||
|
|
||||||
# 如果 ENABLE_ADVANCED_FEATURE 选项为 ON,则定义 ENABLE_ADVANCED_FEATURE 宏
|
# 如果 ENABLE_ADVANCED_FEATURE 选项为 ON,则定义 ENABLE_ADVANCED_FEATURE 宏
|
||||||
if (ENABLE_ADVANCED_FEATURE)
|
if (ENABLE_ADVANCED_FEATURE)
|
||||||
|
32
bonus.md
32
bonus.md
@ -80,7 +80,7 @@
|
|||||||
|
|
||||||
## 管理系统
|
## 管理系统
|
||||||
|
|
||||||
### GUI 前端 *(1%)*
|
### GUI 前端 *(0.9%)*
|
||||||
|
|
||||||
提供一个用户友好的图形化前端(Qt、Gtk、Web、Tcl/Tk 等均可)。基本要求为:
|
提供一个用户友好的图形化前端(Qt、Gtk、Web、Tcl/Tk 等均可)。基本要求为:
|
||||||
|
|
||||||
@ -90,3 +90,33 @@
|
|||||||
- (可选)提供更方便的操作,如查询后提供一键订票等。
|
- (可选)提供更方便的操作,如查询后提供一键订票等。
|
||||||
|
|
||||||
**注意:** 准备尝试此任务的同学请务必与助教联系并讨论自己的实现思路。
|
**注意:** 准备尝试此任务的同学请务必与助教联系并讨论自己的实现思路。
|
||||||
|
|
||||||
|
关于用户友好,这里有一些具体的要求:
|
||||||
|
- 查询车票后可以直接点击购票;
|
||||||
|
- 尽可能减少用户需要输入的内容;
|
||||||
|
- 除了对于普通用户友好,对于工作人员也要有友好的操作界面;
|
||||||
|
|
||||||
|
|
||||||
|
对于使用 Web 方式完成的前端(包括使用Vue、React、Bootstrap、Electron 等框架),需要满足以下要求:
|
||||||
|
|
||||||
|
- 在不同电脑上应该可以同时运行多个前端(网页)并连接到同一后端(服务器),不会相互干扰,模拟现实情况下多用户场景;
|
||||||
|
- Web服务崩溃不能影响后端数据服务的正常运行;
|
||||||
|
- 设计合理的方式来关闭或重启Web前端服务器或后端数据服务器,而不是手动 kill 进程或者 Ctrl+C,并保证处理完成已接收到的指令,完成数据的保存。可以参考 `nginx -s restart`。
|
||||||
|
- ~~不得使用 TesutoHime 作为模板~~
|
||||||
|
|
||||||
|
### 守护进程 *(0.1%)*
|
||||||
|
|
||||||
|
完成此任务需要先完成前置任务 GUI前端。
|
||||||
|
|
||||||
|
对于服务器来说,保证服务的稳定性是非常重要的。
|
||||||
|
|
||||||
|
在现代的linux系统中,可以很容易地使用 systemd 等工具来管理服务,完成开机自动启动、崩溃自动重启、定时执行等任务。
|
||||||
|
|
||||||
|
在本任务中,你需要通过两个途径实现下面的几个功能:
|
||||||
|
- 在同一个数据目录下,能且仅能运行一个程序实例;
|
||||||
|
- 当程序崩溃时,能自动重启;
|
||||||
|
- 接受信号,如 `SIGTERM` 时,能够优雅关闭当前的程序实例。
|
||||||
|
|
||||||
|
途径分别是:
|
||||||
|
1. 在现代的linux中,已经有一些工具(发行版相关)为我们提供了相关功能,如 systemd。为你的程序编写 systemd service 文件,完成上面的功能。你也可以考虑使用其他的工具。
|
||||||
|
2. 手动实现一个简单的守护进程。参考 `fork` 等系统调用。
|
||||||
|
20
test/ojtest.py
Executable file
20
test/ojtest.py
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
import json
|
||||||
|
import subprocess
|
||||||
|
import re
|
||||||
|
import shutil
|
||||||
|
import random
|
||||||
|
import string
|
||||||
|
import hashlib
|
||||||
|
import threading
|
||||||
|
|
||||||
|
# first, get the directory of the script
|
||||||
|
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
print("script_dir: " + script_dir)
|
||||||
|
path_to_exec_file = os.path.join(script_dir, "../build/code")
|
||||||
|
print("path_to_exec_file: " + path_to_exec_file)
|
Reference in New Issue
Block a user