This media is not supported in your browser
VIEW IN TELEGRAM
Как быстро найти, какой процесс держит порт в Linux
Когда порт занят, а ты не знаешь какой процесс его занимает — вместо копаний в журналах можно сразу найти виновника одной командой.
Особенно полезно при отладке dev-серверов, docker, ssh и прочего.
Это незаменимая команда, когда nginx не стартует, python выдает ошибки, или docker ругается на занятый порт.
Ставь лайк и подписывайся — каждый день публикуем полезные и не банальные советы для разработчиков. Пиши в коментах какие команды используешь каждый день!
///
sudo lsof -i :PORT
или
sudo fuser -v PORT/tcp
-lsof покажет PID, команду, пользователя и путь
- fuser сразу скажет, можно ли убить процесс (-k для убийства)
- Работает с TCP и UDP (например, fuser -v 53/udp для DNS)
@python_be1
Когда порт занят, а ты не знаешь какой процесс его занимает — вместо копаний в журналах можно сразу найти виновника одной командой.
Особенно полезно при отладке dev-серверов, docker, ssh и прочего.
Это незаменимая команда, когда nginx не стартует, python выдает ошибки, или docker ругается на занятый порт.
Ставь лайк и подписывайся — каждый день публикуем полезные и не банальные советы для разработчиков. Пиши в коментах какие команды используешь каждый день!
///
sudo lsof -i :PORT
или
sudo fuser -v PORT/tcp
-lsof покажет PID, команду, пользователя и путь
- fuser сразу скажет, можно ли убить процесс (-k для убийства)
- Работает с TCP и UDP (например, fuser -v 53/udp для DNS)
@python_be1
🧩 Задача для разминки
Что выведет этот код? Попробуй догадаться без запуска.
```
class Sneaky:
def __eq__(self, other):
print("Comparing!")
return True
a = Sneaky()
b = [a]
print(a in b)
print(a == b[0])
print(b.count(a))
```
🤔 Подумай: сколько раз вызовется <i>eq</i>?
🎯 Разбор:
print(a in b)
🔍 Проверка a in b вызывает b.__contains__(a), который по умолчанию использует ==.
👉 Вызовется <i>eq</i>, будет True.
print(a == b[0])
🔍 Прямое сравнение — снова <i>eq</i>.
print(b.count(a))
🔍 list.count сравнивает каждый элемент с ==. В нашем списке один элемент — a.
👉 Опять вызывается <i>eq</i>.
[спойлер: 💥 Вывод будет:
Comparing!
True
Comparing!
True
Comparing!
1]
📌 [спойлер: Вывод: __eq__ сработал 3 раза, и каждый раз напечатал "Comparing!".
🧠 Уловка: Python-списки используют ==, даже если это один и тот же объект! Да, a == a всё равно вызовет __eq__, если он определён.
⚠️ Фишка для интервью:
Можно подменить поведение ==, но is (сравнение идентичности) всегда быстрее и не вызывает магии.]
@python_be1
Что выведет этот код? Попробуй догадаться без запуска.
```
class Sneaky:
def __eq__(self, other):
print("Comparing!")
return True
a = Sneaky()
b = [a]
print(a in b)
print(a == b[0])
print(b.count(a))
```
🤔 Подумай: сколько раз вызовется <i>eq</i>?
🎯 Разбор:
print(a in b)
🔍 Проверка a in b вызывает b.__contains__(a), который по умолчанию использует ==.
👉 Вызовется <i>eq</i>, будет True.
print(a == b[0])
🔍 Прямое сравнение — снова <i>eq</i>.
print(b.count(a))
🔍 list.count сравнивает каждый элемент с ==. В нашем списке один элемент — a.
👉 Опять вызывается <i>eq</i>.
[спойлер: 💥 Вывод будет:
Comparing!
True
Comparing!
True
Comparing!
1]
📌 [спойлер: Вывод: __eq__ сработал 3 раза, и каждый раз напечатал "Comparing!".
🧠 Уловка: Python-списки используют ==, даже если это один и тот же объект! Да, a == a всё равно вызовет __eq__, если он определён.
⚠️ Фишка для интервью:
Можно подменить поведение ==, но is (сравнение идентичности) всегда быстрее и не вызывает магии.]
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
Linux: как быстро найти, какие файлы занимают больше всего места в системе
Когда df -h показывает, что диск забит, но ты не понимаешь, что именно съело память, вот команда, которая спасает.
Она отлично работает, когда нужно:
– найти огромный лог или зависший кэш
– понять, где лежит более 100 Гигабайт
– навести порядок перед бэкапом системы
Для интерактивного анализа — можно подключить ncdu.
@python_be1
Когда df -h показывает, что диск забит, но ты не понимаешь, что именно съело память, вот команда, которая спасает.
Она отлично работает, когда нужно:
– найти огромный лог или зависший кэш
– понять, где лежит более 100 Гигабайт
– навести порядок перед бэкапом системы
Для интерактивного анализа — можно подключить ncdu.
@python_be1
💼 Готовый проект на Python: асинхронный сервис отслеживания цены акций
Отслеживает цены акций в реальном времени, рассылает push-уведомления при достижении триггеров и предоставляет REST + WebSocket API для фронтенда.
Почему проект ценен для портфолио
- Показывает владение современным стеком: FastAPI + WebSockets + asyncio, PostgreSQL, Redis, Docker, CI/CD.
- Демонстрирует продвинутые практики: типы (pydantic, mypy), тесты (pytest, pytest-asyncio), линтеры, GitHub Actions.
- Подходит для live-демо: легко задеплоить на Render/Fly.io/Hetzner и показать работу в браузере.
➡️ Читать статью (https://uproger.com/gotovyj-portfelnyj-proekt-na-python-asinhronnyj-servis-otslezhivaniya-czeny-akczij/)
@python_be1
Отслеживает цены акций в реальном времени, рассылает push-уведомления при достижении триггеров и предоставляет REST + WebSocket API для фронтенда.
Почему проект ценен для портфолио
- Показывает владение современным стеком: FastAPI + WebSockets + asyncio, PostgreSQL, Redis, Docker, CI/CD.
- Демонстрирует продвинутые практики: типы (pydantic, mypy), тесты (pytest, pytest-asyncio), линтеры, GitHub Actions.
- Подходит для live-демо: легко задеплоить на Render/Fly.io/Hetzner и показать работу в браузере.
➡️ Читать статью (https://uproger.com/gotovyj-portfelnyj-proekt-na-python-asinhronnyj-servis-otslezhivaniya-czeny-akczij/)
@python_be1
Лучшие базы данных — и где они их использовать
1. PostgreSQL — универсальная реляционная БД
→ бизнес-приложения, аналитика, геоданные (PostGIS), JSON + SQL в одном
2. SQLite — встраиваемая БД без сервера
→ мобильные приложения, локальное хранение, CLI-инструменты, тесты
3. MySQL / MariaDB — быстрые SQL-БД для веба
→ сайты, CMS, WordPress, стартапы с LAMP-стеком
4. MongoDB — документо-ориентированная NoSQL
→ JSON‑подобные данные, прототипы, быстро меняющиеся схемы
5. Redis — in-memory key-value store
→ кеширование, очереди, счётчики, real-time метрики
6. ClickHouse — колоночная аналитическая БД
→ аналитика, лог-системы, BI‑дашборды, миллиарды строк — за миллисекунды
7. Neo4j — графовая БД
→ социальные графы, связи между сущностями, рекомендации
8. TimescaleDB — time-series над PostgreSQL
→ телеметрия, мониторинг, временные ряды, IoT
9. Cassandra — масштабируемая распределённая NoSQL
→ high-availability, терабайты данных, логика без джинов.
10. DuckDB — это современная in-process аналитическая СУБД, разработанная как “SQLite для аналитики
t.me/ - наш телеграм канал с гайдами
@python_be1
1. PostgreSQL — универсальная реляционная БД
→ бизнес-приложения, аналитика, геоданные (PostGIS), JSON + SQL в одном
2. SQLite — встраиваемая БД без сервера
→ мобильные приложения, локальное хранение, CLI-инструменты, тесты
3. MySQL / MariaDB — быстрые SQL-БД для веба
→ сайты, CMS, WordPress, стартапы с LAMP-стеком
4. MongoDB — документо-ориентированная NoSQL
→ JSON‑подобные данные, прототипы, быстро меняющиеся схемы
5. Redis — in-memory key-value store
→ кеширование, очереди, счётчики, real-time метрики
6. ClickHouse — колоночная аналитическая БД
→ аналитика, лог-системы, BI‑дашборды, миллиарды строк — за миллисекунды
7. Neo4j — графовая БД
→ социальные графы, связи между сущностями, рекомендации
8. TimescaleDB — time-series над PostgreSQL
→ телеметрия, мониторинг, временные ряды, IoT
9. Cassandra — масштабируемая распределённая NoSQL
→ high-availability, терабайты данных, логика без джинов.
10. DuckDB — это современная in-process аналитическая СУБД, разработанная как “SQLite для аналитики
t.me/ - наш телеграм канал с гайдами
@python_be1
🕸️ Chat4Data — расширение, которое превращает веб-скрапинг в диалог
Вместо кода и настроек — просто говоришь, что хочешь, и AI собирает структурированные данные с сайта.
Что умеет Chat4Data:
🔹 Собирает данные “на слух”
Опиши нужную таблицу или список — AI сам найдёт, распарсит и вставит в таблицу. Не нравится результат? Переспроси. Без кода, без боли.
🔹 Обходит все страницы сам
Автоматически кликает “Следующая”, грузит подгружаемые списки и собирает всё — без твоего участия.
🔹 Запускается за 3 клика
AI сам определяет, какие данные ценные, предлагает их — тебе остаётся только подтвердить. Быстро, как в Telegram-боте.
🔹 Не тратит токены на скрапинг
Анализ страницы — на AI, но сами данные забираются без токенов. В бета-версии дают 1 миллион токенов на другие задачи.
🔹 Скоро: скрапинг подстраниц, интерактив, интеграции...
📎 https://chat4data.ai
#ai #scraping #automation #nocode #tools
@python_be1
Вместо кода и настроек — просто говоришь, что хочешь, и AI собирает структурированные данные с сайта.
Что умеет Chat4Data:
🔹 Собирает данные “на слух”
Опиши нужную таблицу или список — AI сам найдёт, распарсит и вставит в таблицу. Не нравится результат? Переспроси. Без кода, без боли.
🔹 Обходит все страницы сам
Автоматически кликает “Следующая”, грузит подгружаемые списки и собирает всё — без твоего участия.
🔹 Запускается за 3 клика
AI сам определяет, какие данные ценные, предлагает их — тебе остаётся только подтвердить. Быстро, как в Telegram-боте.
🔹 Не тратит токены на скрапинг
Анализ страницы — на AI, но сами данные забираются без токенов. В бета-версии дают 1 миллион токенов на другие задачи.
🔹 Скоро: скрапинг подстраниц, интерактив, интеграции...
📎 https://chat4data.ai
#ai #scraping #automation #nocode #tools
@python_be1
⚡️ Microsoft обновила собственный бесплатный курс по генеративному ИИ
В курсе видео, практика (код) и дополнительные материалы.
Пргорамма курса состоит из изучения структуры и работы LLM, тонкостям промптинга, созданию собственного приложения для генерации изображений, функционалу RAG для LLM и принципам файнтюна.
📌 А здесь мы вылудили полный список бесплатных курсов. (https://uproger.com/luchshie-besplatnye-kursy-po-iskusstvennomu-intellektu/)
Для прохождения курса нужны:
- учетная запись на Azure
- доступ к api OpenAI
Разумеется, все методики и манипуляции предлагается выполнять обучающимся в экосистеме Microsoft, на их мощностях и с использованием их сервисов.
Бэкенд учебного приложения для генерации картинок - DALLE и Midjourney.
Большие надежды строить относительно курса не стоит - экосисистема Microsoft требует отдельных компетенций, но в качестве базового структурированного курса для новичков - вполне подойдет.
🖥 Курс полностью выложен на Github: https://github.com/microsoft/generative-ai-for-beginners
@python_be1
В курсе видео, практика (код) и дополнительные материалы.
Пргорамма курса состоит из изучения структуры и работы LLM, тонкостям промптинга, созданию собственного приложения для генерации изображений, функционалу RAG для LLM и принципам файнтюна.
📌 А здесь мы вылудили полный список бесплатных курсов. (https://uproger.com/luchshie-besplatnye-kursy-po-iskusstvennomu-intellektu/)
Для прохождения курса нужны:
- учетная запись на Azure
- доступ к api OpenAI
Разумеется, все методики и манипуляции предлагается выполнять обучающимся в экосистеме Microsoft, на их мощностях и с использованием их сервисов.
Бэкенд учебного приложения для генерации картинок - DALLE и Midjourney.
Большие надежды строить относительно курса не стоит - экосисистема Microsoft требует отдельных компетенций, но в качестве базового структурированного курса для новичков - вполне подойдет.
🖥 Курс полностью выложен на Github: https://github.com/microsoft/generative-ai-for-beginners
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🧠 Ускорь import в Python-проектах с помощью lazy loading — без изменения логики
Если у тебя проект с тяжёлыми модулями (`pandas`, `torch`, `tensorflow`), но они не всегда нужны — не загружай их зря. Python позволяет **отложить импорт до первого использования**, через встроённый `importlib`.
Вот как это выглядит на практике:
```
import importlib
# Обёртка для ленивого импорта
def lazy_import(name):
return importlib.util.LazyLoader(importlib.import_module(name))
# Использование
np = lazy_import('numpy')
# numpy ещё не загружен
# Теперь загрузится:
print(np.array([1, 2, 3]))
```
@python_be1
Если у тебя проект с тяжёлыми модулями (`pandas`, `torch`, `tensorflow`), но они не всегда нужны — не загружай их зря. Python позволяет **отложить импорт до первого использования**, через встроённый `importlib`.
Вот как это выглядит на практике:
```
import importlib
# Обёртка для ленивого импорта
def lazy_import(name):
return importlib.util.LazyLoader(importlib.import_module(name))
# Использование
np = lazy_import('numpy')
# numpy ещё не загружен
# Теперь загрузится:
print(np.array([1, 2, 3]))
```
@python_be1
🧠 GitHub раскрывает планы по следующей эволюции Copilot — от помощника к полноценному агенту.
🔗 В новом посте GitHub делится видением agentic workflows — когда Copilot становится не просто ассистентом, а полноценным участником команды, который умеет:
• понимать задачу целиком,
• планировать шаги,
• писать и менять код,
• создавать PR и даже инициировать обсуждение.
📌 Что важно:
— Copilot теперь работает в рамках цепочек действий (tasks → plans → code)
— Появляются memory и context-aware агенты
— Идея — не просто "автодополнение", а делегирование работы: от заведения ишью до его закрытия
— Акцент на безопасную, контролируемую автоматизацию
⚙️ Пример: вы создаёте issue → Copilot планирует, как решить → предлагает PR → вы ревьюите и мёрджите.
🛠 Уже сейчас GitHub тестирует:
- Copilot Workspace (автогенерация изменений по issue)
- GitHub Agents (task‑oriented агенты для DevOps и beyond)
📎 Читайте подробнее: (https://github.blog/news-insights/product-news/from-pair-to-peer-programmer-our-vision-for-agentic-workflows-in-github-copilot/)
Copilot перестаёт быть просто AI‑другом в редакторе — он становится сотрудником, который понимает задачи, работает в контексте проекта и помогает двигать код вперёд.
@python_be1
🔗 В новом посте GitHub делится видением agentic workflows — когда Copilot становится не просто ассистентом, а полноценным участником команды, который умеет:
• понимать задачу целиком,
• планировать шаги,
• писать и менять код,
• создавать PR и даже инициировать обсуждение.
📌 Что важно:
— Copilot теперь работает в рамках цепочек действий (tasks → plans → code)
— Появляются memory и context-aware агенты
— Идея — не просто "автодополнение", а делегирование работы: от заведения ишью до его закрытия
— Акцент на безопасную, контролируемую автоматизацию
⚙️ Пример: вы создаёте issue → Copilot планирует, как решить → предлагает PR → вы ревьюите и мёрджите.
🛠 Уже сейчас GitHub тестирует:
- Copilot Workspace (автогенерация изменений по issue)
- GitHub Agents (task‑oriented агенты для DevOps и beyond)
📎 Читайте подробнее: (https://github.blog/news-insights/product-news/from-pair-to-peer-programmer-our-vision-for-agentic-workflows-in-github-copilot/)
Copilot перестаёт быть просто AI‑другом в редакторе — он становится сотрудником, который понимает задачи, работает в контексте проекта и помогает двигать код вперёд.
@python_be1
The GitHub Blog
From pair to peer programmer: Our vision for agentic workflows in GitHub Copilot
AI agents in GitHub Copilot don’t just assist developers but actively solve problems through multi-step reasoning and execution. Here’s what that means.
🚀 Шпаргалка по Docker 🐳
🔹 Сборка (Build)
🔹 Запуск (Run)
🔹 Шаринг (Share)
🔹 Управление (Management)
📌 Сборка образов
📍 Создать образ из `Dockerfile` и присвоить тег:
```
docker build -t myimage:1.0 .
```
📍 Посмотреть локальные образы:
```
docker image ls
```
📍 Удалить образ:
```
docker image rm alpine:3.4
```
📌 Запуск контейнеров
📍 Запустить контейнер на порту 5000:
```
docker container run —name web -p 5000:80 alpine:3.9
```
📍 Остановить контейнер:
```
docker container stop web
```
📍 Принудительно завершить контейнер:
```
docker container kill web
```
📍 Список запущенных контейнеров:
```
docker container ls
```
📍 Удалить все контейнеры:
```
docker container rm -f $(docker ps -aq)
```
📌 Работа с образами (Share)
📍 Скачать образ из реестра:
```
docker pull myimage:1.0
```
📍 Изменить тег у локального образа:
```
docker tag myimage:1.0 myrepo/myimage:2.0
```
📍 Запушить образ в реестр:
```
docker push myrepo/myimage:2.0
```
📌 Управление Docker (Management)
⚙️ `docker app` – Управление приложениями
⚙️ `docker image` – Управление образами
⚙️ `docker container` – Управление контейнерами
⚙️ `docker network` – Управление сетями
⚙️ `docker volume` – Управление хранилищами
⚙️ `docker stack` – Управление Docker Stack
⚙️ `docker swarm` – Управление кластером Swarm
⚙️ `docker system` – Управление всей системой
📝 Сохраните, поделитесь с друзьями и подписывайтесь на канал! 💙🐳
#devops #девопс
Подпишись 👉@i_DevOps (https://vk.com/club216361228)
@python_be1
🔹 Сборка (Build)
🔹 Запуск (Run)
🔹 Шаринг (Share)
🔹 Управление (Management)
📌 Сборка образов
📍 Создать образ из `Dockerfile` и присвоить тег:
```
docker build -t myimage:1.0 .
```
📍 Посмотреть локальные образы:
```
docker image ls
```
📍 Удалить образ:
```
docker image rm alpine:3.4
```
📌 Запуск контейнеров
📍 Запустить контейнер на порту 5000:
```
docker container run —name web -p 5000:80 alpine:3.9
```
📍 Остановить контейнер:
```
docker container stop web
```
📍 Принудительно завершить контейнер:
```
docker container kill web
```
📍 Список запущенных контейнеров:
```
docker container ls
```
📍 Удалить все контейнеры:
```
docker container rm -f $(docker ps -aq)
```
📌 Работа с образами (Share)
📍 Скачать образ из реестра:
```
docker pull myimage:1.0
```
📍 Изменить тег у локального образа:
```
docker tag myimage:1.0 myrepo/myimage:2.0
```
📍 Запушить образ в реестр:
```
docker push myrepo/myimage:2.0
```
📌 Управление Docker (Management)
⚙️ `docker app` – Управление приложениями
⚙️ `docker image` – Управление образами
⚙️ `docker container` – Управление контейнерами
⚙️ `docker network` – Управление сетями
⚙️ `docker volume` – Управление хранилищами
⚙️ `docker stack` – Управление Docker Stack
⚙️ `docker swarm` – Управление кластером Swarm
⚙️ `docker system` – Управление всей системой
📝 Сохраните, поделитесь с друзьями и подписывайтесь на канал! 💙🐳
#devops #девопс
Подпишись 👉@i_DevOps (https://vk.com/club216361228)
@python_be1
ВКонтакте
DevOps
Пишем о Docker, Kubernetes, облачные сервисы (AWS, GCP, Azure), Infrastructure as a Code (Terraform, CloudFormation), администрирование Windows и Linux, сети TCP, IP, скрипты (Bash, PowerShell), Ansible, Jenkins, DevSecOps, логирование и тд.
🌟 Odigos — распределенный трейсинг без модификации кода. Этот open-source проект меняет правила игры в observability-инструментах. Инструмент умеет автоматически генерировать распределенные трейсы для приложений на Java, Python, .NET, Node.js и Go без необходимости правки исходного кода.
Под капотом используется eBPF для низкоуровневой инструментации, что особенно ценно для скомпилированных языков вроде Go. Трейсы сразу экспортируются в формате OpenTelemetry, что позволяет интегрироваться с любыми совместимыми системами мониторинга.
🤖 GitHub (https://github.com/odigos-io/odigos)
@python_be1
Под капотом используется eBPF для низкоуровневой инструментации, что особенно ценно для скомпилированных языков вроде Go. Трейсы сразу экспортируются в формате OpenTelemetry, что позволяет интегрироваться с любыми совместимыми системами мониторинга.
🤖 GitHub (https://github.com/odigos-io/odigos)
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️ Подменяй любые импорты в Python “на лету” — без изменения кода
Если ты хочешь протестировать модуль, подменить зависимость, замокать внешний сервис или обмануть импорт — не обязательно редактировать исходники. Python позволяет перехватывать импорты прямо во время выполнения, через `sys.modules`.
Вот минимальный приём, который делает это прозрачно:
```
import sys
import types
# Создаём фейковый модуль
fake = types.SimpleNamespace()
fake.get_data = lambda: "подмена работает"
# Подменяем импорт
sys.modules['external_service'] = fake
# Теперь даже import будет работать
import external_service
print(external_service.get_data()) # → "подмена работает"
```
@python_be1
Если ты хочешь протестировать модуль, подменить зависимость, замокать внешний сервис или обмануть импорт — не обязательно редактировать исходники. Python позволяет перехватывать импорты прямо во время выполнения, через `sys.modules`.
Вот минимальный приём, который делает это прозрачно:
```
import sys
import types
# Создаём фейковый модуль
fake = types.SimpleNamespace()
fake.get_data = lambda: "подмена работает"
# Подменяем импорт
sys.modules['external_service'] = fake
# Теперь даже import будет работать
import external_service
print(external_service.get_data()) # → "подмена работает"
```
@python_be1
🚀 Быстрый HTTP‑сервер на базе asyncio.Protocol
В этом гайде показано как создать минималистичный HTTP‑сервер на Python, используя низкоуровневый API `asyncio.Protocol`, что делает его быстрее и гибче, чем решения на основе `asyncio.Streams` или фреймворков типа FastAPI.
Основные пункты:
1. Сокет-обработчик (`ConnectionHandler`)
- Наследуется от `asyncio.Protocol` — реакции на события `connection_made`, `data_received`, `connection_lost`.
- Хранит буфер, транспорт и маппинг маршрутов.
2. Парсинг HTTP-запросов
- В `data_received` накапливаются байты.
- Запрос считается полным при обнаружении `\r\n\r\n`.
- Затем из заголовков извлекаются `method`, `path`, другие поля.
3. Маршрутизация через декоратор
- Класс `HTTPServer` собирает функции-обработчики для путей.
- Обработчик вызывает либо корутины, либо возвращает статический HTML.
4. Отправка ответа
- Используется `asyncio.create_task` внутри колбэка, чтобы запустить `send_response` — где формируется ответ с HTTP-кодом, заголовками и телом.
- После `write()` соединение закрывается.
5. Простой запуск сервера
- Через `loop.create_server()` создаётся экземпляр `ConnectionHandler`.
- `serve_forever()` запускает обработку соединений.
6. Высокая производительность
Сервер обрабатывает ~100 000 запросов за ~4.2 с при нагрузке 100 одновременных соединений, в то время как FastAPI справляется за ~32 с :contentReference[oaicite:1]{index=1}.
Зачем это полезно:
- Полный контроль над TCP-соединениями и буферами.
- Существенно выше скорость при простых HTTP-API.
- Отличная демонстрация возможностей, которые остаются скрытыми за высокоуровневыми фреймворками.
Поддержка сообщества:
На Reddit статья получила высокую оценку как "отличный материал по Asyncio Protocols"
https://jacobpadilla.com/articles/asyncio-protocols
@python_be1
В этом гайде показано как создать минималистичный HTTP‑сервер на Python, используя низкоуровневый API `asyncio.Protocol`, что делает его быстрее и гибче, чем решения на основе `asyncio.Streams` или фреймворков типа FastAPI.
Основные пункты:
1. Сокет-обработчик (`ConnectionHandler`)
- Наследуется от `asyncio.Protocol` — реакции на события `connection_made`, `data_received`, `connection_lost`.
- Хранит буфер, транспорт и маппинг маршрутов.
2. Парсинг HTTP-запросов
- В `data_received` накапливаются байты.
- Запрос считается полным при обнаружении `\r\n\r\n`.
- Затем из заголовков извлекаются `method`, `path`, другие поля.
3. Маршрутизация через декоратор
- Класс `HTTPServer` собирает функции-обработчики для путей.
- Обработчик вызывает либо корутины, либо возвращает статический HTML.
4. Отправка ответа
- Используется `asyncio.create_task` внутри колбэка, чтобы запустить `send_response` — где формируется ответ с HTTP-кодом, заголовками и телом.
- После `write()` соединение закрывается.
5. Простой запуск сервера
- Через `loop.create_server()` создаётся экземпляр `ConnectionHandler`.
- `serve_forever()` запускает обработку соединений.
6. Высокая производительность
Сервер обрабатывает ~100 000 запросов за ~4.2 с при нагрузке 100 одновременных соединений, в то время как FastAPI справляется за ~32 с :contentReference[oaicite:1]{index=1}.
Зачем это полезно:
- Полный контроль над TCP-соединениями и буферами.
- Существенно выше скорость при простых HTTP-API.
- Отличная демонстрация возможностей, которые остаются скрытыми за высокоуровневыми фреймворками.
Поддержка сообщества:
На Reddit статья получила высокую оценку как "отличный материал по Asyncio Protocols"
https://jacobpadilla.com/articles/asyncio-protocols
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
Очередная нейронка выдает себя за «искусственный интеллект»
Этот «искусственный интеллект» на самом деле:
@python_be1
Этот «искусственный интеллект» на самом деле:
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Продвинутый Python‑совет дня
💡 Используй слоты (`__slots__`) для оптимизации классов, когда тебе нужно много однотипных объектов.
По умолчанию Python хранит атрибуты объектов в словаре (`__dict__`), что удобно, но неэффективно по памяти. Если ты точно знаешь, какие поля будут у объекта — зафиксируй их:
class Point:
slots = ("x", "y") # только эти атрибуты допустимы
def __init__(self, x, y):
self.x = x
self.y = y```
📈 Выгода:
Уменьшает использование памяти до 30–50% для миллионов объектов
Ускоряет доступ к полям (нет __dict__)
Запрещает создание произвольных новых атрибутов (меньше багов)
🧠 Подходит:
Для численных расчётов (вместо namedtuple)
При генерации большого количества однотипных объектов
В data-heavy структурах (например, парсеры, AST, графы и т.п.)
Python — динамичный язык, но когда знаешь структуру данных заранее, slots дают тебе контроль и производительность.
@python_be1
💡 Используй слоты (`__slots__`) для оптимизации классов, когда тебе нужно много однотипных объектов.
По умолчанию Python хранит атрибуты объектов в словаре (`__dict__`), что удобно, но неэффективно по памяти. Если ты точно знаешь, какие поля будут у объекта — зафиксируй их:
class Point:
slots = ("x", "y") # только эти атрибуты допустимы
def __init__(self, x, y):
self.x = x
self.y = y```
📈 Выгода:
Уменьшает использование памяти до 30–50% для миллионов объектов
Ускоряет доступ к полям (нет __dict__)
Запрещает создание произвольных новых атрибутов (меньше багов)
🧠 Подходит:
Для численных расчётов (вместо namedtuple)
При генерации большого количества однотипных объектов
В data-heavy структурах (например, парсеры, AST, графы и т.п.)
Python — динамичный язык, но когда знаешь структуру данных заранее, slots дают тебе контроль и производительность.
@python_be1
🚀 Хотите запустить сайт, блог или интернет-магазин в 2025 году?
Сейчас идеальное время — и вам не нужно тратить кучу денег.
🌐 Я лично использовал Hostinger для создания своего сайта. Это:
✔ Быстро и надежно
✔ Очень доступно (от $1.99 в месяц!)
✔ Подходит для новичков
✔ Поддерживает оплату криптовалютой
✔ Включает бесплатный домен и SSL
🎁 ЭКСКЛЮЗИВНАЯ СКИДКА: Сэкономьте до 95%
🔗 bit.ly/4kioZuy
🎫 Промокод: YWGDRITION1D
Нужна помощь с началом? Просто напишите в личные сообщения — с радостью помогу 💬
@python_be1
Сейчас идеальное время — и вам не нужно тратить кучу денег.
🌐 Я лично использовал Hostinger для создания своего сайта. Это:
✔ Быстро и надежно
✔ Очень доступно (от $1.99 в месяц!)
✔ Подходит для новичков
✔ Поддерживает оплату криптовалютой
✔ Включает бесплатный домен и SSL
🎁 ЭКСКЛЮЗИВНАЯ СКИДКА: Сэкономьте до 95%
🔗 bit.ly/4kioZuy
🎫 Промокод: YWGDRITION1D
Нужна помощь с началом? Просто напишите в личные сообщения — с радостью помогу 💬
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
Хитрый совет по Python
Когда ты проверяешь, есть ли значение в списке, Python перебирает все элементы по очереди — это медленно.
Но если ты сначала преобразуешь список в множество, проверка икс ин сэт будет работать в сотни раз быстрее, особенно на больших данных.
Это работает, потому что Сэт в пайтон устроен как хеш-таблица, и проверка вхождения занимает постоянное время ).
Используй этот трюк, если тебе нужно много раз проверять наличие значений в списке.
@python_be1
Когда ты проверяешь, есть ли значение в списке, Python перебирает все элементы по очереди — это медленно.
Но если ты сначала преобразуешь список в множество, проверка икс ин сэт будет работать в сотни раз быстрее, особенно на больших данных.
Это работает, потому что Сэт в пайтон устроен как хеш-таблица, и проверка вхождения занимает постоянное время ).
Используй этот трюк, если тебе нужно много раз проверять наличие значений в списке.
@python_be1
🚀 15 AI‑инструментов, которые стоит взять на вооружение
Подборка популярных инструментов, которые уже сегодня помогают создавать, автоматизировать и масштабировать работу быстрее в разы:
🎬 Работа с видео
1. Runway.ml — генерация видео по тексту
2. Veed.io — монтаж, субтитры, озвучка онлайн
3. Invideo.io — создание роликов за минуты
🧠 Помощь в мышлении и генерации
4. ChatGPT.com — ассистент для ресёрча, генерации и правок
5. Grok.com — AI-помощник с быстрым доступом к знаниям
6. Deepseek.ai — генерация и анализ текста
7. Claude.ai — диалоговый ассистент от Anthropic
8. Perplexity.ai — умный поисковик с цитируемыми источниками
💻 Код, задачи и коммуникации
9. Cursor.com — AI-помощник для программиста
10. Notion.com — организация, заметки, задачи с AI-поддержкой
11. HubSpot.com — маркетинг, автоматизация и CRM
12. Canva.com — графика, презентации, визуал для соцсетей
13. Figma.com — интерфейсы, прототипы, совместная работа
🎨 Творчество
14. Midjourney.com — генерация изображений по промптам
15. RecCloud.com — быстрые AI-клипы и нарезки видео
#AI #FutureOfWork #Productivity #AItools #Automation
@python_be1
Подборка популярных инструментов, которые уже сегодня помогают создавать, автоматизировать и масштабировать работу быстрее в разы:
🎬 Работа с видео
1. Runway.ml — генерация видео по тексту
2. Veed.io — монтаж, субтитры, озвучка онлайн
3. Invideo.io — создание роликов за минуты
🧠 Помощь в мышлении и генерации
4. ChatGPT.com — ассистент для ресёрча, генерации и правок
5. Grok.com — AI-помощник с быстрым доступом к знаниям
6. Deepseek.ai — генерация и анализ текста
7. Claude.ai — диалоговый ассистент от Anthropic
8. Perplexity.ai — умный поисковик с цитируемыми источниками
💻 Код, задачи и коммуникации
9. Cursor.com — AI-помощник для программиста
10. Notion.com — организация, заметки, задачи с AI-поддержкой
11. HubSpot.com — маркетинг, автоматизация и CRM
12. Canva.com — графика, презентации, визуал для соцсетей
13. Figma.com — интерфейсы, прототипы, совместная работа
🎨 Творчество
14. Midjourney.com — генерация изображений по промптам
15. RecCloud.com — быстрые AI-клипы и нарезки видео
#AI #FutureOfWork #Productivity #AItools #Automation
@python_be1