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

From EjudgeWiki
 
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", которая позволяет изменять
 
"Change judging priorities", которая позволяет изменять
 
приоритет тестирования для задач. Заданный таким образом
 
приоритет тестирования для задач. Заданный таким образом
Line 116: Line 116:
 
максимальному приоритету. Значение приоритета по умолчанию - 0.
 
максимальному приоритету. Значение приоритета по умолчанию - 0.
  
При отображении листинга программы на странице "View source"
+
* При отображении листинга программы на странице "View source"
 
привилегированного пользователя можно задавать кодировку, в
 
привилегированного пользователя можно задавать кодировку, в
 
которой записана программа (выпадающий список "Charset").
 
которой записана программа (выпадающий список "Charset").
  
На странице просмотра листинга программы ("View source")
+
* На странице просмотра листинга программы ("View source")
 
привилегированного пользователя поддерживается возможность
 
привилегированного пользователя поддерживается возможность
 
отправки комментария к данной посылке. Комментарий заносится в
 
отправки комментария к данной посылке. Комментарий заносится в
Line 127: Line 127:
 
к посылке и одновременно отметить посылку как "Ignored".
 
к посылке и одновременно отметить посылку как "Ignored".
  
На странице регистрации корректно обрабатывается ситуация, когда
+
* На странице регистрации корректно обрабатывается ситуация, когда
 
установлен флаг `disable_name', но заданы поля формы, которые
 
установлен флаг `disable_name', но заданы поля формы, которые
 
необходимо заполнить.
 
необходимо заполнить.
  
Просмотр паролей участников доступен только привилегированным
+
* Просмотр паролей участников доступен только привилегированным
 
пользователям с соответствующими привилегиями.
 
пользователям с соответствующими привилегиями.
  
Line 144: Line 144:
 
посылок в другой. Программа инсталлируется либо в каталог 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 должен быть корректно настроен (см. выше) и
 
требуемая база должна быть создана.
 
требуемая база должна быть создана.

Revision as of 18:27, 4 October 2008

Навигация: Главная страница/Система 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

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