Блог пользователя geranazavr555

Автор geranazavr555, 4 года назад, По-русски

Hello, Codeforces!

Я и cannor147, будучи студентами Университета ИТМО, в июне присоединились к разработке Codeforces. С июня по октябрь мы преимущественно занимались развитием платформы Polygon. В этом посте нам бы хотелось представить вам список того, что мы сделали за это время. В этот список не включены мелкие баг-фиксы или какие-то незаметные пользователям улучшения.

Пин-коды для контестов и задач

Иногда в Polygon разрабатываются особо важные контесты и задачи. В таком случае председатель жюри может быть обеспокоен возможностью утечки, например из-за слабого пароля другого члена жюри. Пин-код — дополнительный фактор подтверждения доступа к задаче или контесту, его может установить или изменить только владелец задачи или контеста. Предполагается, что пин-код будет передан каким-то отдельным надежным каналом связи.

Теперь в интерфейсе контеста для владельцев появилась ссылка Create Pin:

Create Pin в интерфейсе

Форма создания пин-кода

Если на контест или на задачу установлен пин-код, то для доступа к ним необходимо его ввести.

Форма ввода пин-кода

Управлять пин-кодом для задач можно из вкладки Manage Access в интерфейсе задачи. Владелец задачи может создать пин-код задачи или установить тот, который назначен контесту этой задачи.

Управление пин-кодом для задач

В Polygon API для доступа к задаче или к контесту, которые находятся под пином, необходимо передавать дополнительный параметр pin в запросе.

Группы контестов

Polygon растёт, вместе с ним растёт и количество контестов, создаваемых в нём. Иногда серия контестов логически объединена в одну группу (например, это могут быть контесты с одних сборов). Теперь в Polygon можно объединять несколько контестов в одну группу для более быстрого управления правами на них.

Группа контестов

Поиск по контестам

Добавлен поиск по контестам со страницы Search.

Поиск по контестам

Задача в нескольких контестах

Иногда (особенно для учебных задач) случается так, что одна задача принадлежит большому числу контестов. Попытка закоммитить изменения в такую задачу приводила к тому, что время изменения всех её контестов обновлялось. Это было не всегда удобно, так как огромная пачка (иногда устаревших) контестов всплывала вверх. Теперь вы можете выбрать, для каких контестов обновлять modification time при коммите в задачу, состоящую в нескольких контестах. Таким образом, старые контесты не будут всплывать на странице контестов.

Выбор контеста при коммите

Contest Statement Builder

Иногда в процессе разработки контеста возникает потребность посмотреть условие уже готовых задач в едином pdf-файле. Если в задачах смешаны языки или некоторые из задач еще не готовы, то это было затруднительно сделать. Теперь вы можете это сделать с помощью Advanced сборки условий из интерфейса контеста.

Contest Statement Builder

Прикрепление файлов к контестам

На странице Properties/Files контестов появился раздел Attachments. Здесь можно сохранить произвольные файлы (Например, разбор контеста, визуализатор разморозки или мемы).

Файлы в контестах

Управление получением email по контесту

По нажатию на иконку карандаша можно включить или отключить получение уведомлений об изменениях в текущем контесте.

Сайдбар

Всплывающее окно

Обновления Issue

Были сделаны множественные улучшения поддержки issues, добавлена возможность просмотра всех issue контеста по клику на Issues из интерфейса контеста.

В заголовке issue отображается больше информации.

Issue

При изменении статуса, типа issue и assigned user теперь генерируется автокомментарий (например, [changed status to CLOSED]). Больше нет необходимости при закрытии множественных issues писать утомительные Fixed на каждый из них.

Просмотр моих issue

Так же появилась возможность просмотреть все issue, относящиеся к текущему пользователю. Для этого достаточно кликнуть на My Issues вверху любой страницы Polygon.

My Issues

К тому же, появилась возможность просмотреть мои issue во всех доступных контестах и задачах.

Advanced properties для ресурсов в задачах

Была улучшена поддержка расширенных свойств ресурсов (грейдеров). Теперь вы можете подкладывать во время исполнения чекера и интерактора файлы в их каталог исполнения.

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.
  • Проголосовать: нравится
  • +739
  • Проголосовать: не нравится

»
4 года назад, # |
  Проголосовать: нравится +19 Проголосовать: не нравится

Большое спасибо, особенно за управление получением email и contest statement builder. Мне ещё никогда не удавалось получить в один pdf все условия)

»
4 года назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

I think you should make a video to reviews and upload on youtube.

»
4 года назад, # |
  Проголосовать: нравится +50 Проголосовать: не нравится

Polygon is the best thing ever.

»
4 года назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

That sounds good.

»
4 года назад, # |
Rev. 2   Проголосовать: нравится +20 Проголосовать: не нравится

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.

image

»
4 года назад, # |
  Проголосовать: нравится +16 Проголосовать: не нравится

Sounds great! One more thing left for Polygon to be perfect is to support resolving conflicts. (maybe supporting git is a solution?)

»
4 года назад, # |
  Проголосовать: нравится -38 Проголосовать: не нравится

Polygon orz

»
4 года назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

yahia I think you will like this

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Группы контестов не поддерживают функциональность "расшарить конкретному человеку все контесты из списка, так чтобы у него был WRITE-доступ на все задачи". Сейчас тот, кого сделали contest developer-ом через группу контестов, не может зайти ни в одну задачу в этих контестах. Сделаете?

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Вау, Ерофей, ты что ли?)

»
4 года назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

updated

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Насчёт использования codeforces для местных олимпиад. В рекомендациях по составлению задач муниципального этапа этого года рекомендуется для 7-8 классов включать задачи не только по программированию, но и с кратким ответом (несколько чисел, одна или несколько строк текста). А нельзя ли как-нибудь добавить в перечень языков псевдоязык "Текстовый ответ" (или что-то в этом роде)? А то приходится муниципальный этап проводить или на Яндекс.Контест (там такая возможность есть), или свои сервера настраивать.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

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?

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    You have a script in the bottom of the tests page. To delete a generated test, you should remove appropriate line in your script.