ar
Feedback
bashninja | DevOps | SRE |CyberSecurity |Computer Science

bashninja | DevOps | SRE |CyberSecurity |Computer Science

الذهاب إلى القناة على Telegram

Канал про DevOps, SRE, CyberSecurity и Computer Science.

إظهار المزيد
264
المشتركون
لا توجد بيانات24 ساعات
-27 أيام
-1330 أيام
أرشيف المشاركات
https://habr.com/ru/articles/1017290/ Набросал тут статейку на Хабре =)

Вопрос с реального собеса на DevOps-позицию df -h показывает 20% занято. du -sh /* в сумме даёт 95%. Сервер лагает. Места "нет". Что происходит и как починить? . . . Файл удалили через rm, но процесс его держит открытым. Ядро не освобождает блоки пока жив файловый дескриптор - место физически занято, просто невидимо. Классика: лог-файл ротировали rm пока java или nginx в него пишет. Найти проблему: lsof +L1 Показывает открытые файлы у которых счётчик ссылок меньше 1 - файл удалён из файловой системы, но процесс его ещё держит. Вывод будет примерно такой: java 1234 user 7w REG ... /var/log/app.log (deleted) 7w - номер дескриптора и режим доступа. Цифра - номер (7), буква - что процесс делает с файлом: r читает, w пишет, u читает и пишет. В нашем случае java пишет в лог - значит w. Починить без рестарта: > /proc/1234/fd/7 > - оператор перенаправления в bash, открывает файл на запись и обнуляет содержимое. /proc/1234/fd/ - папка где Linux хранит все открытые дескрипторы процесса 1234 в виде симлинков на реальные файлы. 7 - цифра из вывода lsof перед буквой режима. Команда идёт к файлу напрямую через дескриптор - минуя файловую систему где файл уже "удалён". Место освобождается моментально, процесс продолжает работать. Сталкивались с таким? 👇

💻 Windows, Linux, macOS — на чём реально работают инженеры в 2026? Холиварная тема. Но давайте честно — выбор рабочей ОС в IT это не религия, это компромисс между болью и удобством. 🍎 macOS — Unix из коробки, нормальный экран, батарея. ssh, grep, curl без танцев. Минус: цена железа и закрытая экосистема. Сломался тулчейн Apple Silicon — идёшь гуглить почему brew опять что-то не то слинковал. 🐧 Linux — окружение совпадает с продакшеном один в один. Никаких сюрпризов с line endings, полный контроль над всем. Цена: раз в полгода после обновления ядра что-нибудь отвалится. Garuda, Ubuntu, Arch — у каждого дистра своя секта. 🪟 Windows — WSL2 реально вытащил ситуацию: полноценное Linux-ядро, Docker Engine без прослойки. Но стоит шагнуть за пределы WSL: пути с обратными слешами, права доступа ни с чем не совместимы, и PowerShell который притворяется bash. Занятная закономерность: джуны стартуют на Windows → мидлы переезжают на macOS → сеньоры уходят на Linux и не возвращаются. На чём работаете и почему именно на этом? 👇

🎬 Мини-сериалы и документалки по хакингу ━━━━━━━━━━━━━━━━━━ 👋 Привет, родные! ━━━━━━━━━━━━━━━━━━ Подборка документалок и ми
🎬 Мини-сериалы и документалки по хакингу ━━━━━━━━━━━━━━━━━━ 👋 Привет, родные! ━━━━━━━━━━━━━━━━━━ Подборка документалок и мини-сериалов для тех, кто хочет понять как работает хакинг изнутри. Реальные истории, интервью с легендами индустрии и разборы громких кейсов. ━━━━━━━━━━━━━━━━━━ 🏆 Must Watch ━━━━━━━━━━━━━━━━━━ The Internet's Own Boy (2014) История Аарона Шварца — создателя RSS, Reddit, активиста открытого доступа. Трагический финал борьбы с системой. We Are Legion: The Story of the Hacktivists (2012) Документалка про Anonymous — от истоков до Operation Payback. Интервью с участниками, анализ идеологии. Zero Days (2016) Stuxnet — кибероружие США и Израиля против иранской ядерной программы. Первая документированная кибервойна. The Great Hack (2019) Cambridge Analytica, Facebook и манипуляции выборами. Как данные стали оружием массового поражения. ━━━━━━━━━━━━━━━━━━ 🎯 Хакеры и их истории ━━━━━━━━━━━━━━━━━━ Darknet Diaries (подкаст → документалка) Джек Райзайдер рассказывает реальные истории про хаки, пентесты и киберпреступления. Лучшие эпизоды: — Kevin Mitnick и его побег от ФБР — Взлом казино через аквариум — История Silk Road Silk Road: Drugs, Death and the Dark Web (2017) Ross Ulbricht (Dread Pirate Roberts) и создание первого даркнет-маркетплейса. От идеи до пожизненного срока. The Hacker Wars (2014) Anonymous, LulzSec, Jeremy Hammond. Реальные кадры арестов, интервью с хакерами из тюрьмы. ━━━━━━━━━━━━━━━━━━ 💰 Киберпреступность ━━━━━━━━━━━━━━━━━━ Crime + Investigation: The Billion Dollar Code (2021) История стартапа ART+COM vs Google Earth. Кража технологий и судебные баталии. Hunting the KGB Killers (2017) Кибершпионаж, APT28 (Fancy Bear) и атаки на западные институты. Расследование связей с ГРУ. The Perfect Weapon (2020) Документалка про кибервойны между государствами. От Stuxnet до вмешательства в выборы. ━━━━━━━━━━━━━━━━━━ 🔐 Security & Privacy ━━━━━━━━━━━━━━━━━━ Citizenfour (2014) Эдвард Сноуден и разоблачение массовой слежки АНБ. Оскар за лучший документальный фильм. Terms and Conditions May Apply (2013) Что на самом деле написано в пользовательских соглашениях. Кто владеет твоими данными? The Social Dilemma (2020) Бывшие сотрудники Google, Facebook, Twitter о том, как соцсети манипулируют поведением. Алгоритмы как оружие. ━━━━━━━━━━━━━━━━━━ 🎓 Технические разборы ━━━━━━━━━━━━━━━━━━ Hacking Google (YouTube серия, 2022) Официальная серия от Google про Project Zero, баг-баунти и защиту инфраструктуры. Реальные кейсы от инсайдеров. Hackerville (2018, мини-сериал) Художественный, но основан на реальных событиях. Киберпреступность в Румынии, взломы банков. Code 2600 (2011) Документалка про хакерскую культуру и журнал "2600: The Hacker Quarterly". Интервью с легендами сцены. ━━━━━━━━━━━━━━━━━━ ⚡️ Бонус: YouTube каналы ━━━━━━━━━━━━━━━━━━ Computerphile Академический подход: как работают алгоритмы шифрования, SQL injection, buffer overflow. LiveOverflow CTF разборы, реверс-инжиниринг, эксплуатация уязвимостей. Для тех, кто хочет практики. IppSec Прохождения машин с HackTheBox. Полные разборы с объяснениями. ━━━━━━━━━━━━━━━━━━ На выходных есть чем заняться! 🍿 #hacking #infosec #documentary #mustwatch

🐬 Flipper Zero: карманный мультитул для радиохакинга ━━━━━━━━━━━━━━━━━━ 👋 Привет, родные! ━━━━━━━━━━━━━━━━━━ Сегодня разбир
🐬 Flipper Zero: карманный мультитул для радиохакинга ━━━━━━━━━━━━━━━━━━ 👋 Привет, родные! ━━━━━━━━━━━━━━━━━━ Сегодня разбираем Flipper Zero — портативное устройство для работы с радиочастотами, RFID, NFC и GPIO. Это швейцарский нож для пентестеров, IoT-исследователей и всех, кто хочет понять, как работают беспроводные протоколы. ━━━━━━━━━━━ 🎯 Что умеет ━━━━━━━━━━━ — RFID (125 kHz): чтение/эмуляция карт доступа, домофонных ключей — NFC (13.56 MHz): работа с бесконтактными картами Mifare/NTAG — Sub-GHz (315/433/868/915 MHz): анализ сигналов пультов, датчиков — Infrared: универсальный пульт для ТВ, кондиционеров — BadUSB: эмуляция клавиатуры для выполнения скриптов — GPIO/UART/I2C/SPI: отладка электроники и прошивка железа ━━━━━━━━━━━ ⚙️ Железо ━━━━━━━━━━━ CPU: STM32WB55 (Cortex-M4 @ 64MHz + M0+) Display: 128×64 монохром (как тамагочи!) Battery: 2000 mAh (~неделя работы) Вес: 102г Размер: с банковскую карту ━━━━━━━━━━━ 🚀 Практика ━━━━━━━━━━━ Sub-GHz радио: — Клонирование пультов от ворот/шлагбаумов — Реверс-инжиниринг протоколов IoT-датчиков — Анализ сигналов беспроводных устройств RFID/NFC: — Тестирование СКУД на объектах — Эмуляция домофонных ключей — Чтение ID карт (банковские читает, но платить не даст) BadUSB: — Автоматизация deployment скриптов — Демонстрация векторов атак — Эмуляция HID-устройств GPIO: — Прошивка микроконтроллеров — Подключение внешних модулей (WiFi Devboard) — UART-дебаг железа ━━━━━━━━━━━ 🔧 Прошивки ━━━━━━━━━━━ Stock (официальная): ✅ Стабильная ❌ Ограничения Sub-GHz для некоторых регионов Unleashed: ✅ Без региональных ограничений ✅ Больше протоколов → Для исследователей RogueMaster: ✅ Максимум плагинов ✅ Активное комьюнити ❌ Может быть нестабильна Xtreme: ✅ Баланс стабильности и функционала → Золотая середина Обновление: qFlipper (GUI) или WebUpdater ━━━━━━━━━━━ 💡 Применение в DevOps/Security ━━━━━━━━━━━ Физическая безопасность: — Аудит СКУД — Тестирование карт доступа — Проверка беспроводных систем IoT Security: — Анализ протоколов умных устройств — Поиск уязвимостей в беспроводных датчиках — Реверс неизвестных протоколов Автоматизация: — BadUSB для быстрого деплоя скриптов — GPIO для прошивки устройств в лаборатории Обучение: — Наглядная демонстрация уязвимостей — Практика с радиопротоколами ━━━━━━━━━━━ ⚠️ Легальность ━━━━━━━━━━━ Разрешено: ✅ Тестирование своих систем ✅ Исследовательские цели ✅ Работа с разрешения владельца Запрещено: ❌ Взлом чужих систем ❌ Клонирование карт для мошенничества ❌ Глушение частот экстренных служб В России: легален для личного использования ⚠️ Ст. 272 УК РФ (неправомерный доступ) актуальна! ━━━━━━━━━━━ 💰 Где взять ━━━━━━━━━━━ Официально: flipperzero.one (~$199 + доставка) В РФ: маркетплейсы 25-35k ₽ Must-have аксессуары: — WiFi Devboard (для атак WiFi/BLE) — Protective case (экран царапается) — SD карта (базы данных и логи) ━━━━━━━━━━━━━━━━━━ 📚 Полезные ресурсы ━━━━━━━━━━━━━━━━━━ Документация: docs.flipper.net GitHub: github.com/flipperdevices Форум: forum.flipperzero.one Awesome Flipper: github.com/djsime1/awesome-flipperzero ━━━━━━━━━━━━━━━━━━ ✅ ИТОГ ━━━━━━━━━━━━━━━━━━ — Понимаешь как работают беспроводные протоколы — Умеешь тестировать физическую безопасность — Получаешь hands-on опыт с радио и RFID — Готов к реальным security аудитам ⚠️ С большой мощностью приходит большая ответственность. Используй только для легального тестирования! ━━━━━━━━━━━━━━━━━━ #hardware #security #pentest #flipper

⚡️ S02E03 — Docker Compose: запускаем микросервисы одной командой ━━━━━━━━━━━━━━━━━━ 👋 Привет, родные! ━━━━━━━━━━━━━━━━━━ По
⚡️ S02E03 — Docker Compose: запускаем микросервисы одной командой ━━━━━━━━━━━━━━━━━━ 👋 Привет, родные! ━━━━━━━━━━━━━━━━━━ После Dockerfile логично научиться поднимать стек из нескольких контейнеров. Сегодня разбираем Docker Compose: как одной командой стартовать веб + база + Redis, настроить сети и персистентность. ━━━━━━━━━━━ 🎯 Что разберём ━━━━━━━━━━━ — Зачем нужен Compose (проблема: docker run × 5 контейнеров) — Структура docker-compose.yml — Services, networks, volumes — Переменные окружения (.env файл) — Зависимости между сервисами (depends_on, healthcheck) — Полезные команды (up, down, logs, exec) — Типичные грабли и как их избежать ━━━━━━━━━━━ 📦 Было vs Стало ━━━━━━━━━━━ Без Compose:
docker run -d postgres
docker run -d redis
docker run -d --link postgres web
docker run -d nginx
Куча команд, сложно воспроизвести, порты и env в разных местах. С Compose:
docker compose up -d
Всё описано в одном файле, версионируется, воспроизводимо. ━━━━━━━━━━━ 🚀 Базовый пример ━━━━━━━━━━━
version: '3.8'

services:
  web:
    build: .
    ports:
      - "8080:8080"
    depends_on:
      - postgres
      - redis

  postgres:
    image: postgres:15-alpine
    volumes:
      - pgdata:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine

volumes:
  pgdata:
Три контейнера, персистентность, зависимости — всё в 20 строках. ━━━━━━━━━━━ 🔗 Networks: как общаются ━━━━━━━━━━━ Compose автоматически создаёт bridge-сеть: — Контейнеры видят друг друга по имени сервиса — web подключается к postgres:5432, redis:6379 — Изоляция: разные проекты не видят друг друга ━━━━━━━━━━━ 💾 Volumes: данные не теряются ━━━━━━━━━━━ Named volumes (рекомендуется для БД):
volumes:
  - pgdata:/var/lib/postgresql/data
Bind mounts (для разработки):
volumes:
  - ./app:/app  # Изменения кода сразу видны
━━━━━━━━━━━ ⏱️ Healthcheck: реальная готовность ━━━━━━━━━━━ depends_on запускает по порядку, но НЕ ждёт готовности! Решение:
postgres:
  healthcheck:
    test: ["CMD", "pg_isready", "-U", "postgres"]
    interval: 5s

web:
  depends_on:
    postgres:
      condition: service_healthy
Теперь web стартует только когда postgres реально готов. ━━━━━━━━━━━ 🛑 Типовые грабли ━━━━━━━━━━━ ❌ "Connection refused" к базе → База не готова, добавь healthcheck ❌ Volumes не сохраняются → Используй named volumes ❌ Порты конфликтуют → ss -tulnp | grep :8080 ❌ Переменные не работают → Проверь .env файл ❌ Контейнеры не видят друг друга → Убедись в одной сети ━━━━━━━━━━━ 🏁 Что делаем в лабе ━━━━━━━━━━━ Задание 1: Flask + PostgreSQL — Простой стек — Настройка healthcheck — Проверка персистентности Задание 2: Nginx + Flask + PostgreSQL + Redis — Полный production-like стек — Frontend/backend сети — Переменные через .env — Балансировка и масштабирование Задание 3: Дебаг проблем — База не готова — Volumes не сохраняются — Порты заняты ━━━━━━━━━━━━━━━━━━ 🔗 Лабораторная работа (lab07): https://github.com/b4shninja/b4shninja/blob/main/courses/from_zero_to_devops_hero/lab07/README.md ━━━━━━━━━━━━━━━━━━ В лабе: ✅ Полная теория с примерами ✅ Готовые проекты для запуска ✅ Мини-челленджи ✅ Troubleshooting guide ✅ Quick Start за 5 минут ━━━━━━━━━━━━━━━━━━ ✅ ИТОГ ━━━━━━━━━━━━━━━━━━ — Запускаешь целый стек одной командой — Понимаешь как работают сети и volumes — Умеешь дебажить проблемы с зависимостями — Готов к оркестрации в production (Kubernetes впереди!) ━━━━━━━━━━━━━━━━━━ Давай, газуй! 🚀

🧩 VPN в РФ в 2025: как блочат, что живёт дольше и что выбрать 🧠 Что такое VPN? VPN - это зашифрованный тоннель между устрой
🧩 VPN в РФ в 2025: как блочат, что живёт дольше и что выбрать 🧠 Что такое VPN? VPN - это зашифрованный тоннель между устройством и удалённым узлом. Провайдер видит факт соединения и метаданные, содержимое не видит. VPN не отменяет законы - соблюдай правила своей страны и сети. 🚧 Как провайдеры распознают и ограничивают 🧱 IP и подсети - банят адреса узлов целыми диапазонами. 🧭 DNS-манипуляции - подмена или блок DoH/DoT до старта VPN. Главное: после подключения весь DNS идёт внутри туннеля, без утечек. 🔬 DPI и поведение - сигнатуры протоколов, TLS-отпечатки, SNI в открытом ClientHello. Есть ECH, который прячет SNI, но внедрение ограничено и часто режется. 📉 UDP-трафик - частая цель для душения и отрезания, особенно QUIC и нестандартные порты. 🕵️ Active probing - DPI простукивает сервер, подтверждает протокол и вносит адрес в бан. Устойчивость зависит от реализации: помогают uTLS, правдоподобный ALPN/SNI, корректные ответы бэкенда. 🐌 Троттлинг - не полный блок, а сильное замедление. 🛡 Протоколы и маскировки: что реально держится 🧰 Классические VPN OpenVPN ➕ Гибкий и распространённый. ➖ "Голый" вариант легко сигнатурится. ✅ Включай tls-crypt/tls-crypt v2, при необходимости маскируй через stunnel или WebSocket. Режим OVPN-TCP:443 выглядит как обычный HTTPS-трафик браузера. WireGuard ➕ Очень быстрый и простой. ➖ Работает только по UDP. "Голая" конфигурация часто палится и душится. ✅ Используй внешний транспорт: обёртка UDP→TCP/WS/QUIC (sing-box, udp2raw и аналоги). Живучесть выше - задержки тоже выше. IKEv2/IPsec ➕ Нативная поддержка в iOS, macOS, Windows. ➖ Узнаётся DPI и зависит от UDP. 🥷 Маскировочные стеки V2Ray/XRay (VLESS + TLS/REALITY, WS/gRPC/HTTP2) - приоритет для маскировки: "чище" и предсказуемее, чем VMess, который чаще сигнатурится. Trojan/Trojan-GO - имитация обычного TLS-веб-трафика; стойкость требует реальный домен, корректный сертификат и ALPN плюс правильные ответы на probe. Shadowsocks (+ плагины, v2ray-plugin/uTLS) - лёгкий прокси; живучесть полностью зависит от плагина и мимикрии. Hysteria2 (QUIC) - очень быстро, но при давлении на UDP может не взлететь. Заметка про ALPN ✅ h2 поверх TCP помогает выглядеть как обычный веб. ❗️ h3/QUIC - спорный выбор в сетях, где режут UDP. 🧭 Рекомендации по выбору и настройке 🧩 Мультипротокол и обфускация - ищи профили VLESS(+TLS/REALITY), Trojan, OVPN-TCP через stunnel/WS. Для WireGuard ставь обёртку. 🔌 Порты 443/80 - мимикрия под HTTPS/HTTP. 🔐 TLS 1.3, реалистичный ALPN/SNI - плюс корректные ответы бэкенда. 🧪 DNS-гигиена - после подключения весь резолвинг внутри туннеля; при split-tunneling следи за утечками. DoH/DoT полезны до установления VPN и вне туннеля. 🔁 Ротация IP и доменов - помогает переживать активные баны подсетей. 🧰 Клиенты - автообновление профилей, kill-switch, split-tunneling, тесты на утечки. 🌍 Инфраструктура - сервера ближе географически (меньше RTT), нормальная поддержка и запасные каналы связи. 🛰 Что поставить под конкретного провайдера 🏠 Жёсткий домашний DPI, режет UDP - Trojan или VLESS-WS-TLS, либо OpenVPN-TCP:443 через stunnel/WS. 📱 Мобильные сети с плавающим качеством - VLESS-WS-TLS; Hysteria2 только если UDP жив; WireGuard с обёрткой как компромисс. 🏢 Офисы и гостевые Wi-Fi - почти всегда TCP:443 с правдоподобным TLS. ✈️ Telegram: MTProto-прокси и VPN MTProto-прокси разблокирует только Telegram. VPN защищает и ведёт весь трафик. Можно держать оба: в этом случае Telegram может пойти через MTProto мимо VPN - это нормально. Проверь маршруты и отсутствие DNS-утечек. 🌩 Доменные фронты У крупных CDN фронтинг в основном недоступен или ломается из-за политик вроде SNI-mismatch и ACL. Локальные исключения редки и работают нестабильно. 📜 Правовая часть Регулирование меняется. Операторы обязаны блокировать ресурсы по реестрам, а риски для пользователя зависят от сценариев и действующих норм. Это не юридическая консультация - проверяй актуальные правила и корпоративные политики.

🚀 XARGS: ТВОЯ СУПЕРСИЛА В КОМАНДНОЙ СТРОКЕ! Привет, родные ! 👋 Сегодня разберем xargs — утилиту, которая превратит тебя из
🚀 XARGS: ТВОЯ СУПЕРСИЛА В КОМАНДНОЙ СТРОКЕ! Привет, родные ! 👋 Сегодня разберем xargs — утилиту, которая превратит тебя из новичка в гуру bash! 🍔 ЧТО ЭТО ВООБЩЕ ТАКОЕ? xargs — это преобразователь stdin в аргументы командной строки. Проще говоря: Без xargs: echo "file1 file2" | rm ❌ (не работает!) С xargs: echo "file1 file2" | xargs rm ✅ (работает!) xargs берет то, что приходит из stdin и превращает в аргументы для следующей команды! 🔥 ОСНОВНЫЕ ФИШКИ ЗА 30 СЕКУНД 🙃
# Массовое удаление
find . -name "*.tmp" | xargs rm
# Параллельная загрузка
xargs -P5 -n1 wget < urls.txt
# Безопасно для файлов с пробелами
find . -type f -name '*.mp3' -print0 | xargs -0 -I{} mv -- '{}' /music/
💡 ПОПУЛЯРНЫЕ СЦЕНАРИИ 📁 РАБОТА С ФАЙЛАМИ 😮
# Поиск в куче файлов
find /project -name '*.py' -print0 | xargs -0 grep -nH 'import pandas'
# Архивирование найденного
find . -type f -name '*.js' -print0 | tar --null -czf backup.tar.gz -T -
# Массовое переименование
find . -type f -name '*.jpg' -print0 | xargs -0 -I{} mv -- '{}' '{}'.backup
⚡️ ПАРАЛЛЕЛЬНАЯ МОЩЬ 😏
# Конвертация изображений (4 потока!)
find . -type f -name '*.png' -print0 | xargs -0 -P4 -n1 -I{} convert '{}' '{}'.jpg
# Параллельные HTTP-запросы
xargs -P10 -n1 curl -O < urls.txt
# Бэкап нескольких БД одновременно
printf '%s\n' db1 db2 db3 | xargs -n1 -P3 -I{} pg_dump -Fc -d "{}" -f "{}.dump"
🔧 АВТОМАТИЗАЦИЯ 😍
# Выполнение команд из файла
xargs -L1 -I{} sh -c '{}' < commands.txt
# Обработка с логированием
find /var/log -type f -name '*.log' -print0 \
| tee >(tr '\0' '\n' > files.list) \
| xargs -0 grep -H 'ERROR'
🛡 БЕЗОПАСНОСТЬ ПРЕВЫШЕ ВСЕГО ЧЕГО ИЗБЕГАТЬ 🚽:
# ❌ ОПАСНО - нет подтверждения
find / -name "*" | xargs rm -rf
# ❌ Чувствительно к пробелам
find . -name "My File.txt" | xargs r
КАК ДЕЛАТЬ ПРАВИЛЬНО 👍:
# ✅ Всегда тестируй с -p сначала!
find . -name "*.log" | xargs -p rm
# ✅ Для файлов с пробелами используй -print0/-0
find . -name "*.txt" -print0 | xargs -0 rm
# ✅ Проверяй лимиты системы
xargs --show-limit
🎪 ЭКСТРЕМАЛЬНЫЕ СЦЕНАРИИ МАССОВАЯ ОБРАБОТКА 🤯:
# Ресайз фотографий в 8 потоков
find . -name "*.RAW" -print0 | xargs -0 -P 8 -I {} convert {} -resize 50% {}.jpg
# Параллельный анализ логов
find /logs -name "*.gz" -print0 | xargs -0 -P 4 zcat | grep "500 ERROR"
ДИНАМИЧЕСКИЕ КОМАНДЫ 😠:
# Каждая строка из файла - как отдельная команда
cat deployments.txt | xargs -L 1 -I {} sh -c "{}"
📚 шпаргалОчка ✍️
# Базовый синтаксис
cmd | xargs target_cmd
# Параллельно + замена
cmd | xargs -P N -I {} command {}
# Безопасно для пробелов
find ... -print0 | xargs -0 command
# По одному аргументу
cmd | xargs -n1 command
# Подтверждение выполнения  
cmd | xargs -p command
# Строка за раз
cmd | xargs -L 1 command
💡 ЗОЛОТЫЕ ПРАВИЛА 😠 Всегда тестируй с -p перед опасными операциями Используй -print0 + -0 для работы с файлами -P N ускоряет обработку в N раз -I {} дает полный контроль над подстановкой Комбинируй с find для максимальной эффективности 🎯 ВЫВОД: xargs + find = 💪 СУПЕРСИЛА командной строки! 🏋️‍♂️ Теперь ты можешь обрабатывать тысячи файлов БЕЗ циклов for! Попробуй и расскажи о результатах в комментах! 👇 🔥 Лайк если полезно! Репост если не гей! 😏

Родные, привет 👋 👨‍🦲Как оно бывает: ребят, у меня сегодня мозг как nginx после кривого апстрима: то 200, то 502. поэтому без героизма — 30 минут и одна задача. таймер тикает, телефон в изгнании. 🔫что это значит на практике: — сегодня: почему оно «не слушает порт» и где вообще этот ss -tulnp; — завтра: допингуем до нужного сервиса и не умрём; — послезавтра: нормальный docker run -p, чтобы браузер перестал делать вид, что нас не знает. 📝после блока — три строчки в заметки: что делал → где сломалось → чем починил. вот серьёзно, это полезнее, чем десять мотивационных рилсов с человеком, который никогда не видел journalctl. 😵и да, сон — это не чит-код, это часть плана. если не спал — не ругайся на голову, она не БД, индексы сама не перестроит. 😳маленькие победы считаются: - поднял nginx на 8080 и увидел страницу — галочку поставь; - словил 502 и довёл до 200 — вообще праздник; - уменьшил образ на 20 МБ — гордись, это минус одна картошка в рюкзаке. 😊Как идея: запустить общий чат, разбить его по тредам по технологиям и накидать туда полезности? Если «за» — черканите в комменты.

Привет, родные! 👋 Когда-то я был тем самым админом «на всё»: таскал принтеры, распутывал провода, ездил по два часа на работ
Привет, родные! 👋 Когда-то я был тем самым админом «на всё»: таскал принтеры, распутывал провода, ездил по два часа на работу и думал, что без техвышки в DevOps не берут. 😈Выгорел, устал и понял: или делаю шаг сейчас, или так и живу. Перестал ждать идеального момента. Перестал копить ролики и статьи «на потом». Начал делать маленькие домашние стенды 😵— своими руками. ━━━━━━━━━━━━━━━━━━ 📝 Как я учился Утро: 🚌→🚇 дорога. В пути — заметки «что попробую вечером». Вечер: один конкретный шаг. Неважно, где ты научился поднимать LAMP или кластер БД — в офисе или дома на виртуалках. Важно — понимание и навык. ❤️ Формула, которая вывезла Один вечер — одна вещь: ✅что-то поднять; ✅что-то настроить; ✅что-то понять. Через пару месяцев пазл сложился: логи уже не пугали, стало ясно, где искать причину, пришла уверенность. 😊 Результат ✅Через 3 месяца и обновлённое резюме на hh я попал в Сбер ✅(3-я линия ТП). ✅Через полгода — руководитель 3-й линии. ✅Ещё через годDevOps-инженер на проекте в одном лице. ━━━━━━━━━━━━━━━━━━ 📚 FROM ZERO TO DevOps Hero — это бесплатный курс Короткие статьи, лабы на GitHub, разбор типовых ошибок — без воды. Навигация по сериям — в закрепе канала.🍻 🤗Пиши вопросы. Делай. Расти. Я рядом.

🖼️😍😍😍😍😍😍😍😍😍🖼️ Привет, родные 👋 Запилил вам хорошим удобную навигацию по всем сериям. Теперь не надо листать ленту — один пост, два клика, и ты в нужной теме. Сохраняй в «Избранное» и кидай друзьям. Буду дополнять по мере выхода серий 👉 🐧 Сезон 1 — "Профессия и база" - S01E01 — Кто такой DevOps-инженер в России? - S01E02 — Сколько зарабатывает DevOps-инженер в России? - S01E03 — Как приходят в DevOps? - S01E04 — Что должен уметь джун DevOps? - S01E05 — Стек технологий в России - S01E06 — Как пройти собеседование на DevOps в России? - S01E07 — Домашняя лаборатория для будущего DevOps - S01E08 — Практика Linux: процессы, права, пакеты, сервисы и логи - S01E09 — Базовая сеть: как понять, почему «не стучится до базы» - S01E10 — Мини-сервис локально: веб + база. Ломаем и чиним «боевые» баги! 🖼️ Сезон 2 — "Контейнеры и Docker" - S02E01 — Docker с нуля: чем он отличается от виртуальной машины и как им пользоваться - S02E02 — Свой первый Dockerfile: образы, кэш и размер без боли - S02E03 — Docker Compose: запускаем микросервисы одной командой

⚡️ S02E02 — Свой первый Dockerfile: образы, кэш и размер без боли ━━━━━━━━━━━━━━━━━━ Привет, родные 👋 ━━━━━━━━━━━━━━━━━━ Сег
⚡️ S02E02 — Свой первый Dockerfile: образы, кэш и размер без боли ━━━━━━━━━━━━━━━━━━ Привет, родные 👋 ━━━━━━━━━━━━━━━━━━ Сегодня собираем свой образ. По-честному: что такое Dockerfile, как работает кэш слоёв, почему образы «толстеют», и как сделать аккуратно и быстро. ━━━━━━━━━━━ 🎯 Что разберём (ровно по заданию) ━━━━━━━━━━━ — Базовые инструкции Dockerfile: FROM, WORKDIR, COPY, RUN, ENV, EXPOSE. — Кэш слоёв: почему порядок инструкций важен и как ускорять сборку. — .dockerignore: убираем лишние файлы из контекста. — Уменьшаем размер образа через multi-stage. — Частые грабли: «не виден файл», «команда не находится», «локально ок — в контейнере нет», «порт занят». — Мини-чек-лист качества: кэш, размер, не-root пользователь, логи и порты. ━━━━━━━━━━━ 📦 Скелет Dockerfile (что должно быть всегда) ━━━━━━━━━━━ FROM <база>:<тег> WORKDIR /app Сначала манифесты зависимостей → RUN установка Потом код → COPY . . Не-root пользователь EXPOSE нужного порта Понятная команда запуска (CMD) ━━━━━━━━━━━ 🚀 Пайплайн «быстро и чинно» ━━━━━━━━━━━ Сначала зависимости (кэшируем), потом код. При мелких правках кода сборка летит за счёт сохранённого кэша. ━━━━━━━━━━━ 🧪 Multi-stage: «толстый билд, тонкий рантайм» ━━━━━━━━━━━ Builder со всем для сборки → Runtime только с тем, что нужно для запуска. Размер меньше, старт быстрее, поверхность атаки скромнее. ━━━━━━━━━━━ 🛑 Типовые «почему не работает» ━━━━━━━━━━━ — COPY не находит файл → путь считается от контекста сборки. — Команда не находится → поставили её в builder, а запускаете в runtime. — Сервис молчит → слушает 127.0.0.1 вместо 0.0.0.0, порт/EXPOSE не совпадают. — Образ раздулся → нет .dockerignore, тянете лишнее; помогает multi-stage. — «Permission denied» к Docker → добавь себя в группу docker и перезайди. — Порт занят → проверь ss -tulnp | grep :8080 или возьми другой порт. ━━━━━━━━━━━ 🏁 Что делаем в серии ━━━━━━━━━━━ — Пишем простой Dockerfile под веб-сервис. — Меряем время сборки до/после перестановки инструкций. — Сжимаем образ multi-stage подходом. — Ловим типовые ошибки и чиним их. ━━━━━━━━━━━━━━━━━━ 🔗 Домашка, команды и мини-челленджи (lab06): https://github.com/b4shninja/b4shninja/blob/main/courses/from_zero_to_devops_hero/lab06/README.md ━━━━━━━━━━━━━━━━━━ ИТОГ ━━━━━━━━━━━━━━━━━━ — Понимаешь логику слоёв и кэша. — Собираешь образ аккуратно и без лишних мегабайт. — Готов к следующей серии — тома и персистентность.

⚡️ S02E01 — Docker с нуля: чем он отличается от виртуальной машины и как им пользоваться ━━━━━━━━━━━━━━━━━━ Привет, родные 👋
⚡️ S02E01 — Docker с нуля: чем он отличается от виртуальной машины и как им пользоваться ━━━━━━━━━━━━━━━━━━ Привет, родные 👋 Виртуальная машина — это отдельная операционная система, запущенная внутри вашей основной. Свои процессы, свои настройки, изоляция как у «компа в компе». Docker — это «контейнер с приложением»: берёт ядро у хоста, тащит только нужные зависимости и взлетает за секунды. Итог простой: виртуальная машина — тяжёлая броня; контейнер — лёгкая куртка. Для локалки, стендов и CI — самое оно. ━━━━━━━━━━━ 🎯 Зачем это тебе ━━━━━━━━━━━ — Запускаешь сервис одинаково на ноуте и на сервере. — Меньше «у меня не работает» из-за разных окружений. — Можно экспериментировать без страха: поднял → проверил → снёс → чисто. ━━━━━━━━━━━ 📦 Что такое Docker по-человечески ━━━━━━━━━━━ — Образ (image) — слепок приложения и окружения (только чтение, версионируется). — Слои (layers) — «бутерброд» образа; кэш ускоряет сборку и загрузку. — Контейнер (container) — запущенный экземпляр образа: легко стартует/останавливается/удаляется. — Почему его зовут «одноразовым»: файловая система контейнера временная — пересоздал и вернулся к чистому состоянию. Удобно для обновлений и отладки. — А куда девать данные? Выносить снаружи: • bind-mount: -v ~/data:/app/data — папка хоста в контейнере; • volume: -v myvol:/app/data — том, которым управляет Docker. Так настройки и база не пропадут при пересоздании. ━━━━━━━━━━━ 🧰 Мини-шпаргалка команд ━━━━━━━━━━━ — docker run … — запустить контейнер из образа. — docker ps / docker ps -a — кто бежит и кто недавно бежал. — docker logs <name> — логи процесса внутри. — docker exec -it <name> sh — зайти внутрь (если есть shell). — docker stop <name> → docker rm <name> — остановить и убрать. — docker image ls, docker pull/push — образы и реестр. ━━━━━━━━━━━ 🌐 Порты без боли ━━━━━━━━━━━ — -p 8080:80 = порт 8080 на хосте → 80 в контейнере. — Не открывается страница? Проверь три вещи: кто держит порт на хосте — ss -tulnp | grep 8080; логи контейнера — docker logs <name>; приложение внутри слушает не 127.0.0.1, а 0.0.0.0. ━━━━━━━━━━━ 🛑 Типовые «а почему не работает?» ━━━━━━━━━━━ — Контейнер сразу умирает → смотри docker logs (переменные, пути, команда). — Порт занят → найди процесс (ss -tulnp | grep :8080) или возьми другой (-p 8081:80). — «Permission denied» к Docker → добавь себя в группу docker и перезайди в сессию. — Снаружи тишина, локально ок → проверь UFW/маршруты, открой порт: sudo ufw allow 8080/tcp. ━━━━━━━━━━━ 🚀 Что делаем в серии — по полочкам и с улыбкой 😎 ━━━━━━━━━━━ — Ставим Docker и запускаем hello-world. — Поднимаем nginx с пробросом 8080:80. — Залезаем внутрь, работаем с ОС в контейнере. — Ловим типовые фейлы и чиним их. — Убираем за собой, чтобы система не пухла от мусора. 🔗 Домашка, команды и мини-челленджи: https://github.com/b4shninja/b4shninja/blob/main/courses/from_zero_to_devops_hero/lab05/README.md ИТОГ ━━━━━━━━━━━━━━━━━━ — Разберёшься, где уместна виртуальная машина, а где контейнер. — Сможешь запустить сервис, посмотреть логи и быстро понять, что пошло не так. — Готов к следующей серии — там напишем свой Dockerfile. 📩 Подписывайся, чтобы не пропустить выпуск про Dockerfile. И зови всех-всех: друзья, коллеги, одногруппники — подписывайтесь, дальше будет ещё интереснее!

⚡️ S01E10 — Мини-сервис локально: веб + база. Ломаем и чиним «боевые» баги! ━━━━━━━━━━━━━━━━━━ 👋 Привет, родные 👋 ну что, с
⚡️ S01E10 — Мини-сервис локально: веб + база. Ломаем и чиним «боевые» баги! ━━━━━━━━━━━━━━━━━━ 👋 Привет, родные 👋 ну что, самое время газануть? ))) 🧩 Знакомо? Сайт «жив», база «жива», а ответов нет. 💡 Обычно дело в простых штуках: порт не слушает, адрес не тот, прокси спорит с бэкендом. 🔬 Соберём стенд, где все связи видно как на ладони. ━━━━━━━━━━━ 🛠 Что делаем в серии ━━━━━━━━━━━ • — nginx на 80-м порту; • — тонкий бэкенд на Flask (localhost:5000); • — PostgreSQL (localhost:5432). ➡️ Маршрут: браузер → nginx → /api → бэкенд → БД → ответ. ━━━━━━━━━━━ 🎯 Зачем это тебе ━━━━━━━━━━━ • Видишь систему целиком, а не «ошибку в вакууме». • Это может сработать у вас на работе и на собесе: типовые кейсы «502», «БД недоступна», «таймаут на порту». ━━━━━━━━━━━ 📚 Что разбираем по факту ━━━━━━━━━━━ • Обратный прокси в nginx к локальному бэкенду. • Как бэкенд ходит в PostgreSQL и где чаще рвётся. • Где искать правду: journalctl, логи postgres, ss. 🔎 Шесть поломок и быстрый путь к причине: — бэкенд умер → 502; — слушает не тот адрес; — неправильный логин/пароль к БД; — БД не слушает TCP; — UFW душит снаружи; — nginx не перечитал конфиг. ━━━━━━━━━━━ 🤝 Честно ━━━━━━━━━━━ Без Docker и оркестраторов. База — связки и диагностика: IP → порт → процесс → конфиг → логи. ━━━━━━━━━━━ 🚀 Как работать с выпуском ━━━━━━━━━━━ • Открываешь лабу. • Поднимаешь веб + бэкенд + БД. • Специально ломаешь по пунктам и чинишь. • Короткий отчёт: «что сломал → как нашёл → чем починил». 🔗 Лаба (README, команды, разбор): https://github.com/b4shninja/b4shninja/blob/main/courses/from_zero_to_devops_hero/lab04/README.md «Страх — это вывеска “здесь будет рост”.» Зови всех-всех, подтягивайтесь и жмите «подписаться».🔥

Привет, родные 👋 не газуется? ⚡️⚡️⚡️ Страшно начинать новое — нормально. Разбираем, почему так и что с этим делать Многие пи
Привет, родные 👋 не газуется? ⚡️⚡️⚡️ Страшно начинать новое — нормально. Разбираем, почему так и что с этим делать Многие пишут: «Мне уже поздно», «память плохая», «начну завтра». Так что произошло вот что: мозг не ленивый — он экономит энергию и защищает нас от стыда. А мы принимаем это за «я не способен». ‼️ Но хорошая новость: это чинится конкретными шагами. Ниже — разбор и понятный план. 1️⃣ Почему нас клинит перед стартом • Мозг любит привычное. Новое = риск. Вот почему это важно: тревога — это не знак «не трогай», а сигнал «будет непривычно». • Сравнение с профи. Смотришь на чужие 5 лет опыта и думаешь: «я ноль». Ноль — это нормально в начале. • Страх выглядеть глупо. «Сейчас спрошу — подумают, что туплю». И молчим. Теряем время. • Перфекционизм. «Сначала разберусь во всём, потом начну». В итоге не начинаем. 2️⃣ Мифы про «старый/плохая память» • Возраст ≠ стоп. Учиться можно в 30, 40 и 50+. Меняется скорость и стратегия: меньше «зазубрить», больше «связать с опытом». • Память тренируется задачами, а не «волей». Вот как это работает: делаешь маленькие циклы «прочитал → попробовал → объяснил». • Усталость — не «глупость». Иногда тебе не учиться — тебе спать. 3️⃣ Что делать. Короткий план без героизма 0. Выбери крошечную цель на 7 дней. Не «выучу DevOps», а «каждый день 25 минут: Linux-команды + конспект 5 строк». 1. Разбей первый шаг до смешного. Открыть «лабу», запустить терминал, набрать 3 команды. Всё. Дальше можно продолжить, если есть силы. 2. Ритуал входа (2 минуты). • режим «не думаем»: надел наушники → открыл план → старт таймера 25 мин. • телефон — в другой комнате. Да, это важно. 3. Работай на «черновик». Разреши себе 100 плохих попыток. Плохая попытка считается. Идут знания. 4. Учись вслух. После блока скажи себе: «Сегодня понял/сделал: …». Это закрепляет лучше, чем ещё ютуб. 5. Спроси один раз в день. Застрял >10 минут — задай вопрос в чат/поиску. Это может вам помочь не тратить вечер на ерунду. 6. Мини-отчёт (1–3 строки). Что сделал, что было непонятно, что завтра. Конец. 4️⃣ Как не сдуться на 2-й неделе • Ограничь сравнение. Подписки/лента — в режим «по выходным». • Окружение. Найди 1–2 человека «учимся вместе». Можно в комментариях к посту. • Шаблон дня. Один и тот же час. Мозг любит предсказуемость. • Запланируй спад. Будет день, когда не хочется. Сделай микро-дозу: 10 минут. Считается. 5️⃣ Скрипты против «я слишком стар/глуп» • «Я не медленный — я новичок. Новички делают медленно и вслух — это норма». • «Мне не нужно понять всё. Мне нужно сделать следующий шаг». • «Я учусь, а не сдаю экзамен. Ошибка — часть работы». Сохрани, перечитывай перед началом. 6️⃣ Мини-план на 14 дней (пример для тех, кто идёт в DevOps) Дни 1–3: терминал и базовые команды (cd, ls, cat, grep, tail). Дни 4–5: процессы и сервисы (ps, top/htop, systemctl). Дни 6–7: пакеты (apt install/remove/show), логи (journalctl). Дни 8–9: сети (ip a, ip route, ping, curl). Дни 10–11: git-минимум (clone, branch, commit, push). Дни 12–14: маленький проект: «поднять nginx, страничку и чек-лист». Каждый день: 25–40 минут, мини-отчёт 3 строки. 7️⃣ Если кажется, что память «не держит» • Пиши короткие конспекты и чек-листы команд — своей фразой. • Повтор на следующий день: 5 минут посмотреть вчерашнее и запустить 2–3 команды заново. • Объясни другу/чату: «Вчера я делал X, вот как». Это цементирует знания. И Т О Г Вы не сломаны. Вы живые. Страх — это просто сигнал «будет новое». Делаем маленькие шаги, фиксируем прогресс, задаём вопросы, не стыдимся быть новичками. p.s эта статья-пост посвящается моим товарищам, которые так и не начали =)

Привет, родные 👋 Газу, газу, газу! Едем дальше S01E09 — Базовая сеть: как понять, почему «не стучится до базы» https://dzen.
Привет, родные 👋 Газу, газу, газу! Едем дальше S01E09 — Базовая сеть: как понять, почему «не стучится до базы» https://dzen.ru/a/aO1h8HRYgTIcamtJ