Как разбирать пути к файлам модификаторами Zsh
Zsh умеет выделять части пути без отдельных вызовов
Модификаторы применяются слева направо и складываются в цепочки. Например, для пути
Практический случай: при пакетном преобразовании PNG в WebP выражение
Zsh умеет выделять части пути без отдельных вызовов
dirname и basename. Суффикс :h оставляет каталог, :t возвращает имя файла, :r убирает расширение, а :e сохраняет только расширение.Модификаторы применяются слева направо и складываются в цепочки. Например, для пути
talks/robot.png выражение ${f:t:r} сначала оставит robot.png, а затем превратит его в robot.Практический случай: при пакетном преобразовании PNG в WebP выражение
${i:r}.webp собирает новое имя файла. В разборе Адама Джонсона показан цикл с ImageMagick и объяснено, почему в Zsh имя с пробелами остаётся целым даже без кавычек.⚡2
KernelLens: трассировка системных вызовов Linux с нагрузкой менее 1%
KernelLens — eBPF-трассировщик, который показывает системные вызовы, их длительность и ошибки. В отличие от strace, он не останавливает процесс дважды на каждом вызове, а запускает обработчики во встроенных точках ядра. Нагрузку strace автор оценивает примерно в 40%.
Фильтры по PID и списку вызовов работают в ядре, поэтому ненужные события не попадают в кольцевой буфер и пользовательскую программу. Переполнение буфера считают отдельно для каждого ядра процессора, а при высокой нагрузке отправляют только каждое N-е подходящее событие.
В статье на DEV Community разобраны код обработчиков, измерение задержки и чтение строк из памяти процесса. Полезная основа для собственной утилиты наблюдения за Linux-серверами.
KernelLens — eBPF-трассировщик, который показывает системные вызовы, их длительность и ошибки. В отличие от strace, он не останавливает процесс дважды на каждом вызове, а запускает обработчики во встроенных точках ядра. Нагрузку strace автор оценивает примерно в 40%.
Фильтры по PID и списку вызовов работают в ядре, поэтому ненужные события не попадают в кольцевой буфер и пользовательскую программу. Переполнение буфера считают отдельно для каждого ядра процессора, а при высокой нагрузке отправляют только каждое N-е подходящее событие.
В статье на DEV Community разобраны код обработчиков, измерение задержки и чтение строк из памяти процесса. Полезная основа для собственной утилиты наблюдения за Linux-серверами.
❤1
shot-scraper 1.10 научился записывать видеодемонстрации веб-приложений
Инструмент shot-scraper video запускает заданный в storyboard.yml сценарий: открывает страницы, нажимает кнопки, заполняет поля и записывает результат через Playwright. Так кодовый агент может не только изменить приложение, но и подготовить ролик, который показывает работу новой функции.
В разборе в Simon Willison’s Weblog агент GPT-5.5 xhigh по справке команды целиком составил YAML-сценарий для Datasette. Он запустил локальный сервер и записал добавление строк и создание таблицы из CSV.
Для знакомства с форматом достаточно выполнить
Инструмент shot-scraper video запускает заданный в storyboard.yml сценарий: открывает страницы, нажимает кнопки, заполняет поля и записывает результат через Playwright. Так кодовый агент может не только изменить приложение, но и подготовить ролик, который показывает работу новой функции.
В разборе в Simon Willison’s Weblog агент GPT-5.5 xhigh по справке команды целиком составил YAML-сценарий для Datasette. Он запустил локальный сервер и записал добавление строк и создание таблицы из CSV.
Для знакомства с форматом достаточно выполнить
uvx shot-scraper video --help. В YAML можно задать адрес, размер окна, ожидание элементов, клики, ввод текста и паузы между действиями.Как быстрее освоить tcpdump и dig по man-страницам
В официальных руководствах tcpdump и dig появились базовые примеры для тех, кто редко пользуется этими утилитами или запускает их впервые. Команды можно сразу повторить, а их корректность проверили сопровождающие проектов.
Практическая находка для tcpdump: при сохранении пакетов командой
В разборе обновления man-страниц также показано, как автор подготовил примеры в Markdown и преобразовал их в формат roff собственным скриптом. Полезный материал, если обычно вместо официальной документации приходится искать подходящую команду по блогам и комментариям.
В официальных руководствах tcpdump и dig появились базовые примеры для тех, кто редко пользуется этими утилитами или запускает их впервые. Команды можно сразу повторить, а их корректность проверили сопровождающие проектов.
Практическая находка для tcpdump: при сохранении пакетов командой
tcpdump -w out.pcap стоит добавить -v. Тогда утилита выводит сводку о количестве уже захваченных пакетов, пока запись продолжается.В разборе обновления man-страниц также показано, как автор подготовил примеры в Markdown и преобразовал их в формат roff собственным скриптом. Полезный материал, если обычно вместо официальной документации приходится искать подходящую команду по блогам и комментариям.
Julia Evans
Examples for the tcpdump and dig man pages
Hello! My big takeaway from last month’s musings about man pages was that examples in man pages are really great, so I worked on adding (or improving) examples to two of my favourite tools’ man pages.
Как найти коммит с регрессией через git bisect
Если проверку можно запустить командой,
В демонстрации с опечаткой в Bash-скрипте разобраны ручной и автоматический поиск. После сеанса выполните
git bisect ищет коммит, который внёс регрессию, бинарным поиском. Вы отмечаете рабочую и проблемную точки истории, а Git переключается на середину диапазона. После каждой проверки указываете good или bad, и диапазон сокращается вдвое. В примере 32 коммита потребовали пяти проверок, а для 1000 хватит примерно десяти.Если проверку можно запустить командой,
git bisect run выполнит её на каждом выбранном коммите. Код возврата 0 означает успех, ненулевой код указывает на ошибку, а 125 пропускает коммит, который нельзя проверить.В демонстрации с опечаткой в Bash-скрипте разобраны ручной и автоматический поиск. После сеанса выполните
git bisect reset, чтобы вернуться к исходной ветке.Brad's Blog
git bisect primer
You’re staring at a bug that definitely wasn’t there six months ago. The codebase has hundreds of commits since then. You could read through every one looking for the culprit - or you could let git bisect find it for you in five steps.
git bisect performs…
git bisect performs…
❤3
Как показывать лог пересборки сервера в браузере через systemfd
systemfd сохраняет слушающий сокет открытым, пока watchexec следит за исходниками и пересобирает сервер. Во время компиляции запросы некому обрабатывать, поэтому вместо пустой страницы socat передаёт в браузер поток лога сборки.
Bash-функция создаёт минимальный HTTP-ответ, а tee одновременно выводит результат cargo build в терминал и дописывает его в файл. socat читает новые байты из файла через уже открытый сокет. После успешной сборки скрипт завершает socat и запускает новую версию сервера. xterm.js возвращает терминальные цвета, а fetch позволяет корректно обработать закрытие потока и подключиться снова.
В готовом скрипте dev.sh разобрана вся связка. Пример написан для Rust, но подход переносится на другие компилируемые бэкенды, если они поддерживают наследование слушающего сокета.
systemfd сохраняет слушающий сокет открытым, пока watchexec следит за исходниками и пересобирает сервер. Во время компиляции запросы некому обрабатывать, поэтому вместо пустой страницы socat передаёт в браузер поток лога сборки.
Bash-функция создаёт минимальный HTTP-ответ, а tee одновременно выводит результат cargo build в терминал и дописывает его в файл. socat читает новые байты из файла через уже открытый сокет. После успешной сборки скрипт завершает socat и запускает новую версию сервера. xterm.js возвращает терминальные цвета, а fetch позволяет корректно обработать закрытие потока и подключиться снова.
В готовом скрипте dev.sh разобрана вся связка. Пример написан для Rust, но подход переносится на другие компилируемые бэкенды, если они поддерживают наследование слушающего сокета.
Как обновлять Go-код с ИИ без устаревших приёмов
JetBrains go-modern-guidelines подбирает рекомендации под версию Go в проекте. Благодаря этому ИИ-агент не предложит API, которого ещё нет в вашей сборке.
Команда
В проверке на main.go объёмом 1039 строк инструмент помог заметить самописный поиск подстроки, который заменяется на
#инструменты
JetBrains go-modern-guidelines подбирает рекомендации под версию Go в проекте. Благодаря этому ИИ-агент не предложит API, которого ещё нет в вашей сборке.
Команда
list находит версию в go.mod или go.work и выдаёт краткий список доступных правил. Затем explain раскрывает выбранные пункты с примерами до и после. Такой порядок экономит контекст: для Go 1.24 автор получил 45 рекомендаций, но подробно запросил только шесть.В проверке на main.go объёмом 1039 строк инструмент помог заметить самописный поиск подстроки, который заменяется на
strings.Contains. Заодно правила предупреждают о нюансах: например, cmp.Or вычисляет все аргументы, поэтому дорогие функции в него лучше не передавать без проверки.#инструменты
❤1
Как проверить чужую ветку через Git worktree
Git worktree создаёт для ветки отдельный рабочий каталог. Можно запустить тесты и изучить изменения коллеги, не пряча свои незавершённые правки в stash, не переключая текущую ветку и не клонируя репозиторий заново.
Сначала обновите ссылки на удалённые ветки, затем создайте каталог для ревью:
Такой каталог откроется с detached HEAD: он подходит для чтения кода и тестов, но новые коммиты не будут привязаны к ветке. Если проверка переросла в доработку, выполните
После ревью удалите каталог командой
Git worktree создаёт для ветки отдельный рабочий каталог. Можно запустить тесты и изучить изменения коллеги, не пряча свои незавершённые правки в stash, не переключая текущую ветку и не клонируя репозиторий заново.
Сначала обновите ссылки на удалённые ветки, затем создайте каталог для ревью:
git fetch origin
git worktree add ../review-123 origin/feature/some-branch
Такой каталог откроется с detached HEAD: он подходит для чтения кода и тестов, но новые коммиты не будут привязаны к ветке. Если проверка переросла в доработку, выполните
git switch -c review/fix-123.После ревью удалите каталог командой
git worktree remove ../review-123. Практический разбор Git worktree также объясняет создание рабочих веток, обновление через rebase или merge и безопасную очистку каталогов.Как сохранить работу при обрыве SSH с помощью tmux
tmux сохраняет терминальную сессию на сервере и делит одно окно на несколько панелей. Запустите именованную сессию командой
Чтобы отключиться, нажмите
Панели создаются сочетаниями
Готовая конфигурация и команды tmux также охватывают работу с окнами, прокрутку вывода, мышь и запуск заранее собранных раскладок.
tmux сохраняет терминальную сессию на сервере и делит одно окно на несколько панелей. Запустите именованную сессию командой
tmux new -s work: даже после разрыва SSH запущенная в ней задача продолжит выполняться.Чтобы отключиться, нажмите
Ctrl+b, отпустите клавиши и нажмите d. Вернуться можно командой tmux attach -t work. Список активных сессий покажет tmux ls.Панели создаются сочетаниями
Ctrl+b % для деления слева направо и Ctrl+b " для деления сверху вниз. Так в одном рабочем пространстве помещаются основная команда, логи и системный мониторинг.Готовая конфигурация и команды tmux также охватывают работу с окнами, прокрутку вывода, мышь и запуск заранее собранных раскладок.
⚡1
Nebula ArchRules: общие архитектурные проверки для JVM-проектов
Nebula ArchRules переносит правила ArchUnit из JUnit-тестов одного репозитория в любое число Gradle-проектов. Это пригодится командам, которым нужно одинаково отслеживать запрещённые зависимости и неправильное использование API.
ArchUnit анализирует скомпилированный байткод, поэтому одно правило работает для Java, Kotlin и Scala. Правила пишутся на Java через типобезопасный API, собираются в отдельный JAR-файл и могут поставляться вместе с библиотекой. Тогда плагин запускает их только для тех наборов исходников, где эта библиотека подключена.
Разбор устройства Nebula ArchRules показывает и практический сценарий Netflix: искать обращения к устаревшим, экспериментальным и внутренним API во множестве репозиториев. Результаты выводятся в консоль или JSON, а порог ошибки сборки можно настроить по приоритету нарушения.
Nebula ArchRules переносит правила ArchUnit из JUnit-тестов одного репозитория в любое число Gradle-проектов. Это пригодится командам, которым нужно одинаково отслеживать запрещённые зависимости и неправильное использование API.
ArchUnit анализирует скомпилированный байткод, поэтому одно правило работает для Java, Kotlin и Scala. Правила пишутся на Java через типобезопасный API, собираются в отдельный JAR-файл и могут поставляться вместе с библиотекой. Тогда плагин запускает их только для тех наборов исходников, где эта библиотека подключена.
Разбор устройства Nebula ArchRules показывает и практический сценарий Netflix: искать обращения к устаревшим, экспериментальным и внутренним API во множестве репозиториев. Результаты выводятся в консоль или JSON, а порог ошибки сборки можно настроить по приоритету нарушения.
Delta и fzf: Git-диффы с посимвольной подсветкой и меню файлов
Delta оформляет вывод
Скрипт
В настройке Delta и готовом скрипте gd есть конфигурация Git и важная оговорка: при переносе скрипта без авторских dotfiles к fzf нужно добавить флаг
Delta оформляет вывод
git diff, git show, git add -p и git blame: изменения внутри строк выделяются двумя оттенками, поэтому при ревью легче заметить отдельные исправленные символы.Скрипт
gd добавляет меню fzf для переключения между изменёнными файлами. Аргументы передаются напрямую в git diff: gd --staged показывает подготовленные к коммиту изменения, gd main.. сравнивает текущую ветку с main, а флаг --side включает просмотр бок о бок.В настройке Delta и готовом скрипте gd есть конфигурация Git и важная оговорка: при переносе скрипта без авторских dotfiles к fzf нужно добавить флаг
--ansi.❤1🫡1
Как фильтровать JSON в терминале с jq
jq — утилита командной строки для фильтрации и преобразования JSON. Она принимает файл или вывод другой команды, поэтому ответ API можно обработать прямо в конвейере shell-скрипта.
Фильтр
Флаг
jq — утилита командной строки для фильтрации и преобразования JSON. Она принимает файл или вывод другой команды, поэтому ответ API можно обработать прямо в конвейере shell-скрипта.
Фильтр
.servers[] перебирает объекты массива, select(...) оставляет подходящие, а {hostname: .hostname} собирает новый объект из нужных полей. Шаги соединяются оператором |, поэтому цепочку можно проверять по частям.Флаг
-r выводит строки без кавычек, чтобы сразу передать их другой команде. Примеры фильтрации и преобразования JSON также охватывают сортировку, группировку, переменные и обработку отсутствующих полей.Как найти источник расхода памяти в живом Python-процессе с Memray
Memray подключается к запущенному Python-процессу без перезапуска приложения и записывает выделения памяти, включая операции в расширениях на C и нативных библиотеках. Установка:
В контейнере найдите PID процесса и запустите
Для подключения нужен Python 3.7 или новее. В Kubernetes контейнеру также может потребоваться разрешение
Memray подключается к запущенному Python-процессу без перезапуска приложения и записывает выделения памяти, включая операции в расширениях на C и нативных библиотеках. Установка:
pip install memray.В контейнере найдите PID процесса и запустите
memray attach <PID>. Через несколько минут остановите запись и посмотрите, какие функции расходуют больше всего памяти: memray summary даст таблицу, memray flamegraph построит граф вызовов, а memray stats покажет общую статистику.Для подключения нужен Python 3.7 или новее. В Kubernetes контейнеру также может потребоваться разрешение
SYS_PTRACE. Такой профиль помогает найти крупные выделения памяти под реальной нагрузкой, когда проблема не воспроизводится локально.✍1
Как настроить Ruff для единых проверок в VS Code и терминале
Ruff форматирует Python-код, проверяет его по правилам и сортирует импорты. Это разные операции:
Правила храните в
Последовательная настройка Ruff связывает сохранение файла с теми же командами, которые запускаются в терминале:
Ruff форматирует Python-код, проверяет его по правилам и сортирует импорты. Это разные операции:
ruff format меняет оформление, а ruff check находит нарушения, включая неиспользуемые импорты. Проверку типов при этом можно оставить Pylance.Правила храните в
pyproject.toml, а расширению charliermarsh.ruff укажите исполняемый файл из проектного окружения через ruff.path. Для macOS, Linux и WSL это .venv/bin/ruff, для Windows: .venv/Scripts/ruff.exe. Конфликтующие действия Black и isort при сохранении стоит отключить.Последовательная настройка Ruff связывает сохранение файла с теми же командами, которые запускаются в терминале:
uv run --locked ruff format, ruff check и ruff check --fix. Так редактор и командная строка используют одну версию Ruff и один набор правил.❤1✍1
oyui: выбираем фрагменты диффа при jj split с подсветкой
oyui — терминальный редактор диффов для Jujutsu. Он помогает выбирать изменения при выполнении
Инструмент развивает идеи scm-record, встроенного в jj интерфейса для команд
Установка:
oyui — терминальный редактор диффов для Jujutsu. Он помогает выбирать изменения при выполнении
jj split: показывает код в цвете, подсвечивает синтаксис и позволяет выделять сразу группы фрагментов.Инструмент развивает идеи scm-record, встроенного в jj интерфейса для команд
split, restore и resolve. oyui стоит попробовать, если при разборе крупных диффов стандартному интерфейсу не хватает наглядности и группового выделения.Установка:
cargo install oyui. В обзоре инструментов для jj также собраны альтернативные редакторы диффов и другие дополнения к Jujutsu.André.Arko.net
Beyond jj: config & tools ecosystem
This post was originally given as a talk at JJ Con 2026. The slides are also available.
Hello! Welcome to “beyond jj”, where we’re going to take a look at the jj ecosystem: commands, configurations, and tools made to work with jj. It’s partly a follow-up…
Hello! Welcome to “beyond jj”, where we’re going to take a look at the jj ecosystem: commands, configurations, and tools made to work with jj. It’s partly a follow-up…
❤1
Как настроить модель в SolonCode через веб-интерфейс
SolonCode подключает модель к агенту без ручного редактирования
В разделе Models укажите адрес API, ключ, модель, размер контекста и тайм-аут. Перед сохранением запустите Test Connection, чтобы проверить ключ, адрес и прокси. После сохранения модель появится в чате без перезапуска.
Настройки можно сохранить для всех проектов или локально в
SolonCode подключает модель к агенту без ручного редактирования
settings.json. Запустите soloncode web 0 из каталога проекта: инструмент откроет браузер и сделает этот каталог рабочей областью.В разделе Models укажите адрес API, ключ, модель, размер контекста и тайм-аут. Перед сохранением запустите Test Connection, чтобы проверить ключ, адрес и прокси. После сохранения модель появится в чате без перезапуска.
Настройки можно сохранить для всех проектов или локально в
.soloncode/settings.json. API-ключ в репозиторий добавлять нельзя. Полный путь от установки до первой задачи❤1
git-cliff: как собрать список изменений из истории Git
git-cliff генерирует файл со списком изменений по истории Git. Для разбора сообщений коммитов он поддерживает Conventional Commits, соглашение об их формате, и собственные правила на основе регулярных выражений, которые находят заданные текстовые шаблоны.
Например, для проекта можно настроить формат списка изменений через конфигурационный файл: шаблон определяет, как будут выглядеть записи. Это позволяет подготовить CHANGELOG в нужном оформлении.
В репозитории git-cliff описаны способы разбора коммитов и настройки шаблона, а также собраны ссылки на документацию по установке, использованию и конфигурации.
#git #автоматизация
git-cliff генерирует файл со списком изменений по истории Git. Для разбора сообщений коммитов он поддерживает Conventional Commits, соглашение об их формате, и собственные правила на основе регулярных выражений, которые находят заданные текстовые шаблоны.
Например, для проекта можно настроить формат списка изменений через конфигурационный файл: шаблон определяет, как будут выглядеть записи. Это позволяет подготовить CHANGELOG в нужном оформлении.
В репозитории git-cliff описаны способы разбора коммитов и настройки шаблона, а также собраны ссылки на документацию по установке, использованию и конфигурации.
#git #автоматизация
Read. Write. Edit. Bash.
Это базовый набор операций Pi — агента, на котором построен OpenClaw. Дополнительные возможности появляются через расширения: агент может написать их по запросу пользователя, перезагрузить и проверить в работе.
У такого устройства есть полезные детали:
• состояние расширений хранится в сессии;
• беседу можно разветвить для отладки и вернуться с кратким пересказом;
• инструкции и примеры помогают агенту создавать новые функции.
Армин Ронахер разбирает Pi на собственных примерах: среди расширений, созданных по его запросам, есть список задач и ревью изменений кода. Получается взгляд на выбор ИИ-инструмента через то, что пользователь может настроить в нём под свою работу.
#ии #инструменты
Это базовый набор операций Pi — агента, на котором построен OpenClaw. Дополнительные возможности появляются через расширения: агент может написать их по запросу пользователя, перезагрузить и проверить в работе.
У такого устройства есть полезные детали:
• состояние расширений хранится в сессии;
• беседу можно разветвить для отладки и вернуться с кратким пересказом;
• инструкции и примеры помогают агенту создавать новые функции.
Армин Ронахер разбирает Pi на собственных примерах: среди расширений, созданных по его запросам, есть список задач и ревью изменений кода. Получается взгляд на выбор ИИ-инструмента через то, что пользователь может настроить в нём под свою работу.
#ии #инструменты
👍1
Инструменты программиста
Read. Write. Edit. Bash. Это базовый набор операций Pi — агента, на котором построен OpenClaw. Дополнительные возможности появляются через расширения: агент может написать их по запросу пользователя, перезагрузить и проверить в работе. У такого устройства…
Какими ИИ-ассистентами и агентами вы пользуетесь? Можно выбрать несколько
Anonymous Poll
8%
GitHub Copilot
1%
Codeium
47%
Claude Code
23%
Gemini
48%
ChatGPT
4%
GigaCode (Сбер)
2%
Yandex Code Assistant
29%
DeepSeek
5%
Hermes Agent
12%
Другое (напишу в комментариях)
От чатбота к агентам: опыт Митчелла Хашимото
Для работы с кодом Хашимото перешёл от отдельного чата к агенту, который читает файлы проекта и запускает программы. После этого начал повторять собственную работу: сначала решал задачу сам, затем давал её агенту без готового решения.
Так он выяснял, какие задачи можно поручать ИИ. Дальше добавлял инструкции в AGENTS.md, файл с правилами проекта, и способы проверить изменения, включая запуск тестов.
В истории освоения ИИ в разработке Хашимото связывает выбор задач с настройкой рабочего окружения. Отдельные чаты при этом остались в его повседневной работе.
#ии #инструменты
Для работы с кодом Хашимото перешёл от отдельного чата к агенту, который читает файлы проекта и запускает программы. После этого начал повторять собственную работу: сначала решал задачу сам, затем давал её агенту без готового решения.
Так он выяснял, какие задачи можно поручать ИИ. Дальше добавлял инструкции в AGENTS.md, файл с правилами проекта, и способы проверить изменения, включая запуск тестов.
В истории освоения ИИ в разработке Хашимото связывает выбор задач с настройкой рабочего окружения. Отдельные чаты при этом остались в его повседневной работе.
#ии #инструменты
❤1☃1