Difference between revisions of "Изменения в версии 2.3.10"

From EjudgeWiki
 
 
(3 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 24: Line 24:
 
хранению базы пользователей в MySQL необходимо настроить плагин,
 
хранению базы пользователей в MySQL необходимо настроить плагин,
 
создать базу данных, а затем выполнить команду
 
создать базу данных, а затем выполнить команду
userlist-server --convert --from xml --to mysql
+
userlist-server --convert --from xml --to mysql
 
Обратный переход от базы данных к XML-файлу в данный момент не
 
Обратный переход от базы данных к XML-файлу в данный момент не
 
поддерживается, но будет поддерживаться в следующей версии.
 
поддерживается, но будет поддерживаться в следующей версии.
Line 48: Line 48:
 
отдельно. По умолчанию сообщения хранятся в файлах. Чтобы
 
отдельно. По умолчанию сообщения хранятся в файлах. Чтобы
 
включить хранение базы сообщений в базе данных MySQL необходимо
 
включить хранение базы сообщений в базе данных MySQL необходимо
в конфигурационном файле serve.cfg турнира установить параметр
+
в конфигурационном файле [[serve.cfg]] турнира установить параметр
clardb_plugin = "mysql"
+
clardb_plugin = "mysql"
  
 
Поддержка MySQL реализована с помощью плагина cldb_mysql.so.
 
Поддержка MySQL реализована с помощью плагина cldb_mysql.so.
Line 80: Line 80:
 
=== contest.xml ===
 
=== contest.xml ===
  
Добавлен элемент <reg_welcome_file>. Данный элемент позволяет
+
Добавлен элемент &lt;<tt>[[contest.xml:reg_welcome_file|reg_welcome_file]]</tt>&gt;. Данный элемент позволяет
 
указать имя HTML-файла с текстом, который выводится при
 
указать имя HTML-файла с текстом, который выводится при
 
регистрации на турнир с помощью CGI-программы new-register.
 
регистрации на турнир с помощью CGI-программы new-register.
Line 89: Line 89:
 
MySQL, то обрабатываются следующие сигналы, позволяющие менять
 
MySQL, то обрабатываются следующие сигналы, позволяющие менять
 
стратегии кэширования во время работы программы:
 
стратегии кэширования во время работы программы:
USR1    сбрасывает кэш и запрещает дальнейшее кэширование
+
USR1    сбрасывает кэш и запрещает дальнейшее кэширование
USR2    сбрасывает кэш
+
USR2    сбрасывает кэш
URG    разрешает кэширование
+
URG    разрешает кэширование
  
 
=== 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 ===
Line 144: Line 119:
 
посылок в другой. Программа инсталлируется либо в каталог bin,
 
посылок в другой. Программа инсталлируется либо в каталог bin,
 
либо в каталог libexec/ejudge/bin, в зависимости от опции
 
либо в каталог libexec/ejudge/bin, в зависимости от опции
--enable-hidden-server-bins скрипта configure. Например, для
+
<tt>--enable-hidden-server-bins</tt> скрипта configure. Например, для
 
перевода базы посылок некоторого турнира из файлового формата в
 
перевода базы посылок некоторого турнира из файлового формата в
 
базу данных MySQL программа должна вызываться со следующими
 
базу данных MySQL программа должна вызываться со следующими
 
аргументами:
 
аргументами:
convert-clars CONTEST-ID file mysql
+
convert-clars CONTEST-ID file mysql
 
Плагин cldb_mysql должен быть корректно настроен (см. выше) и
 
Плагин cldb_mysql должен быть корректно настроен (см. выше) и
 
требуемая база должна быть создана.
 
требуемая база должна быть создана.

Latest revision as of 06:48, 10 April 2011

Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 2.3.10

Хранение базы пользователей в 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

Убран из списка компилируемых программ.