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

Автор Egor, 13 лет назад, По-русски
Изменения:
Defect Codeforces generation: should unescape HTML
Defect TopCoderTester: should accept arrays without curle bracers
Enhancement Add ability to select tests on which task would be tested
Enhancement Allow using custom output class instead of PrintWriter
Enhancement Tester: Should return WA if actual is not exhausted in checker

Соответственно добавлена новая настройка в файл конфигурации - outputClass. По умолчанию - java.io.PrintWriter. Соответствующий класс должен иметь 2 конструктора от OuputStream и от Writer и иметь метод close. Не обязательно скачивать новую конфигурацию - если вы не собираетесь менять эту настройку, то можно ее просто не упоминать - значение по умолчанию будет использовано в любом случае (верно вообще для всех настроек)
Метод next ввода теперь должен кидать исключение, если файл закончился (для Scanner'а это так)
Ссылки для скачивания: plugin, конфигурация

Полный текст и комментарии »

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

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

Картинки для привлечения внимания:



Текущая версия - 2.33

Итак, попробуем еще раз. Я переписал с нуля плагин для IntelliJ Idea (напомню, у нее есть бесплатная весрия), который позволяет во-первых, один раз ввести тесты, а затем тестить на них всех, во-вторых, инлайнить файлы из собственных библиотек, а в третьих - на основе введенных тестов создает юнит тесты для библиотеки. Я думаю, что прошлая версия не получила распространения из-за сложности в начале использования - нужен был специальный проект, надо было не забывать нажать "Run Task" перед посылкой на сервер и т. д. Кроме того, в качестве бонуса, данная версия умеет автоматически создавать таски (включая семпл тесты) для контестов Codeforces.

Инструкция

Если возникнут какие-либо проблемы - пишите комментарии к этой записи, а не задавайте через личку - возможно, у кого-то еще такие же проблемы

Полный текст и комментарии »

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

Автор Egor, 13 лет назад, По-русски
Для моего плагина (а точнее - для акции, которая генерирует таски для контеста Codeforces) требуется иконка Codeforces размера 16*16. Есть такая?

Полный текст и комментарии »

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

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

Мои знакомые знают, что я считаю, что Google довольно раздолбайски относятся к организации CodeJam. Однако сегодня я оценил, что такое настоящее раздолбайство со стороны организаторов контеста. Сегодня все участники онсайта RCC получили письмо с просьбой проверить, устраивает ли их билеты на поезд/самолет. То, что письмо пришло с e-mail'ами всех участников в сс (вместо bcc) - это ладно, привыкли уже. Но к письму прилагался файл, в котором помимо транспорта были указаны паспортные данные, домашние адреса и телефоны всех участников. Так что имейте ввиду на будущее как компания mail.ru относится к персональным данным

P. S. Я прекрасно понимаю, что надо поддерживать mail.ru в их полезном начинании провести контест, и догадываюсь, что у них не хватает человек, чтобы послать каждому финалисту отдельное письмо. Тем не мнее я считаю, что то, что произошло необходимо предать огласке

Полный текст и комментарии »

Теги rcc
  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

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

Финал Google CodeJam состоится 29 июля в 4:00 по Москве

Рассказ одного из участников Первая часть, Вторая часть

Полный текст и комментарии »

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

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

Добрый день.

Сегодня в 20:00 по Москве состоится четвертый отборочный раунд TopCoder Open. В пятый раунд пройдет 60 участников. Всем удачи!

Полный текст и комментарии »

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

Автор Egor, 13 лет назад, По-русски
Сегодня, 2 июля, в 20:00 по Москве состоится очередной TopCoder SRM

Полный текст и комментарии »

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

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

Добрый день.

Сегодня в 20:00 по Москве состоится второй отборочный раунд TopCoder Open. В третий раунд пройдет 350 участников. Всем удачи!

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
Добрый день.
Сегодня в 20:00 по Москве состоится первый отборочный раунд TopCoder Open. Во второй раунд пройдет 850 участников. Всем удачи!

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
Состоится сегодня в 19:00 по Москве

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
...состоится 16 апреля в 20:00 МСК

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
Пожалуй, я уже готов выложить плагин для Intellij Idea для общего доступа (исходный код будет открыт завтра после окончания CodeChef Long Contest)

Что делает данный плагин:
  • Инлайнит классы из вашей библиотеки в один файл
  • Убирает неиспользуемый код
  • Позволяет вбить один раз тесты и запускать на всех тестах одной кнопкой

Что он не делает:
  • Не решает за вас задачи

Плагин находится в стадии альфа-тестирования. Известны следующие баги:
  • Иногда при нажатии на Delete task не удаляется файл самой таски. Можно удалить руками
  • Не удаляет циклические вызовы методов, а так же циклическое использование классов в конструкторе
  • Не удаляет методы, которые исполняют какой-либо интерфейс/являются переопределением методов наследуемых классов. Естественно, если наследуемый класс удален сам или данный класс нигде не используется метод будет удален вместе с классом. Пример - если вы используете класс из библиотеки с определенным методом toString то он не будет удален даже если не используется в коде
  • Не удаляет метод с именем main независимо от сигнатуры
  • Не поддерживаются static imports
Конечно, используете вы плагин на свой страх и риск
Плагин поставляется вместе с проектом, подготовленным для совместного использования. Плагин рассчитывает, что вы будете пользоваться именно этим проектом. В проекте есть 3 таски в качестве примера использования - 2 обычных и 1 для TopCoder.
Инструкция:
  1. Добавить на toolbar кнопки плагина (Customize Menus and Toolbars -> Main Toolbar -> Add after... -> Plug-ins -> Contest helper)
  2. Нажать кнопку New Task. Ввести имя таски, выбрать тип тестов (Single - один тест на файл, Multi Number - первым токеном дано число тестов, Multi EOF - ввод до конца файла либо до теста с нулевыми значениями), тип ввода/вывода (StdIn - стандартный поток, File Task Id - id таски в нижнем регистре + .in/.out, File Custom - какие либо другие названия файлов)
  3. Будет создан и открыт файл, в котором надо непосредственно писать решение. Функции в качестве параметров передадут номер теста в файле (начиная с 1), входной поток (InputReader, о нем ниже) и выходной поток (PrintWriter). Так же будет создан файл чекера, по умолчанию он просто сравнивает токены
  4. Кнопка Edit Tests позволяет вбить тесты. Ваш КО
  5. Когда вы дописали код и вбили тесты - нажимаете кнопку Run Task. Она потупит некоторое время и создаст все необходимые файлы. После этого можно запускать конфигурацию Tester Debug для работы непосредственно в модуле main/lib или Tester Run если вы хотите посмотреть, как будет вести себя непосредственно то, что вы пошлете на сервер
  6. Не забывайте нажимать на кнопку Run Task каждый раз, как вы сделали изменения в вашем коде/добавили тесты. Не стоит менять что-то в классе Main который лежит в модуле test - при следующем запуске Run Task эти изменения потеряются
  7. На сервер надо отсылать файл Main из модуля test
Для топкодера все чуть проще - вам достаточно настроить moj (или любой другой плагин, который генерит сурцы) на корневую папку модуля topcoder. Файл в модуле main будет автоматически сгенерирован, затем нужно будет только нажать Run Task и можно будет нажимать Compile в арене.
Кнопка Delete Task просто удалит таску, а Archive - скопирует все файлы таски в package unsorted модуля archive.
Ваши библиотечные классы должны лежать в модуле lib не в default package и не в package с именем, совпадающем с каким-либо из дефолтных package java (например - java.util)

Ссылки для скачивания:

Update: Про InputReader. В модуле utils в package net.egork.io лежит обрезанная версия моего класса для ввода достаточная для работы плагина. Сделано это чтобы вас не обвинили в использовании чужого кода. Можете дописывать туда все, что вам нужно - этот ввод очень быстро работает

Update 2: Еще замечание - если пишете COCI - не называйте таску так же, как она называется у них. Связано с особенностью их тестера

Update 3: Исходный код тут. Писалось по ночам, не судите строго
И да, хоть кто-нибудь поставил? Если да, то как впечатления? Чего не хватает?

Update 4: Вышла новая версия. Для скачивания доступен плагин и проект. В проекте изменились фалы main/Tester.java, test/Tester.java и utils/main/net/egork/utils/checker/Checker.java, если вы уже скачивали проект вам надо обновить только их
Изменения:
Добавлена кнопка Restore Task которая восстанавливает таски из package unsorted (выдается список, где можно выбрать конкретную таску)
Файл таски синхронизируется перед Run Task
Можно добавить тесты из кода - для этого надо изменить метод generateTests чекера
Есть возможность запустить только на определенных тестах из набора - для этого тестеру в качестве аргументов командной строки надо передать номера тестов. Номера идут с нуля, сначала тесты введенные из GUI, потом тесты из генератора

Update 5: Вышел маленький некритичный фикс. Обновление только для плагина, заново скачивать проект не надо

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
  • Проголосовать: нравится
  • +25
  • Проголосовать: не нравится

Автор Egor, 14 лет назад, По-русски
  • Проголосовать: нравится
  • +33
  • Проголосовать: не нравится

Автор Egor, 14 лет назад, По-русски
Мне текущее ограничение на участие в конкурсе в Div 2 раундах кажется странным. Может быть стоит просто иметь Hard раунды и Easy раунды и добавить возможность регистрироваться вне конкурса?
Кто что думает?

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
Сегодня в 12:00 по Москве на сайте CodeChef состоится ByteCode 2011, а в 19:00 - Cook Off
Будьте внимательны, для получения призов надо так же зарегистрироваться на сайте Pragyan

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
По просьбам трудящихся
Очередной SRM пройдет 11 февраля в 5 утра по Москве
Я, по некоторым причинам, не приму в нем участия
Кстати, мне почему то перестали ходить письма от Codeforces про комменты и сообщения. Остальные вроде ходят. К чему бы это?

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
Будет через пол часа
Одному мне письмо с напоминалкой не пришло?

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
Весь мой код с контестов, а так же некоторые задачи со сферы доступны вот тут: http://code.google.com/p/egork/source/browse/
Пожалуйста, используйте лишь в образовательных целях. Я надеюсь, что туда не будет попадать код "долгоидущих" контестов пока они не закончились, но человеку свойственно ошибаться. Я буду благодарен если сообщения о таких ошибках мне будут приходить на почту
Update: В связи с глобальной перестройкой проекта он переехал вот сюда
В состав проекта включен плагин для Idea с исходными кодами. На текущий момент он все еще должен быть глючным, хреново написанным и заточенным сугубо под мою структуру проекта. Если кто-нибудь сделает из него что-нибудь человеческое - отлично

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
Round #1A - 18:00 MSK 15 января
Round #1B - 0:00 MSK 16 января
Round #1C - 0:00 MSK 17 января
Раунды перенесены
По просьбам трудящихся:
Участвовать можно во всех раундах пока не квалифицируешься (хотя с их багами может быть можно будет и после)
Предварительной регистрации вроде бы не надо

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
Меж тем гугл втихую разместил на своем сайте даты GCJ 2011

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
13 января в 5:00 по Москве состоится очередной TopCoder SRM
Так же в какое-то близкое время состоится тестовый раунд Facebook HackerCup - может быть, epic fail не продолжится

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
Открылась регистрация на HackerCup. Будьте осторожны - вчера она хреново работала и если вы не попали на страничку с заполнением адреса, размера футболки и т.п. - вы не зарегестрированы
Формат - GCJ, но есть только харды, на сабмит 6 минут и все задачи стоят 1 балл. Тай брейк - время последнего аксептеда. Могут добавить по 6 минут штрафного времени если вы перепутали сорс файл, но при этом это почти то, что нужно

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
И опять я забыл сделать топик. Ай-ай-ай

Полный текст и комментарии »

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

Автор Egor, 14 лет назад, По-русски
Похоже фейсбук решил организовать свой кодеджем, только лучше - с шахматами и гимназистками
Регистрация начнется 20 декабря, онлайн раунды в январе
Надеюсь меня тут не забанят нафиг :)

Полный текст и комментарии »

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