@hirthwork

Тег wrok в блоге hirthwork

hirthwork

Current mood: Облачно, местами бигдато

hirthwork

Искусство программирования: допустить адскую багу, которая за счёт грамотного сall flow не влияет на корректность работы программы

hirthwork

Да что ж за день-то такой

ЧИНИШЬ RACE CONDITION В ПРОЕКТЕ "А"
@
ПОЧИНИЛ, МОЛОДЕЦ, ТЕПЕРЬ ОН ТАКОЙ ЖЕ НАДЁЖНЫЙ КАК ПРОЕКТ "Б"
@
НАХОДИШЬ ЕЩЁ ОДИН RACE CONDITION В ПРОЕКТЕ "А"
@
И ЕЩЁ ОДИН
@
… ИНТЕРЕСНО, А КАК ЖЕ Я В ПРОЕКТЕ "Б" ЭТО ОБОШЁЛ?
@
А НИКАК!

hirthwork

НАХОДИШЬ У СЕБЯ БАГУ
@
НАХОДИШЬ ЕЩЁ ОДНУ
@
РЕШАЕШЬ ДОБАВИТЬ В CORE-КОМПОНЕНТУ ПРОВЕРКУ, ЧТОБЫ ЛОВИТЬ ТАКИЕ БАГИ В АВТО-ТЕСТАХ
@
ПАДАЕТ 6 ЮНИТ-ТЕСТОВ

hirthwork

В регулярках джавы можно сделать named capturing groups (если вы не знаете что это такое, то вам не сюда, а в кружок кройки и шитья), и по имени группы из Matcher'а можно доставать captured подстроку. Но при этом из скомпиленной регулярки нельзя достать список имён этих самых capturing groups, которые были заданы в регулярке. Второтег

hirthwork

Иногда ты используешь type erasure, а иногда type erasure имеет тебя

hirthwork

Из всех видов хуйни самой хуёвой является неконсистентная хуйня. Отака хуйня, малята :(

hirthwork

— Это я слепой или в <service name> нельзя сделать <feature name>?
— Увы, ты не слепой, но мы это скоро исправим.

hirthwork

Интересно было бы посчитать как за последние две недели изменилось количество фейсбучных френд-реквестов у пользователей Яндекса от иностранцев. Затем сделать срезы по возрасту и полу. Но мне лень.

hirthwork

О! Ещё одну багу в проде нашёл!

hirthwork

Когда-нибудь я напишу книгу: «100 простых способов знатно объебаться в продакшене»

hirthwork

Берёшься за проект, который «с нуля» написать в срок точно не получится и нужно отыскать готовую библиотеку поверх которой нагородить свои хотелки.
@
Берёшь ту, которую посоветовал когда-то коллега.
@
Проверяешь библиотеку. «Из коробки» 90% нужного функционала уже есть.
@
Смотришь внимательнее. Чтобы сделать оставшиеся 10% придётся по хардкору патчить исходники библиотеки.
@
Смотришь ещё внимательнее. Оказывается, авторы все checked exceptions оборачивают в RuntimeException.
@
В офисе начинает вонять горелой обивкой офисного кресла.
@
Читаешь дальше публичное API. Вместо Map<String, String> там используется List<? extends String>, где по чётному индексу лежит имя атрибута, а по нечётному — его значение.
@
Начинаешь думать, о том чтобы переписать эту либу с нуля, но по нормально.
@
Начальник успевает вовремя отговорить.
@
Приходишь утром в офис со свежей головой. Начинаешь думать с чего начать патчинг.
@
В КОДЕ БИБЛИОТЕКИ ОТСТУПЫ ПО ДВА ПРОБЕЛА. ЭТО ПОСЛЕДНЯЯ КАПЛЯ.
@
Лезешь на stackoverflow в поисках аналогов.
@
Находишь 2 библиотеки.
@
ИЗ КОРОБКИ КАЖДАЯ ИЗ НИХ ИМЕЕТ 10% НУЖНОГО ФУНКЦИОНАЛА.
@
Возвращаешься к исходной библиотеке. Обречённо идёшь за ещё одной кружкой кофе.

hirthwork

Хотели себе занять во внутренней сети доменную зону с именем подходящим нашему проекту
@
ХОСТ С ТАКИМ ДОМЕННЫМИ ИМЕНЕМ УЖЕ ЗАНЯТ
@
НЕ МОЖЕМ ПРИДУМАТЬ ДРУГОГО ХОРОШЕГО ДОМЕННОГО ИМЕНИ
@
ВСЁ НАХУЙ, ЗАКРЫВАЕМ ПРОЕКТ

hirthwork

Я хотел починить, а в итоге доломал.

hirthwork

TFW, когда неловко, что нашёл у коллег баги. Им и так нелегко — приходится со мной работать

hirthwork

Будет день — будут баги.

hirthwork

ДОБАВЛЯЕШЬ НА ГРАФИКИ СИГНАЛ, КОТОРЫЙ ДОЛЖЕН БЫТЬ ОКОЛО НУЛЯ
@
СИГНАЛ РОВНО НУЛЕВОЙ
@
РЕШАЕШЬ, ВСЁ ХОРОШО ИЛИ ОБЪЕБАЛСЯ С ФОРМИРОВАНИЕМ СИГНАЛА

hirthwork

Ёбаные рогатые твари. U.

<u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u><u>&nbsp;</u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u></u>
hirthwork

Сап, пойнтач. Есть одна ойтишная компания. В одном из своих крупных и наукоёбких проектов эта компания решила заюзать опенсурсную либу для перемножения чиселок.
А я вообще тут сбоку и мне надо было обёртку над проектом в виде *.so-шки собрать, внедрить, да нагрузку из своих компонентов пустить.
Скоро сказка сказывается, да нескоро gdb запускается...
Я вот точно помню, что эта падла год назад вполне себе работала. А сейчас сегфолты ловлю. Ну ладно, первый час дебага — это я сам виноват, создал у себя в обёрточке класс, который совпал по имени с другим присутствующим в том же большом репозитории. А вот потом начался настоящий секас и он мне не понравился.
Запускаешь класс с одним конфигом — норм обрабатыват. Запускаешь с другим — сегфолт. И вот я точно помню, что эта падла год назад вполне себе работала с обоими конфигами. А сейчас сегфолт.
Расчехлил свой старенький gdb. Полез корку читать. А там ебеня исходников, шаблонов лес, макросы трёхэтажные и прочее хуйпоймичо в недрах этой опенсурсной либы.
Связавшись с космосом, я таки допёр, что это не сегфолт, а стековерфлоу (нет, не сайт).
И знаете почему там не сайт? Потому что грёбаные байтоёбы все локальные массивы размером меньше 128КБ аллоцируют на стеке. А то что несколькими уровнями выше тоже всё аллоцировано на стеке их не ебёт. И то что стек скоро дно пробьёт их тоже не ебёт.

В общем, не будьте байтоёбами. Пожалуйста.

hirthwork

Идёшь по офису в толстовочке HOMM3, все коллеги уважают, спрашивают где взял, а на встречу вдруг чувак в такой же толстовке >_<

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.