Версия 2.3.10 (r5160) (20081004) ================================ Хранение базы пользователей в MySQL ----------------------------------- Поддерживается хранение базы пользователей в базе данных MySQL. Поддержка MySQL реализована с помощью плагина uldb_mysql.so. Конфигурационные параметры плагина определяются в файле ejudge.xml. Минимальные конфигурационные настройки могут выглядеть следующим образом: ejudge ********* ejudge База данных ejudge и пользователь ejudge с полными правами работы с этой базой должны быть предварительно созданы, например, с помощью phpMyAdmin. Для перехода от хранения базы пользователей в XML-файле к хранению базы пользователей в MySQL необходимо настроить плагин, создать базу данных, а затем выполнить команду userlist-server --convert --from xml --to mysql Обратный переход от базы данных к XML-файлу в данный момент не поддерживается, но будет поддерживаться в следующей версии. Запросы к базе данных по умолчанию кэшируются, но кэширование можно отменить, указав атрибут cache_queries="no" в элементе конфигурации плагина. Кэшируется не вся база пользователей, а только некоторая часть недавно запрошенных записей. При полном заполнении кэша вытесняются записи, которые не запрашивались дольше всего. Обновление базы выполняется сразу же в базе данных MySQL, при этом соответствующая запись удаляется из кэша, поэтому чтение, следующее за обновлением, приведет к запросу на чтение из базы данных. Кэшированием можно управлять и во время работы сервера userlist-server, послав ему один из специальных сигналов (см. далее). Хранение сообщений в MySQL -------------------------- Поддерживается хранение базы сообщений в базе данных MySQL. Выбор вида хранения базы посылок выполняется для каждого турнира отдельно. По умолчанию сообщения хранятся в файлах. Чтобы включить хранение базы сообщений в базе данных MySQL необходимо в конфигурационном файле serve.cfg турнира установить параметр clardb_plugin = "mysql" Поддержка MySQL реализована с помощью плагина cldb_mysql.so. Конфигурационные параметры плагина определяются в файле ejudge.xml. Минимальные конфигурационные настройки могут выглядеть следующим образом: ejudge ********* ejudge База данных ejudge и пользователь ejudge с полными правами работы с этой базой должны быть предварительно созданы, например, с помощью phpMyAdmin. При работе с базой сообщений турнира она полностью загружается в память при открытии турнира и не обновляется из MySQL. Однако все записи в базу сообщений немедленно приводят к обновлениям в MySQL базе. Поэтому не рекомендуется изменять MySQL базу сообщений в то время, когда турнир загружен. Команда "Reload contest settings" интерфейса администратора в числе прочего и перечитает базу сообщений из MySQL. Устранены несколько мелких утечек памяти. contest.xml ----------- Добавлен элемент . Данный элемент позволяет указать имя HTML-файла с текстом, который выводится при регистрации на турнир с помощью CGI-программы new-register. userlist-server --------------- Если в качестве хранилища базы данных пользователей используется MySQL, то обрабатываются следующие сигналы, позволяющие менять стратегии кэширования во время работы программы: USR1 сбрасывает кэш и запрещает дальнейшее кэширование USR2 сбрасывает кэш URG разрешает кэширование new-server ---------- Посылки одного приоритета компилируются и тестируются в том порядке, в котором они поступили в систему (точнее, в порядке возрастания их run_id). На страницу администратора турнира добавлена ссылка "Change judging priorities", которая позволяет изменять приоритет тестирования для задач. Заданный таким образом приоритет тестирования для задач прибавляется к глобальному приоритету (глобальная переменная `priority_adjustment'), приоритету пользователя (глобальная переменная `user_priority_adjustment'), приоритету языка программирования (переменная `priority_adjustment' секции определения языка программирования), приоритету задачи (переменная `priority_adjustment' секции определения задачи), приоритету тестировщика (переменная `priority_adjustment' секции определения тестировщика) и приоритету перетестирования (+10 к приоритету в случае повторного тестирования посылки). Приоритет изменяется от -16 до 15, причем -16 соответствует максимальному приоритету. Значение приоритета по умолчанию - 0. При отображении листинга программы на странице "View source" привилегированного пользователя можно задавать кодировку, в которой записана программа (выпадающий список "Charset"). На странице просмотра листинга программы ("View source") привилегированного пользователя поддерживается возможность отправки комментария к данной посылке. Комментарий заносится в базу сообщений с заголовком "Run RUN-ID is commented" и доступен автору посылки. Поддерживается возможность отправить комментарий к посылке и одновременно отметить посылку как "Ignored". На странице регистрации корректно обрабатывается ситуация, когда установлен флаг `disable_name', но заданы поля формы, которые необходимо заполнить. Просмотр паролей участников доступен только привилегированным пользователям с соответствующими привилегиями. new-server-cmd -------------- Поддерживается команда "force-start-virtual" для принудительного запуска виртуального турнира у указанного пользователя. convert-clars ------------- Новая программа для конвертации одного формата хранения базы посылок в другой. Программа инсталлируется либо в каталог bin, либо в каталог libexec/ejudge/bin, в зависимости от опции --enable-hidden-server-bins скрипта configure. Например, для перевода базы посылок некоторого турнира из файлового формата в базу данных MySQL программа должна вызываться со следующими аргументами: convert-clars CONTEST-ID file mysql Плагин cldb_mysql должен быть корректно настроен (см. выше) и требуемая база должна быть создана. run --- Исправлена ошибка падения программы на очень больших выходных файлах чекера. clean-users ----------- Убран из списка компилируемых программ.