🎯 Хочешь следить за загрузкой своей GPU прямо из Python?
Вот простой скрипт, который показывает текущую загрузку видеокарты NVIDIA (через `nvidia-smi`). Подходит для мониторинга в ML-задачах, инференсе и просто для интереса.
📦 Зависимости: установленный `nvidia-smi` и Python 3.6+
🧠 Код:
```
import subprocess
def get_gpu_utilization():
try:
result = subprocess.check_output(
['nvidia-smi', '--query-gpu=utilization.gpu,memory.used,memory.total',
'--format=csv,nounits,noheader'],
encoding='utf-8'
)
lines = result.strip().split('\n')
for idx, line in enumerate(lines):
gpu_util, mem_used, mem_total = map(str.strip, line.split(','))
print(f"🖥 GPU {idx}: {gpu_util}% load | {mem_used} MiB / {mem_total} MiB")
except FileNotFoundError:
print("❌ nvidia-smi not found. Make sure NVIDIA drivers are installed.")
except Exception as e:
print(f"⚠️ Error: {e}")
get_gpu_utilization()
```
📊 Вывод будет примерно такой:
`GPU 0: 23% load | 412 MiB / 8192 MiB`
🔥 Советы:
• Можно запускать в цикле для live-мониторинга
• Легко интегрировать в Telegram-бота или Slack-уведомления
• Работает на всех машинах с установленным NVIDIA драйвером и nvidia-smi
@python_be1
Вот простой скрипт, который показывает текущую загрузку видеокарты NVIDIA (через `nvidia-smi`). Подходит для мониторинга в ML-задачах, инференсе и просто для интереса.
📦 Зависимости: установленный `nvidia-smi` и Python 3.6+
🧠 Код:
```
import subprocess
def get_gpu_utilization():
try:
result = subprocess.check_output(
['nvidia-smi', '--query-gpu=utilization.gpu,memory.used,memory.total',
'--format=csv,nounits,noheader'],
encoding='utf-8'
)
lines = result.strip().split('\n')
for idx, line in enumerate(lines):
gpu_util, mem_used, mem_total = map(str.strip, line.split(','))
print(f"🖥 GPU {idx}: {gpu_util}% load | {mem_used} MiB / {mem_total} MiB")
except FileNotFoundError:
print("❌ nvidia-smi not found. Make sure NVIDIA drivers are installed.")
except Exception as e:
print(f"⚠️ Error: {e}")
get_gpu_utilization()
```
📊 Вывод будет примерно такой:
`GPU 0: 23% load | 412 MiB / 8192 MiB`
🔥 Советы:
• Можно запускать в цикле для live-мониторинга
• Легко интегрировать в Telegram-бота или Slack-уведомления
• Работает на всех машинах с установленным NVIDIA драйвером и nvidia-smi
@python_be1
This media is not supported in your browser
VIEW IN TELEGRAM
Cursor теперь в браузере и в телефоне — вышла (https://www.cursor.com/blog/agent-web) веб-версия любимого приложения вайб-кодеров ⌨️
Функционал почти полностью аналогичен десктопной версии, есть синхронизация с GitHub. Идея утопическая: дать вайб-кодерам возможность зайтись где-нибудь на пляже и удаленно раздавать команды сверхумным агентам.
Можно заценить здесь (https://www.cursor.com/agents).
@python_be1
Функционал почти полностью аналогичен десктопной версии, есть синхронизация с GitHub. Идея утопическая: дать вайб-кодерам возможность зайтись где-нибудь на пляже и удаленно раздавать команды сверхумным агентам.
Можно заценить здесь (https://www.cursor.com/agents).
@python_be1
⚔️ LIEF — мощная библиотека для работы с исполняемыми файлами, которая поддерживает ELF, PE и MachO-форматы. Этот проект позволяет не только анализировать структуру бинарников, но и модифицировать их — добавлять секции, менять символы или даже работать с Objective-C метаданными.
Инструмент выделяется кроссплатформенностью и мультиязычным API (Python, Rust, C++). Библиотека умеет дизассемблировать код под разные архитектуры и интегрируется с Ghidra/BinaryNinja. Будет полезно для реверс-инжиниринга, анализа вредоносного ПО или кастомной линковки.
🤖 GitHub (https://github.com/lief-project/LIEF)
@python_be1
Инструмент выделяется кроссплатформенностью и мультиязычным API (Python, Rust, C++). Библиотека умеет дизассемблировать код под разные архитектуры и интегрируется с Ghidra/BinaryNinja. Будет полезно для реверс-инжиниринга, анализа вредоносного ПО или кастомной линковки.
🤖 GitHub (https://github.com/lief-project/LIEF)
@python_be1
⚡️ PyOpenCL — ускоряем Python вычисления на GPU. Этот проект даёт доступ к технологии OpenCL прямо из Python, позволяя задействовать не только видеокарты, но и любые параллельные вычислительные устройства. Он сочетает низкоуровневый контроль с автоматической обработкой ошибок и привязкой жизненного цикла объектов.
Инструмент имеет обширную документацию с примерами: от простого поэлементного умножения массивов до сложных алгоритмов с использованием локальной памяти GPU. Проект работает с реализациями OpenCL от Apple, AMD и Nvidia, а установка через Conda занимает буквально пару команд.
🤖 GitHub (https://github.com/inducer/pyopencl)
@python_be1
Инструмент имеет обширную документацию с примерами: от простого поэлементного умножения массивов до сложных алгоритмов с использованием локальной памяти GPU. Проект работает с реализациями OpenCL от Apple, AMD и Nvidia, а установка через Conda занимает буквально пару команд.
🤖 GitHub (https://github.com/inducer/pyopencl)
@python_be1
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