Я не использую LLM, потому что она украдёт мой код Только этот код никому не нужен, кроме меня/заказчика/работодателя. Заказчику даже нужен не код, а решение проблемы. Код сам по себе не приносит деньги, пока не превращается в продукт или услугу. Монетизация кода заключается в его использовании для создания решения, которое можно продавать разово или по подписке, лицензировать, обеспечивая тем самым доход и ценность для бизнеса. Код является важной частью бизнеса, особенно в технических компания...
TIMOFEEV Tech Talk
Про жизнь в IT, высокие нагрузки, качество, микросервисы и масштабируемые приложения, PHP, DDD Blog: https://timofeev.expert/blog TG: @TimofeevVM
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
20 из 20Тема этой недели для меня Outbox Transactional, я рассказывал про него аж 3 командам 7 раз за эту неделю. Мне часто попадался этот паттерн в youtube с разных конференций, и тема мне так надоела, что я задавался вопросом, сколько этот паттерн можно уже разжевывать 🙂 а сегодня про него я пишу пост. На своем опыте убедился, что паттерн требует внимания, а именно распространения его в массы. Я не буду рассказывать как его реализовать, посмотрите на ютюбе. Подсвечу только проблему, которую он р...
Ну и финалимся по теме Long Running 6 из 8 Мониторинг Long Running скрипт, который работает около бесконечно, но как понять действительно ли он работает или просто завис? Есть куча вариантов как сделать мониторинг, всё зависит от ваших потребностей, текущей инфраструктуры и желания её развивать. Самый простой способ -- это писать логи о каждой итерации. По логам будет понятно, живет скрипт или завис. Второй способ -- это использование внешних систем мониторинга типа sentry или new relic. Дальше ...
В Symfony и Laravel любят настраивать различные компоненты с помощью YAML, ассоциативных массивов, XML. Когда YAML появился в моей жизни, я думал капец, как это круто! Стильно, модно, молодежно. Но ничего подобного. Радует, что “doctrine” отказались от YAML. Проблема всех этих форматов для конфигов в том, что они требуют доп валидации и проверок. Стат анализ ловит не всё, либо вообще ничего, а чтобы в IDE можно было прослеживать зависимости, если указываем классы, нужен либо плагин под фреймворк...
Tech generation gap Или старая школа против новой школы 1950-1960 В 50-х случилась первая революция в программировании — появился Fortran. Олды, привыкшие писать на ассемблере и колдовать с перфокартами, были в шоке: "Высокоуровневый язык? Серьёзно?" Они считали, что настоящий программист обязан понимать каждый байт и такие абстракции убьют всю производительность. В те времена айтишники были реально как небожители — попасть в профессию стоило космических денег, а знания передавались чуть ли не и...
package by feature Упаковка кода Хотел написать пост про package by feature, но когда начал собирать фактуру, понял, что проблема, которую я хотел обозреть, куда глубже. Поэтому сегодня поговорим про упаковку кода в целом. На своей практике я чаще всего вижу 2 варианта упаковки кода: 1. Package by type - когда проект состоит из таких папок, как Controllers, Services, Repositories, Entities, DTOs и т.д. Обычный скелетон, который предлагает любой фреймворк. 2. Package by layer - когда проект состо...
А знаете, в чем парадокс? В DDD одно из ключевых идей заключается в том, что код должен быть написан так, чтобы бизнес-эксперт (доменный эксперт) мог его прочитать и понять, что происходит, даже не будучи программистом. Внедрить DDD оч сложно, сопротивление ждет на каждом уровне, от разработчиков, экспертов и начальства. Не смог продать? -- Сидишь юзаешь тактические паттерны в свое удовольствие, и спросишь с тимлидом о решениях, вот и всё -- типичное внедрение. Тут же от тебя DDD требует и дисци...
В связи с последними новостями https://www.youtube.com/shorts/_yEWlLPSr2s
5 из 8 Определение $_ENV происходит только при запуске Чтение из env происходит только при запуске скрипта Вообще, есть два варианта инициализации env: 1) приложение читает переменные из файл .env - в этом случае можно просто перечитывать файл раз в какой-то период $dotenv = Dotenv\Dotenv::createImmutable(DIR); $dotenv->load(); 2) переменные задаются при запуске контейнера, например, из AWS Secrets Manager, Gitlab Variables, или так же из файл .env через docker compose. В это...
4 из 8 Обработка исключений и ошибок Нужно более тщательно обрабатывать ошибки, ловить exceptions, чтобы скрипт не падал в случае какой-то ошибки, которой можно пренебречь. Например, не удалось обработать одно из сообщений из брокера очередей, это не значит, что мы должны остановить обработку очереди. Решение простое, обернуть процессинг в try-catch <?php ... while (shouldStop() === false) { ... try { $messageProcessor->process($message); } catch (Throwable) { // тут стоит добавить лог...