Ну и на злобу дня 😀

Прошло 8 дней с того момента, как я начал делать парсер по работе. Вроде бы всё не сложно, но количество вариаций параметров в названиях продуктов просто заставляет застрелиться.
За прошедшую неделю я пересмотрел около 200к названий разных товаров и выделял из них куски, которые можно стянуть.
Додумался использовать генераторы, чтобы не жрать память как не в себя.
Оптимизировал регулярки, чтобы всё работало приемлемо быстро. Сейчас файл с 97к вхождений парсится и складывается в базу за 2 минуты 22 секунды. В принципе, неплохо, но можно гораздо лучше, если даже хотя бы не использовать экстракторы данных, не относящиеся конкретно к этому типу товаров. Например, при парсинге очков нам не нужен экстрактор веса, объёма и формы выпуска и наоборот — при парсинге таблеток нам ни к чему искать в названии диоптрии.
Вообще, мне кажется я бы в жизни столько не узнал о регулярных выражениях, если бы не этот проект. Кажется, сейчас я просто бог регулярок и это хорошо — знания крайне полезные, потому что обычно регулярки вводят людей в ступор.
Дальше работа будет заключаться только в добавлении новых правил для пред- и пост-обработки названий товаров для упрощения поиска.
О разнице между ООП и функциональщиной и почему нельзя прибегать строго к одной парадигме, а брать лучшее от всего: — https://youtu.be/Ly9dtWwqqwY
Чел вообще много спорных тем затрагивает, интересно послушать и подумать
До сегодняшнего дня)
Ну ладно, не парсер, а токенайзер, но тоже дело хорошее
Суть задачи в том, чтобы получая на вход название любого товара разбить его на токены для дальнейшего поиска похожих по названию и хар-кам товаров
В помощь мне был ютуб и интуиция. Ютуб выручал больше, нашёл какой-то простенький курс об азах азов парсеров
Тимлид сказал не заморачиваться слишком сильно, но при этом также звучали слова типа "расширение", "будущее" и подобное. Стало понятно, что это будет не одноразовый сервис внутри компании, поэтому пришлось подойти к вопросу со всей строгостью.
Вообще, это первый раз, когда я прям серьёзно столкнулся с регулярками. Опыт не самый хороший, они заставляют поломать голову, но как-то удаётся правильно написать выражение — работает как часы.
В итоге спустя почти день работы я получил результат, где из 97 позиций не обработались только 5-7. Под этим я подразумеваю, что я уже просто хочу спать и не захотел писать ещё обработчики строк.
В общем, этот проект меня сильно взбодрил, я давно не был так рад посидеть поработать, даже допоздна. Пробудился некий юношеский азарт и максимализм, это хорошо, значит помирать ещё рано😃
Вчера и сегодня провёл за рефакторингом всей кодовой базы новой итерации приложения на работе
Немножко устал, мягко говоря, но:
1. Теперь всё красиво лежит по папочкам
2. Обвязка графкла минимальна и для описания новых сущностей теперь есть удобный интерфейс
3. Перепроверил все тесты, переписал покрасивее моки
В общем, не работа, а благодать
Осталось понять как сразу так писать, чтобы потом рефакторить не пришлось коммитами по 300 изменённых файлов😃

От поддержки JetBrains поступил по поводу использования PHPCSFixer в качестве форматтера
Вот в PHPStorm почти всё прекрасно, но кто из разрабов подумал, что отличным алгоритмом форматирования будет следующее:
1. Применяем правила шторма
2. Применяем правила сторонних форматтеров
3. СНОВА ПРИМЕНЯЕМ ПРАВИЛА ШТОРМА???
DX от бога, спасибо
Похоже, придётся выкинуть из пайплайна phpcsfixer и хранить в гите стили кода из ide😩

Сегодня я решил, что мне очень интересно начать делать моды для майнкрафта, тем более что идея зрела очень давно
Не смог найти хороший мод, который бы просто мне показывал текущие координаты в верхнем левом углу. Видимо, никому не надо такое, но мне надо прям очень
Поэтому вооружившись ютубом, полез смотреть гайды как делать моды и вот спустя 2 часа я вывел себе координаты на экран
Задача оказалась тривиальной — api для моддинга майнкрафта довольно простой и понятный, по крайней мере для тех мелочей, которые мне нужны
Под капотом какой-то магией запускается клиент майнкрафта и грузятся моды. Я если честно вообще ума не приложу как это всё работает. Люди, которые занимаются разработкой игры и лоадеров модов — гении, не меньше
Залил на гитхаб, зарелизил и залил ещё на curseforge.com, посмотрим, одобрят ли.

Несмотря на все эти тупые мелочи я получил что хотел — пайплайн теперь ляжет, если твой код хреново отформатирован или там есть забытые артефакты в виде неиспользуемых импортов и так далее. Крайне удобно, особенно учитывая, что в скором времени над проектом буду работать не я один. Будет за что чморить на ревью 😀

Стало скучно, решил на рабочем проекте запилить нормальный код-стайл с интеграцией в ci/cd
Самым ходовым вариантом является PHPCSFixer и честно говоря я немножко задолбался мирить их со штормом
Шторм в 98% процентов случаев соглашается с фиксером, но в остальные 2 процента просто забивает и делает по-своему }:[
В доке шторма прям уверяют, что фиксер хорошо интегрится и работает наравне, реагируя на всякие горячие клавиши форматирования кода и прочее. Хорошо, я верю (нет).
Перед коммитом выставлены галки на форматирование и чистку кода, но в итоге коммит улетает в гитлаб и через пару минут я вижу сломанный пайплайн, потому что оказывается ничего из этого не произошло
Ну ничего, с танцами и бубном донастраиваю форматирование шторма, чтобы оно подходило под фиксер, вроде пока работает, посмотрим как дальше будет
Завёл даже пост на реддите с вопросом мол чё за херня, это я дурак или лыжи не едут?
Благодаря военкомату сейчас чилю в стационаре, подтверждаю болезни (хз что там подтверждать, мед карта толще, чем моя рука)
И вот спустя почти год я наконец-то нашёл время посмотреть данный замечательный курс
Там есть всё на что пускают слюни зумеры (@artemmarenkoff) — чистая архитектура, DDD, CQRS
Если серьёзно, то видео очень хороши. Крайне дотошно объясняются различные подходы к построению приложения с данными принципами и разъясняется какой из подходов будет самым оптимальным.
Там 18 видео, за раз посмотреть будет тяжко (у меня время к счастью позволяет), но каждый день по видосу — самое то. Дозированно и полезно.