Список изменений в версии 2.1.24 (20031213)
В данной версии добавлены новые возможности, и незначительно
изменились некоторые директивы конфигурационных
файлов. Изменился формат файла состояния сервера, который
генерируется программой serve и используется CGI-программами
master, judge и team.
Новые версии этих программ выдадут ошибку
чтения файла состояния и немедленно завершатся при попытке их
запустить в каталоге турнира старой версии. Чтобы устранить эту
неприятность, один раз запустите serve на этом турнире. Как
только файл состояния будет перегенерирован, serve можно
остановить.
-
Из архива исходных текстов системы удалены все неиспользуемые
исходные тексты и устаревшие дополнительные материалы. В
результате архив значительно сократился в размере.
- (contest.xml)
Удалена поддержка элемента <observer_access>. Этот элемент был
введён для CGI-программы observer, которая не была
реализована. Удалена поддержка бита полномочий OBSERVER_LOGIN.
- (contest.xml)
Добавлен новый бит полномочий SUBMIT_RUNS. Если этот бит для
некоторого пользователя установлен, этот пользователь позволяет
отправлять решения на проверку из-под CGI-программ master или
judge. Естественно, этот пользователь должен иметь полномочия
запускать соответствующую программу.
- (serve)
Оптимизирована структура архивов посылок и протоколов
тестирования. Вместо размещения всех файлов архива в одном
каталоге (например, все протоколы тестирования размещались в
каталоге var/archive/reports каталога турнира), файлы архива
структурируются в дерево таким образом, чтобы каталог на каждом
уровне содержал не более 32 записей. Максимальное количество
файлов в архиве ограничено примерно 1 миллионом, поэтому для
размещения всех файлов достаточно 3 уровней подкаталогов.
Например, протокол тестирования для посылки с номером 1905 будет
размещён в файле var/archive/reports/0/1/R/001905.
Данная оптимизация позволяет существенно увеличить скорость
открытия файлов для файловых систем, в которых записи в каталоге
хранятся в неупорядоченном виде (например, ext2/ext3).
Чтобы отменить такую форму хранения архивных файлов, необходимо
установить глобальную конфигурационную переменную
use_dir_hierarchy в 0 следующим образом:
use_dir_hierarchy = 0
По умолчанию поддержка иерархической структуры архивных каталогов
включена.
Старый и новый форматы хранения архивных файлов совместимы снизу
вверх, то есть новая версия системы ejudge будет корректно
открывать архивы, созданные в системах предыдущих версий. Однако
если поддержка иерархической структуры включена, то все
последующие посылки уже будут сохраняться в иерархической
системе каталогов и таким образом станут недоступными для
системы ejudge предыдущих версий.
- (serve)
Все архивные файлы, размер которых больше некоторого значения
(по умолчанию - 4096 байт) сжимаются алгоритмом gzip и
сохраняются в файле с суффиксом .gz. Настроить минимальный
размер сжимаемого файла можно с помощью глобальной
конфигурационной переменной min_gzip_size файла конфигурации
турнира serve.cfg. Размер по умолчанию в 4 килобайта выбран, так
как 4 Кб - размер минимальной единицы выделения дискового
пространства в современных версиях ext2/ext3 на архитектуре ia32
(этот размер совпадает с размером страницы виртуальной памяти).
Сжимать файлы меньшего размера бессмысленно, так как размер
занимаемой дисковой памяти от этого не уменьшится. Чтобы
полностью отменить сжатие архивных файлов необходимо установить
в 0 конфигурационную переменную use_gzip:
use_gzip = 0
- (serve)
В базе данных посылок добавлено поле для сохранения варианта
задачи. По умолчанию вариант задачи равен 0, то есть берётся
вариант задачи согласно файлу отображения вариантов
(varant_map_file).
Но из-под программ judge и serve можно
послать решения, выбирая вариант явно. Кроме того, администратор
может принудительно изменить вариант задачи.
- (serve)
В базе данных посылок добавлен флаг "скрытой" посылки. Такие
посылки тестируются, но никак не влияют на таблицу текущих
результатов, не отображаются в публичном журнале посылок и не
могут быть проэкспортированы в XML.
- (serve,master,judge)
Привелегированный пользователь может отправлять решения на
проверку, если у него установлен бит полномочий SUBMIT_RUNS. В
генерируемую программами master и judge html-страницу добавлена
форма посылки решения. Решение, посылаемое из программ master и
judge добавляется в базу посылок с флагом "невидимое" (hidden),
то есть оно тестируется, но никак не влияет на таблицу текущих
результатов, не отображается в публичном журнале посылок и не
может быть проэкспортировано в XML. Привелегированный
пользователь может посылать решения любой задачи (даже той,
deadline по которой уже истёк), любого варианта задачи на выбор
(если задача вариантная) с использованием любого языка
программирования (даже такого, для которого установлен флаг
disabled). Для таких посылок не проверяется время посылки, то
есть они могут быть сделаны до момента начала или после момента
окончания турнира. Для таких посылок не проверяются квоты
суммарного размера посланных файлов, количества посылок и т. д.
- (serve,master)
Добавлена возможность редакирования новых полей базы данных
посылок: variant, is_hidden. Установка номера варианта в 0
означает, что для нахождения номера варианта будет
использоваться файл отображения вариантов.
- (judge)
Исправлена ошибка неправильного форматирования таблицы посылок
участников для событий VIRTUAL START, VIRTUAL STOP и пустой
записи EMPTY.
- (run)
Допускается указание цены одного теста равной 0 баллов. Ранее
установка цены теста в 0 баллов была эквивалентна установке цены
теста в значение по умолчанию (1 балл). Тесты ценой 0 баллов
корректно обрабатываются. Тесты ценой 0 баллов полезны для того,
чтобы оценивать задачу по системе "принято"/"непринято", но при
этом предоставлять участникам детализированную информацию о
результатах работы их программы.
- (serve,master)
Изменить продолжительность турнира можно и после его окончания
(как окончания из-за команды администратора
"Stop contest", так и
из-за истечения времени). Для этого должна быть установлена
конфигурационная переменная enable_continue файла конфигурации
турнира serve.cfg, например
enable_continue
- (serve,master)
Администратор турнира может уменьшить заявленную продолжительность
турнира с помощью команды "Change duration"
(в предыдущих версиях
продолжительность турнира могла только увеличиваться). Однако в случае,
если турнир уже идёт, уменьшение его длительности не может приводить
к тому, что текущий момент времени окажется позднее момента окончания
турнира из-за исчерпания времени турнира. Попытка такого изменения
продолжительности блокируется.
Запрещено уменьшение длительности неограниченного по времени турнира,
а также увеличение длительности ограниченного по времени турнира
до неограниченного по времени турнира.
- (serve,master)
Расширены возможности продолжения остановленного турнира.
Можно продолжить турнир конечной длительности, если его
установленная длительность такова, что текущий момент времени не
находится после окончания турнира из-за истечения времени
турнира. Турнир, уже закончившийся из-за истечения времени,
можно продлить, сначала увеличив его длительность с помощью
команды "Change duration",
а затем продолжив турнир с помощью
команды "Continue". Обратите внимание, что возможность
продолжения турнира доступна, только если в конфигурационном
файле турнира установлена глобальная конфигурационная переменная
enable_continue.
- (serve)
Значение конфигурационной переменной board_fog_time, равное 0
означает, что таблица результатов вообще не "замораживается".
В предыдущих версиях оключить заморозку было невозможно (можно
было включить заморозку за 1 минуту до конца турнира).
- (serve)
Введены новые глобальные конфигурационные переменные турнира
stand_freeze_time и stand_melt_time, которые являются
синонимами для board_fog_time и board_unfog_time
соответственно. Новые имена более соответствуют своему
назначению. Поддержка старых имён сохранена.
- (serve,master,judge,team)
Если для турнира установлен режим заморозки результатов, время
заморозки отображается клиентам в разделе состояния сервера.
- (team)
Из раздела состояния сервера убрана строка "Время клиента:", так
как её название не соответствует её назначению. Время клиента
всегда означало момент календарного времени, в который на
сервере работает CGI-программа обслуживания клиентов team,
master или judge.
- (serve,team)
В конфигурационном файле турнира поддерживается новая глобальная
конфигурационная переменная team_enable_ce_view. Если эта
переменная установлена в ненулевое значение, в случае, если
участник на некоторой посылке получает ошибку компиляции, ему
становится доступным файл диагностики компилятора, даже если
показ протокола тестирования для участников (глобальная
конфигурационная переменная team_enable_rep_view) отключён.
- (serve,team)
В конфигурационном файле турнира поддерживается новая глобальная
переменная и переменная описания задачи
team_show_judge_report. Если эта конфигурационная переменная
установлена в ненулевое значение, и включён режим показа
протокола тестирования участникам (глобальная конфигурационная
переменная team_enable_rep_view), участникам становится
доступным судейский протокол тестирования. Судейский протокол
тестирования содержит входные данные (тесты), результат работы
программы, вывод программы на стандартный поток ошибок, вывод
проверяющей программы и т. д. По умолчанию участники могут
видеть только сокращённый протокол, содержащий лишь результаты
проверки программы на тестах, но не сами тесты и результат
работы программы на них. Режим показа полного протокола
тестирования может включаться и выключаться для каждой задачи
индивидуально с помощью явного указания значения
конфигурационной переменной team_show_judge_report в описании
задачи.
- (serve)
Исправлена ошибка, когда serve завершается аварийно (по assert),
если на турнир не был зарегистрирован ни один пользователь.
- (serve,master)
Администратор турнира может приостановить проверку поступающих
решений с помощью команды "Suspend testing". В режиме
приостановленного тестирования все решения принимаются от
участников как обычно, но не отправляются на тестирование, а
заносятся в базу посылок со статусом "Accepted for testing"
("Принято на проверку"). Решения будут оставаться в этом статусе
до тех пор, пока администратор не отправит их на проверку явно
или с помощью команды "Judge suspended runs". Назначение этой
команды --- снизить нагрузку на сервер турнира, если он
одновременно является компьютером, на котором идёт компиляция
и/или запуск решений, в конце турнира, когда поток посылок,
обычно, очень интенсивный. В режиме приостановки проверки вместо
команды "Suspend testing" становится доступна команда
"Resume testing", снова включающая режим немедленной проверки
решений.
Администратор турнира может направить на проверку все решения,
полученные в период приостановки тестирования, с помощью команды
"Judge suspended runs".
- (serve,master,judge)
В выражении для фильтра посылок можно использовать конструкции
status и curstatus, которые являются синонимами для result
и curresult.
Last modified:
Copyright © 2003 Alexander Chernov