Библиотека девопса | DevOps, SRE, Sysadmin
10.4K subscribers
1.97K photos
76 videos
5 files
3.41K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Download Telegram
☁️ Пора переходить на GraalVM Native Image

Spring Boot на JVM стартует 15–20 секунд и съедает ~300 МБ памяти в простое. В Kubernetes это означает полминуты бесполезного ожидания при каждом скейлинге, убитые liveness-пробы и initialDelaySeconds: 25 на каждом сервисе. А serverless с таким холодным стартом вообще не вариант.

GraalVM Native Image компилирует Java-приложение в нативный бинарник ещё на этапе сборки. Никакого JVM внутри, никакой интерпретации байткода. На выходе получаем старт за 60–90 мс и 55 МБ памяти в idle вместо 280.

Как это работает

GraalVM делает AOT-компиляцию (Ahead-of-Time). Статический анализатор проходит по всему коду и собирает в бинарник только то, что реально используется. Это называется closed-world assumption: всё, что не видно анализатору на этапе сборки, в бинарник не попадает. Мёртвый код, неиспользуемые библиотеки, весь JIT-компилятор — всё отсекается.

Отсюда же и главная проблема. Java активно использует рефлексию, динамическую загрузку классов и runtime-генерацию прокси. Статический анализатор этого не видит. Код соберётся, а в рантайме упадёт с ClassNotFoundException.

Spring Boot 3.x решает это через собственный AOT-движок: он заранее обрабатывает метаданные, подменяет динамические вызовы статическими и генерирует код регистрации бинов до компиляции.

Как собрать

В pom.xml добавляем плагин:
<build>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


Собираем нативный образ:
mvn -Pnative native:compile


Или через Docker (удобнее для CI/CD, не нужен локальный GraalVM):
mvn -Pnative spring-boot:build-image


Сборка занимает 3–8 минут даже для небольших сервисов. Это нормально — статический анализ и AOT-компиляция делают много работы. В пайплайне это отдельный шаг, не для быстрого фидбека.

Когда это нужно

JVM не устарела. Для сервисов с постоянной нагрузкой, где важен максимальный throughput после прогрева, обычный JVM с JIT по-прежнему лучший выбор.

GraalVM Native Image — для другого сценария: serverless-функции, сервисы, которые скейлятся до нуля ночью, event-driven обработчики с пиковой нагрузкой и долгими паузами, batch-задачи, которые запускаются раз в сутки.

➡️ Больше Java тут

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
✏️ Ещё один HTTP-клиент в терминале

Тестировать API через curl утомительно. Запросы длинные, плохо читаются, а сохранять их приходится в заметках или скриптах. Postman и Insomnia решают проблему, но тянут за собой тяжёлый GUI, аккаунты и облачную синхронизацию.

Slumber — это полноценный HTTP-клиент с интерфейсом в терминале, где вся конфигурация живёт в YAML-файле рядом с проектом.

Что делает Slumber

Slumber работает в двух режимах. TUI — интерактивный интерфейс в терминале, где можно выбирать запросы, отправлять их и просматривать ответы. CLI — для быстрых одноразовых вызовов и использования в скриптах. Оба режима читают одну и ту же конфигурацию, которая называется request collection.

Конфигурация хранится в файле slumber.yml. Это значит, что её можно коммитить в репозиторий и шарить между разработчиками. Не нужно экспортировать коллекции, пересылать JSON-файлы или синхронизировать через облако.

Проект написан на Rust, распространяется под лицензией MIT и останется бесплатным. На GitHub у него около 870 звёзд.

Как начать

Установка через Homebrew:
brew install LucasPickering/tap/slumber


Или через Cargo:
cargo install slumber --locked


Для быстрого старта достаточно сгенерировать шаблон коллекции:
slumber new


После этого запускаем TUI одной командой:
slumber


Пример коллекции

Допустим, мы работаем с API на двух окружениях — локальном и продакшене. Файл slumber.yml будет выглядеть так:
profiles:
local:
data:
host: http://localhost:5000
production:
data:
host: https://myfishes.fish

requests:
create_fish:
method: POST
url: "{{ host }}/fishes"
body:
type: json
data: { "kind": "barracuda", "name": "Jimmy" }

list_fish:
method: GET
url: "{{ host }}/fishes"
query:
big: true


Переменная {{ host }} подставляется из текущего профиля. Переключение между local и production делается прямо в TUI без правок файла.

Что ещё умеет

Slumber поддерживает шаблоны (templates), которые позволяют собирать запросы динамически — из результатов других запросов, файлов или вывода shell-команд. Ответы можно фильтровать через JSONPath прямо в интерфейсе. Если вы переезжаете с Insomnia, есть встроенный импорт коллекций. Также Slumber можно использовать как Python-пакет для интеграции в свои инструменты.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 Обновился MX Linux. Текстовый установщик, ядро 7.0 и Debian 13.5

Вышел MX Linux 25.2 — второе обновление серии «Infinity». Релиз основан на Debian 13.5 «Trixie». Стандартные ISO поставляются с ядром Linux 6.12.90, а AHS-версии (Advanced Hardware Support) получили ядро Liquorix 7.0 и mesa 26.0.1.

Главное нововведение — текстовый режим установщика. Теперь MX Linux можно установить без графического окружения, прямо из терминала:
sudo minstall --tui


Помимо этого, в установщике улучшена навигация по клавиатуре в TUI-режиме, добавлено редактирование форматов дисков, исправлена работа GRUB с повреждёнными директориями локалей и убрана опция установки ESP GRUB при отсутствии ESP boot-папки.

Из остального: улучшена работа chroot-rescue-scan с Btrfs и зашифрованными разделами, переработана загрузка live-системы (boot-скрипты вынесены из rc.local), добавлена ручная выборка ядра при запуске, обновлены MX Tools, темы и обои. Также вернулся RPI Respin для Raspberry Pi.

Доступны ISO с Xfce, KDE Plasma и Fluxbox. Пользователям MX 25 переустановка не нужна, все обновления приходят через стандартный канал:
sudo apt update && sudo apt full-upgrade


➡️ Анонс

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
🛠 Один файл, который избавит от рутины. Часть 1

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

Файл ~/.ssh/config решает эту проблему. Он позволяет описать все параметры подключения один раз и обращаться к серверу по короткому имени. Но это только начало. Через тот же файл настраиваются jump-хосты, автовыбор ключей, переиспользование соединений и многое другое.

В первой части разберём основы: алиасы, шаблоны и ProxyJump.

Как это устроено

~/.ssh/config читается при каждом вызове ssh, scp, sftp или rsync. Файл состоит из блоков Host, каждый из которых задаёт параметры для конкретного хоста или группы хостов по шаблону.

Если файла ещё нет, создайте его:
mkdir -p ~/.ssh
touch ~/.ssh/config
chmod 600 ~/.ssh/config


Структура простая:
Host staging
HostName 203.0.113.50
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes


Теперь вместо длинной команды с кучей флагов достаточно написать:
ssh staging


То же самое работает с scp и rsync:
scp staging:/var/log/app.log ./
rsync -avz staging:/var/www/html/ ./backup/


Шаблоны и подстановки

Блок Host поддерживает wildcards. Например, чтобы задать настройки для всех продакшн-серверов:
Host *.prod.example.com
User ec2-user
IdentityFile ~/.ssh/id_ed25519_prod
ServerAliveInterval 60


Символ ? работает как подстановка одного символа. Host web-? совпадёт с web-1, web-a, но не с web-10.

Можно указать несколько имён в одном блоке:
Host web db cache
User ubuntu
IdentityFile ~/.ssh/id_ed25519_work


А через ! исключить конкретный хост:
Host * !bastion.prod.example.com
ServerAliveInterval 30


Блок Host * применяется ко всем подключениям и удобен для общих настроек. Важный момент: SSH читает файл сверху вниз и применяет первое совпавшее значение для каждой директивы. Поэтому конкретные блоки размещайте выше общих.

ProxyJump. Прозрачный доступ через bastion

Продакшн-серверы обычно закрыты от прямого доступа. Подключение идёт через bastion-хост. Без конфига это два шага: сначала SSH на bastion, потом оттуда на целевой сервер. С конфигом всё прозрачно:
Host bastion
HostName bastion.prod.example.com
User ubuntu
IdentityFile ~/.ssh/id_ed25519_prod

Host *.prod.internal
User ubuntu
IdentityFile ~/.ssh/id_ed25519_prod
ProxyJump bastion


Теперь ssh db.prod.internal автоматически пойдёт через bastion. Работает и с scp, и с rsync.

Для цепочки из нескольких jump-хостов перечислите их через запятую:
Host deep.internal
ProxyJump bastion.example.com,internal-gateway.example.com


В старых конфигах можно встретить ProxyCommand ssh -W %h:%p bastion.example.com. Это делает то же самое, но ProxyJump короче и понятнее. Для новых конфигов используйте его.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
⚡️ Знакомьтесь с экспертом Proglib Academy: AI-архитектор Антон Будняк

Антон — мастер превращения сырых AI-идей в отказоустойчивые системы. Он знает, как запустить MVP за неделю и масштабировать его так, чтобы архитектура не рассыпалась под нагрузкой в сотни тысяч юзеров.

За что его ценит IT-комьюнити:

🟣 Опыт в финтехе и крупном бизнесе
Руководил разработкой ML-моделей в финтехе с экономическим эффектом более 100 млн ₽


🟣 Запуск продуктов на 6.000+ пользователей
Антон строит сервисы, которыми пользуются тысячи людей в реальном проде.


🟣 Ускоряет разработку
Оптимизировал ML-пайплайны и кратно сократил время от начала разработки до релиза


📚 Где Антон черпает знания (рекомендации эксперта):

- X* — главный источник новостей. Рекомендую блог Бориса Черни (создателя Claude Code) — там база про использование ИИ в разработке.
- Нетворкинг в ТГ: чаты LLM под капотом и AI-чат — здесь можно найти ответ почти на любой технический вопрос.
- Новости AI: каналы Сиолошная и Denis Sexy IT.

На курсе Agentops Антон учит строить «неубиваемый» бэкенд: работать с очередями, таймаутами и балансировкой нагрузки, чтобы ваши агенты работали стабильно 24/7.

🎁 Майские СКИДКИ в Proglib Academy!

До конца мая на все курсы академии (включая AgentOps и разработку ИИ-агентов) действует скидка -40%. Это лучший момент, чтобы войти в AI-разработку под присмотром практиков.

Узнать больше о программе и обучении у Антона:
👉 Курс о том, как внедрять AI-логику в бэкенд и сохранять стабильность сервиса

Продолжаем знакомить вас с командой?
👍 — Да, ждем новых лиц
🔥 — Пойду подпишусь на каналы из списка Антона

🏃‍♀️ Proglib Academy

* - запрещен в рф
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 SSH Config. Ключи, производительность и отладка. Часть 2

В первой части мы разобрали алиасы, шаблоны и ProxyJump. Теперь — автовыбор ключей, переиспользование соединений и отладка.

Управление ключами

Если у вас несколько SSH-ключей, конфиг сам подберёт нужный:
Host *.work.example.com
IdentityFile ~/.ssh/id_ed25519_work
IdentitiesOnly yes

Host github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
IdentitiesOnly yes


IdentitiesOnly yes запрещает SSH перебирать все ключи из агента. Без этой директивы можно получить отказ на серверах с низким MaxAuthTries.

Если на одной машине два GitHub-аккаунта, создайте алиасы github-personal и github-work с HostName github.com и разными ключами. В remote репозитория укажите алиас вместо github.com:
git remote set-url origin git@github-work:org/repo.git


Общие настройки

ControlMaster переиспользует открытое TCP-соединение вместо нового хендшейка. Keepalive не даёт файрволам закрывать неактивные сессии. ConnectTimeout ограничивает ожидание при подключении к недоступному хосту. Для медленных каналов (VPN, мобильный интернет) добавьте Compression yes.
Host *
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h:%p
ControlPersist 4h
ServerAliveInterval 60
ServerAliveCountMax 3
ConnectTimeout 10


Не забудьте mkdir -p ~/.ssh/sockets.

Отладка

ssh -G staging покажет итоговую конфигурацию без подключения. ssh -vvv staging выдаст подробный лог с информацией о том, какой блок совпал и какой ключ используется.

Частые проблемы: конфиг игнорируется из-за прав 644 вместо 600, SSH берёт не тот ключ без IdentitiesOnly yes, ControlMaster падает из-за несуществующей директории для сокетов. Правильные права:
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/config
chmod 600 ~/.ssh/id_*


~/.ssh/config окупается за полчаса настройки. Этот файл стоит хранить в dotfiles-репозитории и обновлять при изменениях в инфраструктуре. По сути это рабочая документация о том, как устроен доступ к вашим серверам.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🔄 PuTTY 0.84. Исправлены уязвимости при SSH-подключении

Релиз PuTTY 0.84 закрывает две уязвимости безопасности.

Первая позволяла вредоносному серверу или MITM-атакующему вызвать крэш клиента во время начального обмена ключами SSH.

Вторая касалась подключений через прокси с паролем по небезопасным протоколам вроде Telnet: весь сеанс ошибочно помечался «trust sigil», что могло обмануть пользователя и заставить его ввести пароль прокси в ответ на поддельный запрос от сервера.

Из нового: появилась возможность запускать пользовательскую команду перед основным подключением.

Также исправлены ошибки:

• на Unix нельзя было настроить CA для host-сертификатов через GUI без ручного создания конфигурационной директории;

• при подключении через HTTP-прокси с аутентификацией появлялась ложная ошибка «Socket is not connected»;

• на Windows курсор мигал слишком быстро при отключённом системном мигании;

• на Wayland pterm падал при записи в utmp и не находил шрифт по умолчанию.

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
😉 Язык, который упрощает разработку eBPF-программ

Писать eBPF на чистом C с libbpf больно. Нужно разбираться в ограничениях верификатора, вручную управлять tail calls, настраивать загрузчики, собирать отдельно userspace и kernel-код. А если добавить kfunc, то ещё и писать модуль ядра с BTF-регистрацией. Для одной задачи приходится жонглировать тремя парадигмами программирования одновременно.

KernelScript — это DSL для eBPF, который позволяет описывать userspace, eBPF и kernelspace код в одном файле. Компилятор сам разберётся, что куда отправить. На выходе — готовый проект с C-кодом, Makefile и загрузчиком. Проект написан на OCaml, распространяется под Apache 2.0.

Что именно он делает

Вы пишете .ks файл. Компилятор по атрибутам: @xdp, @tc, @kfunc, @helper; определяет, какая функция относится к какому домену, и генерирует соответствующий C-код. XDP-функции уходят в eBPF-бинарник, обычные функции становятся userspace-кодом, @kfunc превращается в модуль ядра.

Вот минимальный пример XDP-программы на KernelScript:
@xdp fn packet_filter(ctx: *xdp_md) -> xdp_action {
var packet_size = ctx->data_end - ctx->data
if (packet_size > 1500) {
return XDP_DROP
}
return XDP_PASS
}


Для сравнения — та же логика на чистом C заняла бы раза в три больше строк, включая boilerplate для секций, лицензии и привязки к хукам.

Что решает

Главная проблема eBPF-разработки — это количество ручной работы. KernelScript автоматизирует несколько вещей, которые обычно приходится делать руками.

Tail calls. Вместо ручной настройки program arrays и вызовов bpf_tail_call() достаточно написать return other_xdp_func(ctx). Компилятор сам сгенерирует нужный код.

Разделяемые map-ы. Объявляете map один раз, и он доступен во всех программах как обычная переменная:
pin var shared_counter : hash<u32, u32>(1024)

@xdp fn counter(ctx: *xdp_md) -> xdp_action {
shared_counter[1] = shared_counter[1] + 1
return XDP_PASS
}


Lifecycle программ. Тип программы проверяется на этапе компиляции — нельзя вызвать attach() до load().

Генерация kfunc-модулей. Достаточно пометить функцию @kfunc, и компилятор создаст .mod.c файл с модулем ядра и регистрацией BTF-символов.

Как запустить

Зависимости для Debian/Ubuntu:
sudo apt install libbpf-dev libelf-dev zlib1g-dev opam bpftool


Установка:
git clone https://github.com/multikernel/kernelscript.git
cd kernelscript
opam init
opam install . --deps-only --with-test
eval $(opam env) && dune build && dune install


Создание проекта:
kernelscript init xdp my_filter


Это сгенерирует каталог my_filter/ с файлом my_filter.ks и README.

После редактирования .ks файла — компиляция и сборка:
kernelscript compile my_filter/my_filter.ks
cd my_filter/
make
sudo ./my_filter


На выходе получится структура:
my_filter/
├── my_filter.ks # исходник KernelScript
├── my_filter.c # userspace-программа
├── my_filter.ebpf.c # eBPF C-код
├── my_filter.mod.c # модуль ядра (если есть @kfunc)
├── Makefile
└── README.md


Поддерживаемые типы программ

KernelScript поддерживает основные типы eBPF-программ: @xdp для обработки пакетов, @tc для traffic control, @probe для трассировки функций ядра, @tracepoint для точек трассировки. Отдельно поддерживается struct_ops для TCP congestion control.

Система типов включает type aliases, структуры, enum-ы, фиксированные массивы (u8[64]) и указатели на функции. Всё это спроектировано с учётом ограничений верификатора eBPF, то есть нет сложных дженериков, которые могут сломать верификацию.

Итого

KernelScript не заменяет знание eBPF. Вам всё ещё нужно понимать, что такое XDP, как работают map-ы и зачем нужен bpf_probe_read. Но он убирает рутину и позволяет сосредоточиться на логике, а не на boilerplate. Проект пока в бете, API может меняться. Но если вы работаете с eBPF и устали от связки из трёх языков и пяти make-файлов, попробовать стоит.

➡️ Репозиторий

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Аудитные логи в облаке — отдельная распределённая система со своими требованиями к надёжности и стоимости хранения, а не «таблица с событиями».

Команда MWS Cloud Platform выложила подробный разбор архитектуры своего сервиса: от библиотеки, которую подключают сервисы облака, до хранилища на Apache Iceberg и движка StarRocks, с объяснением, почему выбрали именно такой набор технологий и где спрятаны неочевидные грабли.

Полезно всем, кто разрабатывает ИБ-инструменты, работает с большим количеством событий или просто интересуется инструментами безопасности в облаке.

Читать статью на Хабре
👀 Практический курс «Разработка AI-агентов для автоматизации задач, работы и собственных проектов» со скидкой 40% до конца мая!

Мы поговорили с десятками разработчиков, учли главные боли индустрии и запускаем полностью обновленный курс «ИИ-агенты 5.0». 🎉

Что вы узнаете?

- Как радикально оптимизировать траты на токены.
- Как на практике оценивать качество и точность работы агента.
- Как «докручивать» RAG-системы без потери качества.
- Как обеспечить устойчивость агента к сбоям внешних сервисов без падения всей системы, и про многое-многое другое.

Спикеры — практики с опытом в AI и Data Science в крупных IT-компаниях, таких как Яндекс, Сбер, Raft и Газпромбанк др.

Длительность: 6–12 недель в зависимости от тарифа.

👉 Занимайте место на главном агентском интенсиве по лучшей цене
🛠 Как перестать бояться терминала и полюбить DevOps

Если ты устал читать про «поды» и «неймспейсы» в теории, но при виде пустой консоли всё ещё впадаешь в ступор, то заходи сюда.

Это интерактивный тренажер для тех, кто хочет реально разобраться в Linux, сетях и контейнерах.

А где вы тренируете свои навыки в Linux?
❤️ — на своих серверах/виртуалках
🔥 — юзаю подобные интерактивные курсы
👍 — учусь сразу «на бою» в проде

🔹 Практический интенсив «Архитектуры и шаблоны проектирования»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#магиякода
Please open Telegram to view this post
VIEW IN TELEGRAM
3
⭐️ Мажорный релиз тайлового дистрибутива на базе Debian 13

Вышла стабильная версия TileOS 2.0. Это Linux-дистрибутив с тайловыми Wayland-композиторами, построенный на базе Debian Stable. Проект российский, ориентирован на тех, кто хочет клавиатурно-ориентированное окружение без длительной ручной настройки.

Что изменилось

Пакетная база обновлена до Debian 13. По умолчанию используется нативное ядро Debian с поддержкой Secure Boot. Для тех, кому нужна оптимизация под десктопные задачи, доступно ядро Liquorix.

Из заметных замен: вместо sudo теперь sudo-rs (реализация на Rust), вместо Dnsmasq — systemd-resolved, вместо isc-dhcp-clientdhcpcd5. Rofi заменён на Wofi, swaylock — на gtklock. Firefox ESR уступил место обычному Firefox из репозитория Mozilla.

Файловая система по умолчанию при автоматической разметке — Btrfs. Установщик теперь также поддерживает F2FS. Добавлен Timeshift для бэкапов через Rsync или Btrfs-снапшоты.

Из нового в комплекте: утилита TileOS Welcome для первичной настройки, tileos-kernel-manager для управления ядрами, swaykbdd для раскладок по окнам, Kdeconnect для связи с мобильными устройствами, предустановленная поддержка Intel QuickSync Video. Добавлен Flatpak с включённым Flathub и GNOME Software для управления пакетами.

Большая часть фоновых процессов рабочего стола теперь запускается через пользовательские systemd-юниты. Исправлены ошибки в конфигурации Waybar, добавлен модуль power-profiles-daemon.

Новые редакции

К основным редакциям (Sway, River, Qtile) добавились две экспериментальные:

Niri Edition использует композитор Niri, написанный на Rust. Окна выстраиваются в колонки на бесконечной горизонтальной ленте — новое окно не меняет размер существующих. Окружение тесно интегрировано с компонентами GNOME, включая Nautilus.

MiracleWM Edition использует композитор MiracleWM на базе библиотек Mir. Он реализует функциональность Sway с добавлением десктопных эффектов в духе Hyprland и SwayFX. Конфигурация через YAML.

Обновления композиторов

Sway обновлён до версии 1.11 — значительно улучшена поддержка видеокарт Nvidia, добавлены инструменты управления цветом (включая HDR), проведены оптимизации рендеринга. River обновлён до 0.3.12 с поддержкой дробного масштабирования, новой системой правил окон и улучшениями для Nvidia. Qtile обновлён до 0.31 с исправлениями стабильности в Wayland.

Загрузка

Доступно пять ISO-образов размером около 2.25 ГБ каждый, по одному на каждый композитор: Sway, River, Qtile, Niri, MiracleWM.

➡️ Release notes

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁1🤩1
🖥 Как работает Docker на самом деле

Docker - это не просто модно, это база. Разбираемся:

• Клиент: место, где ты пишешь команды типа build, pull и run. Твой пульт управления.
• Хост (Daemon): мозг всей системы. Он принимает твои хотелки и превращает их в реальные образы и контейнеры.
• Реестр (Registry): огромный склад (как DockerHub), где лежат готовые шаблоны образы.

Когда ты пишешь docker run, происходит целая цепочка событий:

1. Docker идет на склад и забирает нужный образ.
2. Создает из него изолированный контейнер.
3. Выделяет ему место на диске и настраивает сеть.
4. Запускает процесс.

Все. Твое приложение работает в идеальной среде, и ему плевать, какая операционка у сервера.

Уже упаковывали свои проекты в Docker?
🌚 - да, постоянно юзаю
👾 - нет, пока только присматриваюсь

🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib

🏃‍♀️ Азбука айтишника

#ликбез
Please open Telegram to view this post
VIEW IN TELEGRAM
😢1🌚1
🦾🧠🏋️ Качаем мозги к лету!

Все готовятся к пляжному сезону, а мы предлагаем прокачать хард-скилы, чтобы забрать крутой оффер, строить продукты будущего и работать из любой точки мира 😎

⚡️ Распродажа @proglib_academy: забирайте самые актуальные образовательные треки по сниженным ценам!

➡️ Разработка AI-агентов от 49 000 ₽ (вместо 69 000 ₽).

➡️ Курс AgentOps129 000 ₽ (вместо 149 000 ₽).

➡️ Математика для разработки AI-моделей23 990 ₽ (вместо 31 990 ₽).

➡️ ML для старта в Data Science 28 990 ₽ (вместо 38 990 ₽).

Почему мы?

⭐️Учим для продакшена. Наши программы заточены под реальные задачи бизнеса: как не слить бюджет на токены, как заставить LLM работать стабильно в бэкенде и как выстроить отказоустойчивую архитектуру.
⭐️Спикеры — суровые практики. Вы будете перенимать опыт у действующих AI-архитекторов, тимлидов и ML-инженеров из топовых IT-компаний.
⭐️Комплексный подход. Мы даем как мощный математический фундамент для понимания моделей «под капотом», так и передовые инструменты оркестрации агентов.
⭐️Много практики и фидбека. Вебинары, десятки практических заданий и живое общение с экспертами в чате Telegram на протяжении всего обучения.

Оставляйте заявку и бронируйте место со СКИДКОЙ 40%
Please open Telegram to view this post
VIEW IN TELEGRAM