Media is too big
VIEW IN TELEGRAM
Главная цель - чтобы через полгода было не стыдно открывать код: понятно где что лежит, как это тестировать и куда встраивать новые фичи.
Основные принципы:
- Разделяй по ответственности, а не по типу файла
- Минимизируй связь между слоями
- Явно отделяй ядро домена от инфраструктуры (БД, HTTP, очереди)
Пример базовой структуры:
- app/
- api/ - HTTP handlers, REST, gRPC, CLI
- services/ - бизнес-логика, сценарии use case
- domain/ - сущности, модели, value objects
- repositories/ - работа с БД, кэшами, внешними сервисами
- config/ - настройки, env, схемы конфигурации
- utils/ - вспомогательные функции, которые не завязаны на домен
- tests/ - тесты по тем же модулям, что и в app/
- scripts/ - миграции, разовые утилиты, maintenance
Рекомендации:
- Один входной файл (main.py или cli.py), вся логика - в app/*
- Конфигурацию не хардкодить, а прокидывать через env и config-объекты
- Внутри services работать с абстрактными интерфейсами репозиториев, а не с конкретным ORM
- С самого начала заводить тесты, пусть даже простые, и поддерживать схему tests/ в том же дереве, что и код
- Любой новый модуль должен отвечать на вопрос: к какому слою относится и от кого ему можно зависеть
Если проект растет, не бойся дробить:
- крупный модуль на подмодули
- общие зависимости в отдельный layer (shared, common)
- разные bounded context в отдельные пакеты внутри app/
Архитектура большого проекта - это не про идеальный паттерн, а про понятные границы и минимальный хаос.
https://uproger.com/kak-organizovat-arhitekturu-bolshogo-python-proekta/
Видео: https://www.youtube.com/watch?v=Dk7A8ElHcKE
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3🔥1
🕵️♂️ Spyder: OSINT Research Tool
Spyder — это универсальный инструмент для открытой разведки (OSINT), который позволяет выполнять поиск информации по крупным глобальным базам данных. Он предоставляет доступ к данным о номерах телефонов, IP-адресах, социальных сетях и многом другом.
🚀Основные моменты:
- Поиск информации о номерах телефонов и IP-адресах
- Доступ к данным социальных сетей (Facebook, Instagram и др.)
- Поиск по именам и физическим адресам
- Проверка доменов и номерных знаков
- Утилита для бомбардировки электронной почты
📌 GitHub: https://github.com/portrret/spyder-osint
Spyder — это универсальный инструмент для открытой разведки (OSINT), который позволяет выполнять поиск информации по крупным глобальным базам данных. Он предоставляет доступ к данным о номерах телефонов, IP-адресах, социальных сетях и многом другом.
🚀Основные моменты:
- Поиск информации о номерах телефонов и IP-адресах
- Доступ к данным социальных сетей (Facebook, Instagram и др.)
- Поиск по именам и физическим адресам
- Проверка доменов и номерных знаков
- Утилита для бомбардировки электронной почты
📌 GitHub: https://github.com/portrret/spyder-osint
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Python: Эффективное использование контекстных менеджеров
Контекстные менеджеры в Python позволяют управлять ресурсами и предотвратить утечки, особенно при работе с файлами. Используя
https://www.youtube.com/shorts/I8j3Y6NunYg
Контекстные менеджеры в Python позволяют управлять ресурсами и предотвратить утечки, особенно при работе с файлами. Используя
with, вы гарантируете, что файл будет закрыт автоматически, даже если произойдет ошибка.
from contextlib import contextmanager
@contextmanager
def open_file(filename):
try:
f = open(filename, 'r')
yield f
finally:
f.close()
with open_file('example.txt') as file:
data = file.read()
print(data)
https://www.youtube.com/shorts/I8j3Y6NunYg
❤2