popoffka's blog

By popoffka, 12 years ago, In Russian

Всем привет!

Обнаружив, что CMS (тестирующая система, которая будет использоваться на IOI'12) имеет открытый исходный код, я решил, что хорошей идеей будет попробовать поставить её себе, чтобы потренироваться на ней ещё до Practice session и возможно даже самому написать для неё патчи и отправить их разработчикам.

Тем, кому интересно, что из этого получилось и/или хочется самому пощупать систему — добро пожаловать под кат. Подробно описывать установку системы я не буду. Замечу лишь, что разработчики утверждают, что работа под x86_64 нестабильна, а поддержка дистрибутивов, отличных от Ubuntu 12.04 не обещается. Поэтому мне пришлось устанавливать CMS в виртуальную машину. В остальном же установка весьма проста и хорошо документирована в файле README.md в git-репозитории проекта.

Установив систему, я обнаружил забавнейшую вещь — администраторский веб-интерфейс (пока?) не позволяет создавать контесты и задачи, поэтому чтобы запустить систему, задачи должны быть уже импортированы в базу данных. На данный момент существует два импорт-скрипта: cmsImportContest, который умеет импортировать контесты, экспортированные при помощи cmsExportContest и cmsYamlImporter, который умеет импортировать контесты в некоем «Italian IOI format». С первым я разбираться не стал, а вот второй звучал интересно. Я честно и упорно пытался найти архивы прошедших контестов в таком формате, но то ли мои отсутствующие знания итальянского меня подвели, то ли никто их в таком формате не публикует вовсе. Остался один выход — медленно и упорно читать код конвертера. После кучи проб и ошибок, я таки смог составить контест в формате, который без проблем читал cmsYamlImporter. Желающие могут скачать его здесь (задачи взяты из COCI).

К сожалению, я пока не пробовал запиливать IOI'11-style задачи (те, в которых необходимо имплементировать процедуру, а не писать standalone программу). Конвертер (кажется) такого сделать не позволяет, а у меня ещё куча дел на сегодня, так что оставлю это на попозже. А вот release tokens работают из коробки.

Попользовавшись системой какое-то время, вот мои ощущения:

  • со стороны контестанта
    • в целом система очень удобная, понятная
    • тайм- и мемори-лимиты система показывает, а вот откуда читать и куда писать — нет. не очень клёво (особенно учитывая, что импортер по-умолчанию предлагает читать из input.txt и писать в output.txt, а не stdin/stdout)
    • система обещала уведомить меня, когда администратор ответит на клар, но, почему-то, не уведомила
    • немного печалит отсутствие того, что было в RunC — .sh-скрипта и плагина для gedit, которые позволяли быстро сабмитить решения
  • со стороны администратора
    • странный способ создания контеста — это неклёво
    • а вот админка хороша и весьма функциональна
    • архитектура очень клёвая — в теории может быть сколько организаторам угодно гибкой, любая часть (worker, web server, ranking server и т.д.) может в любой момент быть заменена другой без потери данных, лишь бы БД работала
    • установка очень проста, особенно по сравнению с ejudge и domjudge

Ну и обещанное публичное демо, которое должно бы компенсировать отсутствие скриншотов, которые мне было лень делать: http://c.popoffka.ru/. Для пользователей CodeForces я завёл три аккаунта: CodeForces1, CodeForces2, CodeForces3, все с паролем cf. Я не знаю, как система отреагирует на логины в один аккаунт с кучи IP, так что рапортуйте здесь, если она начнёт вас посылать :) Ну и вообще, система работает внутри виртуалки на моём домашнем компьютере, так что не насилуйте её особо.

На этом мой небольшой обзор подошёл к концу. Надеюсь, он будет полезен участникам IOI'12 (или вообще хоть кому-нибудь). Можете задавать в комментариях свои вопросы по CMS, постараюсь помочь найти на них ответ.

  • Vote: I like it
  • +97
  • Vote: I do not like it