prog_tools | Unsorted

Telegram-канал prog_tools - Инструменты программиста

12930

Полезные инструменты для программистов — бесплатные и платные Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Регистрация в перечне РКН: https://tprg.ru/mX0S

Subscribe to a channel

Инструменты программиста

Как найти источник расхода памяти в живом Python-процессе с Memray

Memray подключается к запущенному Python-процессу без перезапуска приложения и записывает выделения памяти, включая операции в расширениях на C и нативных библиотеках. Установка: pip install memray.

В контейнере найдите PID процесса и запустите memray attach <PID>. Через несколько минут остановите запись и посмотрите, какие функции расходуют больше всего памяти: memray summary даст таблицу, memray flamegraph построит граф вызовов, а memray stats покажет общую статистику.

Для подключения нужен Python 3.7 или новее. В Kubernetes контейнеру также может потребоваться разрешение SYS_PTRACE. Такой профиль помогает найти крупные выделения памяти под реальной нагрузкой, когда проблема не воспроизводится локально.

Читать полностью…

Инструменты программиста

Delta и fzf: Git-диффы с посимвольной подсветкой и меню файлов

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.

Читать полностью…

Инструменты программиста

Как сохранить работу при обрыве SSH с помощью tmux

tmux сохраняет терминальную сессию на сервере и делит одно окно на несколько панелей. Запустите именованную сессию командой tmux new -s work: даже после разрыва SSH запущенная в ней задача продолжит выполняться.

Чтобы отключиться, нажмите Ctrl+b, отпустите клавиши и нажмите d. Вернуться можно командой tmux attach -t work. Список активных сессий покажет tmux ls.

Панели создаются сочетаниями Ctrl+b % для деления слева направо и Ctrl+b " для деления сверху вниз. Так в одном рабочем пространстве помещаются основная команда, логи и системный мониторинг.

Готовая конфигурация и команды tmux также охватывают работу с окнами, прокрутку вывода, мышь и запуск заранее собранных раскладок.

Читать полностью…

Инструменты программиста

Как обновлять Go-код с ИИ без устаревших приёмов

JetBrains go-modern-guidelines подбирает рекомендации под версию Go в проекте. Благодаря этому ИИ-агент не предложит API, которого ещё нет в вашей сборке.

Команда list находит версию в go.mod или go.work и выдаёт краткий список доступных правил. Затем explain раскрывает выбранные пункты с примерами до и после. Такой порядок экономит контекст: для Go 1.24 автор получил 45 рекомендаций, но подробно запросил только шесть.

В проверке на main.go объёмом 1039 строк инструмент помог заметить самописный поиск подстроки, который заменяется на strings.Contains. Заодно правила предупреждают о нюансах: например, cmp.Or вычисляет все аргументы, поэтому дорогие функции в него лучше не передавать без проверки.

#инструменты

Читать полностью…

Инструменты программиста

Как найти коммит с регрессией через git bisect

git bisect ищет коммит, который внёс регрессию, бинарным поиском. Вы отмечаете рабочую и проблемную точки истории, а Git переключается на середину диапазона. После каждой проверки указываете good или bad, и диапазон сокращается вдвое. В примере 32 коммита потребовали пяти проверок, а для 1000 хватит примерно десяти.

Если проверку можно запустить командой, git bisect run выполнит её на каждом выбранном коммите. Код возврата 0 означает успех, ненулевой код указывает на ошибку, а 125 пропускает коммит, который нельзя проверить.

В демонстрации с опечаткой в Bash-скрипте разобраны ручной и автоматический поиск. После сеанса выполните git bisect reset, чтобы вернуться к исходной ветке.

Читать полностью…

Инструменты программиста

shot-scraper 1.10 научился записывать видеодемонстрации веб-приложений

Инструмент shot-scraper video запускает заданный в storyboard.yml сценарий: открывает страницы, нажимает кнопки, заполняет поля и записывает результат через Playwright. Так кодовый агент может не только изменить приложение, но и подготовить ролик, который показывает работу новой функции.

В разборе в Simon Willison’s Weblog агент GPT-5.5 xhigh по справке команды целиком составил YAML-сценарий для Datasette. Он запустил локальный сервер и записал добавление строк и создание таблицы из CSV.

Для знакомства с форматом достаточно выполнить uvx shot-scraper video --help. В YAML можно задать адрес, размер окна, ожидание элементов, клики, ввод текста и паузы между действиями.

Читать полностью…

Инструменты программиста

Как разбирать пути к файлам модификаторами Zsh

Zsh умеет выделять части пути без отдельных вызовов dirname и basename. Суффикс :h оставляет каталог, :t возвращает имя файла, :r убирает расширение, а :e сохраняет только расширение.

Модификаторы применяются слева направо и складываются в цепочки. Например, для пути talks/robot.png выражение ${f:t:r} сначала оставит robot.png, а затем превратит его в robot.

Практический случай: при пакетном преобразовании PNG в WebP выражение ${i:r}.webp собирает новое имя файла. В разборе Адама Джонсона показан цикл с ImageMagick и объяснено, почему в Zsh имя с пробелами остаётся целым даже без кавычек.

Читать полностью…

Инструменты программиста

Как плагин OpenTelemetry строит карту сервисов

Плагин OpenTelemetry для JetBrains IDE показывает связи сервисов во время работы приложения. Вместо статической схемы он использует спаны: записи об отдельных операциях в трассировке запроса.

Спаны поступают в локальный обработчик. Он распознаёт HTTP-вызовы, запросы к базам данных и работу с очередями, добавляет сервисы на карту и связывает клиентскую операцию с серверной. Если парная запись ещё не пришла, плагин сохраняет первую и обновляет схему позже. Поэтому данные можно обрабатывать по мере поступления, даже не по порядку.

Установите плагин OpenTelemetry, запустите приложение с отправкой спанов и откройте Service Map. Так можно до релиза заметить лишний HTTP-вызов или запрос к базе. Механика разобрана в статье JetBrains Blog.

Читать полностью…

Инструменты программиста

Саймон Уиллисон выпустил Showboat и Rodney для демонстрации кода агентов

Showboat помогает агенту собрать Markdown-документ о новой функции: записывает выполненные команды, их вывод и созданные изображения. После автоматических тестов разработчик может увидеть, что именно запустилось, а не принимать отчёт агента на веру.

Rodney управляет Chrome из командной строки в рамках одной сессии: открывает страницы, нажимает элементы, выполняет JavaScript и делает скриншоты. Вместе с Showboat он позволяет собрать демонстрацию веб-интерфейса.

Быстрый старт: uvx showboat --help и uvx rodney. Есть оговорка: агент иногда редактирует Markdown напрямую, и тогда вывод в документе может не соответствовать запуску. Устройство инструментов и примеры автор разобрал в Simon Willison’s Weblog.

Читать полностью…

Инструменты программиста

Herdr: параллельные ИИ-агенты в одном терминале

Herdr показывает несколько сессий агентов для написания кода рядом и позволяет быстро переключаться между ними. Видно, кто пишет код, ждёт ответа или закончил работу.

Для независимых задач автор статьи создаёт отдельное рабочее дерево Git с собственной веткой. Правки интерфейса он держит локально, чтобы запускать приложение и сразу давать обратную связь. Задачи с чётким описанием отправляет на виртуальный сервер (VPS): там агент выполняет реализацию и автоматические проверки, даже когда ноутбук спит.

VPS не отменяет ограничений: соединение с сервером может оборваться, слабый сервер тормозит при одновременных сборках, а доступ агента к секретам всё равно нужно ограничивать. В разборе рабочего процесса автор советует сначала попробовать Herdr локально на паре ограниченных задач и лишь затем переносить автономные задачи на VPS.

Читать полностью…

Инструменты программиста

Как искать по коду с ripgrep с учётом .gitignore

ripgrep (rg) рекурсивно ищет строки по регулярному выражению. По умолчанию утилита учитывает .gitignore и .ignore, пропускает скрытые каталоги и бинарные файлы. Поэтому выдача сосредоточена на файлах, которые не исключены правилами проекта.

Для точечного поиска rg -tpy foo оставит только файлы Python, а rg -Tjs foo исключит JavaScript. Если нужно проверить вообще всё, rg -uuu отключит автоматические фильтры.

В тесте на собранном исходном коде ядра Linux ripgrep выполнил один и тот же поиск за 0,082 секунды против 0,273 секунды у git grep. README репозитория ripgrep на GitHub предупреждает, что одного теста недостаточно; там же есть другие сравнения, способы установки и руководство пользователя.

Читать полностью…

Инструменты программиста

Task: кроссплатформенный запуск задач проекта

Task — быстрый инструмент сборки для повторяющихся команд. Он поставляется одним бинарным файлом без зависимостей, а один и тот же Taskfile работает на Linux, macOS и Windows. Поэтому команды проекта не придётся отдельно адаптировать под систему каждого разработчика.

Task подходит для генерации кода, форматирования и запуска линтеров. Команды можно связывать в цепочки и задавать зависимости между задачами. Инструмент также отслеживает файлы по времени изменения или содержимому и пропускает ненужные повторные сборки.

На сайте Task перечислены способы установки через Homebrew, Snapcraft и Scoop. Если команде нужен одинаковый набор локальных команд на разных ОС, начните с генерации кода или запуска линтера.

Читать полностью…

Инструменты программиста

Tokei считает строки кода и отделяет их от комментариев

Tokei — утилита командной строки для статистики по репозиторию. Она группирует файлы по языкам и отдельно считает весь объём строк, код, комментарии и пустые строки. Поддерживается более 150 языков, включая разные расширения файлов.

Установить Tokei через Cargo можно командой cargo install tokei. Затем запустите tokei ./project: утилита обойдёт вложенные папки и учтёт правила из .gitignore и .ignore. Ключ --files добавит статистику по каждому файлу, а --sort code отсортирует языки по объёму кода.

Так можно быстро оценить состав незнакомого репозитория и найти языки, на которых написана его основная часть. Все варианты установки и параметры запуска собраны в репозитории Tokei.

Читать полностью…

Инструменты программиста

HTTPie CLI: проверяем HTTP и API из терминала

HTTPie CLI отправляет запросы к API, HTTP-серверам и веб-сервисам через команды http и https. Утилита поддерживает JSON, заголовки, аутентификацию, прокси, формы и загрузку файлов, а ответ форматирует и подсвечивает.

Для быстрой проверки адреса достаточно https httpie.io/hello. С флагом -v можно увидеть отправляемый запрос, а режим --offline собирает и печатает его без отправки. Именованная сессия сохраняет авторизацию и заголовки для следующих запросов к тому же серверу.

В документации HTTPie CLI есть способы установки для разных ОС и примеры запросов с данными, авторизацией, загрузкой и скачиванием файлов.

Читать полностью…

Инструменты программиста

uv: один инструмент для пакетов, проектов и версий Python

uv объединяет задачи pip, pip-tools, pipx, Poetry, pyenv, virtualenv и Twine. Он устанавливает зависимости, создаёт виртуальные окружения, фиксирует точные версии пакетов в едином файле, запускает скрипты с их зависимостями и устанавливает нужные версии Python. Авторы заявляют ускорение в 10–100 раз по сравнению с pip и экономию места благодаря общему кэшу: одинаковые зависимости не хранятся повторно.

Для первого проекта установите uv командой pip install uv, затем выполните uv init example и добавьте пакет через uv add ruff. Команда uv run ruff check запустит установленный инструмент в окружении проекта. Остальные сценарии и варианты установки собраны в репозитории uv от Astral.

Читать полностью…

Инструменты программиста

Как фильтровать JSON в терминале с jq

jq — утилита командной строки для фильтрации и преобразования JSON. Она принимает файл или вывод другой команды, поэтому ответ API можно обработать прямо в конвейере shell-скрипта.

Фильтр .servers[] перебирает объекты массива, select(...) оставляет подходящие, а {hostname: .hostname} собирает новый объект из нужных полей. Шаги соединяются оператором |, поэтому цепочку можно проверять по частям.

Флаг -r выводит строки без кавычек, чтобы сразу передать их другой команде. Примеры фильтрации и преобразования JSON также охватывают сортировку, группировку, переменные и обработку отсутствующих полей.

Читать полностью…

Инструменты программиста

Nebula ArchRules: общие архитектурные проверки для JVM-проектов

Nebula ArchRules переносит правила ArchUnit из JUnit-тестов одного репозитория в любое число Gradle-проектов. Это пригодится командам, которым нужно одинаково отслеживать запрещённые зависимости и неправильное использование API.

ArchUnit анализирует скомпилированный байткод, поэтому одно правило работает для Java, Kotlin и Scala. Правила пишутся на Java через типобезопасный API, собираются в отдельный JAR-файл и могут поставляться вместе с библиотекой. Тогда плагин запускает их только для тех наборов исходников, где эта библиотека подключена.

Разбор устройства Nebula ArchRules показывает и практический сценарий Netflix: искать обращения к устаревшим, экспериментальным и внутренним API во множестве репозиториев. Результаты выводятся в консоль или JSON, а порог ошибки сборки можно настроить по приоритету нарушения.

Читать полностью…

Инструменты программиста

Как проверить чужую ветку через Git worktree

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 и безопасную очистку каталогов.

Читать полностью…

Инструменты программиста

Как показывать лог пересборки сервера в браузере через systemfd

systemfd сохраняет слушающий сокет открытым, пока watchexec следит за исходниками и пересобирает сервер. Во время компиляции запросы некому обрабатывать, поэтому вместо пустой страницы socat передаёт в браузер поток лога сборки.

Bash-функция создаёт минимальный HTTP-ответ, а tee одновременно выводит результат cargo build в терминал и дописывает его в файл. socat читает новые байты из файла через уже открытый сокет. После успешной сборки скрипт завершает socat и запускает новую версию сервера. xterm.js возвращает терминальные цвета, а fetch позволяет корректно обработать закрытие потока и подключиться снова.

В готовом скрипте dev.sh разобрана вся связка. Пример написан для Rust, но подход переносится на другие компилируемые бэкенды, если они поддерживают наследование слушающего сокета.

Читать полностью…

Инструменты программиста

Как быстрее освоить tcpdump и dig по man-страницам

В официальных руководствах tcpdump и dig появились базовые примеры для тех, кто редко пользуется этими утилитами или запускает их впервые. Команды можно сразу повторить, а их корректность проверили сопровождающие проектов.

Практическая находка для tcpdump: при сохранении пакетов командой tcpdump -w out.pcap стоит добавить -v. Тогда утилита выводит сводку о количестве уже захваченных пакетов, пока запись продолжается.

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

Читать полностью…

Инструменты программиста

KernelLens: трассировка системных вызовов Linux с нагрузкой менее 1%

KernelLens — eBPF-трассировщик, который показывает системные вызовы, их длительность и ошибки. В отличие от strace, он не останавливает процесс дважды на каждом вызове, а запускает обработчики во встроенных точках ядра. Нагрузку strace автор оценивает примерно в 40%.

Фильтры по PID и списку вызовов работают в ядре, поэтому ненужные события не попадают в кольцевой буфер и пользовательскую программу. Переполнение буфера считают отдельно для каждого ядра процессора, а при высокой нагрузке отправляют только каждое N-е подходящее событие.

В статье на DEV Community разобраны код обработчиков, измерение задержки и чтение строк из памяти процесса. Полезная основа для собственной утилиты наблюдения за Linux-серверами.

Читать полностью…

Инструменты программиста

Dust показывает, что занимает место на диске

Dust — написанная на Rust альтернатива du, которая сразу выводит крупнейшие каталоги и файлы. Утилита рекурсивно проходит дерево, выбирает самые тяжёлые элементы и рисует полосы с долями. Оттенки полос показывают, к какой родительской папке относится вложенная. Поэтому не придётся отдельно сортировать вывод и обрезать его через head.

По умолчанию Dust показывает чуть меньше строк, чем помещается в терминале. Глубину можно ограничить командой dust -d 2, число элементов задать через dust -n 10, а оставить только файлы через dust -F.

Установить утилиту через Cargo можно командой cargo install du-dust. Она пригодится, когда нужно быстро найти каталог или файл, который съел место на рабочей машине или сервере.

Читать полностью…

Инструменты программиста

Helix вместо Vim: что меняется при переходе

Helix даёт переход к определению и переименование символов через встроенные языковые серверы, без сборки конфигурации Vim или Neovim. После нажатия g редактор показывает подсказку по переходам.

Поиск по репозиторию выводит совпадение вместе с соседними строками. Для массовых правок вместо макросов можно использовать несколько курсоров: выделить документ, выбрать совпадения регулярным выражением и редактировать их одновременно.

Компромиссы тоже есть: редактор пока не сохраняет историю отмены после выхода, не перезагружает изменённые на диске файлы автоматически и хуже Vim переформатирует списки Markdown. Автору статьи «Notes on switching to Helix from vim» оказалось проще освоить сочетания Helix, чем переносить привычные клавиши Vim.

Читать полностью…

Инструменты программиста

Rust Glancer тратит в 100 раз меньше памяти при анализе Rust-кода

Rust Glancer — работающий языковой сервер для Rust. По данным статьи, он использует примерно в 100 раз меньше оперативной памяти, чем rust-analyzer. Это может пригодиться в больших рабочих пространствах, где нужно учитывать тысячи функций, структур, трейтов и связей между ними.

Автор разбирает возможную архитектуру: индексировать все объявления, но тела функций анализировать по запросу, например только в открытом файле. Сведения о зависимостях можно читать из компактных файлов компилятора .rmeta, а подробный анализ включать лишь для открытого или изменяемого кода.

Ограничение Rust Glancer: полная поддержка сборочных скриптов и процедурных макросов, требующих запуска реального кода, маловероятна. Инструмент стоит попробовать, если rust-analyzer упирается в память, а эти возможности проекту не нужны.

Читать полностью…

Инструменты программиста

Как переходить между каталогами с zoxide

zoxide запоминает, какие каталоги вы открываете чаще. Команда z foo переводит в каталог с самым высоким рейтингом среди совпадений по foo. Обычные переходы тоже работают: z .. поднимает на уровень, а z - возвращает в предыдущий каталог.

Для неоднозначного запроса есть zi foo: команда открывает интерактивный выбор через fzf. Например, так можно выбрать нужный каталог, если одному запросу соответствуют несколько путей.

Установить утилиту можно командой cargo install zoxide --locked, затем её нужно подключить к используемой командной оболочке. В репозитории zoxide есть инструкции для Bash, PowerShell и других основных оболочек и платформ.

Читать полностью…

Инструменты программиста

Три вещи, которые невозможно объяснить человеку, родившемуся после 2005-го: зачем нужен был счётчик посещений, почему интернет нельзя было включить одновременно с телефоном и что такое «превед медвед». Всем остальным объяснять ничего не надо — просто пройдите анкету к 25-летию SpaceWeb.

Читать полностью…

Инструменты программиста

Как запускать и тестировать HTTP-запросы с Hurl

Hurl — командная утилита для HTTP-запросов, описанных в простом текстовом формате. В том же файле можно проверить код ответа, заголовки и содержимое тела.

Запросы связываются в сценарий: например, сначала получить HTML-страницу, извлечь из неё CSRF-токен, затем подставить значение в форму входа и ожидать ответ со статусом 302. Hurl также работает с HTML, REST, SOAP, GraphQL и API на основе XML или JSON.

На официальном сайте Hurl есть установка, справочник, примеры и учебный раздел: от первого файла и проверок ответа до цепочек запросов, отладки, захвата значений и раздела о безопасности.

Читать полностью…

Инструменты программиста

Как искать файлы с fd и запускать команды по результатам

fd ищет файлы и каталоги рекурсивно, но предлагает более короткий синтаксис, чем find. Например, fd netfl находит имена с фрагментом netfl, а fd -e md оставляет только Markdown-файлы.

Утилита распараллеливает обход каталогов, не показывает скрытые файлы и учитывает .gitignore. Эти ограничения отключаются флагами -H и -I, а -u включает оба режима сразу.

Результаты можно сразу передать внешней команде: -x запускает её отдельно для каждого пути, а -X один раз для всей выборки. Так, fd -e zip -x unzip распакует найденные ZIP-архивы параллельно. Больше сценариев и синтаксис заполнителей собраны в репозитории fd на GitHub.

Читать полностью…

Инструменты программиста

VisiData: исследуем табличные данные в терминале

VisiData — интерактивный инструмент с открытым исходным кодом для изучения табличных данных. Он сочетает наглядность электронной таблицы, эффективность терминала и возможности Python. Утилита рассчитана на таблицы с миллионами строк, поэтому подходит для первичного разбора больших CSV и других табличных файлов.

Одной клавишей можно построить гистограмму, а диаграмму рассеяния показать прямо в терминале. Сессию можно сохранить и позднее воспроизвести, чтобы не повторять исследование вручную. Для пакетного режима авторы приводят команду vd -b input.csv.

На сайте VisiData есть обзор возможностей и материалы для начала работы.

Читать полностью…

Инструменты программиста

Difftastic сравнивает код по синтаксису, а не по строкам

Difftastic — консольный инструмент для сравнения файлов. Он распознаёт выражения и скобочные конструкции, затем сопоставляет их между версиями файла. Поэтому перенос выражения на другие строки не прячет реальную правку, а добавленная обёртка отображается отдельно от содержимого, которое осталось прежним.

Утилита показывает номера строк до и после изменений и работает с Git. Среди поддерживаемых языков есть C++, Go, JavaScript, Python, Rust и TypeScript; среди форматов — HCL, HTML, JSON и YAML. Проект распространяется по лицензии MIT.

Попробуйте его на изменении после автоформатирования: так проще отделить новую логику от переставленных переносов. На сайте Difftastic есть минутное демо, полный список языков и инструкция по настройке Git.

Читать полностью…
Subscribe to a channel