Список изменений в версии 2.1.27 (20040327)
Добавлены несколько новых возможностей администраторского
режима (приостановка/возобновление печати, загрузка исходного
текста посылки в бинарном виде, сравнение посылок). Добавлена
поддержка бинарных файлов. Добавлено отображение времени
последней успешной сдачи в таблицу текущего положения участников
турнира. Добавлены несколько новых конфигурационных переменных.
Изменён формат XML-представления журнала посылок. В элемент
<run> добавлен атрибут nsec, который содержит наносекундную
составляющую времени посылки. Как следствие, атрибут time теперь
содержит время в секундах вместо времени в миллисекундах, как
в предыдущей версии.
- (master,judge,team,register,users)
Максимальный размер данных, которые принимаются от веб-клиента
увеличен до 1 мегабайта.
- (master,judge,team,serve)
При отправке решений на проверку допускаются бинарные файлы, то
есть файлы, содержащие нулевой байт. Такие файлы без изменений
передаются на сервер.
Если для языка программирования, выбранного для данной посылки,
установлена в true конфигурационная переменная binary,
поступивший файл будет записан в архив без изменений (т. е. со
всеми нулевыми байтами). В противном случае файл будет обрезан
по первому нулевому байту и будет диагностирована ошибка посылки
решения. По умолчанию установлен режим текстовых посылок.
- (master,judge,team,serve)
Обновлён формат файла состояния сервера турнира. Его размер
установлен равным 128 байт, при этом в настоящее время 77 байт
не используются. Это позволит безболезненно добавлять новые поля
состояния сервера, аналогично тому, как добавлялись поля в базу
посылок. Новая версия формата файла состояния получила номер 2 и
новое значение магической константы в заголовке. Для обратной
совместимости утилиты master, judge, team
поддерживают чтение файла состояния сервера версии 1.
- (master,serve)
Администратор турнира может приостановить обслуживание запросов
на печать. Для этого он должен иметь установленным бит
полномочий CONTROL_CONTEST. Для приостановки печати используется
кнопка "Suspend printing", появляющаяся на главной странице
интерфейса администратора, если в данном турнире печать
разрешена. Снова разрешить печать посылок можно с помощью
кнопки "Resume printing", появляющейся вместо предыдущей
кнопки в режиме приостановки печати. В режиме приостановки
печати участники турнира не смогут послать запрос на печать,
однако привилегированные пользователи могут печатать как
обычно.
- (serve)
При запуске сервер считывает своё предыдущее состояние,
восстанавливая таким образом значения флагов приостановки
обслуживания клиентов, приостановки проверки решений,
окончательной проверки решения (для турнира по системе
OLYMPIADS) и приостановки печати решений.
- (serve)
В базу посылок добавлена наносекундная составляющая времени
посылки. Теперь все посылки, принятые одним сервером, будут
иметь уникальное время приёма. Это позволяет наконец решить
проблему упорядочивания нескольких посылок, пришедших в одну
секунду. Стабильность слияния посылок от нескольких серверов
распределённого турнира требует, чтобы при одинаковом времени
приёма посылки были как-то упорядочены по вторичному критерию,
но любой вторичный критерий может привести к необходимости
переупорядочивать посылки во время работы сервера турнира.
Переупорядочивание посылок, которые были отправлены на
компиляцию или проверку приведёт либо к потере результатов, либо
к подмене результатов. Решением этой проблемы является
требование уникальности времени приёма для всех посылок,
обрабатываемых одним сервером, что достигается добавлением
наносекундной компоненты. С большой вероятностью каждая посылка
будет иметь уникальное время получения даже и в распределённом
турнире, но полагаться на это нельзя.
Формат базы посылок новой версии совместим снизу вверх с
форматом базы посылок предыдущей версии (значение наносекундной
составляющей времени полагается равным нулю).
- (userlist-server)
В базу пользователей добавлено поле location, которое
предназначено для использования администратором очного турнира
для указания местоположения команды в классе. Значение этого
поля выводится на заглавную страницу распечатки листинга
программы.
- (edit-userlist)
Поддерживается редактирование поля location.
- (serve)
В таблице текущего положения команд печатается информация о
последней успешной сдаче (Last success).
- (serve,master,judge)
Из страницы просмотра исходного текста посылки возможна загрузка
исходного текста. Для этого необходимо нажать на ссылку
"Download run". Страница просмотра исходного текста уже содержит
сам исходный текст, но возможность загрузки исходного текста
необходима по следующим причинам:
- Исходный текст можно сразу сохранить в файл, а не
копировать его через буфер обмена, избегая таким образом
искажения данных, возможных при копировании через буфер
обмена.
- Для посылок, в секции описания которых установлен флаг
binary, исходный текст посылки не отображается, так как
может содержать непечатные символы, и во многих случаях
(например, в случае посылки архива исходных текстов) его
отображение вообще бессмысленно.
- (serve,master,judge)
Из страницы просмотра исходного текста возможно сравнение
исходного текста данной посылки с исходным текстом другой
посылки. Для этого нужно ввести номер посылки и нажать на кнопку
"Compare". Сравнение ведётся с помощью программы diff командой
"diff -u". Путь к команде diff можно задать с помощью глобальной
конфиругационной переменной diff_path. При отображении
страницы просмотра исходного текста в поле ввода номера
сравниваемой посылки записывается номер ближайшей (в сторону
уменьшения) посылки, для которой значения идентификатора
команды, идентификатора языка программирования и идентификатора
задачи совпадают со значениями соответствущих полей текущей
посылки.
- (userlist-server)
В базу пользователей добавлено новое поле never_clean. Если
для некоторого пользователя это поле установлено в значение
true, утилита clean-users, которая просматривает все базы
посылок и отмечает команды, не задавшие ни одного вопроса и не
пославшие ни одну посылку, как кандидаты на удаление, никогда не
будет отмечать таких пользователей как кандидатов на удаление.
- (edit-userlist)
Поддерживается редактирование нового поля never_clean.
- (clean-users)
Корректно обрабатываются турниры с пустым журналом посылок.
Поддерживается флаг never_clean участника.
Для каждого пользователя собирается информация о турнирах, в
которых этот пользователь запускал команду VIRTUAL_START или
VIRTUAL_STOP. Если некоторый пользователь не послал ни одной
программы и не задал ни одного вопроса, но имеет события
VIRTUAL_START или VIRTUAL_STOP, зарегистрированные за ним, все
номера виртуальных турниров, в которых есть такие события,
печатаются в разделе "Virtual contests for start/stop only
users".
- (serve)
Исправлены некоторые ошибки в процедуре слияния журналов
посылки. Данная возможность должна теперь работать нормально
во всех ситуациях.
Last modified:
Copyright © 2003,2004 Alexander Chernov