4.1 配置比赛数据
Domjudge 主要通过MySQL数据库存储、提取数据。某些信息必须先行配置,而后 Domjudge 将自动填写其余表格。
下面所述的多种数据类型都你可以通过裁判 web 页面( Jery web interface )进行添加,编辑和删除。我们建议你随身携带某一版本的 phpMyAdmin 以应对突发情况,或者你也可以用他来进行通用的数据库操作,例如导入导出数据等。
这一部分描述了每一个表的含义以及你应该向其中导入的数据。带有*
标记的表格需要你在比赛开始前将所有数据(通过裁判 web 界面或使用 phpMyAdmin )配置完成,其他表格将由程序自动使用。
| 记录所有状态改变事件 | ||
| 需要分发的气球 | ||
| 存储所有 | ||
|
| 运行时的配置设置 | |
|
| 比赛的参数,包含开始、结束时间 | |
|
| 比赛的问题和该问题的数据 | |
|
| 参赛队伍 | |
| 比赛中事件的记录 | ||
|
| 可执行的编译、运行、比较的脚本 | |
| 存储评测机出现的问题,其中包括日志问题 | ||
| 用作评测机的电脑(主机名) | ||
|
| 评测机选取提交的代码时的(可选)限制 | |
| 评测中的提交 | ||
| 一次评测中的某一个测试点的结果 | ||
|
| 定义可选的提交语言 | |
|
| 问题的定义(名称,限时等) | |
| 为公众/队伍以及为裁判提供的队伍排名数据的缓存 | ||
| 批量重新评测的元数据 | ||
| 可能的用户角色 | ||
| 为公众/队伍以及为裁判提供的得分数据的缓存 | ||
| 问题的解的提交的元数据 | ||
| 提交的代码文件 | ||
|
| 队伍的信息 | |
|
| 队伍所属的机构 | |
|
| 队伍所述的类别 | |
|
| ||
|
| 每个问题的测试数据 | |
|
| 可以进入系统的用户 | |
|
| 用户角色映射 |
以下是对每一个需要手动填写的表格的详细描述(包括列)。通常来说,每一个表都有一个标识符字段。他们大多数都是纯数字并自动升序排列,这样的不需要明确指定。但是 executable
和 language
表有字符串类型的标识符字段,他们需要手动配置,并且只允许使用数字、字母、横杠和下划线,即a-z
、A-Z
、-
、_
。
configuration
configuration
该表包含配置设置。这些输入被简单存储为 <name , value>
元组,其中 value
应用 JSON 编码,data
包含了允许的数据类型,description
记录了配置设置。
contest
contest
软件将要运行的比赛,比如说一个测试会话和进行中的比赛。
cid
是一个引用ID,contestname
是用于接口的描述性名称,shortname
是公众可见、标识符。
activetime
, starttime
, endtime
是必须的列,用以指定比赛的开始时间和开始提交时间。可选的 freezetime
和 unfreezetime
控制着封榜时间以及 deactivetime
当比赛不在可见。这些选项的详细处理参见4.2(比赛里程碑)。除 starttime
外,所有时间都可以相对 starttime
设定。裁判界面的输入(无论是相对还是绝对)存储在 *time_string
列,同时计算出的绝对时间被存储在没有 _string
后缀的列中。
public
列可用于限制哪一场比赛被公开展示(相对于私下展示给一些钦点的队伍来说)。enable
可用于(暂时)停止一场比赛。
contestproblem
contestproblem
这张表将比赛与题目配对:cid
和 probid
描述了这个配对。 另外,这张表存储着比赛特定包含的题目数据:shortname
是题目在这场比赛中独一无二的标识符;points
默认为1并可以被设置为非偶数的得分;allow_submit
决定队伍是否可以提交该题目的解。不可提交的问题也不会被展示在得分榜上。这可以用于定义空闲问题,他们可以迅速被添加进比赛中。参阅语言部分。
contestteam
contestteam
这张表将参赛队伍和比赛配对。队伍只能提交他们参与的比赛或面向公众的比赛中的题目的解。
executable
executable
这张表存储着用于编译、运行、比较的压缩后的可执行脚本。
judgehost_restriction
judgehost_restriction
这张表编码着提供给任何一台评测机的提交的限制。限制用JSON编码,存放在restriction栏中,并且可以在管理员接口中设置来限制特定的比赛、问题、语言或永远不再同一台评测机上进行rejudge。一个限制可以在评测机总览的编辑页面上分配给一台或几台评测机。
language
language
提交中可接受的用于评测的编程语言。langid
是指向语言的最大为八位的一个字符串。name
是用于展示的语言名称;extensions
是一个 JSON 编码的认可的拓展名列表;allow_submit
决定了那些队伍可以用该语言提交;allow_judge
决定评测机是否可以对该问题进行评测。例如,这样可以在某种语言出现问题时设置为 no
以暂停评测,并在问题解决后设置为 yes
继续评测。
time_limit
是一个相对于标准时间限制而言的因子,表示该语言的时限可以放宽多少倍;compile_script
指向一个用于该语言的可执行编译脚本。
problem
problem
这张表包含了对问题的定义。probid
是引用ID,cid
是问题(唯一)所属的比赛的ID:一个问题不能被应用于多场比赛中。name
是问题的完整名称(描述)。
allow_submit
确定参赛队伍是否可以提交该问题。不可提交的问题也不会出现在得分榜上。这可以用于定义多余的问题,来使他们可以迅速添加进比赛中。参见语言的解释部分(See also the explanation for language)。
timelimit
是题目的以秒为单位的时间限制(同时考虑每种语言的 time_factor
)。参见 A.8(时间限制的加强)。
memlimit
是该问题的以 kB 为单位的内存限制。如果参数为空那么通用配置设置中的 memery_limit
将会被调用。与 outputlimit
等价。
若 special_run
不为空那么他定义了一个客制化的 run_<special_run>
程序来运行已编译的提交。若 special_compare
不为空他定义了一个客制化的 comapre_<special_compare>
程序来验证运行结果。
color
标签可以被CSS颜色指定填充来与题目相关联。参看 6.2.1(得分榜:颜色)。
problemtext
中可以放置包含题目描述的 PDF、HTML 或纯文本文档以供队伍、公众或裁判下载。注意没有多余的筛选,因此 HTML (以及部分 PDF )文件应来源于可信任的渠道以防止 XSS 等攻击。文件类型被存储在 problemtext_type
中。
team
team
参赛队伍的表格:teamid
是队伍的(内部)ID;externalid
可用于存储向其他设备导出或导入时的 ID 。name
是队伍用于展示的名称,categoryid
是队伍所属类别的 ID。affilid
是队伍所属机构的 ID。
当 enable
被设置为 0
,队伍将立刻从得分榜消失并且不能再访问队伍页面,即使他们可能早已登录。一个应用场景就是开除现场队伍的参赛资格。
members
是队伍成员的名字,用换行符分隔;room
是参赛队伍的位置或房间。这两个仅用于展示。comments
是备注,可随意填写,并且仅裁判可见。时间戳 teampage_first_visited
以及 hostname
列指明何时何地以及是否该队伍访问了他的队伍页面。
penalty
列可用于给予该队伍一定的罚时(可正可负)来更正意料之外的错误。
team_affiliation
team_affiliation
affilid
是引用 ID,name
是该机构的名称。country
应该由3个字符组成(参考ISO 3166-1 alpha-3 abbreviation标准)。comment
是一个向裁判界面展示的自由表格。
国旗可以展示在得分榜上。想要该功能奏效,country
列必须匹配 webapp/web/images/countries/.png
中的一张图片。所有国家的国旗都要在该路径下展示,由 3-character ISO
国家代码命名。参见webapp/web/images/countries/.png
。
team_category
team_category
categoryid
是引用 ID。name
是一个字符串,代表该类别的名称。sortorder
是该队伍榜单中的排序顺序。大数排名靠下,若相等则按照得分排序。
color
仍然是一个 CSS 指定用于简单分辨不同的类别。参见 6.2.1。
visible
决定了该队伍是否该队伍会在公众/队伍得分榜上展示。该特性可用于将队伍分配到另外的不可见的榜单上来将队伍从公众榜上剔除。
testcase
testcase
测试样例表存储着每一个题目的测试数据:testcaseid
是一个唯一的标识符;input
和 output
包含着输入输出数据;image
是一个为裁判准备的可选的测试样例表示。md5_input
,md5_output
,md5_image
包含了用于验证评测机所缓存数据的时效性的 md5 哈希。image_type
和 image_type
包含着索引图的缩略图和他的哑型( mimetype )字符串。probid
列存储着对应的题目。rank
决定任何一道题目的测试数据的顺序。description
是一个可选的对测试用例的描述。参看 4.4。
user
user
这张表包含着系统知道登录等级的用户的信息。每个用户可以有一个或多个身份,比如可以是一名队员,一位裁判或一个管理员。还可以有功能账户,例如裁判守护进程( judgedeamons )。
Last updated