Добрый день.
Соскучились по чему-то новенькому? У меня есть чем вас порадовать!
Сам я регулярно провожу какие-то мероприятия — олимпиады, онсайты, контрольные и самостоятельные работы для студентов, в конце концов. С одной стороны, Codeforces уже предлагает уникальный функционал — группы, интеграцию с Полигоном, возможность выбрать задачи из архива и прочее. Но этого мало!
Домены для групп
Вот вам пример такой группы. Она открыта для всех — заходите и смотрите: http://example.contest.codeforces.com
Домен группы
Теперь при создании/редактировании группы можно указать её (под)домен (от 3 до 20 букв-цифр, начинается с буквы). При указании домена группа будет доступна по ссылке вида http://yourgroupdomain.contest.codeforces.com. По ссылке такого вида верно следующее:
- Ничего лишнего отображаться не будет — отображаемый сайт содержит только соревнования/блоги вашей группы и ничего другого.
- Всё, что нужно для отображения — это доступ по HTTP до
77.234.215.194
. Если вы проводите официальный контест, важную тренировку или контрольную — смело блокируйте весь остальной интернет, кроме этого IP-адреса. - Пока такие группы могут содержать только приватные соревнования и тренировки. Например, вы можете сделать свой мэшап и настроить его так, как нужно именно вам. Возможно, в будущем мы что-то придумаем с этим ограничением, а пока — так.
Разрешенные подсети для домена
Чтобы быть уверенным, что лишние люди не перейдут по вашей ссылке вида http://yourgroupdomain.contest.codeforces.com, можно ограничить доступ к ней по IP. Указывайте точные IP-адреса или подсети. Например, 188.93.56.35;212.193.32.0/19
.
Язык интерфейса для домена
Вероятно, при проведении мероприятия в интерфейсе участника достаточно только английского (или только русского) интерфейса. Используя эту настройку, вы можете выбрать нужное поведение.
Html заголовка
Вы можете поменять хедер сайта по адресу http://yourgroupdomain.contest.codeforces.com, чтобы там был не привычный, дорогой сердцу логотип Codeforces, а логотип или название вашего мероприятия. Например, проводя межвузовскую олимпиаду в Саратове, я указывал <h3>Межвузовская олимпиада по программированию 2017 (Саратов)</h3>
.
Пользователи домена (в сайдбаре)
С большой вероятностью, если вы проводите олимпиаду или что-то похожее, у участников может и не быть аккаунта на Codeforces, данные об участниках приходят из отдельной регистрации, и вы хотите видеть в интерфейсе нормальные имена в стиле Вася Тапочкин, Берляндский ГУ, 3 курс
, а не хэндл участника.
Вы можете добавить синтетических пользователей именно для вашей группы с доменом (используя эти аккаунты, зайти в группу можно только через домен). Для этого используйте специальную настройку "Пользователи домена". Каждая строка соответствует одному пользователю и должна быть записана в формате id соревнований (через запятую) | хэндл | пароль | имя
. Вот пример этой настройки для домена example.contest.codeforces.com:
213380 | u01 | 371111 | Petr Korotkevich
213380 | u02 | 627492 | Gennady Soejima
213380 | u03 | 491591 | Makoto Knuth
213380 | u04 | 581711 | Donald Cormen
213380 | u05 | 057259 | Thomas Mitrichev
Да, вы можете почувствовать себя Петром Короткевичем, зайдя на http://example.contest.codeforces.com, используя логин u01 и пароль 371111.
О настройках приватности
У вас есть гибкие возможности настроить всё ровно так, как нужно именно вам. Например, чтобы максимально ограничить доступ в группу (только по домену, лишних пользователей не пускать), установите видимость группе закрытая
, а политику регистрации её участников по приглашению
. В таком случае зайти по доменному адресу смогут лишь пользователи домена (смотрите пункт выше) и те, кого вы пригласили явным образом в группу.
Для приватных контестов можно установить дополнительные настройки:
- Разрешить дорешивание — можно ли решать задачи после официального окончания в неофициальном режиме дорешивания
- Разрешить виртуальное участие — можно ли после окончания официального окончания (или когда угодно, если нет времени старта) участвовать виртуально
- Разрешить участие вне конкурса — зарезервировано под участие вне конкурса, пока вне конкурса можно регистрировать только пользователей домена (для нужных пользователей нужно добавить символ ‘o’ после id соревнования, например “213380o | u01 | 371111 | Petr Korotkevich”)
- Разрешить саморегистрацию — может ли участник группы зарегистрироваться на контест сам (если нет — регистрируйте его)
- Разрешить незарегистрированным пользователям наблюдать за ходом соревнования — может ли участник группы, не зарегистрированный на контест, войти в контест и видеть задачи, статус, результаты и прочие подробности
- Включить общий статус — могут ли участники видеть информацию о попытках других участников, или же им доступна информация исключительно о собственных попытках
- Длительность заморозки и время разморозки. Будьте аккуратны при переносе контеста — время разморозки надо изменять самостоятельно.
- Политика отображения тестов. Возможные варианты: “не показывать вообще”, “показывать непройденные тесты собственных решений”, “показывать полностью все тесты”
- Политика отображения чужих попыток. Возможные варианты: “не показывать вообще”, “показывать решившим задачу”, “показывать всем”.