Инструменты программиста
12.9K subscribers
1.73K photos
158 videos
4 files
2.15K links
Полезные инструменты для программистов — бесплатные и платные

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Регистрация в перечне РКН: https://tprg.ru/mX0S
Download Telegram
hexyl: цветной просмотр байтов в терминале

hexyl показывает содержимое файла в шестнадцатеричном виде и окрашивает разные категории байтов. Отдельные цвета получают нулевые байты, печатные ASCII-символы, пробелы и переносы строк, прочие ASCII-символы и байты вне ASCII. Так категории можно различать прямо в выводе терминала.

В Ubuntu и Debian утилита ставится командой sudo apt install hexyl, в Fedora через sudo dnf install hexyl, а в macOS через brew install hexyl. Сборка из исходников доступна через Cargo при Rust 1.56 или новее.

Цвета категорий и смещения настраиваются переменными окружения: можно выбрать стандартные цвета терминала, их яркие варианты или значение RGB. Команды для других систем и список настроек собраны в репозитории hexyl на GitHub.
Как попробовать Zellij без установки

Zellij — бесплатное рабочее пространство для терминала с открытым исходным кодом. На сайте Zellij есть отдельные команды пробного запуска для Bash, Zsh, fish и PowerShell. Для Bash и Zsh команда выглядит так:

bash <(curl -L https://zellij.dev/launch)


Перед запуском откройте и проверьте сценарий, который собираетесь выполнить. На сайте можно отдельно посмотреть его варианты для Linux и Mac или Windows. Так получится оценить Zellij до установки и затем решить, подходит ли инструмент для вашей работы в терминале.

Разработчики также предлагают платный размещённый сервис для совместного доступа к сессиям. Пока он находится в бета-версии.
Как перехватывать и изменять HTTPS-трафик через mitmproxy

mitmproxy — бесплатный инструмент с открытым исходным кодом для отладки и тестирования веб-трафика. Он перехватывает HTTP/1, HTTP/2, HTTP/3 и WebSocket-сообщения, показывает их содержимое и позволяет изменить запрос или ответ до отправки адресату.

Для работы есть интерактивная командная строка и mitmweb с графическим интерфейсом, похожим на Chrome DevTools. Сценарий можно автоматизировать на Python через mitmdump: например, перенаправлять запросы на другой хост или возвращать подготовленный ответ для выбранного пути.

Установить инструмент можно командой brew install mitmproxy. На странице mitmproxy есть другие варианты загрузки, примеры дополнений и описание возможностей.
Forwarded from Типичный программист
Delta делает вывод Git, diff и grep удобнее для чтения

Delta — настраиваемая программа для просмотра вывода в терминале. Она подсвечивает синтаксис и изменения внутри строк, показывает версии рядом, добавляет номера строк и позволяет переходить между файлами клавишами n и N. Работает с Git, diff, grep и ripgrep.

Для Git установите пакет git-delta и настройте delta как программу просмотра. Delta определяет светлый или тёмный фон; темы подсветки берёт из набора bat. Можно улучшить отображение конфликтов слияния и превратить хеши коммитов в ссылки на GitHub, GitLab, SourceHut или Codeberg.

В репозитории Delta есть начальная конфигурация и полное руководство. Попробуйте инструмент, если в больших diff сложно быстро найти нужный файл и изменённую строку.
❤‍🔥1
Difftastic сравнивает код по синтаксису, а не по строкам

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

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

Попробуйте его на изменении после автоформатирования: так проще отделить новую логику от переставленных переносов. На сайте Difftastic есть минутное демо, полный список языков и инструкция по настройке Git.
🔥1
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.
👍1🤔1
VisiData: исследуем табличные данные в терминале

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

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

На сайте VisiData есть обзор возможностей и материалы для начала работы.
HTTPie CLI: проверяем HTTP и API из терминала

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На сайте Task перечислены способы установки через Homebrew, Snapcraft и Scoop. Если команде нужен одинаковый набор локальных команд на разных ОС, начните с генерации кода или запуска линтера.
❤2
Как искать по коду с 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 предупреждает, что одного теста недостаточно; там же есть другие сравнения, способы установки и руководство пользователя.
✍1
Как переходить между каталогами с zoxide

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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