Библиотека девопса | DevOps, SRE, Sysadmin
Все самое полезное для девопсера в одном канале. Наши курсы: https://clc.to/ZJ7Z1w По рекламе: @tproger_sales_bot Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787 Заявка: 8137718351
إظهار المزيد📈 نظرة تحليلية على قناة تيليجرام Библиотека девопса | DevOps, SRE, Sysadmin
تُعد قناة Библиотека девопса | DevOps, SRE, Sysadmin (@devopsslib) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 10 338 مشتركاً، محتلاً المرتبة 11 808 في فئة التكنولوجيات والتطبيقات والمرتبة 61 456 في منطقة روسيا.
📊 مؤشرات الجمهور والحراك
منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 10 338 مشتركاً.
بحسب آخر البيانات بتاريخ 26 أكتوبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -42، وفي آخر 24 ساعة بمقدار -6، مع بقاء الوصول العام مرتفعاً.
- حالة التحقق: غير موثّقة
- معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 10.35%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 4.81% من ردود الفعل نسبةً إلى إجمالي المشتركين.
- وصول المنشورات: يحصل كل منشور على متوسط 1 070 مشاهدة. وخلال اليوم الأول يجمع عادةً 497 مشاهدة.
- التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 3.
- الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل devops'a, навигация, скрипт, docker, git.
📝 الوصف وسياسة المحتوى
يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
“Все самое полезное для девопсера в одном канале.
Наши курсы: https://clc.to/ZJ7Z1w
По рекламе: @tproger_sales_bot
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Заявка: 8137718351”
بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 27 أكتوبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.
$() вместо обратных кавычек для подстановки команд
Обратные кавычки работают. Но они же и мешают: плохо читаются и не дают вложить одну команду в другую без боли.
Проблема
Когда нужно подставить вывод команды в переменную или другую команду, оба синтаксиса технически делают одно и то же. Но обратные кавычки визуально сливаются с апострофами, их тяжело заметить в длинной строке, а при попытке вложить одну подстановку в другую всё быстро превращается в нечитаемый код.
Что делает $()
$() это современный способ подстановки команд в bash.
Он выполняет команду внутри скобок и подставляет её вывод на место:
# Устаревший стиль — сложно читать, сложно вкладывать
today=`date '+%Y-%m-%d'`
# Современный и читаемый вариант
today=$(date '+%Y-%m-%d')
echo "Today is $today"
Разница небольшая, но когда команды усложняются, $() выигрывает однозначно.
Вложенность где это особенно важно
Главное преимущество $() проявляется при вложении. С обратными кавычками вложенность либо невозможна, либо требует экранирования обратным слешем, что делает код трудночитаемым.
С $() вложение выглядит естественно:
# Вложение — работает чисто только с $()
lines=$(wc -l < "$(find . -name '*.log' | head -1)")
Здесь сначала выполняется внутренняя команда find, которая ищет первый .log файл. Её вывод передаётся в wc -l, и результат подсчёта строк записывается в переменную lines.
Попробуйте написать то же самое на обратных кавычках, получите либо ошибку, либо код, который никто не разберёт через неделю.
Обратные кавычки можно встретить в старых скриптах — это нормально. Но для нового кода стоит использовать $(). Читаемость лучше, вложенность работает, и это соответствует стандарту POSIX для современных оболочек.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptdocker exec, запускаете mysqldump локально, и всё.
Для этого нужны два условия: на хосте установлен MySQL-клиент, и в конфигурации контейнера прописан проброс порта.
Настройка Docker Compose
В docker-compose.yml должна быть секция ports:
services:
mysql:
image: mysql:8
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: yourpassword
volumes:
- mysql-data:/var/lib/mysql
Запуск дампа с хоста:
mysqldump -h 127.0.0.1 -P 3306 \
-u root -p'yourpassword' \
--single-transaction \
mydatabase > backup.sql
Флаг --single-transaction важен для InnoDB: он снимает дамп без блокировок таблиц.
Когда это имеет смысл
Версия mysqldump на хосте может отличаться от той, что внутри контейнера. Это важно, потому что поведение флагов и формат дампа меняются от версии к версии. Если вы хотите точно контролировать, какая версия утилиты делает дамп, этот способ даёт такую возможность.
Ещё один плюс: если у вас уже есть скрипты резервного копирования на хосте, этот подход встраивается в них без лишних правок.
Про безопасность
В разработке открытый порт не проблема. В продакшне стоит убедиться, что 3306 слушает только 127.0.0.1, а не все интерфейсы. Иначе база доступна снаружи, что плохо.
В docker-compose.yml это выглядит так:
ports:
- "127.0.0.1:3306:3306"
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptiptables-nft переименован в iptables, а старый legacy-бэкенд теперь доступен как iptables-legacy.
При переключении между пакетами нужно проверить наличие .pacsave-файлов в /etc/iptables/ и при необходимости восстановить правила вручную:
/etc/iptables/iptables.rules.pacsave /etc/iptables/ip6tables.rules.pacsaveБольшинство конфигураций продолжит работать без изменений. Но если вы используете нестандартные xtables-расширения или поведение, специфичное для legacy-бэкенда, стоит проверить всё вручную и при необходимости переключиться на
iptables-legacy.
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрииsheets budget.csv
Прочитать конкретную ячейку или диапазон без открытия интерфейса:
sheets budget.csv B9
sheets budget.csv B1:B3
Изменить ячейку из командной строки:
sheets budget.csv B7=10 B8=20
Передать данные через stdin:
sheets <<< "ID,Name,Age
1,Alice,24
2,Bob,32"
Как это работает внутри
Навигация сделана под vim-пользователей: h/j/k/l для перемещения, gg/G для прыжка к началу или концу, / для поиска. Редактирование через i, выделение через v, отмена через u. Сохранение по :w, выход по :q. Если вы привыкли к vim, освоите sheets за пять минут.
Есть поддержка undo/redo, буфер обмена, визуальное выделение диапазонов и даже формулы в visual mode через =.
Установка:
go install github.com/maaslalani/sheets@main
Для тех, кто работает в терминале и не хочет переключаться в GUI ради CSV. Полезно при отладке экспортов, быстром просмотре логов в табличном формате или в CI-скриптах, где нужно вытащить конкретное значение.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераdocker exec mysql-container mysqldump \
-u root -p'yourpassword' \
--single-transaction \
--routines \
--triggers \
mydatabase > backup_$(date +%Y%m%d_%H%M%S).sql
Флаг --single-transaction обязателен для InnoDB. Он делает консистентный снимок без блокировки таблиц, приложение продолжает работать в штатном режиме. Флаги --routines и --triggers включают в дамп хранимые процедуры и триггеры, которые mysqldump по умолчанию пропускает.
Бэкап всех баз сразу:
docker exec mysql-container mysqldump \
-u root -p'yourpassword' \
--single-transaction \
--all-databases > full_backup_$(date +%Y%m%d_%H%M%S).sql
Восстановление:
docker exec -i mysql-container mysql \
-u root -p'yourpassword' mydatabase < backup_20260403_040000.sql
Но у этого подхода есть потолок. Нет планировщика, нет сжатия, нет отправки на удалённое хранилище. Всё это придётся добавлять самостоятельно.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераLangGraph, извлечение данных из кривых сканов для RAG и комплаенс по 152-ФЗ.
Если всё ещё сомневаетесь, послушайте голосовое от спикера курса Влада Прошинского, где он объясняет, как правильно тестировать агентов перед релизом.Программа курса, полный состав спикеров и другие подробности 👈🏻 ВАЖНО! До 5 апреля на курс действует скидка, но свободные места могут закончиться раньше.
trivy image --exit-code 1 --severity HIGH,CRITICAL myapp:latest
Для GitHub Actions:
- name: Scan image
uses: aquasecurity/trivy-action@master
with:
image-ref: myapp:latest
exit-code: '1'
severity: 'HIGH,CRITICAL'
Запускайте после каждой сборки. Поймаете проблему до прода, а не после звонка от безопасников или, что хуже, после инцидента.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераdocker run, тот же интерфейс Docker Desktop.
Единственное, что меняется это где именно работает движок. Соединение идёт через зашифрованный туннель, каждая сессия изолирована и не сохраняет данные после завершения.
➡️ Блог разработчиков
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрии#!/bin/bash
set -euo pipefail
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}
backup_files() {
local source_dir="$1"
local dest_dir="$2"
log "Backing up $source_dir to $dest_dir"
cp -r "$source_dir" "$dest_dir"
}
# Main
backup_files "/var/www" "/backups/www"
log "Done."
Обратите внимание на local перед переменными внутри backup_files. Без local переменная source_dir существует глобально. Если где-то ещё в скрипте есть переменная с таким же именем, вы получите баг, который сложно отловить. С local переменная живёт только внутри своей функции и нигде больше.
Ещё плюс это переиспользование. Функцию log можно взять и вставить в любой другой скрипт без изменений.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptservices:
floci:
image: hectorvent/floci:latest
ports:
- "4566:4566"
volumes:
- ./data:/app/data
Все сервисы доступны на http://localhost:4566. Регион и учётные данные могут быть любыми.
Если вы использовали LocalStack в CI или локальной разработке и не хотите переходить на платный тариф, Floci закрывает эту потребность.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераgit reflog
Увидите список всех состояний HEAD с хэшами. Находим запись до того, как всё сломалось:
abc1234 HEAD@{3}: commit: my important work
Восстанавливаем коммит
Вариант 1. Вернуть ветку на нужный коммит:
git reset --hard abc1234
Вариант 2. Cоздать новую ветку из того коммита:
git checkout -b recovery-branch abc1234
Если были незакоммиченные изменения
Reflog тут не поможет — git reset --hard уничтожает их без следа. Но есть варианты:
• Проверьте .git/ORIG_HEAD. Иногда Git сохраняет предыдущее состояние туда
• Попробуйте git fsck --lost-found —- ищет «висячие» объекты в репозитории
• Если работаете в VS Code или IntelliJ, то проверьте Local History, часто спасает
Git почти никогда не удаляет данные сразу. У вас есть ~30 дней, пока сборщик мусора не почистит потерянные объекты.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt