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

Автор MikeMirzayanov, 14 лет назад, По-русски
Всем добрый день.

Решил отписаться по поводу неудовлетворительного проведения раунда 47. Приношу свои извинения за доставленные неудобства - сам многократно участвовал в разных соревнованиях и понимаю, как это неприятно, когда происходят сбои.

В тот день (20-го декабря) видимо как-то неудачно сошлись звезды (нет, в астрологию я не верю, это просто оборот такой:)) и случилось сразу несколько неприятных моментов, которые не позволили провести раунд на должном уровне. Во-первых, незадолго до раунда я разболелся и был совсем "не в форме". Это привело к тому, что я пренебрег некоторым load-тестом, который я обычно делаю перед раундом.

С началом раунда выяснилось, что некоторое время назад, экспериментируя с настройками, я значительно уменьшил память под mysql (и tomcat для инфраструктурного приложения), что, видимо, привело к срыву начала. Вместе со стартом контеста я судорожно заходил на сервер БД по ssh, но он очень значительно напрягся от нагрузки, что у меня это получилось совсем не сразу.

Вторая неприятность - проблемы с отображением условия. Дело в том, что некоторые вспомогательные данные о задаче (условия на разных языках, картинки), которые я система достает из пакета задачи она для некоторых ускорений складывает в дисковый кэш (там есть еще in-memory cache, но он находится повыше). Когда-то давно я, недолго думая, заиспользовал Google Gson (библиотеку от Google по работе с JSON из Java). Оказалось, что у используемой версии (1.2) очень плохая производительность. Об этом кое-что написано в интернетах. Короче, десериализация файлика в несколько десятков килобайт занимала около 10 секунд :(, что приводило к ряду проблем по ходу контеста. На текущий момент, этот кусок кода уже переписан :)

И, наконец, третье. Оказалось, что у нас в принципе в форме для взломов не было валидации на длину вводимого текста. Что приводило к exception при попытке вставить в базу такой взлом, а это из-за неаккуратной реализации приводило к появлению на форме ошибке о том, что решение будто бы 
уже взломано. Говорят, что у кого-то обрезались длинные взломы ... пока не ясно как такое происходило и кто их обрезал. Короче, была добавлена валидация на длину теста для взлома (и генератора). Поставил 20 килобайт, если не помещаетесь - отсылайте генератор.

На этом пожалуй все, пойду дальше готовить раунд! Если кто не в курсе - автором раунда 48 буду я.

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

14 лет назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится
Красава, мог не извиняться, вроде давно эту тему замяли...
14 лет назад, # |
  Проголосовать: нравится -8 Проголосовать: не нравится
Так вот почему продолжительность 48-го 2.5 часа - задачи будут много интереснее...