Forwarded from high profit — low life
⚡️ AffPapa теперь официально принадлежит Иванову
Евгений Юрьич продолжает издеваться над опозорившимся этим летом AffPapa. Вслед за базой контактов к маэстро ушел еще и товарный знак конторы...
Как проверить:
1. Перейти по ссылке
2. Ввести 2026793242
3. Ахуеть от беспомощности AffPapa
Такие сегодня новости, такая life...
High Profit — Low Life | Прислать сплетню
Евгений Юрьич продолжает издеваться над опозорившимся этим летом AffPapa. Вслед за базой контактов к маэстро ушел еще и товарный знак конторы...
Как проверить:
1. Перейти по ссылке
2. Ввести 2026793242
3. Ахуеть от беспомощности AffPapa
Такие сегодня новости, такая life...
High Profit — Low Life | Прислать сплетню
FastAPI ломается не на роутинге, а на неявных зависимостях и типах
Чаще всего проект начинает “тормозить” не из-за самого фреймворка, а из-за того, как в нём собирают сервисный слой. Если зависимость тянет БД, кэш и внешний API в одном вызове, тестировать и отлаживать это почти невозможно.
Держите базовый чек-лист:
— разделяйте endpoint, service и repository;
— выносите I/O в отдельные функции, а не в обработчик;
— для входа и выхода используйте pydantic-схемы, а не сырые dict;
— не смешивайте бизнес-логику с зависимостями через Depends, если это можно передать явно.
Ещё одна частая ошибка — считать, что async везде ускорит код. Если внутри синхронный драйвер, тяжёлый JSON или блокирующий SDK, event loop всё равно будет ждать. В таком месте лучше честно оставить sync-участок или вынести его в отдельный worker.
И последнее: держите OpenAPI и схемы ответа в порядке. Когда контракт не совпадает с реальным payload, интеграции ломаются тихо, а поиск причины занимает больше всего времени. Хороший FastAPI-проект читается не по количеству эндпоинтов, а по тому, насколько предсказуемо в нём проходят данные.
Чаще всего проект начинает “тормозить” не из-за самого фреймворка, а из-за того, как в нём собирают сервисный слой. Если зависимость тянет БД, кэш и внешний API в одном вызове, тестировать и отлаживать это почти невозможно.
Держите базовый чек-лист:
— разделяйте endpoint, service и repository;
— выносите I/O в отдельные функции, а не в обработчик;
— для входа и выхода используйте pydantic-схемы, а не сырые dict;
— не смешивайте бизнес-логику с зависимостями через Depends, если это можно передать явно.
Ещё одна частая ошибка — считать, что async везде ускорит код. Если внутри синхронный драйвер, тяжёлый JSON или блокирующий SDK, event loop всё равно будет ждать. В таком месте лучше честно оставить sync-участок или вынести его в отдельный worker.
И последнее: держите OpenAPI и схемы ответа в порядке. Когда контракт не совпадает с реальным payload, интеграции ломаются тихо, а поиск причины занимает больше всего времени. Хороший FastAPI-проект читается не по количеству эндпоинтов, а по тому, насколько предсказуемо в нём проходят данные.
Forwarded from В арбитраже денег нет?
ЕЮ Иванов продолжает кошмарить АффПапу, конторку, которая накинула говна на вентилятор этим летом. Тогда в AffPapa не знали, с каким говном идут бодаться, поэтому заслуженно проиграли. 😏
На этот раз ЕЮ зарегал товарный знак AffPapa — совсем скоро имя компании будет официально принадлежать ему. Чтобы убедиться в трушности мува, переходим по ссыл-Очке и вводим серийный номер: 2026793242. Там видим, что заявка на регистрацию подана лично Евгением Юрьичем.
Всё это выглядит забавно, но давайте не забывать, в какой сфере мы работаем и что реально может произойти с жирным троллем за воровство нейминга. Впрочем, толстому не привыкать отхватывать пиздов за проделки в интернете, поэтому ждем очередную фотку разбитого ебала и длинный пост с извинениями. 😏😏😏
В арбитраже денег нет 💵
На этот раз ЕЮ зарегал товарный знак AffPapa — совсем скоро имя компании будет официально принадлежать ему. Чтобы убедиться в трушности мува, переходим по ссыл-Очке и вводим серийный номер: 2026793242. Там видим, что заявка на регистрацию подана лично Евгением Юрьичем.
Всё это выглядит забавно, но давайте не забывать, в какой сфере мы работаем и что реально может произойти с жирным троллем за воровство нейминга. Впрочем, толстому не привыкать отхватывать пиздов за проделки в интернете, поэтому ждем очередную фотку разбитого ебала и длинный пост с извинениями. 😏😏😏
В арбитраже денег нет 💵
Copilot — релиз года или просто автодополнение на стероидах?
Copilot хорош не как «пиши за меня всё», а как ускоритель рутины: генерация шаблонов, тестов, обвязки, SQL, однотипных функций. Если относиться к нему как к junior-помощнику с хорошей памятью, он реально экономит время. Если ждать от него магии, получите красивый мусор и лишний рефакторинг.
Рабочий сценарий обычно такой:
— сначала даёте контекст: файл, стиль кода, ограничения;
— потом просите узкую задачу, а не «сделай модуль»;
— затем проверяете diff глазами, особенно edge cases и импорты;
— в конце прогоняете тесты, потому что llm любит уверенно галлюцинировать.
Где Copilot часто промахивается: скрытые зависимости, архитектурные решения, доменные правила, неочевидные побочные эффекты. Он отлично угадывает продолжение паттерна, но плохо понимает, когда паттерн вообще не нужен. Поэтому лучший режим — не автопилот, а парный разработчик, которому вы коротко объясняете задачу и сразу ставите рамки.
Если использовать Copilot как ускоритель набора, а не замену мышлению, он превращается в очень полезный dev_saas-слой поверх редактора. Но да, иногда это просто умный таб-комплит, который слишком уверенно пишет ерунду — может и не взлетит без вашего контроля.
Copilot хорош не как «пиши за меня всё», а как ускоритель рутины: генерация шаблонов, тестов, обвязки, SQL, однотипных функций. Если относиться к нему как к junior-помощнику с хорошей памятью, он реально экономит время. Если ждать от него магии, получите красивый мусор и лишний рефакторинг.
Рабочий сценарий обычно такой:
— сначала даёте контекст: файл, стиль кода, ограничения;
— потом просите узкую задачу, а не «сделай модуль»;
— затем проверяете diff глазами, особенно edge cases и импорты;
— в конце прогоняете тесты, потому что llm любит уверенно галлюцинировать.
Где Copilot часто промахивается: скрытые зависимости, архитектурные решения, доменные правила, неочевидные побочные эффекты. Он отлично угадывает продолжение паттерна, но плохо понимает, когда паттерн вообще не нужен. Поэтому лучший режим — не автопилот, а парный разработчик, которому вы коротко объясняете задачу и сразу ставите рамки.
Если использовать Copilot как ускоритель набора, а не замену мышлению, он превращается в очень полезный dev_saas-слой поверх редактора. Но да, иногда это просто умный таб-комплит, который слишком уверенно пишет ерунду — может и не взлетит без вашего контроля.
Starlette ломают не маршруты, а обработчики запросов и фоновые задачи
Starlette часто берут как «лёгкий ASGI-слой», а потом удивляются, почему приложение ведёт себя нестабильно. Главные причины обычно не в роутинге, а в том, как собраны middleware, зависимости и lifecycle.
Проверь базовый набор:
— не держи тяжёлую инициализацию в обработчике запроса;
— не запускай блокирующий I/O напрямую внутри async-кода;
— не полагайся на фоновые задачи для критичной бизнес-логики;
— не смешивай state на уровне модуля с данными конкретного запроса.
Ещё одна типовая ошибка — игнорировать границы между ASGI и синхронным кодом. Если внутри эндпоинта вызывается ORM, парсер или внешняя библиотека без обёртки, event loop начинает тормозить. Внешне это выглядит как «медленный Starlette», хотя проблема сидит в одной функции.
Хорошая схема простая: всё, что может ждать, уводишь в отдельный worker; всё, что должно отвечать быстро, оставляешь в request path; для shared-данных используешь явные объекты, а не глобальные переменные.
Если Starlette начинает «сыпаться», сначала смотри на блокировки, lifecycle и фоновые задачи — в этих трёх местах обычно спрятан реальный баг.
Starlette часто берут как «лёгкий ASGI-слой», а потом удивляются, почему приложение ведёт себя нестабильно. Главные причины обычно не в роутинге, а в том, как собраны middleware, зависимости и lifecycle.
Проверь базовый набор:
— не держи тяжёлую инициализацию в обработчике запроса;
— не запускай блокирующий I/O напрямую внутри async-кода;
— не полагайся на фоновые задачи для критичной бизнес-логики;
— не смешивай state на уровне модуля с данными конкретного запроса.
Ещё одна типовая ошибка — игнорировать границы между ASGI и синхронным кодом. Если внутри эндпоинта вызывается ORM, парсер или внешняя библиотека без обёртки, event loop начинает тормозить. Внешне это выглядит как «медленный Starlette», хотя проблема сидит в одной функции.
Хорошая схема простая: всё, что может ждать, уводишь в отдельный worker; всё, что должно отвечать быстро, оставляешь в request path; для shared-данных используешь явные объекты, а не глобальные переменные.
Если Starlette начинает «сыпаться», сначала смотри на блокировки, lifecycle и фоновые задачи — в этих трёх местах обычно спрятан реальный баг.