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

Автор MaximShipko, 11 лет назад, По-русски

Добрый вечер!

Я рад вам сообщить о ряде улучшений, касающихся подпроекта Codeforces::Тренировки. При подготовке соревнований в данном разделе многие сталкивались со следующей проблемой: для добавления задачи или внесения небольшой правки в существующую тренировку было необходимо распарсить и пересобрать всё соревнование в Wizard'е с нуля. Другим вариантом было ручное редактирование файлов на FTP. Оба этих способа создавали дополнительные необоснованные трудности.

Сейчас в Wizard'е появилась возможность создавать патчи для соревнования. Хотите добавить задачу? Не нужно пересобирать весь контест. Обновить результаты, добавить ресурсы, условия? Нет ничего проще. Достаточно запустить Wizard в режиме редактирования и внести лишь те изменения, которые действительно необходимы. Wizard соберёт пакет contest.zip и пометит его как патч. Закачка пакета в Taskbook происходит обычным образом.

Рассмотрим подробнее, каким образом патч обновляет соревнование.

  • Задача из патча полностью заменяет существующую задачу соревнования с таким же индексом, иначе добавляется как новая задача. Задачи из sandbox'а соревнования, не присутствующие в патче, остаются неизменными. Для добавления задач в соревнование необходимо запустить Wizard, создать и распарсить одну или несколько задач и собрать пакет.

  • Таким же образом заменяются условия и ресурсы соревнования. Условие замещает существующее для этого языка независимо от имени файла, ресурс заменяет существующий при совпадении имён файлов, иначе добавляется новый.

  • Сведения о положении призрачных участников (contest.dat) заменяют существующие, если в новых содержится информация хотя бы об одной посылке. Если посылок нет и задачи патча являются подмножеством уже существующих задач соревнования (в sandbox'е), то contest.dat остаётся неизменным. В противном случае сгенерируется новый contest.dat (без посылок) с объединением множества задач соревнования и патча. Для обновления результатов призрачных участников необходимо распарсить новые результаты в Wizard'е, пропустить все задачи, нажав кнопку Skip problem, и собрать пакет.

Применение патча предполагает, что данные патча и текущее состояние sandbox'а являются консистентными. Для этого и патч, и sandbox подвергаются валидации, аналогичной той, что происходит при обновлении тренировки, но немного упрощённой (при закачке полного пакета соревнования подобной валидации не происходит, архив распаковывается "as is" и проверяется только при выпуске релиза контеста). Лишь в случае успешного завершения обеих валидаций происходит применение патча. В противном случае патч просто удаляется, а в error.log тренировки добавляется запись, из которой вы можете узнать, что же всё-таки пошло не так.

Улучшения коснулись и Taskbook'а, а именно системы валидации: если задача не менялась с момента последнего релиза соревнования, то её валидация производиться не будет. Это значительно ускорит процесс обновления тренировки в случае небольших правок. Если же ни один файл тренировки не менялся, то обновления в принципе не произойдёт, а пользователю будет показано соответствующее сообщение.

В качестве небольшого бонуса мы сделали много улучшений в интерфейсе Wizard'а. В частности, для большинства действий появились горячие клавиши (подробнее во всплывающих подсказках к кнопкам), также были усовершенствованы многие диалоги:

  • Ускорен запуск диалога выбора множества файлов в операционной системе Windows засчёт сокрытия элемента Network. Элемент можно вернуть, нажав специальную кнопку.

  • Добавлена кнопка, позволяющая сохранить contest.dat, не собирая полный пакет.

  • Изменён механизм запуска диалогов выбора и сохранения файлов. Это почти не повлияло на внешний вид, однако позволило добавить ряд усовершенствований, таких, как установка имени файла по-умолчанию и сохранение текущего каталога при последующих использованиях диалога.

  • В случае неудачи сохранения пакета соревнования пользователю будет предложено попробовать сделать это ещё раз. Не нужно будет заново валидировать соревнование и собирать пакет.

  • Проголосовать: нравится
  • +183
  • Проголосовать: не нравится

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

Картинка для привлечения внимания хороша.

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

EPIC BOOBS :D

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

i don't like this update :(

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

For codeforces everything is EXTREME!

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

(.) (.)

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

so beautiful updates :) thanks and Happy New Year to all CodeForces Members!

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

what a beautiful girl you are:))))))))))

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

"EPIC BOOBS :D" +97

"(.) (.)" -11

lol. What is this difference!?

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

very bad, everytime i am trying to read the text, the photo on the right is disturbing me and i am not able to read the text. :(

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

oh God.. the thumbnail on chrome for codeforces page just changed to this one... forced to remove it.. ;-)

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

beautiful "Dhaka University Debiting Society" ... :-p

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

boobs and only boobs

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

А можно ли спросить, планируется ли поддержка контестов формата IOI — хотя бы поддержка частичных очков? На мой взгляд, количество контестов в тренировках могло бы сильно увеличиться, а так заливать IOI-шного стиля контест на WA/AC как-то не очень качественно выйдет...

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

    Пока такое не планируется, но мы рассмотрим ваше предложение. Выглядит не слишком сложным.

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

      В тренировках можно смотреть чужие решения, если ты решил эту задачу. Если вы сделаете IOI систему как будет на нем? Можно будет смотреть если ты решил на полный бал или можно будет смотреть если у тебя баллов больше или одинаково с ним.

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

        наверное тогда правильней показывать лишь если множество тестов, пройденное просматриваемым решением является подмножеством пройденных тестов твоего решения (и у тебя пройден хотя бы один тест)

        хотя тогда можно будет смотреть и те посылки, где WA#1/AC лишь, например, с точностью до ошибки формата вывода или какой-то другой мелочи

        нет уж, лучше показывать чужие решения только тем, кто решил задачу целиком

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

Hey guys...

It's better to control our selves. :D

This is a programming web-site; not a... :|

;)

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

The comment is hidden because of too negative feedback, click here to view it

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

what will be the next codeforces round ? I hope it will be after September 25 because after then I will have the holiday , but now it is very for me to take the following tests.I don't hope to miss the competition.What's more,you wife is very beautiful!Does Russia has many beautiful ladies like your wife.

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

Комментарий скрыт по причине большого числа негативных отзывов о нем, нажмите здесь для его просмотра

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

Почему часто ограничения в системе не совпадают с ограничениями в условиях? И иногда выдает странные вердикты? А ограничения мне угадывать?

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

    Потому что условия обычно тяжело исправлять (PDF и проч). Какие вердикты? Дайте точные ссылки на попытки. Ограничения указаны на странице с задачами.

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

      2730686, хотя ТЛ на задачу В стоит 6с.

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

        Да, было исправление в тренировках — иногда TL, поставленный в веб-интерфейсе, не протягивался в тестирующий сервер. Сейчас такое может быть только со старыми попытками. Лечится либо перетестированием, либо переотсылкой.

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

      Задача F тут 300 указано, магическим образом я решил увеличить размер массива до 3000 и прошло. Н и странно как-то в задача D вроде написано 64 мб по памяти, а массив short — ов который ест на сервере 9 мб не проходит по памяти. Ну а про непонятные вердикты лучше потом напишу, с примерами кода. Скажу что это былов в тренировке спбгу по дп(gym100135) задача Е.

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

        В задаче 100113F - The Young Networker в тестах значения до 300. У вас просто баги (см. sort(k, k + n);).

        100070D - K-ый минимум имеет ML=9мб, как и написано на главной контеста. Специально для вас есть надпись под ссылкой на файл с условиями "Файл с условиями может содержать неактуальные ограничения по времени и памяти. Перейдите на страницу "Задачи" для просмотра актуальных ограничений."

        Вектор может иметь размер capacity до двух раз больше (а на самом деле все еще хитрее), поэтому 4000000 short-ов не помещается в 9мб. Предполагаемое авторами решение легко укладывается.

        • »
          »
          »
          »
          »
          11 лет назад, # ^ |
          Rev. 5   Проголосовать: нравится -7 Проголосовать: не нравится

          а причем тут сорт?(Осознал) Если я только размерность массива поменял а написаная строка делает одно и тоже. Ну а про 4 млн. шортов я предполагал что поместяться в 64, про 9 я узнал после тестирования). Ну а про решение авторов, я делал вывод из прочитаных ограничений. Ведь я смотрел на в pdf. Впрочем, будет наука. Спасибо за добавленые контесты, ждал)

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

      http://codeforces.com/gym/100038 — 5 первых моих отправок по задаче В получили отказ тестирования. При этом в промежутках между этими отказами другая задача прошла без проблем + эта задача через некоторое время тоже прошла без проблем (отправлял все время один и тот же код).

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

        Спасибо. Я локализовал проблему. Подлый FPC падал иногда с сообщением Unable to find fpc.cfg, хотя он был на месте. Видимо, такое происходило при конкурентной компиляции. Теперь он при компиляции совсем не используется.

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

hi,it seems the ftp is not working now,i want to check some data but just can not login in ftp.

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

I get this error when I try to run contest wizard:

Exception in thread "main" java.lang.ClassNotFoundException: Can't find com.codeforces.contestwizard.Runner.
	at com.codeforces.contestwizard.RemoteClassLoader.findClass(RemoteClassLoader.java:153)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	at com.codeforces.contestwizard.Main.main(Main.java:12)

My Java Version:

java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

And I use OSX 10.14.2.

Can anyone help? Or who should I refer?

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

    Why do you need wizard? Just upload your contest to Polygon (if it's not already there) and do the FTP + contest.xml thing

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

      I was trying to merge OpenCup scoreboard.

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

        Does the wizard support xml submission log from Yandex Contest to get correct submission times?

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

          It could parse ejudge scoreboard, I used it here. Didn't tried with Yandex though.

          And I don't know how to manually specify scoreboard files. Is there any method?

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

            I have a converter [github link] which accepts raw logs from various testing systems and produces contest.dat file, which can be uploaded via FTP or (maybe) just be pasted to Ghosts window at admin page (/gym/NNNNNN/admin)

            How to get raw logs:

            • in Yandex Contest: enter the admin page, press Edit Contest, then on the left tab press External logs (the link will be https://contest.yandex.ru/admin/edit-contest?contestId=NNNNN#external-logs), download log.

            • in Ejudge: go to contest admin page (/cgi-bin/master), press Dump data -> Export runs in XML external format

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

I upvoted this blog for no reason whatsoever.