RU

150 запросов на один flush, и 4343 зелёных теста. Как я делал детектор N+1 и как он сам меня обманывал

Один open-source тайм-трекер на Symfony имеет 4343 теста, и все они проходят. При этом каждое сохранение записи времени отправляет в базу три дополн…

phpunitdoctrinelaraveln+1ormленивая загрузкаquery-guard
Habr
RU

Предзагрузил пачкой — получил N² запросов. Как expire_on_commit превращает оптимизацию в квадрат

Бывают ошибки, которые не видит ни ревью, ни тесты: код отрабатывает правильно, прогон зелёный, а запросов к базе он делает в сто раз больше прежнег…

sqlalchemyormpostgresqlpythonn+1оптимизацияпроизводительностьexpire_on_commitпрофилирование
Habr
RU

Я написал ASGI-фреймворк, в котором дерево папок — это и есть API

Несколько месяцев пилил pet-проект, который зашёл дальше, чем планировал: файловый ASGI-фреймворк, где дерево папок — это и есть таблица роутов. Сег…

pythonasgiвеб-фреймворкormpostgresqlopen sourceбезопасностьтестированиебэкенд
Habr
RU

Два года один пилю MMORPG на CI4: пять багов, за каждым из которых стоял живой игрок

Строка “false” в PHP равна true. Я узнал это, когда рубильник, которым я выключаю фичи перед живыми игроками, полгода отказывался выключаться. Два г…

codeigniter 4phpphpstanmysqlormutf8mb4граблиmmorpgtelegram ботрефакторинг