Dishka – внедрение зависимостей
![Dishka – внедрение зависимостей](https://media.proglib.io/posts/2024/07/19/e5ae0d10b6b4aeca9dba310095a3bffc.png)
Внедрение зависимостей – механизм, который позволяет сделать компоненты программы слабо связанными, а всю программу в целом более гибкой, адаптируемой и расширяемой. Вместо того, чтобы объект сам создавал или искал свои зависимости (другие объекты, которые ему нужны для работы), объект объявляет, какие зависимости ему нужны, а внешний механизм (DI-фреймворк) их предоставляет. Такой подход обеспечивает:
- Уменьшение связанности кода – объекты меньше зависят друг от друга.
- Улучшение тестируемости – легче подменять зависимости в тестах.
- Гибкость – можно легко менять реализации зависимостей.
- Повторное использование кода – компоненты становятся более автономными.
А Dishka к тому же предоставляет несколько дополнительных преимуществ:
- Скоупы (области видимости). Позволяет определять разные жизненные циклы для объектов. Например, некоторые объекты могут существовать на протяжении всего времени работы приложения, другие – только в рамках одного запроса.
- Финализация. Поддерживает корректное освобождение ресурсов, например, закрытие соединений с базой данных.
- Модульные провайдеры. Позволяет разделить логику создания зависимостей на несколько классов, что упрощает переиспользование кода.
- Чистые зависимости. Не требует изменения кода самих зависимостей, вся настройка происходит в провайдерах.
Momentum – тестирование и анализ бэкенд-кода
![Momentum – тестирование и анализ бэкенд-кода](https://media.proglib.io/posts/2024/07/19/fffd84ba329de291b10225a857aa50e8.png)
Momentum – продвинутый инструмент для аудита кода. Он анализирует поведение кода и тестирует его при каждом git push, чтобы убедиться, что код готов к использованию в продакшене. Поведение в контексте Momentum – это определенная задача или функциональность в приложении. Например:
- Простые действия – удаление документа через API или создание нового пользователя в базе данных.
- Сложные операции – получение данных от стороннего API для проверки статуса платежа.
Основная функциональность:
- Анализ кодовой базы – автоматически определяет поведение и функциональность кода, визуализирует зависимости и связи.
- Оценка влияния изменений – определяет «радиус поражения» (точки, которые могут быть затронуты внесенными изменениями). Помогает понять, какие части кода нуждаются в тестировании перед отправкой в продакшн.
- Автоматическая генерация тестов – создает план тестирования для выявленных поведений, генерирует тесты.
- Интеграция с IDE – запускает сгенерированные тесты в локальной среде. Не требует дополнительных конфигураций – работает с существующим окружением.
- Отладка и диагностика – выполняет трассировку стека, анализирует ход исполнения кода и предлагает решения для обнаруженных проблем.
- Интеграция с процессом разработки – работает при каждом git push, обеспечивая постоянный контроль качества кода.
Posting – работа с HTTP-запросами в терминале
![Posting – работа с HTTP-запросами в терминале](https://media.proglib.io/posts/2024/07/19/71b2379e82827d12e8df52f3774d64df.png)
Posting – HTTP-клиент, аналогичный Postman или Insomnia, но работающий в терминале. Позволяет отправлять HTTP-запросы, тестировать и отлаживать API. Особенности:
- Использует YAML-файлы для сохранения запросов.
- Позволяет использовать разные конфигурации для разных сред.
- Подсвечивает синтаксис с помощью tree-sitter.
- Работает через SSH – можно использовать удаленно.
- Может импортировать спецификации OpenAPI.
Crawlee – веб-скрапинг и автоматизация браузера
![Crawlee – веб-скрапинг и автоматизация браузера](https://media.proglib.io/posts/2024/07/19/4a7032e5914dc962aece79f5458a18dc.png)
Crawlee – библиотека для создания надежных и быстрых скраперов, которые взаимодействуют с веб-страницами максимально естественно, как если бы это делал человек, и благодаря этому не попадают в поле зрение системы защиты от ботов. От простых HTTP-библиотек Crawlee выгодно отличается тем, что предоставляет комплексное решение для скрапинга, а в сравнении со Scrapy выигрывает с точки зрения встроенной поддержки браузерного краулинга и более современного асинхронного подхода.
Основная функциональность:
- Унифицированный интерфейс для HTTP и браузерного краулинга.
- Автоматическое параллельное выполнение запросов.
- Встроенная ротация прокси и управление сессиями.
- Настраиваемая маршрутизация запросов.
- Постоянная очередь URL для обхода.
- Хранение как табличных данных, так и файлов.
- Поддержка BeautifulSoup и Playwright.
Django AI Assistant
![Django AI Assistant](https://media.proglib.io/posts/2024/07/19/35447f81e1b4afbbfb30538508c5cef2.png)
Django AI Assistant позволяет легко интегрировать современные языковые модели с Django, что открывает широкие возможности для создания интеллектуальных и интерактивных веб-приложений. С помощью этого фреймворка можно, например, быстро сделать:
- Чат-бот для рекомендации фильмов.
- Автозаполнение форм в приложении.
- Персонализированные email-напоминания.
- Интерактивный туристический путеводитель.
Комментарии