Архив рубрики: Программирование

О накопившихся багах

Мне тут оказалось нужно как-то объяснить железячникам как кодировать и декодировать сообщения нашего формата. Прикинув сколько у нас Qt-контейнеров начал разбираться что же происходит после исполнения команды вида:
QDataStream() < < QDateTime() << QString() << QVector()

Для этого пришлось залезть в исходники Qt 4.8.6, где мой глаз зацепился за этот ужас:

Всего лишь несколько безобидных формул преобразования дат

Читать далее

Пущинская новогодняя олимпиада 2017

Неделю назад провели нашу очередную олимпиаду. На этот раз по новым правилам, но вроде бы получилось неплохо. Самая сильная сюжетная линия из всех, которые у нас были, да и самих задач целых 12 штук. 3 города — Пущино, Дубна и Дмитров. В двух лигах из трех Пущино победило.

Отказывало все подряд, все некритично. Условия пришлось заливать на ftp сервер, что могло быть чревато, если бы мой сайт не был бы в white листе цензоров целиком. Уже после олимпиады починил в nginx’е отправку больших client_body_size. Это не лимит php, это что-то в nginx’e и wordpress’e.

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

Еще я первый раз увидел участника из четвертого класса. Не знал что так бывает, но времени у него, конечно, еще много.

Russian AI Cup

Каждый год господа из mail.ru придумывают очередную игру для соревнования стратегий.

Я участвовал в CodeTanks, но с аккаунта, который уже не существует. Место у меня там было в районе 500ого, но всех знакомых я тогда обогнал.

Я участвовал в CodeTroopers, но тогда мне не было 18, и претендовать на призы я не мог. Что, впрочем, не помешало мне получить футболку и забрать места из начала второй сотни.

Я формально участвовал CodeHockey, но так и не научился забивать шайбы в ворота, так что у меня быстро исчез интерес.

Я участвовал в CodeRacing, но моя стратегия была всего лишь заглушкой. Мне тогда было очень весело получать свою футболку на соплях — это было крайне высокое отношение цена/качество. Тем не менее, я до сих пор жалею, что не отправился за первым местом. Моих знаний и навыков хватило за то чтобы потолкаться в финале, генетический алгоритм для поиска оптимальной траектории это вполне по мне. Но тогда катастрофически не хватало времени.

Я не участвовал в CodeWizards, потому что Дота — вселенское зло, и ее отголоски надо презирать и уничтожать. Короче, было неинтересно.

Я не собирался участвовать в CodeWars. Мне было непонятно какую стратегию писать. Но меньше чем за неделю до первого раунда я посмотрел на количество участников — чуть больше 500 — и решил отправиться за халявной футболкой. Простейшая заглушка дошла до ~220ого места, так что я остался вдохновлен. После этого рейтинг начал падать и грохнул кучу времени в Стратегию. Стратегия оказалась на редкость хреновой, допилить ее до конца я не успел, но времени грохнул тьму. В первом раунде вошел в топ-100.

Текущее состояние CodeWars. Несколько минут назад завершился первый раунд

Короче, я отправляюсь за толстовкой. Цель — попасть в топ-50. До встречи через 2 недели.

Школьная олимпиада по программированию 2017

В этот вторник провели школьную олимпиаду по программированию. Последние пару лет не проводили, потому что сил не было. Но тут спустили задачи сверху (о качестве публично высказываться не буду), так что решили залить на сервер, дабы не было всякой ерунды с ручным тестированием после олимпиады.

Арсений следил за всем на площадке, я же в Пущино не поехал, ибо мне сильно не понравились задачи. Следил за проведением из Москвы. Все прошло нормально.

Около 550 посылок. Я на этот раз сделал героический поступок — я посмотрел все прошедшие решения, и примерно половину зафейлившихся. На этих задачах конечно особо не разойдешься, но интересные посылки были.
Читать далее

Ни дня без коммитов

Мой github

Прожил 73 дня, ежедневно модифицируя BSA-Analytics. Первые пару недель непрерывность была случайной, потом она стала искусственной. По внутренним правилам нельзя было переводить часы, заводить фиктивные задачи и отправлять коммиты с пробелами. Стрик был прерван случайно, я в тот день физически возился с сервером и просто забыл про отсутствие коммитов.

Положительные эффекты:

  • Проект не выгружается из памяти, в любой момент я все помню и могу что-нибудь реализовать
  • Абсолютно все мелочи, типа умения программы выдавать свою версию, реализуются, потому что надо что-то писать. Что-то простое, но не особо нужное, зачастую написать проще, чем что-то сложное. А программа состоит из мелочей
  • В целом, по крайней мере первые пару недель, получается хороший буст по скорости и настроению

Отрицательные эффекты:

  • Размывается граница между отдыхом и работой. Иногда все же требуется на пару дней забыть о проекте
  • Постоянно приходится помнить о проекте. Иногда это весело, один раз я вспомнил об отсутствии коммитов в 23:56, и вполне успел реализовать конкретную фичу, но большей частью это просто неудобно
  • Начинается некоторое растягивание задач по времени. Например сначала открывается задача в багтрекере, а на следующий день закрывается. Еще получается удобно кодить около 11 вечера. Тогда можно сделать коммиты сразу за 2 дня
  • Не учитывается физический вклад. Конечно можно открывать и закрывать задачи вида «Сходить поставить программу на счет», но этому не место в моем уютном багтрекере

Забавные моменты:

  • Один раз пришлось все делать на экстрим-скорости: я вспомнил о BSA-Analytics в 23:56. К счастью, я весь день крутил в голове что и как надо сделать, поэтому успел за 15 секунд до полуночи
  • Три недели назад я остался без клавиатуры на ноуте, поэтому пяток коммитов был полностью сделан с помощью экранной клавиатуры
  • Один из коммитов пришлось по техническим причинам делать по дороге в Москву с экранной клавиатуры и мобильного интернета

Seagate Backup Plus 8TB — диск или хлам?

Волею судеб нам достался этот диск, который мы используем для BSA-Analytics. На диске хранится полная копия всех коротких данных с телескопа BSA (bsa1-short + bsa2-short). А также все эти данные нарезанные по кускам по звездному времени, в моих терминах «нарезка» (далее без кавычек). Данные, как и нарезка, занимают очень много места, поэтому диск, на котором лежит все и сразу, нам жизненно необходим.

Распределение места для понимания необходимости 8TB диска


Читать далее

Пущинская Новогодняя 2016

В это воскресенье провели очередную олимпиаду, как обычно, без проблем не обошлось. Вечером пятницы выяснилось, что по Пущино объявлен карантин, школы закрыты. Площадки проведения нету. Как основной вариант рассматривался институт + ноутбуки из гимназии. Вот только ноутбуки получить не удалось, а в институте своих машин не было. Неожиданной фигурой выступила наш хорошо знакомый городской депутат — Ира Селезнева. Благодаря разведенной бурной деятельности вышеупомянутой была задействована вся вертикаль власти в Пущино, и мы смогли провести олимпиаду в третьей школе.
Читать далее

МГУ, ВМК, medialab, видеогруппа

Ровно год назад, 26 марта, я сидел в пустом кабинете и решал простую задачу. Надо было компенсировать два кадра, был дан шаблон под visual studio. Не работал поиск блоков 8×8.

Читать далее

Сервис создания панорам

Есть такой грант — УМНИК. Если вам от 18 до 28 лет, и у вас есть проект, который потенциально способен приносить прибыль, то вы можете получить 400 тысяч на 2 года на реализацию этого проекта. Требуется только делать отчеты о проделанной работе. Ну и показать, то что ваш проект лучше, чем у всех остальных. И вот, в один прекрасный понедельник, мне приходит письмо от моего научного руководителя, мол, все на Умник. Все — это вся видеогруппа, кроме тех кто его уже получил. Я тогда, естественно, только посмеялся — куратора нету, окклюжены не коммерционализируемы, о чем речь вообще? Потом приехал куратор, а мне было предложено назвать 3 темы, а уж они то выберут.

У меня тогда нехило испортилось настроение, потому как я не собирался идти с проектом, на который нельзя получить грант. Если идти — то с возможностью выиграть. Но в результате душевных терзаний, мучений и споров, тема все-таки была придумана и одобрена — «Сервис создания панорам».
Читать далее

Пущинская новогодняя олимпиада 2015

Сегодня провели традиционную новогоднюю олимпиаду. На этот раз было куча народу из Дубны, аж с двух площадок. 51 не ноль в таблице. Провели без значительных косяков, к счастью я вырезал задачу I за полчаса до начала. Тесты были сделаны отменно — было всего лишь две посылки получившие 100 баллов и при этом не прошедшие тесты из условия. Мои задачи были недостаточно гробовыми — их решил приехавший из СУНЦа одиннадцатиклассник — Леша Соловьев. Собственно, он ухитрился решить мою задачу на 10% быстрее чем я на том же алгоритме. Посмотрев его код нашел пасхалку.

Правильные дефайны: +10% к скорости работы

Правильные дефайны: +10% к скорости работы