Interface:Управление турниром в течение турнира

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Использование/Веб-интерфейс пользователя/Управление турниром в течение турнира

На рис. 4.4 показаны элементы управления турниром, доступные в ходе турнира. Все выделенные на рисунке элементы управления описываются ниже.

1. Астрономическое время программы-сервера управления турниром serve. Полное описание элемента “Server time” приведено выше.

2. Астрономическое время в CGI-программе master, которая в данный момент обрабатывает запрос на генерацию html-страницы, поступивший от веб-браузера. См. также полное описание выше.

3. Астрономическое время начала турнира.

4. С помощью кнопки “Stop” можно завершить турнир в любой момент до истечения времени турнира.

Чтобы пользователь мог останавливать турнир, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит CONTROL_CONTEST.

5. Установленная продолжительность турнира отображается либо как “Unlimited”, если продолжительность турнира не ограничена, либо в формате HH:MM:SS, где HH — количество полных часов, MM — количество полных минут в неполном последнем часе, SS — количество секунд в неполной последней минуте. Когда текущая продолжительность турнира превышает установленную продолжительность турнира, турнир завершается автоматически.

6. Данный элемент управления позволяет изменить установленную продолжительность турнира. В поле ввода необходимо ввести новую продолжительность турнира, затем нажать кнопку “Change duration”. Продолжительность турнира задаётся в виде H[:M], где H — количество часов, а M — количество минут. Количество минут должно находиться в интервале от 0 до 59. Минутная составляющая вместе с двоеточием может быть опущена. Максимальная продолжительность турнира, которую можно установить с помощью данного элемента управления, равна 1000000 минутам, что соответствует примерно 694 суткам. Продолжительность турнира неограниченной продолжительности не может быть изменена. Продолжительность турнира ограниченной продолжительности не может быть сделана неограниченной.

Продолжительность турнира конечной продолжительности может быть как увеличена, так и уменьшена. При этом на уменьшение продолжительности накладывается такое ограничение, что новая продолжительность турнира не должна быть такой, что турнир должен был бы закончится в некоторый момент в прошлом. Другими словами, уменьшение продолжительности турнира не должно приводить к его немедленному завершению.

Начальная продолжительность турнира устанавливается в конфигурационном файле сервера турнира serve.cfg с помощью глобальной конфигурационной переменной contest_time.

Чтобы пользователь мог изменять продолжительность турнира, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит CONTROL_CONTEST.

7. Здесь отображается ожидаемое время завершения турнира, которое вычисляется по времени начала турнира (3) и текущей продолжительности турнира (5). В этот момент времени турнир будет завершён автоматически, если только до этого момента он не будет завершён явно с помощью кнопки “Stop” (4). Изменения в текущей продолжительности турнира с помощью кнопки “Change duration” (7) немедленно отражаются в ожидаемом времени завершения турнира.

Для турниров неограниченной продолжительности данная информация не отображается.

8. Здесь отображается ожидаемое время «заморозки» таблицы текущих результатов турнира. От момента заморозки и до окончания турнира таблица текущих результатов автоматически не обновляется при поступлении новых решений. Время в минутах от момента заморозки до конца турнира задаётся с помощью глобальной конфигурационной переменной stand_freeze_time (переменная имеет альтернативное имя board_fog_time) в конфигурационном файле сервера турнира serve.cfg. Если значение этой переменной установлено в 0, заморозка таблицы результатов отключается. В этом случае, а также в случае турниров неограниченной продолжительности данная информация не отображается.

Изменения в текущей продолжительности турнира с помощью кнопки “Change duration” (7) немедленно отражаются в ожидаемом времени заморозки таблицы результатов. В любой момент времени таблица текущих результатов турнира может быть обновлена вручную с помощью кнопки “Update public standings” (17).

Автоматическое обновление результатов турнира может быть полностью отключено установкой глобальной конфигурационной переменной autoupdate_standings в значение 0 в файле конфигурации турнира serve.cfg.

9. Здесь отображается время турнира, прошедшее от его начала.

10. Здесь отображается время, оставшееся до конца турнира.

11. Ссылки быстрой навигации по страницам управления турниром.

  • Нажатие на ссылку “Refresh” приведёт к обновлению информации на главной странице управления турниром.
  • Нажатие на ссылку “Standings” вызовет переход на страницу отображения текущих результатов турнира. Текущие результаты турнира, отображаемые на этой странице, никогда не замораживаются. Обычные участники турнира, а также наблюдатели не имеют доступа к данной «привилегированной» таблице результатов. Чтобы пользователь программы master имел возможность смотреть привилегированные текущие результаты турнира, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит VIEW_STANDINGS.
  • Нажатие на ссылку “View teams” вызовет переход на страницу отображения информации об участниках турнира. Данная страница подробно рассматривается ниже. Чтобы пользователь имел полномочия просматривать список участников турнира, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит LIST_CONTEST_USERS.
  • Нажатие на ссылку “Log out” приведёт к завершению сеанса работы администратора турнира. При этом идентификатор сессии (SID), отображаемый в URL станет недействительным. Для входа на страницы управления турниром необходимо вновь ввести регистрационное имя и пароль на странице входа в программу.

12. Нажатие на ссылку “Dump runs database” вызовет печать базы посылок в формате CSV (comma-separated values). В формате CSV каждая запись размещается на отдельной текстовой строке, а поля записи разделяются символом ‘;’. Данные в формате CSV могут быть импортированы, например, в реляционные базы данных или в программы электронных таблиц для дальнейшей обработки.

База посылок в формате CSV отображается непосредственно в окне браузера (для неё устанавливается тип содержимого (Content-type) “text/plain”). База посылок может быть сохранена в текстовом файле средствами браузера. Поля файла базы посылок в формате CVS описываются в соответствующем разделе.

Данная операция требует специальных привилегий. Для того, чтобы пользователь мог получить базу посылок в формате CSV, для пользователя в файле конфигурации турнира contest.xml в элементе cap должен быть установлен бит DUMP_RUNS.

13. Нажатие на ссылку “Dump users database” вызовет печать базы участников турнира в формате CSV. База участников турнира в формате CSV отображается непосредственно в окне браузера (для неё устанавливается тип содержимого (Content-type) “text/plain”). База участников турнира может быть сохранена в текстовом файле средствами браузера.

Поля файла базы участников турнира в формате CVS описываются в соответствующем разделе.

Данная операция требует специальных привилегий. Для того, чтобы пользователь мог получить базу участников турнира в формате CSV, для пользователя в файле конфигурации турнира contest.xml в элементе cap должен быть установлен бит DUMP_USERS.

14. Нажатие на ссылку “Dump standings database” вызовет печать таблицы текущих результатов турнира в формате CSV. Таблица текущих результатов турнира в формате CSV отображается непосредственно в окне браузера (для неё устанавливается тип содержимого (Content-type) “text/plain”). Таблица текущих результатов турнира может быть сохранена в текстовом файле средствами браузера. Поля таблицы текущих результатов турнира в формате CVS описываются в соответствующем разделе.

Данная операция требует специальных привилегий. Для того, чтобы пользователь мог получить базу участников турнира в формате CSV, для пользователя в файле конфигурации турнира contest.xml в элементе cap должен быть установлен бит DUMP_STANDINGS.

15. Нажатие на ссылку “Export XML runs (external format)” вызовет генерацию XML-файла с базой посылок. XML-файл отображается непосредственно в окне браузера (для него устанавливается тип содержимого (Content-type) “text/plain”) и затем может быть сохранён в файле средствами браузера.

Экспортируемый XML-формат базы посылок отличается от внутреннего (см. ниже) тем, что в экспортируемый формат добавляется информация о зарегистрированных участниках турнира, сконфигурированных языках программирования и задачах турнира. По такому XML-файлу можно однозначно воспроизвести ход турнира и его результаты. С другой стороны, в экспортируемом формате отсутствует внутренняя информация о посылке, такая как IP-адрес, размер, хэш-код и пр. Экспортируемый формат предназначен для отчёта о ходе турнира.

Данная операция требует специальных привилегий. Для того, чтобы пользователь мог получить базу посылок в формате CSV, для пользователя в файле конфигурации турнира contest.xml в элементе cap должен быть установлен бит DUMP_RUNS.

16. Нажатие на ссылку “Write XML runs (internal format)” вызовет генерацию XML-файла с базой посылок во внутреннем формате. XML-файл отображается непосредственно в окне браузера (для него устанавливается тип содержимого (Content-type) “text/plain”) и затем может быть сохранён в файле средствами браузера.

Внутренний формат отличается от внешнего (см. выше) тем, что во внутреннем формате для каждой посылки содержится полная информация о посылке, включающая IP-адрес, контрольную сумму, размер, внутренние флаги и т. д. Внутренний формат не содержит информации о зарегистрированных участниках, языках программирования и задачах. Внутренний формат предназначен для синхронизации базы посылок (и как следствие таблицы текущих результатов) в случаях, когда один и тот же турнир проводится в нескольких точках проведения с отдельным сервером турнира в каждой точке проведения. В этом случае предполагается, что база зарегистрированных участников турнира, список языков программирования и задач во всех точках проведения одинаковы.

База посылок во внутреннем формате может быть проимпортирована с помощью элемента управления “Import and merge XML runs log” (см. ниже).

Данная операция требует специальных привилегий. Для того, чтобы пользователь мог получить базу посылок в формате CSV, для пользователя в файле конфигурации турнира contest.xml в элементе cap должен быть установлен бит DUMP_RUNS.

17. Кнопка “Update public standings” предназначена для ручного обновления текущих результатов турнира, доступных для участников турнира и прочих зрителей из сети Интернет. С помощью неё можно обновлять результаты даже тогда, когда автоматическое обновление отключено в период заморозки результатов. Поскольку операция обновления результатов необратима, после нажатия на данную кнопку будет выдана страница подтверждения операции. Для выполнения обновления результатов на странице подтверждения необходимо нажать на кнопку “Yes, update standings”.

Чтобы пользователь мог вручную обновлять текущее положение команд, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит CONTROL_CONTEST.

18. Кнопка “Reset the contest” полностью сбрасывает турнир. Полностью очищается база посылок и база сообщений, удаляются все файлы в архиве сообщений и архиве посылок, продолжительность турнира сбрасывается на значение, установленное в глобальной конфигурационной переменной contest_time конфигурационного файла турнира serve.cfg.

Поскольку операция сброса турнира необратима, после нажатия на данную кнопку будет выдана страница подтверждения операции. Для выполнения обновления результатов на странице подтверждения необходимо нажать на кнопку “Yes, reset the contest”.

Для выполнения этой операции пользователем, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит CONTROL_CONTEST.

19. Кнопка “Suspend clients” приостанавливает обработку сервером турнира serve запросов от CGI-программы team, запросы от привилегированных программ master и judge продолжают обрабатываться. В режиме приостановленной обработки участникам турнира будет генерироваться html-страница, показывающая только состояние турнира.

Участники турнира не могут в это время просматривать список своих посылок, список сообщений судьям и от судей, сами сообщения. Участники не могут посылать решения на проверку и посылать сообщения судьям.

В режиме приостановленной обработки запросов участников в разделе состояния турнира (25) выводится дополнительная строка “Team requests are suspended”, доступная и участника турнира. В режиме приостановленной обработки кнопка “Suspend clients” заменяется на кнопку “Resume clients”, нажав на которую можно выключить режим приостановленной обработки запросов участников.

Для выполнения этой операции пользователем, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит CONTROL_CONTEST.

20. Кнопка “Suspend testing” приостанавливает автоматическую проверку поступающих решений. В режиме приостановленной проверки решений участники турнира могут выполнять все обычные действия, включая и посылку решений на проверку, но посланное на проверку решение не будет автоматически отправлено на компиляцию и последующее тестирование. Вместо этого оно получит статус “Available for testing”, в котором будет находится до тех пор, пока не будет пересужено каким-либо способом.

Данная возможность полезна, когда требуется уменьшить нагрузку на сервер турнира (особенно, если сервер турнира одновременно выполняет компиляцию и тестирование решений) в последние минуты турнира, когда поток решений особенно интенсивен. Посылку со статусом “Available for testing” можно пересудить одним из следующих способов:

  • Выбрав опцию “Rejudge” в строке состояния данной посылки на главной странице программы master.
  • Выбрав опцию “Rejudge” в режиме просмотра посылки (“View source”), доступном из главной страницы программы master.
  • Нажав на кнопку “Rejudge all” (см. ниже). При этом будут пересужены все решения, находящиеся в базе посылок.
  • Выбрав соответствующую задачу и нажав на кнопку “Rejudge!” в разделе “Rejudge problem” (см. ниже). В этом случае будут пересужены все решения указанной задачи.
  • Нажав на кнопку “Judge suspended runs” (см. ниже). В этом случае будут пересужены все решения в базе посылок, которые имеют статус “Available for testing”.

В режиме приостановленного тестирования решений участников в разделе состояния турнира (25) выводится дополнительная строка “Testing of team’s submits is suspended”, доступная и участника турнира. В этом режиме кнопка “Suspend testing” заменяется на кнопку “Resume testing”, нажав на которую можно выключить режим приостановленного тестирования решений участников.

Для выполнения этой операции пользователем, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит CONTROL_CONTEST.

21. Кнопка “Regenerate user passwords” генерирует случайные пароли участников турнира для всех непривилегированных участников. Пароли привилегированных участников остаются без изменений.

В системе ejudge каждый пользователь может иметь два независимых пароля: регистрационный пароль и пароль участника турнира.

Регистрационный пароль генерируется автоматически при регистрации пользователя в системе ejudge и отправляется электронной почтой на адрес, указанный при регистрации. Пользователь может изменить этот пароль с помощью CGI-программы register. Регистрационный пароль используется для входа в программу register, а также привилегированные программы master и judge, если пользователь имеет соответствующие привилегии. Регистрационный пароль используется для входа в программу team, если не установлен пароль участника.

Пароль участника турнира устанавливается администратором турнира. Пароль участника турнира действует для входа в программу team. В текущей версии системы ejudge пароль участника турнира един для всех турниров. Если задан и пароль участника, и регистрационный пароль, для входа в программу team необходимо использовать пароль участника.

По нажатию на кнопку “Regenerate user passwords” генерируются случайные пароли.

Поскольку операция генерации пароля необратима, после нажатия на данную кнопку будет выдана страница подтверждения операции. Для выполнения обновления результатов на странице подтверждения необходимо нажать на кнопку “Yes, generate passwords!”. После генерации паролей страница со всеми сгенерированными паролями отображается веб-браузером. При этом сбрасываются все идентификаторы сессий, созданные для участников турнира. Таким образом, всем участникам турнира придётся заново ввести своё регистрационное имя и пароль.

Для выполнения этой операции пользователем, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит GENERATE_TEAM_PASSWORDS.

22. Кнопка “Regenerate register user passwords” генерирует случайные регистрационные пароли для всех непривилегированных участников турнира. Пароли привилегированных участников остаются без изменений. Поскольку операция генерации паролей необратима, после нажатия на данную кнопку будет выдана страница подтверждения операции. Для выполнения обновления результатов на странице подтверждения необходимо нажать на кнопку “Yes, generate passwords!”. После генерации паролей страница со всеми сгенерированными паролями отображается веб-браузером. При этом сбрасываются все идентификаторы сессий, созданные для участников турнира. Таким образом, всем участникам турнира придётся заново ввести своё регистрационное имя и пароль.

Для выполнения этой операции пользователем, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит GENERATE_TEAM_PASSWORDS.

23. Кнопка “Clear team passwords!” сбрасывает пароли участников турнира для всех непривилегированных участников турнира. Поскольку операция сброса паролей необратима, после нажатия на данную кнопку будет выдана страница подтверждения операции. Для выполнения обновления результатов на странице подтверждения необходимо нажать на кнопку “Yes, clear passwords!”. После этого пароль участника турнира считается не установленным, и для входа в программу team может использоваться регистрационный пароль.

Для выполнения этой операции пользователем, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит GENERATE_TEAM_PASSWORDS.

24. Кнопка “Reload server” действует только тогда, когда сервер турнира serve работает под управлением программы super-serve. Тогда нажатие на эту кнопку приводит к немедленному завершению работы программ serve и run, обслуживающих данных турнир. Они будут немедленно перезапущены, и в результате сервер турнира будет перезагружен и конфигурационные файлы считаны заново.

В режиме самостоятельной работы программы serve на нажатие этой кнопки будет выдано сообщение об ошибке.

Для выполнения этой операции пользователем, в конфигурационном файле турнира contest.xml в элементе cap для него должен быть установлен бит CONTROL_CONTEST.

25. Здесь выводится текущее состояние сервера. Если в текущий момент времени отображение текущих результатов турнира заморожено, выводится сообщение “Standings are frozen”. Кроме того дополнительно выводятся сообщения о приостановке обслуживания клиентов и о приостановке проверки решений.

26. Кнопка “Suspend printing” позволяет приостановить обслуживание запросов на печать, поступающих от непривилегированных участников соревнования. Запросы на печать привилегированных пользователей обслуживаются как обычно. Кнопка отображается, только если глобальная конфигурационная переменная enable_printing конфигурационного файла serve.cfg установлена в значение true. После нажатия на данную кнопку сервер турнира переходит в режим приостановки обслуживания запросов на печать. В этом режиме все запросы на печать, поступающие от непривилегированных клиентов, немедленно отвергаются. Кроме этого, в CGI-программе team перестаёт отображаться ссылка “Print”, позволяющая участникам печатать исходный текст посылок. Кнопка “Suspend printing” заменяется на кнопку “Resume printing” нажатие на которую выключает режим приостановки обслуживания запросов на печать.