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

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

На ACM ICPC есть традиция -- давать за решение задачи шарик. Так что перед staff-ом возникает задача: вовремя узнавать, что куда-то там надо отнести шарик.

Конкретно на нашем 1-ом этапе она усложняется тем, что:

1) команде, которая решила задачу первой, шарик гелиевый, а остальным -- воздушный.

2) Команды у нас сидят по разным аудиториям (не_очень хорошо, но спортзал нам никто не_даст и тем более никто не_будет тянуть в него всю проводку).

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

В этих условиях, ситуация уже несколько запутанная, и хотелось_бы её автоматизировать в виде некоей tool-зы, которая будет иметь на входе табличку с соответствием логинов названиям команд и их геометрическому размещению (например, "ауд.126, комп.4", "ауд.129, комп.1"), регулярно перечитывать табличку с текущими результатами, и писать в хронологическом порядке, какой шарик (с какой буквой задачи и гелиевый или обычный) куда отнести.

1) Есть ли что-то готовое, которое реально патчить под наши условия?

2) Если писАть самому, то как лучше всего вытягивать из ejudge-а данные о фактах успешных решений?

3) Какие тут вообще могут быть неочевидные моменты? Пока что я вижу два: (А) rejudge-и; (Б) носить_ли шарики во_время заморозки? (вроде_ж надо не_носить?)

UPD: учитывая, что админить буду не_я, предпочтительны варианты, работающие через сеть не_на компе где собственно ejudge, и знающие максимум логин/пароль, которым представлены права JUDGE_LOGIN и VIEW_STANDINGS, но не_дающие прав как-то влиять на ход соревнования.

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

»
9 лет назад, # |
  Проголосовать: нравится +17 Проголосовать: не нравится
stuff-ом
Может, всё же staff-ом?
  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится +6 Проголосовать: не нравится

    Спасибо, исправлено.

    Но хотелось бы также предложений по сути.

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

В Западном четвертьфинале всё решено довольно просто: шариков в принципе нет. Что печально на самом деле.

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

Знаю, что в админке тимуса есть подобный функцинал.
Не знаю, кто автор. Не знаю, насколько сложно будет перепилить под еджадж. Думаю, что невозможно, но вдруг.
Можете попробовать связаться с кем-нибудь из команды тимуса.

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

Для чемпионатов СПбГУ у меня где-то была пара скриптов — написали в своё время на коленке за первые полчаса контеста.

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

    Как вы это делали?

    Те скрипты запускаются именно на компе на котором ejudge, или достаточно инфы из браузера? (Если 1-й вариант, то именно на это соревнование вряд_ли подойдёт, т.к. не_я буду админить, и, скорее всего, получится, что никто не_готов нести ответственность, если вдруг там что не_так. Хотя если оно точно абсолютно безопасно и более-менее работает -- могу попытаться попросить.)

    Если инфа из браузера, то: 1) интегрируются плагином в браузер? или какая-то библиотека, позволяющая сторонней проге логиниться и вытягивать содержимое? или им надо регулярно копипастить инфу руками? 2) что парсите -- табличку всех посылок из new-judge или new-master? или standings? вот затрудняюсь выбрать, как ни тупо.

    Учитывают ли те скрипты возможность rejudge-а?

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

      Скрипты я запускал через у себя на ноутбуке, но без браузера (если wget не считать бразузером). Кстати, у нас там не ejudge, но testsys. Скрипты выкачивали веб-страничку с результатами, парсили её и смотрели, какие новые ok'и появились. Про каждый новый ok нужно было отнести шарик и сделать соответствующую пометку в файле. Соответственно, после заморозки шарики мы не носили (скрипты брали публичную страницу с результатами, там, естественно, ok'ов после заморозки нет). rejudge в пользу участника при этом сам учитывается (потому что появляется ok, про который ещё нет поменты), а вот отбирать шарики мы не пытались.

      В общем, я воспользовался тем, что на чемпионатах СПбГУ есть публичные результаты, для просмотра которых не надо даже логиниться, в (относительно) удобно-обрабатываемом формате.

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

В ejudge есть возможность экспортировать какие-то данные о текущей таблице в отдельный файл (var/status/dir/external.xml). Я не помню точно, как называется опция в интерфейсе настройки контеста, которая включает этот экспорт. В ЛКШ это используется, чтобы генерировать сводные таблицы по нескольким контестам: пишется отдельный скрипт, который парсит external.xml-файлы всех нужных контестов и сливает их в одну таблицу.

Соответственно, можно написать скрипт, который будет парсить этот файл и делать что вам надо. В таком подходе нужен будет только доступ к этому файлу; думаю, не так уж и сложно будет сделать его доступным по сети с другого компа, если надо.

Вот пример моего скрипта сводной таблицы: https://drive.google.com/file/d/0B6RKXkFYaMs-dGpyczhoT2ZzSlk/view?usp=sharing . Я уже подробностей не помню, но, судя по коду, в external.xml идет просто список посылок, поэтому там есть вся нужная вам информация.