Купил сегодня докер, пацаны
Классная штука, советую👍🏻
Docker no cap🧢

Настал момент после 3 месяцев разработки, когда пора показывать собственникам компании результат нашей работы по новой итерации продукта и пускать её потихоньку в прод. Для этого мы даже отдельный сервер выпросили. Всю настройку отдали мне, это были хорошие времена — я получил возможность в рабочее время прибраться в проектах по части деплоя и изучить поглубже эту тему.
Первой задачей было привести конфиги к единому виду, чтобы при разворачивании проекта где угодно необходимо было создать минимальное количество локальных конфигов, будь то .env или docker-compose.override.yml. Из трёх проектов только в одном локальный конфиг получился больше 10 строк. В остальных двух это максимум 3-5 строчек. Приемлемый результат, хотя до zero-config ещё расти и расти.
Второй задачей было поднятие раннеров для ci/cd. Мы сидим на гитлабе, поэтому всё оказалось крайне просто — копируешь токен из репозитория, регистрируешь раннер на сервере, ставишь тег production/development и погнали. Сделать это надо было для 4 проектов, в каждом из которых dev и prod окружения, итого 8. Заняло всё в итоге 20 минут, но ощущения просто несравнимые, когда пушишь в dev и деплой проходит на тестовом контуре, пушишь в main и деплой уходит на продовский контур. Детский восторг прям какой-то был.
Всё это очень круто и весело, но сидеть целыми заниматься инфрой я бы не стал, пожалуй, пока не готов целый день ковыряться в конфигах 😀
Сижу, значит, смотрю очередной видос от Primeagen'а и тут замечаю, что я оказался на экране
https://youtu.be/qKU5wOqPF8g — 6:02, коммент внизу видео
Ржака, я даже не знал, что этот коммент собрал 500 лайков, ютуб тупо молчит об этом 🙁
Прошло 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😩
