Difference between revisions of "Изменения в версии 2.3.10"
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[Изменения в версии 2.3.10]] | + | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 2.3.10]] |
=== Хранение базы пользователей в MySQL === | === Хранение базы пользователей в MySQL === | ||
Line 95: | Line 95: | ||
=== new-server === | === new-server === | ||
− | * Посылки одного приоритета компилируются и тестируются в том | + | * Посылки одного приоритета компилируются и тестируются в том порядке, в котором они поступили в систему (точнее, в порядке возрастания их run_id). |
− | порядке, в котором они поступили в систему (точнее, в порядке | ||
− | возрастания их run_id). | ||
− | * На страницу администратора турнира добавлена ссылка | + | * На страницу администратора турнира добавлена ссылка "Change judging priorities", которая позволяет изменять приоритет тестирования для задач. Заданный таким образом приоритет тестирования для задач прибавляется к глобальному приоритету (глобальная переменная `priority_adjustment'), приоритету пользователя (глобальная переменная `user_priority_adjustment'), приоритету языка программирования (переменная `priority_adjustment' секции определения языка программирования), приоритету задачи (переменная `priority_adjustment' секции определения задачи), приоритету тестировщика (переменная `priority_adjustment' секции определения тестировщика) и приоритету перетестирования (+10 к приоритету в случае повторного тестирования посылки). |
− | "Change judging priorities", которая позволяет изменять | ||
− | приоритет тестирования для задач. Заданный таким образом | ||
− | приоритет тестирования для задач прибавляется к глобальному | ||
− | приоритету (глобальная переменная `priority_adjustment'), | ||
− | приоритету пользователя (глобальная переменная | ||
− | `user_priority_adjustment'), приоритету языка программирования | ||
− | (переменная `priority_adjustment' секции определения языка | ||
− | программирования), приоритету задачи (переменная | ||
− | `priority_adjustment' секции определения задачи), приоритету | ||
− | тестировщика (переменная `priority_adjustment' секции | ||
− | определения тестировщика) и приоритету перетестирования (+10 к | ||
− | приоритету в случае повторного тестирования посылки). | ||
− | Приоритет изменяется от -16 до 15, причем -16 соответствует | + | * Приоритет изменяется от -16 до 15, причем -16 соответствует максимальному приоритету. Значение приоритета по умолчанию - 0. |
− | максимальному приоритету. Значение приоритета по умолчанию - 0. | ||
− | * При отображении листинга программы на странице "View source" | + | * При отображении листинга программы на странице "View source" привилегированного пользователя можно задавать кодировку, в которой записана программа (выпадающий список "Charset"). |
− | привилегированного пользователя можно задавать кодировку, в | ||
− | которой записана программа (выпадающий список "Charset"). | ||
− | * На странице просмотра листинга программы ("View source") | + | * На странице просмотра листинга программы ("View source") привилегированного пользователя поддерживается возможность отправки комментария к данной посылке. Комментарий заносится в базу сообщений с заголовком "Run RUN-ID is commented" и доступен автору посылки. Поддерживается возможность отправить комментарий к посылке и одновременно отметить посылку как "Ignored". |
− | привилегированного пользователя поддерживается возможность | ||
− | отправки комментария к данной посылке. Комментарий заносится в | ||
− | базу сообщений с заголовком "Run RUN-ID is commented" и доступен | ||
− | автору посылки. Поддерживается возможность отправить комментарий | ||
− | к посылке и одновременно отметить посылку как "Ignored". | ||
− | * На странице регистрации корректно обрабатывается ситуация, когда | + | * На странице регистрации корректно обрабатывается ситуация, когда установлен флаг `disable_name', но заданы поля формы, которые необходимо заполнить. |
− | установлен флаг `disable_name', но заданы поля формы, которые | ||
− | необходимо заполнить. | ||
− | * Просмотр паролей участников доступен только привилегированным | + | * Просмотр паролей участников доступен только привилегированным пользователям с соответствующими привилегиями. |
− | пользователям с соответствующими привилегиями. | ||
=== new-server-cmd === | === new-server-cmd === |
Latest revision as of 06:48, 10 April 2011
Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 2.3.10
Contents
Хранение базы пользователей в MySQL
Поддерживается хранение базы пользователей в базе данных MySQL. Поддержка MySQL реализована с помощью плагина uldb_mysql.so. Конфигурационные параметры плагина определяются в файле ejudge.xml. Минимальные конфигурационные настройки могут выглядеть следующим образом:
<plugins> <plugin type="uldb" name="mysql" load="yes" default="yes"> <config> <user>ejudge</user> <password>*********</password> <database>ejudge</database> </config> </plugin> </plugins>
База данных ejudge и пользователь ejudge с полными правами работы с этой базой должны быть предварительно созданы, например, с помощью phpMyAdmin.
Для перехода от хранения базы пользователей в XML-файле к хранению базы пользователей в MySQL необходимо настроить плагин, создать базу данных, а затем выполнить команду
userlist-server --convert --from xml --to mysql
Обратный переход от базы данных к XML-файлу в данный момент не поддерживается, но будет поддерживаться в следующей версии.
Запросы к базе данных по умолчанию кэшируются, но кэширование можно отменить, указав атрибут cache_queries="no" в элементе <config> конфигурации плагина. Кэшируется не вся база пользователей, а только некоторая часть недавно запрошенных записей. При полном заполнении кэша вытесняются записи, которые не запрашивались дольше всего. Обновление базы выполняется сразу же в базе данных MySQL, при этом соответствующая запись удаляется из кэша, поэтому чтение, следующее за обновлением, приведет к запросу на чтение из базы данных.
Кэшированием можно управлять и во время работы сервера userlist-server, послав ему один из специальных сигналов (см. далее).
Хранение сообщений в MySQL
Поддерживается хранение базы сообщений в базе данных MySQL. Выбор вида хранения базы посылок выполняется для каждого турнира отдельно. По умолчанию сообщения хранятся в файлах. Чтобы включить хранение базы сообщений в базе данных MySQL необходимо в конфигурационном файле serve.cfg турнира установить параметр
clardb_plugin = "mysql"
Поддержка MySQL реализована с помощью плагина cldb_mysql.so. Конфигурационные параметры плагина определяются в файле ejudge.xml. Минимальные конфигурационные настройки могут выглядеть следующим образом:
<plugins> <plugin type="cldb" name="mysql" load="yes"> <config> <user>ejudge</user> <password>*********</password> <database>ejudge</database> </config> </plugin> </plugins>
База данных ejudge и пользователь ejudge с полными правами работы с этой базой должны быть предварительно созданы, например, с помощью phpMyAdmin.
При работе с базой сообщений турнира она полностью загружается в память при открытии турнира и не обновляется из MySQL. Однако все записи в базу сообщений немедленно приводят к обновлениям в MySQL базе. Поэтому не рекомендуется изменять MySQL базу сообщений в то время, когда турнир загружен. Команда "Reload contest settings" интерфейса администратора в числе прочего и перечитает базу сообщений из MySQL.
Устранены несколько мелких утечек памяти.
contest.xml
Добавлен элемент <reg_welcome_file>. Данный элемент позволяет указать имя 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
Убран из списка компилируемых программ.