Hello, Codeforces!
Я и cannor147, будучи студентами Университета ИТМО, в июне присоединились к разработке Codeforces. С июня по октябрь мы преимущественно занимались развитием платформы Polygon. В этом посте нам бы хотелось представить вам список того, что мы сделали за это время. В этот список не включены мелкие баг-фиксы или какие-то незаметные пользователям улучшения.
Пин-коды для контестов и задач
Иногда в Polygon разрабатываются особо важные контесты и задачи. В таком случае председатель жюри может быть обеспокоен возможностью утечки, например из-за слабого пароля другого члена жюри. Пин-код — дополнительный фактор подтверждения доступа к задаче или контесту, его может установить или изменить только владелец задачи или контеста. Предполагается, что пин-код будет передан каким-то отдельным надежным каналом связи.
Теперь в интерфейсе контеста для владельцев появилась ссылка Create Pin:
Если на контест или на задачу установлен пин-код, то для доступа к ним необходимо его ввести.
Управлять пин-кодом для задач можно из вкладки Manage Access в интерфейсе задачи. Владелец задачи может создать пин-код задачи или установить тот, который назначен контесту этой задачи.
В Polygon API для доступа к задаче или к контесту, которые находятся под пином, необходимо передавать дополнительный параметр pin в запросе.
Группы контестов
Polygon растёт, вместе с ним растёт и количество контестов, создаваемых в нём. Иногда серия контестов логически объединена в одну группу (например, это могут быть контесты с одних сборов). Теперь в Polygon можно объединять несколько контестов в одну группу для более быстрого управления правами на них.
Поиск по контестам
Добавлен поиск по контестам со страницы Search.
Задача в нескольких контестах
Иногда (особенно для учебных задач) случается так, что одна задача принадлежит большому числу контестов. Попытка закоммитить изменения в такую задачу приводила к тому, что время изменения всех её контестов обновлялось. Это было не всегда удобно, так как огромная пачка (иногда устаревших) контестов всплывала вверх. Теперь вы можете выбрать, для каких контестов обновлять modification time при коммите в задачу, состоящую в нескольких контестах. Таким образом, старые контесты не будут всплывать на странице контестов.
Contest Statement Builder
Иногда в процессе разработки контеста возникает потребность посмотреть условие уже готовых задач в едином pdf-файле. Если в задачах смешаны языки или некоторые из задач еще не готовы, то это было затруднительно сделать. Теперь вы можете это сделать с помощью Advanced сборки условий из интерфейса контеста.
Прикрепление файлов к контестам
На странице Properties/Files контестов появился раздел Attachments. Здесь можно сохранить произвольные файлы (Например, разбор контеста, визуализатор разморозки или мемы).
Управление получением email по контесту
По нажатию на иконку карандаша можно включить или отключить получение уведомлений об изменениях в текущем контесте.
Обновления Issue
Были сделаны множественные улучшения поддержки issues, добавлена возможность просмотра всех issue контеста по клику на Issues из интерфейса контеста.
В заголовке issue отображается больше информации.
При изменении статуса, типа issue и assigned user теперь генерируется автокомментарий (например, [changed status to CLOSED]). Больше нет необходимости при закрытии множественных issues писать утомительные Fixed на каждый из них.
Просмотр моих issue
Так же появилась возможность просмотреть все issue, относящиеся к текущему пользователю. Для этого достаточно кликнуть на My Issues вверху любой страницы Polygon.
К тому же, появилась возможность просмотреть мои issue во всех доступных контестах и задачах.
Advanced properties для ресурсов в задачах
Была улучшена поддержка расширенных свойств ресурсов (грейдеров). Теперь вы можете подкладывать во время исполнения чекера и интерактора файлы в их каталог исполнения.
Заметки для решений
Можно прикрепить дополнительную информацию по решению по клику на Note в списке решений.
Ещё меньше ошибок при подготовке задач!
Теперь Polygon проверяет, что в валидаторе в read*s (readInts, readDoubles, ...) методы testlib передаются имена переменных, и если это не так, то вам будет показан warning.
Улучшены предупреждения для условий. Например, если в условии отсутствуют примеры или название задачи, то Polygon вас об этом предупредит. Так же стало сложнее запутиться в выборе кавычек в условиях (помните, что в русском и английском языках традиционно используются различные типы кавычек).
Улучшения Polygon API
Добавлены методы:
- problem.statementResources — просмотр списка ресурсов условий (например, картинки, используемые в условии задачи)
- problem.saveStatementResource — добавление или замена ресурса условий.
Добавлена проверка наличия корректного пин-кода в параметре pin для доступа к задачам и контестам с установленным пином. Этот параметр должен добавляться ко всем методам и запросам скачивания.
Полное описание Polygon API можно найти по ссылке.
Другие обновления
- Возможность добавить тест в условие задачи по клику на ссылку Example прямо из списка тестов без его редактирования.
- Появилась возможность при создании условия/разбора задачи на новом языке скопировать их из уже существующих.
- Появилась возможность копирования тестов чекера и валидатора с последующим их изменением на соответствующих страницах.
- Добавлено подтверждение email при регистрации в Polygon.
- Теперь во вкладке Review можно посмотреть также код интерактора, если задача интерактивная.
- Появилась возможность запуска всех стресс-тестов по нажатию на Run All Stresses.
Большое спасибо, особенно за управление получением email и contest statement builder. Мне ещё никогда не удавалось получить в один pdf все условия)
I think you should make a video to reviews and upload on youtube.
Polygon is the best thing ever.
That sounds good.
I don't know where to say this. So, I am writing this here. MikeMirzayanov the close button on the popup window for viewing submissions in the status seems to be broken. I tried it with a different browswer as well but it's the same problem there too.
same here, but i have a hyperlink that says "close" next to the broken image as well.
I got this "close" thing when trying cf in chrome.
Sounds great! One more thing left for Polygon to be perfect is to support resolving conflicts. (maybe supporting git is a solution?)
You can try https://github.com/kunyavskiy/polygon-cli It can handle most of simple conflict cases.
Polygon orz
yahia I think you will like this
Группы контестов не поддерживают функциональность "расшарить конкретному человеку все контесты из списка, так чтобы у него был WRITE-доступ на все задачи". Сейчас тот, кого сделали contest developer-ом через группу контестов, не может зайти ни в одну задачу в этих контестах. Сделаете?
Вау, Ерофей, ты что ли?)
updated
Насчёт использования codeforces для местных олимпиад. В рекомендациях по составлению задач муниципального этапа этого года рекомендуется для 7-8 классов включать задачи не только по программированию, но и с кратким ответом (несколько чисел, одна или несколько строк текста). А нельзя ли как-нибудь добавить в перечень языков псевдоязык "Текстовый ответ" (или что-то в этом роде)? А то приходится муниципальный этап проводить или на Яндекс.Контест (там такая возможность есть), или свои сервера настраивать.
How can I delete script tests? I try to search but I only get an answer: "You can't delete using web-interface, you must use script instead". Can someone explain me how to do that?
You have a script in the bottom of the tests page. To delete a generated test, you should remove appropriate line in your script.