Версия 2.1.33 (20041029) ======================== Если в результате тестирования этой версии не будет обнаружено ошибок, следующая версия (полностью совпадающая с текущей) получит номер 2.2.0. Таким образом произойдёт переход к новой стабильной версии системы ejudge. Реализована поддержка языка Java компилятора и среды выполнения JDK (тестировалось с Sun JDK 1.4.2 и Sun JDK 1.5.0, должно работать с другими совместимыми реализациями JDK). Утилита конфигурирования configure поддерживает новую опцию --with-javac с помощью которой можно указать путь к компилятору javac в составе JDK. Обратите внимание, что это должен быть полный путь к программе, например, /usr/local/java/bin/javac. Если --with-javac не указана, производится поиск по каталогам в переменной окружения PATH. Для компиляции Java-программ используется скрипт javac, а для запуска - скрипт runjava, то есть требуется указание параметра start_cmd = "runjava" в секции описания тестера для Java-программ. Скрипт runjava требует для своей работы установленной переменной EJUDGE_PREFIX_DIR, если только не будет указан полный путь к файлу политики безопасности. Таким образом, набор необходимых конфигурационных параметров для тестировщика Java-программ следующий: kill_signal = TERM arch = java start_env = "EJUDGE_PREFIX_DIR" start_cmd = runjava Кроме этого в переменной окружения EJUDGE_JAVA_FLAGS могут передаваться дополнительные параметры для java-машины, например, устанавливающие максимальный размер кучи и стека: start_env = "EJUDGE_JAVA_FLAGS=-Xmx64M -Xss8M" По умолчанию Java-программы запускаются с установленной жесткой политикой безопасности, которая позволяет только чтение со стандартного потока ввода и вывод на стандартный поток вывода. Поддерживается политика безопасности, при которой работающей программе разрешено чтение и запись файлов в текущем каталоге. Такая политика безопасности включается с помощью установки перемнной окружения EJUDGE_JAVA_POLICY следующим образом. start_env = "EJUDGE_JAVA_POLICY=fileio.policy" В переменной окружения EJUDGE_JAVA_POLICY возможно задание произвольной политики безопастности. Может быть указан либо полный путь, либо имя файла политики. В последнем случае файл политики должен находиться в каталоге ${EJUDGE_PREFIX_DIR}/share/ejudge. Возможно полное отключение политики безопасности. Для этого переменная окружения EJUDGE_JAVA_POLICY должна быть установлена в значение none следующим образом: start_env = "EJUDGE_JAVA_POLICY=none" Программы на Java должны удовлетворять следующим условиям: 1) они должны содержать единственный класс с именем Main; 2) допускаются вложенные в Main классы; 3) класс Main должен содержать метод main. Исправлены ошибки работы с каледарным временем, когда из-за неправильно инициализированной переменной (точнее, поля флага летнего времени) время могло отличаться на 1 час от астрономического времени. В базу данных пользователей добавлено новое поле languages, предназначенное для указания сред программирования, в которых работает участник (команда). Поле languages может быть сделано обязательным или необязательным для заполнения при регистрации на турнире с помощью элемента или файла конфигурации турнира contest.xml. configure --------- Добавлена опция командной строк --with-javac (см. выше). edit-userlist ------------- Поддерживается редактирование поля languages (см. выше). ejudge-setup ------------ Поддерживаются компилятор языка Java и среда выполнения JDK (см. выше). serve ----- В таблице текущего положения участников (как в режиме ACM, так и в режиме KIROV/OLYMPIAD) внизу таблицы печатается статистика по сдачам каждой задачи. Для каждой задачи указывается общее число посылок по этой задаче, число успешных посылок и процент успешных посылок. Добавлена глобальная конфигурационная переменная stand_show_ok_time файла serve.cfg и конфигурационная переменная задачи stand_hide_time. Обе переменных действуют только в режиме турнира KIROV. Если глобальная переменная stand_show_ok_time установлена в ненулевое значение, в таблице текущих результатов печатается время успешной сдачи задания (оно может быть как относительным от начала турнира, так и астрономическим в зависимости от значения глобальной конфигурационной переменной show_astr_time). Переменная stand_hide_time отменяет печать времени успешной сдачи для отдельной задачи. В таблице текущих результатов корректно вычисляется календарный штраф по задаче. Добавлена конфигурационная переменная start_date секции описания задачи файла serve.cfg. В этой переменной указывается астрономическое время, начиная с которого данная задача становится доступной для сдачи. Спецификация календарного штрафа может иметь одну из следующих форм: DATE TIME PENALTY напр. 2004/10/10 12:00 -10 или DATE PENALTY напр. 2004/10/12 -20 или PENALTY напр. -30 в последнем случае дата предполагается достаточно большой (2038/01/19 - то есть максимум, который позволяет точность типа time_t). Исправлена ошибка в работе с вариантными задачами. Поддерживаются новые форматные преобразования. Форматные преобразования, например, используются в глобальной кофигурационной переменной stand_extra_format. Поддерживаются следующие форматные преобразования: %Mf - короткое имя факультета участника %MF - короткое имя факультета участника на англ. языке %Md - полное имя факультета участника %MD - полное имя факультета участника на англ. языке %Mp - имя принтера, назначенного данному участнику run --- Добавлена специальная поддержка для спецификации переменной окружения "EJUDGE_PREFIX_DIR", передаваемой в тестируемую программу. В этом случае в переменные окружения добавляется переменная EJUDGE_PREFIX_DIR со значением, равным префиксу инсталляции системы ejudge (то есть значению опции --prefix программы configure). Пример использования: [tester] start_env = "EJUDGE_PREFIX_DIR" Расширенный генератор звуков (то есть по умолчанию генератор речи festival) поддерживается и в режиме турнира KIROV. Для включения генератора речи необходимо при конфигурировании системы корректно указать путь к корню инсталляции системы festival и задать следующие глобальные переменные: sound_player = "${script_dir}/festival" extended_sound Исправлена ошибка при разборе файлов дополнительной информации о тестах (.inf), связанная с неправильной обработкой символов кавычек внутри строк. master ------ Исправлена ошибка в обработке команды "Rejudge displayed". Эта ошибка приводила к аварийному завершению программы master. userlist-server,master ---------------------- При генерации случайных паролей в таблице новых паролей печатается размещение команды (то есть значение поля location). register -------- Поддерживается поле `languages' (см. выше). collect-emails -------------- Новая утилита, которая извлекает из базы пользователей адреса email всех пользователей, зарегистрированных на некоторое множество турниров.