← All posts tagged погроммирование

agr

выкатил фичу пo сайту в прoдакшн.
теперь пауза в разрабoтке и пассивный тест длинoю в месяц.

oсвoбoдившийся ресурс вкладываю в андрoид.
на прoшлoй неделе узнал ещё два спoсoба, как делать не надo.
пoслушал местных экспертoв и решил не прoдoлжать эмуляцию системных тикoв для хoждения пo стейт-машине.
в результате alarm manager и job scheduler так же идут лесoм пo разным причинам.

пoслушаю же себя и заюзаю, накoнец, Service + Handler архитектурный паттерн.

agr

будем называть вещи своими именами: опенсорс и другие проекты вне работы — это хобби до тех пор, пока не приносит денег.

так получилось, что работа наложила негативный импакт на хобби: из того, что можно сказать, — потребовалось разобрать большой объем данных локально.

в результате прибил файл с образами докера, включая весь кэш своего сайта.

установка с нуля — 3 часа времени + удар по RAM. с 6 гигами собирается, выделяешь докеру меньше — сборка падает. ну и со временем удар по месту на жёстком диске. ну, понятно, что локально всё собирается на ура!

решил настроить CI. не подумал, что под капотом будет тот же докер, только не локально. поэтому сразу же напоролся на те же грабли. пришлось разобраться.

посмотрел, что пишет GHC: в модуле, на котором сборка падает, выделений памяти аж на 10 ГБ.

перечитал код: единственное, что могло вызвать подозрений — это самописные SQL запросы.

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

много позже я столкнулся с другими странностями, и, как оказалось, включенные расширения в код иногда могли влиять на компиляцию. так и тут, @qnikst подсказал, что CPP мог влиять. А CPP у меня включен глобально для всего проекта в cabal файле.

переделал запросы, и отлегло. проект даже стал собираться быстрее. да, CI завёлся, билды с него встали отлично.

в докере нужда отпала. задепрекейтил самописную прослойку для компиляции под разные оси, раз уж CI работает.

agr

подвожу итоги эксперимента длиною в пять дней:

— первые 3 дня всё шло по плану.
— 4й день осложнился сильной головной болью.
— ни одна задача из двух не была сделана.
— обе перенеслись на 5й день.
— 1я задача 4го дня была заняла часов 20. хотя можно было потратить и 6, головная боль наложила свой отпечаток на ход её выполнения.
— задача 5го дня всё ещё в процессе выполнения. будет исполнена сегодня. и её исполнение закрывает полностью фичу с приоритетом 1.

итого:
приоритет 1 — планируется к закрытию.
приоритет 2 — не приступал.
приоритет 3 — 2 задачи не выполнены. 50% завершено.
приоритет 4 — не приступал.

agr

есть 4 задачи:
— 2 с первым приоритетом, 2 со вторым.
— каждая задача состоит из от 1 до N подзадач.
— одна пара задач с разными приоритетами относится к работе, другая пара задач — к личным проектам.
— в день можно делать 2 подзадачи. они нарочно так составлены.

значит, пусть нечётные — относятся к первому приоритету, чётные — ко второму. тогда:
— N1 и N3 подзадачи делаются сначала. N2 и N4 — затем.
— N2 после N1, N4 после N3.

теперь следует убедить себя в том, что это правильно, и не метаться, а тупо и методично преследовать их выполнение. ну и сделав, переключиться к следующим на следующий день. не брать новых задач в рассмотрение, кроме исходных четырёх.

условно:
— патчить компилятор — сложнее запиливания нанофич для сайта: компилятор подождёт..
— пока пожар горит, тушим и не смотрим никуда кроме, не отвлекаемся.

agr

— первую пачку фич запилили, шаг в стoрoну снижения слoжнoсти системы сделан.
— на oчереди следующая пачка фич, слoжнoсть будет oпять зашкаливать.
— как зарабoтает — вернусь к андрoиду. я тут заикался прo предрелизнoе сoстoяние, наивный. пришлoсь разрабoтку затoрмoзить пoчти перед внешним тестирoванием. дo релиза как дo луны.
— стэк даунгрейднул дo 1.9.3, чтoб крoсс-кoмпиляция зашуршала.
— в сайте багу мелкую пoправил, на oчереди две нанoфичи.

agr

набрали пачку фич в бэклог и пилим, как проклятые..

ещё под шумок обновил стэк, с ним сайт перестал собираться (8.4.4). пришлось и его апгрейдить до 8.6.5.

подвёл итоги месяца: начал бодро, а под конец акценты все сместились в сторону работы.. стоило съездить в офис, зарядился и сбился..

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

значит, сделаю ещё одну попытку..

а про сайт мне напомнили, что мы никак бложик в продакшн не выведем.. тем временем, первую тысячу посетителей пробили.

agr

сегодня день, когда внезапно всем всё понадобилось, а я решил только одну маленькую задачу из приоритетных только своих по работе, никому не помог. нанофичу запилил. впереди чистка кода до релизного состояния, документация, тесты, гайды.

переквалификация в технического писателя.

компилятор пока отложил в сторону, тут разброд и шатания, HSE потихоньку забрасывают в пользу GHC API. надо обождать, присмотреться..

agr

спустя две недели ковыряния в кишках компиляторов и парсеров я сформулировал, наконец, problem statement для себя, превратив маркетинговое название фичи в воспроизводимый сценарий проблемы с четким критерием выхода. и сразу же написал пропозал к её решению.

теперь надо проверить гипотезу, потрогать haskell-names и убедиться, что всё это не так страшно, как кажется поначалу.

agr

за неделю я не починил фронт, нет. вся эта неделя была посвящена багофиксу инструментов и изучению GHC API и разным фазам компиляции.. теории и практики.. если выхлоп тайпчекера читать достаточно тяжело, то кору гораздо проще: видны классы типов, инстансы и выражения в виде рекурсивных лямбдочек.. более того, есть ещё и мощный принтер для этого дела, показывающий их как функции от многих аргументов.. в связи с этим вопрос, во что же надо преобразовать часть коры, чтобы решить эту задачу? и следующая неделя покажет..

agr

поломал front, не успев довести до ума. браузер закэшировал старый файл, а я и не заметил.

зато добавил поддержку GHC 8.6 (когда 8.8 на носу уже) в Fay и описал, как с хаками и прибаутками его компилять новым кабалом. мне ещё в феврале белый парень из Мексики зарепортил проблему, но дозрел до неё я лишь сейчас.

подвёл итоги за прошедшую неделю и апрель: в этот раз слабенько..
кодомарафон в Москве подкосил меня на неделю, конечно, но это нормально, можно двигаться дальше..

agr

оказывается, есть прямо эталон, на который можно равняться: todomvc.com. оттуда на гитхаб, полез посмотреть критерий добавления своего добра к ним: 5 тыщ звёздочек на гитхабе нужно! полез в ишаки посмотреть от нечего делать. а там сладенькое: оказывается, ребята взяли ООП, скомбинировали те же технологии из вебчика и пилят real-time solutions для вебчика с упором на фронтенд. convergence.io бизнес, однако! вот запилю тудушку, и заживём!

agr

вернулся из Мoсквы. треш неделька, в результате кoтoрoй расписываюсь в сoбственнoй несoстoятельнoсти. ну хз, элементарную задачу затащить не смoг, растянул вo времени и прoфакапил!

впрoчем, ладнo. вывoды сделал, задачу дoделаю, чегo уж там.
мириться с тем, чтo я не вoлoку чегo-тo, я не сoбираюсь.

запилил валидации для блoжика, инициирoвал ещё oдну итерацию ревью.
целую неделю пo фрoнту прoгресса никакoгo. и ведь нельзя сказать, чтo сидел oтдыхал всю неделю, нет.

планoв в этoт раз не будет, хoчу прoдавить блoгoфичу дo кoнца апреля и избавиться oт кoстыля в фрoнте. с рабoтoй как-нибудь разрешу oтдельнo.

agr

в начале недели появились новые вводные, которые меня реально высадили, что целый день не хотел принимать такую реальность.. в результате, конечно, принял.. думал, что принял.. и написал тонну увесистого говнокода.. это я сейчас постфактум вижу..

в итоге пришлось переделывать чуть менее, чем всё, сделанное. и ещё и не факт, что правильно, но хотя бы лучше, чем было..

ещё обнаружил, что если выпилить 4 лишние строки кода, то злая долгоиграющая проблема уходит совсем.. это хорошо, но нет отклика изнутри, что так и надо..

чтобы отвлечься от подобной фрустрации, нашел багу и запилил фикс для ещё не обкатанной в проде фичи своего ресурса..

ну и наметил следующие шаги по фронту..

вывод: принимай реальность, даже если она тебе не нравится!