Введение
PC² — это система управления соревнованиями по программированию, разработанная в Калифорнийском государственном университете в Сакраменто для поддержки деятельности ACM в области компьютерного программирования, и в частности, Международного студенческого конкурса программирования ACM (ACM ICPC). Она использовалась для проведения Всемирных финалов ACM ICPC в 1990 году и с 1994 по 2009 год. В 2010 году Всемирные финалы ACM ICPC перешли на использование Kattis, автоматизированной системы обучения, разработанной в KTH; однако PC² продолжает использоваться для проведения большого числа региональных соревнований ACM ICPC по всему миру.
Конкурсы компьютерного программирования и PC2
Конкурс по программированию имеет правила и методы оценки представленных решений. Далее представлен общий обзор конкурса с использованием PC2. Конкурс по программированию – это соревнование, в котором команды представляют судьям решения (компьютерных программ) для заданных задач. Командам предлагается набор задач, которые необходимо решить за ограниченное время (например, от 8 до 13 задач за 5 часов). Судьи выносят вердикт "принято" или "не принято" по представленным решениям. Рейтинг команд формируется на основе решенных задач, времени их отправки и количества попыток, предпринятых для решения каждой задачи. Судьи используют "черное ящик" тестирование, при котором команды не имеют доступа к тестовым данным. PC2 управляет соревнованиями по программированию как на одной площадке, так и на нескольких. Он предоставляет командам возможность входить в систему, тестировать решения, отправлять их на проверку и просматривать вердикты судей. PC2 предоставляет судьям возможность запрашивать решения команд (с сервера PC2), запускать/выполнять их и выносить вердикт. Модуль таблицы результатов PC2 вычисляет и генерирует рейтинги и статистические веб-страницы (HTML/XML). PC2 легко устанавливается на Linux/Linux-подобные системы и MS Windows и не требует прав суперпользователя (root) для установки или использования, что делает его привлекательным выбором для пользователей, не имеющих таких прав.
are given a set of problems to solve in a limited amount of time (for example 8 13 problems in 5 hours). The judges then give pass/fail judgements to the submitted solutions. Team rankings are computed based on the solutions, when the solutions were submitted and how many attempts were made to solve the problem. The judges test in a Black box testing where the teams do not have access to the judges' test data. PC2 manages single or multi site programming contests. It provides a team a way to log in, test solutions, submit solutions and view judgements from judges. PC2 provides judges a way to request team solutions (from a PC2 server) run/execute the solution and enter a judgment. The PC2 scoreboard module computes and creates standings and statistics web pages (HTML/XML). PC2 is easy to install on Linux/Linux like systems and MS Windows and does not require super user (root) access to install it or use it: this makes it an attractive choice for users who may not have super user access.
Использование и пользовательский опыт
PC2 использовался на финале Международного студенческого конкурса программирования ACM с 1994 по 2009 год. Он также применялся в сотнях региональных конкурсов ICPC по всему миру. Система непрерывно используется на региональном конкурсе ACM Pacific Northwest с 1989 года, а также на многих других региональных конкурсах ICPC, включая конкурсы в Африке и Аравии, многочисленные конкурсы в Азии и несколько конкурсов в США. На сегодняшний день это наиболее широко используемая система управления соревнованиями для региональных конкурсов ICPC. PC2 используется на Африканском и Арабском конкурсе студенческого программирования (ACPC) каждый год с момента его основания, более 25 лет назад. ACPC включает в себя ряд региональных конкурсов, в том числе отдельные конкурсы студенческого программирования в Саудовской Аравии, Нигерии, Омане, Южной Африке, Того, Марокко, Кувейте, Алжире, Иордании, Палестине, Катаре, Бенине, Египте, Ливане, Эфиопии, Тунисе, Бахрейне, Судане, Сирии и Анголе. Каждый из этих региональных/национальных конкурсов использует PC2; многие региональные конкурсы формируются из субрегиональных конкурсов, которые также используют PC2. Победители каждого регионального конкурса выходят в чемпионат ACPC, где также используется PC2. ACPC также спонсирует различные дополнительные конкурсы, включая "ACPC Kickoff", "ACPC for Girls", "ACPC for Teens" и "ACPC for Seniors"; все эти конкурсы также используют PC2. Региональный конкурс по программированию ACM (ранее ACM) в районе Большого Нью-Йорка в Северной Америке использует PC2 уже более 20 лет. В Большом Нью-Йорке PC2 использовался различными способами на протяжении многих лет, включая односайтовые, многосайтовые и веб-клиентские решения для команд. Судьи в регионе Большого Нью-Йорка предпочитают PC2 другим системам управления соревнованиями, поскольку она обеспечивает им максимальную гибкость при оценке представленных работ участников. Работы могут оцениваться вручную или с использованием автоматической компьютерной оценки. Зачастую судьи предпочитают оценивать некоторые задачи вручную, и PC2 предоставляет такую возможность. Кроме того, команда разработчиков PC2 оперативно отвечала на вопросы и помогала в решении возникающих проблем. PC2 используется на конкурсе ACM Mid Atlantic Programming Contest уже несколько лет. В предыдущие годы системные администраторы имели ограниченный успех с программой из-за ее распределенной природы. На каждом месте проведения конкурса работал сервер PC2, который должен был инициировать и принимать Java RMI. Использование центрального центра обработки данных осенью 2005 года не выявило никаких проблем. В 2014 году PC2 вышел из строя через 3 часа 45 минут после начала конкурса, не позволяя командам получать подтверждения о своих отправках. Судьи не смогли восстановить отправки, и конкурс завершился без объявления победителя. Потребовалась неделя, чтобы попытаться восстановить эти отправки. Аналогичный сбой произошел в 2016 году. Системные администраторы решили установить веб-плагин для PC2, который затем не выдержал нагрузки. Начало соревнований было задержано на 90 минут. Команды не смогли отправить свои решения, и директор конкурса в спешке искал обходной путь, позволяющий командам сохранять решения с указанием времени для последующего рассмотрения. В 2013 году операторы системы не ввели правильные имена команд, оставив команды без информации о турнирной таблице (таблице результатов). Операторы системы не смогли исправить имена команд во время конкурса. Из-за этих инцидентов организаторы региона рассматривают возможность перехода на альтернативную систему, такую как Kattis, которая является официальной системой, используемой ACM для мирового финала ICPC. С введением версии 9 (версия на основе сокетов) большинство проблем с брандмауэрами, связанных с версией 8, были решены.
Краткая история пересмотра
ВерсияГодОсновные функцииЯзык реализации1.01989Первый релиз MS DOS, связь через дискетыTurbo Pascal2.01990Многосайтовый режим через KermitTurbo Pascal4.2B1994Поддержка LANTurbo Pascal6.11996Windows версияVisual Basic7.01998Windows, FreeBSD или Linux; связь через Java RMIIBM VisualAge для Java8.02004Полная переработка кодаEclipse Java9.02008Администрирование для одного сайта, улучшенная безопасность и контроль конфигурации, связь через сокетыJava9.12009Автоматическая оценка, фильтрация запусков/уточнений, внешний API, импорт данных ICPC, нативный LAFJava9.22012Сервер без графического интерфейса, улучшения безопасности, администрирование серверов, новые опции конфигурации, генерация отчетовJava9.32015Конфигурация соревнований через YAML, генератор событий CLICS, переключение профилей соревнований, веб-интерфейс, поддержка нескольких тестовых случаев и больших файлов данных, судья без графического интерфейса, отправка запусков через командную строку, встроенный веб-сервер с поддержкой JSON-табло CLICS, новые опции конфигурацииJava9.42016Улучшенный импорт конфигурации соревнований; поддержка автоматического запуска соревнований; расширенные REST Web ServicesJava9.52017Поддержка валидаторов ввода и вывода CLICS; дополнительные REST Web Services; расширенная функциональность API; табло без графического интерфейсаJava9.62019Поддержка "прокси" для серверов за файрволом; поддержка групп задач соревнований; улучшения конвейера оценки; расширенная поддержка взаимодействия с ICPCTools; улучшенная поддержка конфигурации соревнований с использованием YAML-файлов; поддержка вывода событий в формате JSONJava9.72021PC2 теперь с открытым исходным кодом на GitHub, с полной документацией на веб-странице PC2 и в Wiki PC2; поддержка пользовательской настройки графического интерфейса; совершенно новый веб-интерфейс для команды, устраняющий необходимость использования существующего веб-сервера; автоматическая обработка операций заморозки табло; поддержка так называемого "теневого режима"; дальнейшие улучшения конвейера оценки и поддержки конфигурации YAML; улучшенная поддержка спецификаций ICPC "CLICS" для API соревнованийJava9.82022Поддержка форматирования названий команд на табло; значительные улучшения поддержки "теневого режима"; улучшения веб-интерфейса для команды; возможность объединения образцов и секретных файлов данных; исправления и улучшения веб-сервисов Event Feeder для дополнительной совместимости с CLICS; улучшения производительности и макетов графического интерфейса; поддержка дополнительных средств редактирования для администратора. Java
Другие применения
PC² – это аббревиатура от Paderborn Center for Parallel Computing, института Падерборнского университета, Германия (http://www.upb.de/pc2).