Версия 2.3.4 (r4646) (20071226) =============================== Реализован модуль расширения для языка Python, который предоставляет доступ к серверу базы пользователей. Модуль расширения доступен в каталоге python. Документация по использованию модуля расширения доступна по ссылке http://localhost:8888/wiki/index.php/%D0%94%D0%BE%D1%81%D1%82%D1%83%D0%BF_%D0%BA_ejudge_%D0%B8%D0%B7_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC_%D0%BD%D0%B0_%D0%9F%D0%B8%D1%82%D0%BE%D0%BD%D0%B5 contest.xml ----------- Добавлен новый атрибут `allow_reg_data_edit' элемента . Если значение атрибута равно TRUE, то в ходе контеста участник может в любой момент вернуться к редактированию личных данных. Элемент может содержать текст. Этот текст будет выводиться в качестве пояснения в форме редактирования регистрационных данных. Например, Название школы вместо стандартного пояснения будет выведено указанное пояснение. Добавлен новый бит полномочий `PRIV_EDIT_REG'. Он должен быть установлен для редактирования регистрационных настроек привилегированных пользователей. При переходе на эту версию может потребоваться добавить этот бит в настройки турниров. Максимальный номер турнира увеличен до 999999. Биты полномочий LIST_CONTEST_USERS и LIST_ALL_USERS заменены одним битом LIST_USERS. При доступе ко всей базе пользователей целиком он работает как LIST_ALL_USERS, а при доступе к турниру - как LIST_CONTEST_USERS. Удален бит полномочий GENERATE_TEAM_PASSWORDS. Вместо него добавлены два бита EDIT_PASSWD и PRIV_EDIT_PASSWD. Они позволяют просматривать и изменять регистрационные и турнирные пароли для обычных и привилегированных пользователей соответственно. Биты EDIT_PASSWD или PRIV_EDIT_PASSWD, установленные для всей базы пользователей в файле ejudge.xml, позволяют просматривать и модифицировать регистрационные пароли и турнирные пароли во всех турнирах. Биты EDIT_PASSWD или PRIV_EDIT_PASSWD, установленные для турнира, позволяют просматривать турнирные пароли в данном турнире. userlist.xml ------------ В базу пользователей добавлено много новых полей: o турнирные регистрационные данные пользователя instnum номер учебного заведения (номер школы). должен быть числом. area район области, например, "Ногинский р-н" zip почтовый индекс street улица, дом, квартира field0 дополнительное поле 0 field1 ... field9 всего 10 дополнительных текстовых полей, которые можно использовать произвольным образом o регистрационные данные члена команды (персональные) gender пол discipline дисциплина (предмет) edit-userlist ------------- Улучшена поддержка кодировки UTF-8. Горячие кнопки работают и в русской раскладке в кодировке UTF-8. Ширина полей увеличена с 128 до 256 символов. execute ------- Добавлена опция командной строки --security-violation, которая включает режим обнаружения ошибок этого типа. new-server ---------- Заголовок сообщения (clarification) обрезается корректно в случае кодировки UTF-8. Реализована поддержка модулей расширения (plugin) турниров. В данной версии модули расширения турнира могут реализовывать только генерацию всех видов протокола. В дальнейшем планируется расширить функциональность модулей расширения (например, генерацией таблицы результатов) и документировать интерфейс. В выражение фильтра добавлены новые конструкции: missingsource равен TRUE, если у посылки должен быть исходные код, но он по каким-то причинам отсутствует judge_id возвращает целое значение, равное идентификатору проверки для данной посылки При просмотре посылок непривилегированными пользователями правильно отображаются только 15 последних посылок. В таблице результатов отображаются поля из личных данных участников команды, например, класс или группа. В таблице посылок привилегированных пользователей события VIRTUAL_STOP отображаются со знаком `!', если в режиме виртуальной олимпиады посылки данного участника уже проверены. Улучшена поддержка форматов файлов Microsoft Office, а так же форматов .BMP и .GIF при приеме заданий типа output-only. На страницу привилегированных пользователей добавлена ссылка "View examination information", по которой отображается таблица участников экзамена, содержащая логин, имя, экзаменационный номер, шифр и т. д. На странице привилегированных пользователей исправлена ошибка, из-за которой заголовок таблицы текущих результатов отображался дважды. На страницу ошибки входа из-за неполных регистрационных данных добавлена ссылка на страницу редактирования регистрационных данных. Если для турнира установлен флаг `force_registration', участники автоматически регистрируются на турнир при первом входе в редактирование регистрационных данных этого турнира. Для личных турниров (у которых установлен флаг `personal') на странице редактирования данных об участнике отображаются поля первого члена команды. На привилегированной странице просмотра информации об участниках добавлена возможность выполнить операцию над диапазоном идентификаторов участников. Добавлена привилегированная команда назначения случайных шифров участникам ("Assign random cyphers"). Для output-only задач поддерживается окно для ввода текстового ответа. Таким образом, ответ может быть либо послан в файле в одном из разрешенных форматов, либо введен непосредственно в окно ввода. Для включения этой возможности должна быть установлена конфигурационная переменная `enable_text_form' раздела описания задачи. Если в XML-файле турнира установлен флаг `allow_reg_data_edit', в строке меню страницы непривилегированных пользователей добавляется ссылка "Registration data". В режиме вертикальной навигации задач поддерживается новый параметр `group_name'. Когда у очередной задачи изменяется группа, новая группа выводится в столбце навигации по задачам. Новые глобальные конфигурационные переменные: detect_violations включить выявление ошибок "security violation" contest_plugin_file имя файла модуля расширения турнира Новые конфигурационные переменные описания задачи: enable_text_form при сдаче задач типа output-only разрешить ввод ответа в текстовом виде prev_runs_to_show число отображаемых предыдущих посылок по каждой задаче group_name имя группы задач При генерации печатных протоколов корректно обрабатываются многие символы в кодировке UTF-8, которые не обрабатываются непосредственно latex'ом. Поддерживается генерация печатных протоколов, включающих задачи типа output-only с картинками в форматах JPEG, BMP, GIF, PNG. Перенумерация посылок отражается в журнале обработки посылок (audit log). Временно отключена возможность удаления пустых записей (squeeze) в журнале посылок (runlog). Добавлено новое форматное преобразование для отображения в таблице текущих результатов: `%Vv' - вывод варианта пользователя. На привелигированные страницы добавлена ссылка на страницу описания выражений фильтров. С привелигированной страницы всегда доступна ссылка на условия задач, если она установлена в элементе Добавлена новая глобальная конфигурационная переменная `stand_disq_attr' файла serve.cfg, которая позволяет устанавливать атрибуты ячейки таблицы текущих результатов, для которых были дисквалифицированные посылки. stand_disq_attr = " bgcolor=\"#ffcccc\"" Добавлена новая конфигурационная переменная `stand_ignore_score' раздела описания задачи файла serve.cfg. Если эта переменная установлена в 1, баллы за данную задачу не добавляются к сумме всех баллов за турнир. Добавлена новая конфигурационная переменная `score_view' раздела описания задачи файла serve.cfg. Эта переменная позволяет задавать отображение числовых баллов за задачу в символьные строки. Например, score_view = "0 0" score_view = "1 -" score_view = "2 +" задаёт, что 0 баллов будет отображаться как "0", 1 балл - как "-", а 2 балла - как "+". Добавлена новая конфигурационная переменная `stand_last_column' раздела описания задачи файла serve.cfg. Если эта переменная установлена в 1, то столбец данной задачи в таблице текущих результатов будет отображаться после столбцов с суммарным баллом и количеством решенных задач. Таким образом можно определять "задачи", которые на самом деле будут содержать дополнительную информацию (например, оценку за курс), проставляемую в таблицу текущих результатов. register -------- Если турнир обрабатывается новым сервером, то пользователь перенаправляется на страницу `new-register'. run --- Добавлена поддержка обнаружения ошибки "Security violation error". Для обнаружения ошибки необходима версия ядра Linux не хуже чем 2.6.23.8 и последняя версия библиотеки reuse. Данный тип ошибки возникает, когда программа пытается использовать заведомо запрещённые системные вызовы, например, socket() или fork(). По умолчанию поддержка обнаружения ошибки "Security violation error" отключена, для включения необходимо установить глобальную конфигурационную переменную `detect_violations'. Корректно обрабатываются задачи с более чем 127 тестами. new-server-cmd -------------- Добавлена команда `unload' для выгрузки указанного турнира. Команда может использоваться для принудительной перезагрузки настроек турнира после их изменения.