Claude-скиллы #5: план на бумаге — баг, который не случился

Без плана правка “по-быстрому” превращается в три часа блуждания по коду и два новых бага взамен старого. Проблема не в скорости мышления, а в отсутствии зафиксированных шагов, которые можно откатить. Skill writing-plans перед сложной задачей выписывает шаги, риски и откат: ошибку на шаге 3 видно сразу, а не после того, как она потянула шаг 7. Skill systematic-debugging работает похоже для багов: гипотеза → проверка → вывод, вместо “поменяю тут, авось заработает”. ...

September 25, 2026 · llexa

FUSE #5: sshfs — монтируем удалённую папку по SSH

sshfs монтирует удалённую директорию как обычную папку через FUSE — без NFS, без Samba, только существующий SSH-доступ: sshfs user@host:/remote/path /local/mountpoint Голое подключение отваливается при обрыве сети — в man прямо указан этот кейс с решением: -o reconnect вместе с keepalive держат сессию живой: sshfs user@host:/remote/path /mnt -o reconnect,ServerAliveInterval=15 Отмонтировать — не umount (это для BSD/macOS), на Linux актуальная команда fusermount3 -u /local/mountpoint. Многие дистрибутивы держат fusermount как симлинк для совместимости, но полагаться на него не стоит — под новым libfuse его может не быть. ...

September 25, 2026 · llexa

Webtop: полноценный Linux-десктоп в браузере через Docker

linuxserver/webtop — контейнер с полноценным графическим рабочим столом Linux, который открывается прямо в браузере, без RDP/VNC-клиента. Внутри — обычный дистрибутив (Ubuntu, Alpine, Fedora, Arch) с окружением на выбор: XFCE (по умолчанию), KDE, MATE, i3 или LXQt. ...

September 25, 2026 · llexa

Обзор новинок #11: релизы за 1–19 сентября

Новые релизы за пару недель — что важно для терминала и продакшена. tmux 3.8-rc — кандидат на новую мажорную версию https://github.com/tmux/tmux/releases atuin 18.22.0 — сохранение вывода команд на диск, redaction секретов https://github.com/atuinsh/atuin/releases fzf 0.74.4 — неблокирующий режим для редакторов, фиксы escape-последовательностей https://github.com/junegunn/fzf/releases lazygit v0.65.1 — фикс задержки на Escape, чинит миграцию конфига в daemon-режиме https://github.com/jesseduffield/lazygit/releases yazi v26.9.1 — Sixel-превью в 9 раз быстрее (Wu’s Color Quantizer вместо нейросети) https://github.com/sxyazi/yazi/releases #linux #sysadmin #releases

September 25, 2026 · llexa

Claude-скиллы #4: ревьюер, который не устаёт и не обижается

Пятница, вечер, десятый PR за день — живой ревьюер устаёт и начинает пропускать. Не со зла, просто внимание не резиновое. У Claude такой проблемы нет: у него нет пятницы. Skill code-review гоняет диф по фиксированному набору проверок — корректность, дублирование, лишняя абстракция — и делает это одинаково для первого PR за день и для десятого. Найденное репортит по одной строке на замечание, без похвалы и без размытых формулировок. Реальный кейс: правка асинхронной функции, где забыли await перед вызовом — код формально работал (промис создавался), но результат нигде не дожидался. Skill нашёл это за секунды, просто пройдя по чеклисту на неотловленные промисы. ...

September 24, 2026 · llexa

swap: файл vs раздел и zram — три способа, разное назначение

Своп-файл проще раздела: fallocate -l 4G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile На Btrfs раньше нужен был отдельный chattr +C (отключить copy-on-write), иначе своп-файл не работал вовсе. В свежих util-linux (mkswap ≥ 2.41) mkswap --file сам выставляет nocow — ручной chattr больше не обязателен. zram — не файл и не раздел, а блочное устройство в сжатом виде прямо в RAM: zramctl --find --size 2G + mkswap + swapon, либо декларативно через /etc/systemd/zram-generator.conf: ...

September 24, 2026 · llexa

Архиваторы #8: zstd — многопоточное сжатие и --adapt

У zstd, в отличие от gzip, сжатие в несколько потоков — штатная возможность: -T0 сам определяет число физических ядер и раскидывает работу по ним. zstd -T0 -19 bigfile.tar Для больших файлов с повторами на расстоянии в десятки-сотни мегабайт (логи, дампы БД) помогает --long — long-distance matching, окно по умолчанию 27 бит, максимум 31. --adapt подстраивает уровень сжатия на лету под скорость записи на диск — полезно для медленного/сетевого хранилища. Нюанс: --adapt не работает с --single-thread и может залипать на низкой скорости при 2+ воркер-тредах — -T0 --adapt вместе стоит проверять на своих данных. ...

September 24, 2026 · llexa

Claude-скиллы #3: тест после кода — тест под код, а не под задачу

Тест, написанный после реализации, почти всегда проверяет то, что код уже делает — не то, что он должен делать. Баг в логике проскальзывает мимо, потому что тест написан по мотивам той же логики. Skill test-driven-development меняет порядок: сначала падающий тест на нужное поведение, потом минимальный код, который его зеленит. def test_discount_applies_only_above_threshold(): assert calc_discount(cart_total=500) == 0 assert calc_discount(cart_total=1500) == 150 Тест падает первым — функции calc_discount ещё нет. Код пишется под конкретно эти два случая, а не абстрактную “скидочную систему вообще”. В git-логе видно: коммит с тестом идёт раньше коммита с кодом. ...

September 23, 2026 · llexa

DBA #10: transaction ID wraparound — почему PostgreSQL сам себя вакуумит

32-битный счётчик транзакций (XID) циклический: оборот — раз в 4 млрд, а 2 млрд — граница, после которой без vacuum’а старые строки рискуют оказаться “из будущего”. Отсюда суета вокруг wraparound. autovacuum_freeze_max_age (по умолчанию 200 млн) форсирует anti-wraparound autovacuum на старых таблицах, даже при выключенном autovacuum в конфиге — единственное исключение из настройки. Кто горит — видно запросом: SELECT c.oid::regclass AS table_name, greatest(age(c.relfrozenxid), age(t.relfrozenxid)) AS age FROM pg_class c LEFT JOIN pg_class t ON c.reltoastrelid = t.oid WHERE c.relkind IN ('r', 'm'); Warning в логах (“must be vacuumed within N transactions”) — за 40 млн до порога, запас ещё есть. Проигнорировать — база уходит в read-only при <3 млн до wraparound, выход один - вакуум от суперпользователя. ...

September 23, 2026 · llexa

Claude-скиллы #2: самый дорогой баг начинается до первой строчки кода

Просишь “добавь кэш” — без уточнений получаешь functools.lru_cache с дефолтным размером, без TTL, без инвалидации. Формально задача выполнена. Через неделю продакшен отдаёт протухшее значение, и разбираться будешь не ты, а дежурный в 3 ночи. Skill brainstorming встаёт между запросом и кодом: не пишет реализацию сразу, а спрашивает то, что ты забыл проговорить. TTL нужен? Кэш на процесс или общий между воркерами? При инвалидации ждём протухания или сбрасываем явно? Диалог выглядит так: “добавь кэш” → Claude уточняет размер, TTL, стратегию инвалидации → и только потом пишет реализацию под твой конкретный случай, а не первый попавшийся шаблон. ...

September 22, 2026 · llexa