Будь добрее #11 - Колыбельная на двоих

На прошлой неделе в прокат вышла комедия «На деревню дедушке 2» — и сразу заняла первую строчку по сборам среди российских фильмов: 101 млн рублей за дебютный уик-энд. Но разошёлся не трейлер, а отдельный двухминутный фрагмент — Юрий Стоянов и Фёдор Добронравов вдвоём, без спецэффектов и постановочного пафоса, поют колыбельную под гитару. Простая тёплая сцена посреди коммерческого проката — ровно то, ради чего иногда стоит досмотреть титры. #будьдобрее

6 сентября 2026 г. · llexa

dasha: дашборд здоровья кластера PostgreSQL

Обычно здоровье кластера PostgreSQL собирают вручную из pg_stat_statements, pg_stat_activity и логов VACUUM. dasha (github.com/dbulashev/dasha) сводит это в один веб-дашборд: медленные запросы, неэффективные индексы, блокировки, размер таблиц и прогресс VACUUM — с итоговым Health Score по формуле с весами. cd deploy/compose docker compose up -d # веб-интерфейс: http://localhost:3000 Бэкенд на Go 1.26, фронт на Vue 3.5, поддерживает PostgreSQL 14-18, аутентификацию через OIDC и RBAC, снимки состояния кластера для истории. Есть MCP-коннектор — можно подключить ИИ-ассистента прямо к метрикам кластера, и интеграция с Yandex Cloud для поиска по логам. ...

5 сентября 2026 г. · llexa

Афоризмы Мёрфи #9: Седьмое следствие

Продолжаем разбирать классику Артура Блоха. После шестого следствия (“если всё идёт хорошо — вы кое-что упустили”) — седьмое: «Невозможно сделать что-либо защищённым от дурака полностью, потому что дураки чрезвычайно изобретательны» Любая защита от человеческого фактора — валидация ввода, подтверждение перед rm, лимиты в конфиге — рано или поздно встречает пользователя, который найдёт способ её обойти не со зла, а просто потому что действовал не так, как предполагал автор. Отсюда правило: не пытаться закрыть все дыры разом, а логировать и откатывать быстро — предохранитель важнее брони. ...

5 сентября 2026 г. · llexa

delta: подсветка синтаксиса для git diff

Стандартный git diff красит строки только по +/- , без учёта языка — читать diff в незнакомом коде тяжело. delta — пейджер на Rust (github.com/dandavison/delta), который встаёт вместо less и красит diff как редактор: с подсветкой синтаксиса, номерами строк и опциональным side-by-side. # Debian — .deb с GitHub Releases (github.com/dandavison/delta/releases), версию смотреть там dpkg -i git-delta_*_amd64.deb git config --global core.pager delta git config --global interactive.diffFilter "delta --color-only" [delta] navigate = true # n/N — прыжки между файлами в diff side-by-side = true # два столбца вместо unified line-numbers = true delta работает не только с git diff — годится как пейджер и для diff -u. Темы подсветки — из библиотеки bat. ...

4 сентября 2026 г. · llexa

FUSE с нуля #2: монтируем облако через rclone

В прошлом выпуске серии sshfs показал главную идею FUSE — файловая система в userspace без единой строчки кода ядра. rclone расширяет это на облако: 40+ бэкендов (S3, Google Drive, WebDAV, Backblaze и т.д.) через один и тот же FUSE-интерфейс. # примонтировать заранее настроенный rclone remote rclone mount remote:bucket /mnt/cloud --daemon # с кэшем на чтение — критично для WebDAV/GDrive, где листинг медленный rclone mount remote:bucket /mnt/cloud --vfs-cache-mode writes --daemon # отмонтировать fusermount -u /mnt/cloud После монтирования каталог ведёт себя как обычная ФС — cp, ls, tail -f работают без клиента. Разница с sshfs: под капотом не SSH-сессия, а HTTP API облака, и --vfs-cache-mode решает, что кэшировать локально. ...

4 сентября 2026 г. · llexa

Обзор новинок #8: 27 августа — 3 сентября

Новые релизы за неделю — только то, что важно для сервера. vscode 1.136.0 nginx 1.31.5 — control API, predicate locations, ngx_http-модуль grafana v12.4.10 homepage v2.2.0 doggo v1.4.0 — bind резолверы к исходному адресу через -b keycloak 26.7.3 — фикс CVE-2026-35563 в LDAP-клиенте sing-box v1.14.0 loki v3.6.16 — флаг игнорировать пропавшие чанки при удалении логов immich v3.2.0-rc.0 bottom 0.14.9 — опция показывать нулевой сетевой трафик при старте #linux #sysadmin #releases

4 сентября 2026 г. · llexa

rsyslog: классический syslog жив и настраивается

journald пишет бинарный журнал локально, но текстовые файлы в /var/log и отправку логов на другой сервер до сих пор делает rsyslog — на Debian он стоит рядом с journald по умолчанию. # /etc/rsyslog.d/10-app.conf if $programname == 'myapp' then /var/log/myapp.log & stop *.emerg :omusrmsg:* mail.* -/var/log/mail.log Фильтр строится по facility.severity или по имени программы. & stop после правила — не отдавать сообщение дальше, иначе строка попадёт ещё и в общий syslog. *.* @logserver.local:514 # UDP *.* @@logserver.local:514 # TCP — надёжнее при нестабильной сети systemctl restart rsyslog logger -p mail.info "test message" # проверить правило без ожидания реального события #linux #logging

3 сентября 2026 г. · llexa

shellcheck: линтер для bash-скриптов, которые все пишут на глаз

Bash-скрипт для деплоя обычно пишется быстро и без ревью. shellcheck находит классические ошибки ещё до запуска. apt install shellcheck shellcheck deploy.sh deploy.sh:12:5: warning: Double quote to prevent globbing and word splitting [SC2086] deploy.sh:20:1: warning: This command doesn't exit, but sourced or eval'd files may have set -e [SC2317] Типичные находки: $VAR без кавычек в пути с пробелами, [ $a == $b ] вместо [ "$a" = "$b" ], забытая проверка $?. Каждое предупреждение — с кодом SCxxxx и ссылкой на объяснение. ...

3 сентября 2026 г. · llexa

udev: почему флешка каждый раз /dev/sdb, и как это исправить

Имя /dev/sdb — не гарантия: порядок инициализации USB-дисков при следующей загрузке может измениться. udev привязывает своё имя к устройству по атрибутам, а не по порядку обнаружения. udevadm info -a -n /dev/sdb # атрибуты устройства udevadm monitor # события подключения в реальном времени # /etc/udev/rules.d/99-backup-disk.rules SUBSYSTEM=="block", ATTRS{serial}=="WD-WCC4E1234567", SYMLINK+="backup-disk", OWNER="backup" Правило матчится по ATTRS{serial} и создаёт ссылку /dev/backup-disk на нужный диск — тот же принцип, что у /dev/disk/by-uuid/. udevadm control --reload-rules udevadm trigger --attr-match=subsystem=block # применить без переподключения #linux #systemd

3 сентября 2026 г. · llexa

pgbouncer: пул соединений перед PostgreSQL

PostgreSQL на каждое соединение форкает отдельный backend-процесс — при сотнях коротких подключений (веб-запросы, serverless-функции) это съедает память и CPU на сам факт подключения, ещё до первого запроса. pgbouncer держит пул готовых соединений к базе и раздаёт их клиентам. [databases] mydb = host=127.0.0.1 port=5432 dbname=mydb [pgbouncer] listen_port = 6432 pool_mode = transaction max_client_conn = 1000 default_pool_size = 20 Режимы pool_mode: session — за клиентом до disconnect, совместимо со всем (advisory locks, prepared statements) transaction — на время транзакции, самый экономный, но ломает session-level фичи statement — на один запрос, только для read-only трафика psql -h 127.0.0.1 -p 6432 -U app mydb # подключение через pgbouncer, не напрямую в базу #postgresql #dba

2 сентября 2026 г. · llexa