Пояснительная записка (1231610), страница 2
Текст из файла (страница 2)
Система PC2 написана в Калифорнийском Государственном Университете (CSUS), город Сакраменто, по гранту IBM. Из ее достоинств, следует отметить легкость настройки и администрирования. Система написана на языке Java, что позволяет использовать ее на любой платформе.
Недостатки системы PC2:
– система не хранит банка заданий, что не позволяет ее использовать в качестве онлайновой тестирующей система;
– использует собственный клиент, а не web-браузер, что затрудняет его использование через интернет.
Очень сложно что-либо сказать о возможностях системы PCMS2, так как система развивается и обновляется, но после 2004 года новые версии не выкладываются в свободный доступ.
1.2.3 Система Timus Online Judge
Timus Online Judge – это крупнейший в России архив задач по программированию с автоматической проверяющей системой [13]. Основной источник задач для архива – соревнования Уральского федерального университета, Чемпионаты Урала, Уральские четвертьфиналы ACM ICPC, Петрозаводские сборы по программированию.
На базе данной системы регулярно проходят различные турниры, но в основном система используется пользователями для решения отдельных задач в целях обучения.
Доступ к системе осуществляется посредством web-интерфейса, который поддерживается студентами и выпускниками Уральского федерального университета.
Система Timus Online Judge не имеет свободного распространения.
1.2.4 Система Ejudge
Система Ejudge разработана в МГУ и распространяется по лицензии GPL [14]. Ejudge имеет достаточно мощные функциональные возможности:
– проведение турниров с автоматической проверкой задач по четырём системам: ACM, KIROV, OLYMPIAD, MOSCOW;
– ограниченные и неограниченные по времени турниры;
– поддержка виртуальных турниров;
– одновременное проведение нескольких турниров;
– автоматическая и модерируемая регистрация участников турнира;
– возможность участия в нескольких турнирах под одним регистрационным именем;
– разделение прав доступа к турнирам. Некоторый пользователь может быть администратором одного турнира и не иметь никаких привилегий в другом турнире;
– многоязыковой интерфейс. Текущая версия поддерживает русский и английский языки;
– защищённое исполнение программ;
– поддержка вариантных задач, когда под одним именем каждый участник получает свой вариант задачи;
– web-интерфейс администратора и участника турнира;
– web-интерфейс администратора турнира для создания новых турниров и редактирования настроек существующих турниров;
– настраиваемый внешний вид;
– экспорт истории посылок в формате XML;
– экспорт внутренних таблиц (участников, журнала турнира, результатов) в формате CSV (comma-separated values);
– доступ к серверам турниров из командной строки (возможность написания скриптов для управления турнирами).
Основные недостатки системы:
– система написана под ОС Linux, при инсталляции требует перекомпиляции ядра операционной системы;
– система в принципе не переносится на Win32, т.к. использует UNIX-сокеты.
Таким образом, система Ejudge может стать неплохой базой для проектируемой системы, но с определёнными минусами – необходимостью работы на ОС Linux.
1.2.5 Система Contester
Contester – это система для проведения турниров и индивидуального решения задач по олимпиадному программированию [15].
Contester работает как на Windows, так и на Linux.
Интерфейс участника соревнования позволяет:
– зарегистрироваться самостоятельно, если включена регистрация;
– прочитать тексты задач (с HTML-разметкой);
– ознакомиться со справкой к турнироный системе, примерами решений и «расшифровкой» результатов проверки;
– просмотреть список своих попыток решения, имена отправленных файлов, исходные коды каждой попытки;
– просмотреть журнал компиляции в случае ошибки компиляции;
– просмотреть турнирную таблицу в ACM-стиле;
– во внетурнирное время решать задачи из «сборников»;
– обсудить задачи, сборники, турниры и разделы на встроенном форуме.
Интерфейс администратора турнирной системы позволяет:
– создавать, блокировать и удалять учетные записи участников системы;
– включать режим самостоятельной регистрации участниками;
– создавать и удалять задачи, турниры, сборники и разделы; устанавливать и переносить время турниров;
– вносить HTML-тексты задач и рисунки к ним; вносить тестовые пары к задачам;
– просматривать список решений участников, имена отправленных файлов, исходные коды каждого решения;
– просматривать журналы компиляции и проверки каждой попытки; заново отправлять попытки на перепроверку;
– загружать запакованные zip-файлы с задачами и выгружать их;
– добавлять в систему языки программирования, указывать свои командные строки компиляции;
– распределять проверку решений на несколько серверных компьютеров.
На данный момент в Contester заложены правила ACM-соревнований. Работа с системой, чтение текстов задач и отправка решений происходит через web-браузер.
Выводы по главе
Таким образом, в качестве основы для разрабатываемой системы выбрана система Ejudge, так как она имеет свободное распространение по лицензии GPL и, в отличие от системы Contester, обладает большим набором необходимых функций:
– имеется возможность экспорта истории посылок в формате XML, что пригодится во время разработки модуля подведения итогов;
– защищенное исполнение программ;
– поддержка виртуальных турниров.
Помимо установки и настройки Ejudge необходимо разработать модуль подведения итогов соревнований по программированию.
2 Проектирование системы для проведения соревнований по программированию с модулем подведения итогов
2.1 Общая архитектура системы Ejudge
Система Ejudge состоит из нескольких компонент, отвечающих за разные аспекты работы [16]:
– управляющие компоненты;
– обработчики запросов, представляющие из себя CGI-программы;
– вспомогательные программы;
– различные дополнительные модули.
CGI-программа – это обычная программа, которая разработана специально для интернета [17]. CGI-программа выполняется на web-сервере в ответ на запрос, сделанный браузером. Сервер в этом случае является как бы посредником между браузером и CGI-программой – он передаёт программе запрос браузера и возвращает обратно информацию, выданную программой. Например, программа может получить от браузера название некоторого товара, посмотреть в таблице цену этого товара и вернуть полученную цену пользователю (браузеру). Или программа может принять от пользователя некоторый текст комментария и переслать его в виде почтового сообщения создателю web-узла. Для написания такой программы можно использовать почти любой язык программирования – CGI определяет только стандарт интерфейса между web-сервером и программой.
2.1.1 Управляющие компоненты
Управляющие компоненты отвечают за доступ к основной базе данных пользователей, мониторинг активных турниров, выполнение низкоприоритетных вспомогательных задач и компиляцию решений участников.
Данные компоненты системы запускаются в режиме «демона» на всё время работы системы, начиная от создания турнира, регистрации пользователей, проведения турнира и в процессе предоставления доступа к результатам турниров.
Управляющие компоненты работают в одном экземпляре на все существующие в данный момент в системе турниры. Запуск системы Ejudge заключается в запуске управляющих компонент. К этой группе относятся следующие программы:
– ej-compile;
– ej-contests;
– ej-jobs;
– ej-super-run;
– ej-super-server;
– ej-users.
Программа ej-compile выполняет запросы на компиляцию решений, поступающих на проверку со всех турниров. Программа взаимодействует с серверами турниров с помощью разделяемых каталогов.
Программа ej-jobs выполняет низкоприоритеные запросы со стороны серверов турнира. К таковым относятся запросы на рассылку e-mail сообщений, воспроизведение звуковых записей и т. д. Программа взаимодействует с другими программами с помощью общих каталогов.
Программа ej-super-server выполняет мониторинг активных турниров, запуская при необходимости программы обслуживания турнира. Кроме того, она выполняет запросы на создание и изменение настроек турниров. Программа взаимодействует со своими клиентами с помощью UNIX-сокетов, а также отслеживает запросы, поступающие в адрес программ обслуживания турниров.
Программа ej-users выполняет функции сервера базы пользователей, предоставляя возможности регистрации на турнир, просмотра участников турнира, администрирования участников турнира, а также выполняет аутентификацию участников турнира и привилегированных пользователей. Программа взаимодействует со своими клиентами с помощью UNIX-сокетов.
2.1.2 Обработчики запросов
CGI-программы обрабатывают запросы пользователей и администраторов системы и предоставляющие интерфейс к программам первой и второй групп. Они запускаются web-сервером при поступлении запроса от клиента. Как правило, данные программы выполняют предварительный анализ запроса и передают его на генерацию HTML-страниц соответствующим программам серверной части ej-users, ej-super-server, ej-contests. К описываемой группе относятся следующие программы:
– judge;
– master;
– new-client;
– new-judge;
– new-master;
– new-register;
– register;
– serve-control;
– users;
– team.
CGI-программа register обрабатывает запросы на регистрацию новых пользователей в системе, изменение данных пользователей, регистрацию пользователей на турниры.
Аутентификация пользователей выполняется с помощью запроса к программе userlist-server, а основные запросы пользователей перенаправляются на обработку в программу serve.
CGI-программа judge предоставляет привилегированный (судейский) интерфейс для проведения турнира. Только пользователи, у которых установлена привилегия JUDGE_LOGIN для данного турнира могут использовать программу judge. Она позволяет просматривать исходный код и результаты тестирования всех участников, вопросы от участников, таблицу текущих результатов турнира, когда она заморожена для непривилегированных участников, а также отвечать на вопросы. Для каждого из этих действий необходима отдельная привилегия, что позволяет настраивать возможности каждого пользователя.
CGI-программа master предоставляет привилегированный административный интерфейс для управления турниром. Только пользователи, у которых установлена привилегия MASTER_LOGIN для данного турнира могут использовать программу master. Помимо всех возможностей, предоставляемых программой judge, программа master позволяет начинать и заканчивать турнир, изменять его продолжительность, отправлять поступившие решения на перепроверку и т.д.
CGI-программа serve-control предоставляет административный интерфейс для управления всеми турнирами и создания и изменения настроек турниров. Только пользователи, у которых установлена глобальная привилегия MASTER_LOGIN или JUDGE_LOGIN могут использовать программу serve-control.
CGI-программа users обрабатывает запросы на просмотр списка зарегистрированных пользователей турнира и детальной информации по зарегистрированным пользователям.
CGI-программа team обрабатывает запросы участников во время турнира и позволяет отправлять решения на тестирование, просматривать результаты тестирования, отправлять вопросы жюри и просматривать текст ответов на вопросы.
2.1.3 Вспомогательные программы
Вспомогательные программы предоставляют доступ к функциям системы из командной строки и выполняют другие функции. Данный вид программ запускается из командной строки и предназначен для использования администратором системы Ejudge:
– ejudge-config;
– ejudge-configure-compilers;
– ejudge-contests-cmd;
– ejudge-control;
– ejudge-edit-users;
– ejudge-execute;
– ejudge-jobs-cmd;
– ejudge-setup;
– ejudge-upgrade-web.
Программа ejudge-config печатает некоторые настройки, сделанные при компиляции системы Ejudge. В частности, программа позволяет получить пути к заголовочным и библиотечным файлам, необходимые для компиляции проверяющих программ с библиотекой libchecker.
Программа ejudge-edit-users предоставляет пользовательский консольный интерфейс для просмотра и редактирования базы пользователей системы Ejudge. Для выполнения запросов используется программа ej-users.
Программа ejudge-jobs-cmd предоставляет интерфейс командной строки для формирования запросов к серверу низкоприоритетных задач ej-jobs.
Программа ejudge-setup предоставляет пользовательский консольный интерфейс для начального конфигурирования Ejudge после компиляции и для создания необходимых конфигурационных файлов, рабочих каталогов и пробного турнира.
Программа ejudge-contests-cmd позволяет формировать запросы к серверу турниров из командной строки.
Программа ejudge-execute позволяет запустить на выполнение решения с установкой ограничений на время выполнения, виртуальное адресное пространство и перенаправлением стандартных потоков.
Программа ej-polygon предназначена для взаимодействия с системой Polygon. Она используется для загрузки пакетов из системы Polygon для последних ревизий задач и их импорта в систему ejudge.
Выводы по разделу
Таким образом, система Ejudge состоит из ряда компонентов, каждый из которых выполняет свои функции.
Управляющие компоненты работают все время после запуска системы и отвечают за доступ к основной базе данных пользователей, мониторинг активных турниров и т.д.
Обработчики запросов от пользователей представляют CGI-программы, которые принимают на вход запрос, а возвращают HTML код страницы для отображения в браузере пользователя. Данные компоненты отвечают за любое взаимодействие пользователя с системой.
Вспомогательные компоненты предоставляют доступ к функциям системы из командной строки и предназначены для использования администратором системы Ejudge.
2.2 Описание технологий для создания web-сайтов