12930
Полезные инструменты для программистов — бесплатные и платные Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Регистрация в перечне РКН: https://tprg.ru/mX0S
Posting 3 beta: оставить в JSON-ответе нужных пользователей
В терминальном HTTP-клиенте Posting 3 можно искать текст в ответе, просматривать JSON как дерево и фильтровать его через JSONPath. Запросы сохраняются локально в YAML. В демонстрации проекта сначала ищут поле role, затем оставляют пользователей с ролью admin:
$.users[?@.role=="admin"]
users, в объектах которого есть поле role. В результате остаётся подходящий объект, а не просто подсвечивается строка. Для другого ответа путь и условие нужно изменить. JSONPath здесь не следует смешивать с синтаксисом jq.
grpcurl: узнать, какие сервисы предоставляет gRPC-сервер
Если на сервере включена reflection, grpcurl может получить описание API и перечислить сервисы без локальных файлов схемы. Для работающего сервера с TLS и reflection команда выглядит так:
grpcurl localhost:8787 list
list указать имя сервиса, утилита перечислит его методы. Это помогает разобраться с незнакомым API до вызова конкретного метода.-plaintext. Этот флаг полностью отключает TLS, а не только проверку сертификата. Если reflection недоступна, передайте .proto через -import-path и -proto либо готовый набор дескрипторов через -protoset. С локальной схемой list перечисляет определённые в ней сервисы без подключения к серверу.
Читать полностью…
Ouch: посмотреть дерево архива до распаковки
Чтобы узнать, лежат ли файлы внутри одной папки или сразу в корне архива, его необязательно распаковывать. У Ouch для этого есть подкоманда list:
ouch list source-code.zip --tree
--show-size: это несжатый размер каждого файла, а не его вклад в размер архива.
csvlens: отфильтровать CSV прямо в терминале
В csvlens можно открыть CSV, найти значение и оставить на экране только нужные строки. В официальном примере используется таблица с покемонами:
csvlens Pokemon.csv
/ и введите Flying, чтобы подсветить совпадения. Для фильтра строк нажмите & и введите Bug. Это разные действия: поиск сохраняет всю таблицу, а фильтр скрывает неподходящие строки. Клавиша * задаёт фильтр столбцов. Выражения в этих режимах — регулярные.-t. Для автоматического определения разделителя есть -d auto. csvlens работает как просмотрщик и не изменяет исходный CSV. Файл в команде замените своим.
Читать полностью…
actionlint: найти ошибку в workflow до запуска GitHub Actions
В синтаксически корректном YAML может быть неверное имя параметра action или обращение к отсутствующему полю матрицы. actionlint находит такие ошибки статическим анализом. В примере проекта он замечает неизвестный input node_version и обращение к matrix.platform, которого нет в матрице.
После установки запустите в репозитории:
actionlint
typos: проверить опечатки и оставить намеренные имена
Фамилия Teh похожа на опечатку, но исправлять её на the было бы ошибкой. У typos для таких случаев есть словарь исключений в _typos.toml:
[default.extend-words]
teh = "teh"
typos-cli запустите typos --diff в репозитории, чтобы увидеть предлагаемые изменения без записи файлов.--write-changes. Если вариантов исправления несколько, typos сообщает о проблеме и оставляет выбор вам. Это удобная дополнительная проверка перед PR, но она не обнаружит все ошибки и не заменит вычитку русскоязычного текста.
Читать полностью…
bottom: графики нагрузки и процессы в одном терминале
Сборка тормозит, память растёт, а по одному списку процессов трудно увидеть, как менялась нагрузка. bottom собирает рядом графики CPU, RAM, swap и сетевого ввода-вывода, а также таблицу процессов.
После установки программа запускается как btm. В таблице можно искать и сортировать процессы, есть древовидное представление. Нажмите ? внутри интерфейса, чтобы открыть справку по управлению. Так можно наблюдать систему, пока вы повторяете медленную операцию, и сопоставлять графики со списком процессов.
Это отправная точка диагностики: монитор показывает нагрузку, но сам не назовёт строку кода, из-за которой растёт память. Перед установкой сверяйтесь со списком ОС и архитектур в README. Доступность отдельных показателей зависит от платформы и оборудования.
doggo: какие MX-записи видит выбранный DNS-сервер
После смены DNS-записей полезно явно выбрать сервер, к которому уходит запрос. В doggo домен, тип записи и адрес резолвера помещаются в одну команду:
doggo MX github.com @9.9.9.9
github.com через 9.9.9.9. Подставьте свой домен, чтобы посмотреть его ответ. Утилита выводит записи в таблице, а флаг --json пригодится, если результат нужно обработать скриптом.
caffeinate не даёт macOS уснуть до завершения команды
Запустили долгую сборку и отошли от ноутбука? В macOS есть встроенная утилита caffeinate, которая удерживает систему от автоматического сна из-за бездействия.
Передайте ей нужную команду:
caffeinate ./build.sh
caffeinate -w 12345
caffeinate -id ./build.sh дополнительно не даст погаснуть дисплею. Без аргументов утилита работает до остановки через Ctrl+C.
Zed сравнивает каталоги в двух соседних панелях
Нужно сопоставить две копии проекта или результат генерации файлов? В Zed 1.24.2 появился просмотр различий каталогов рядом друг с другом через zed --diff.
Например, для двух локальных папок:
zed --diff ./before ./after
git: create tag at head ставит локальный тег на текущий коммит. Автоматической отправки тега на сервер нет.
GitHub Actions фиксирует зависимости workflow в lock-файле
Ссылка на action через тег удобна для чтения, но тег может переместиться. Тогда следующий запуск выполнит другой код, хотя файл workflow в вашем репозитории не менялся.
В GitHub Actions появился механизм lock-файлов, пока в public preview. Расширение gh actions-lock создаёт .github/workflows/actions.lock с конкретными коммитами зависимостей.
Фиксируются actions, их транзитивные зависимости и зависимости переиспользуемых workflow. Подключать механизм можно постепенно, для отдельных workflow. При обновлении action через Dependabot соответствующая запись в lock-файле обновляется в том же PR.
Так изменения зависимостей становятся видны на ревью. Но сначала проверьте сам код: фиксация коммита обеспечивает постоянство версии, а оценивать её безопасность всё равно нужно отдельно.
#инструменты #github #ci
Firefox DevTools MCP: полный скриншот и завершение сессии
В Firefox DevTools MCP 0.10.3 добавили несколько возможностей для автоматизированной проверки страниц.
По объявлению Mozilla, параметр fullPage у screenshot_page позволяет снять весь прокручиваемый документ вместо видимой области. При разрешении загрузок через set_download_behavior можно указать каталог в downloadFolder.
Отдельно появился close_firefox_session. Если сервер подключён к уже открытому Firefox, инструмент разрывает соединение. Если сервер сам запустил браузер, он его закрывает. Это различие важно для сценариев, работающих рядом с пользовательскими вкладками.
Сессии подключения к существующему Firefox теперь отключаются после 30 минут без вызовов инструментов. А restart_firefox перенесли во внутренний пакет Mozilla для контролируемых сред.
Пригодится для проверок длинных страниц, загрузок файлов и корректного завершения браузерных сценариев.
#firefox #mcp
IntelliJ IDEA: действия редактора через две точки
Нужная команда IDE часто существует, но её сочетание клавиш вспоминается дольше, чем занимает само действие. В IntelliJ IDEA можно начать с .. прямо в редакторе.
Как показано в заметке JetBrains, command completion предлагает действия с учётом кода и положения курсора: навигацию, рефакторинг, генерацию и исправления.
В 2026.3 EAP этот механизм расширили. Появился более прямой доступ к logpoints, подсветка элемента, к которому применится действие, и общий интерфейс с postfix completion и живыми шаблонами. Поддержку также развивают для файлов настроек и декомпилированного кода.
Базовый вызов через две точки можно попробовать в Java-, Kotlin- или Scala-файле в IDEA 2026.2. Новые возможности из статьи относятся к предварительной 2026.3 EAP, поэтому набор действий зависит от версии и контекста.
#intellij #ide
Tachyon: найти медленный участок Python-программы
В Python 3.15 появился статистический профилировщик Tachyon в модуле profiling.sampling. Он периодически снимает состояние стеков и помогает увидеть, где программа проводит время.
В разборе Astral его запускают через uv и открывают диаграмму в браузере. Для своего файла команда выглядит так:
uv run --python=3.15 -m profiling.sampling run --flamegraph --browser app.py
sum(). Замена этого участка сократила время конкретного запуска примерно вдвое.
Zsh: как отложить набранную команду
Набрали длинную команду запуска тестов и вспомнили, что сначала нужно переключить ветку? В Zsh можно временно убрать строку, выполнить другую команду и получить прежнюю обратно.
В раскладке Emacs нажмите Esc, отпустите, затем q. Виджет push-line сохранит строку и очистит приглашение. После выполнения следующей команды сохранённый текст вернётся, но автоматически не запустится.
В заметке Адама Джонсона есть настройка для многострочных команд:
bindkey '^[q' push-line-or-edit
~/.zshrc. Если команда вводится на нескольких строках, первое Esc → q соберёт её в единый редактируемый буфер. Повторное нажатие отложит уже весь буфер.
procs: дерево родительских и дочерних процессов
Если у процессов похожие команды, дерево помогает увидеть связи между ними. У procs есть режим дерева:
procs --tree
--watch. Если передать текстовый аргумент, procs по умолчанию ищет его в полях USER и Command, а числовой аргумент — среди PID.config/large.toml, поэтому чистая установка может показывать другие столбцы. Linux и Windows поддержаны, а macOS и FreeBSD в документации отмечены как экспериментальные. На карточке — схема связей без реальных PID.
Читать полностью…
Pueue: поставить длительные команды в очередь
В Pueue команды выполняет фоновый процесс pueued, а клиент добавляет задания и показывает их состояние. Поэтому выполнение не привязано к открытому терминалу клиента. По умолчанию очередь запускает одно задание за раз.
После установки запустите daemon и добавьте безопасное пробное задание из руководства:
pueued -d
pueue add sleep 60
pueue status
pueue log. Для реальной команды сначала проверьте, что она делает и как переданы аргументы.
Скиллов для AI-агентов становится всё больше, и уже непонятно, что где используется и как работает!
Мы делаем Hollon AMS. В визуальном редакторе из скиллов собираются процессы, для них задаются общие правила, а разных AI-агентов можно подключить через MCP. Разработчик может прогонять сценарии и разбираться, где что сломалось. Тимлид или CTO видит, как устроены процессы, какие у них версии и что они дают по KPI.
Это не только про разработку: подойдёт для любого процесса, который можно отдать AI-агенту. Попробовать можно в облаке, а для компаний есть возможность развёртывания в закрытом контуре.
Попробуйте собрать первый процесс
Если интересны готовые кейсы или хочется обсудить свой, пишите: dmitriy.parasyna@hollon.tech
gping: сравнить задержку до двух хостов на одном графике
Чтобы сопоставить ping до двух адресов, передайте оба хоста одной команде gping:
gping google.com facebook.com
-b задаёт, сколько секунд истории помещается на экране. По умолчанию это 30 секунд. Адреса в примере можно заменить своими.--cmd, но это отдельный режим. В ролике показана демонстрация из репозитория, её числа не описывают вашу сеть.
Читать полностью…
Голое железо и root-доступ, ВМ со снапшотами по расписанию, Kubernetes с GitOps в проде или всё сразу. В фановом тесте от команды Deckhouse из таких ответов складывается один из 10 типов инфраструктуры.
Укротитель давно научился жить с ВМ и Kubernetes рядом, но устал от двух центров управления. Соковыжималка запускает базы и ML прямо на железе, чтобы гипервизор не съедал производительность. Антиквар не трогает систему, которая работает с нулевых. А Повелителю облаков уютно до первого кругленького счёта.
Грузчик и Коллекционер выпадают реже всех. Если достался один из них, ссылкой на результат точно стоит поделиться с командой.
→ Пройти тест и узнать свой тип
lychee: проверить ссылки в README перед ревью
Правка документации может выглядеть безупречно, пока кто-нибудь не откроет ссылку на удалённую страницу. lychee извлекает ссылки из Markdown и HTML и проверяет их доступность.
Если утилита установлена, запустите в каталоге с вашим README:
lychee --no-progress README.md
--no-progress убирает прогресс-бар и удобен для журналов CI. Код выхода 2 означает, что хотя бы одна не исключённая ссылка не прошла проверку.--offline оставляет только локальные файлы. И отдельно проверьте смысл ссылок: доступная страница могла давно сменить содержание.
Читать полностью…
sd: сначала посмотреть замену, потом записать файл
У sd важная особенность: если передать имя файла, замена по умолчанию записывается прямо в него. Для предварительного просмотра есть -p.
Допустим, в вашем config.txt нужно заменить локальный адрес. Пример с условным адресом назначения:
sd -p -F 'http://localhost:3000' 'https://api.example.com' config.txt
-F включает буквальный поиск. Без него поисковая строка считается регулярным выражением. Это важно для адресов с точками и другими специальными символами. С -p вы увидите преобразованный текст в терминале, исходный файл останется прежним.-p и проверьте diff. sd заменяет текстовые совпадения, включая строки и комментарии. Для правки кода, где нужно учитывать структуру выражений, такого поиска может быть недостаточно.
Читать полностью…
hyperfine: сравнить команды с прогревом и повторами
Один удачный запуск ещё мало говорит о скорости команды: на время влияют кеши и соседние процессы. hyperfine повторяет измерения и показывает их разброс, а результаты можно сохранить в JSON.
Короткий учебный пример для hyperfine 2.0 и Unix, где доступна команда sleep:
hyperfine --warmup 3 --runs 10 --export-json timings.json 'sleep 0.1' 'sleep 0.2'
--export-json запишет результаты в timings.json. В версии 2.0 для конвейеров и перенаправлений отдельно нужен -S.sleep на варианты, выполняющие одинаковую задачу с одними входными данными. Прогрев нужен для сценария с тёплым кешем. Полученные числа описывают вашу машину и эти условия, поэтому переносить коэффициент ускорения на любой проект нельзя.
Читать полностью…
Azure Developer CLI ограничивает параллелизм по этапам развёртывания
В проекте с несколькими сервисами одновременная сборка и публикация могут упираться в ресурсы машины или ограничения облака.
В сентябрьских обновлениях Azure Developer CLI добавили отдельные ограничения параллелизма для этапов package, provision, publish и deploy. Теперь число одновременно выполняемых операций можно настраивать под каждый этап.
Пригодится, например, когда сборку нескольких сервисов можно распараллелить, а создание ресурсов или публикацию нужно выполнять с меньшей нагрузкой.
В azure.yaml также появились слои инфраструктуры и сервисов для организации сложных проектов. А azd init --template предупреждает, если репозиторий шаблона архивирован.
Это возможности инструмента для развёртывания в Azure. В обзоре разобраны версии 1.33.0–1.34.2.
#инструменты #azure #cli
uv помогает подготовить окружение для тестов самого Django
Нашли ошибку во фреймворке и хотите проверить исправление? У Django есть собственный набор тестов. Адам Джонсон показывает, как подготовить для него окружение через uv.
В корне клонированного репозитория Django:
uv venv
uv pip install -e . -r tests/requirements/py3.txt
.venv, вторая устанавливает Django в редактируемом режиме и зависимости тестов. Изменения в исходниках фреймворка будут доступны без повторной установки пакета.tests и запустите runtests.py. Это подготовка к работе над самим Django; тесты вашего приложения запускаются отдельно.pylibmc. Его можно исключить из установки, но тогда зависящие от него тесты будут пропущены.
DBeaver 26.2.3 запускает SQL-файлы без открытия в редакторе
Когда готовый SQL-скрипт нужно просто выполнить, отдельная вкладка бывает лишней. В DBeaver 26.2.3 добавили запуск файлов со скриптами без открытия в SQL-редакторе.
После успешного выполнения DDL — например, изменения структуры таблицы — появилось уведомление, предлагающее обновить затронутые метаданные. Это помогает привести дерево объектов в соответствие с изменениями в базе.
В той же версии исправили массовый импорт в PostgreSQL: раньше могли некорректно обрабатываться обратные слеши и пользовательские символы экранирования CSV.
Пригодится тем, кто регулярно запускает подготовленные SQL-файлы и загружает данные через настольный клиент. Перед выполнением всё равно проверьте подключение и содержимое скрипта: новый способ запуска не добавляет автоматического отката.
#инструменты #sql
Chrome DevTools: измерять переходы внутри SPA
В одностраничном приложении адрес и содержимое меняются без полной загрузки документа. Поэтому одной записи первоначального открытия страницы недостаточно, чтобы оценить следующие переходы.
В обзоре Chrome DevTools описана поддержка soft navigation в разделе Insights панели Performance. Она дополняет отображение таких переходов в Live Metrics и записи выполнения.
Для проверки откройте Performance, начните запись и выполните нужный переход в приложении. Если DevTools распознал его как soft navigation, можно рассмотреть соответствующий участок и связанные подсказки по производительности.
В том же обновлении поиск по Ctrl+F научился находить записи пользовательских дорожек, добавленных через Extensibility API, включая их свойства и текст подсказок.
Сценарии стоит записывать отдельно: открытие приложения, переход между экранами, повторное посещение уже загруженного раздела.
#devtools #производительность
Docker Compose: корректный YAML ещё не гарантирует поведение
Параметр может существовать в спецификации Compose и проходить проверку схемы, но не поддерживаться при обычном запуске через docker compose up.
В Compose 5.6.0 добавили предупреждения о неподдерживаемых атрибутах файла. Это помогает заметить ситуацию, когда настройка записана, а ожидаемого эффекта нет.
Например, параметры обновления сервисов для Swarm не превращают локальный Compose в оркестратор с таким же механизмом развёртывания. При переносе конфигурации между средами стоит проверять поддержку конкретных полей, а затем фактическое поведение контейнеров.
В том же выпуске появилась частичная поддержка jobs: пока доступны только задания с ручным запуском. Задания по расписанию ещё ждут соответствующей поддержки Docker Engine.
Полезная проверка после обновления: перечитать предупреждения запуска и сопоставить их с настройками, на которые рассчитывает ваш проект.
#docker #конфигурация
VS Code: меньше ручной работы с Markdown
Скриншот для инструкции, ссылка на локальный файл, длинный README с десятком разделов — в VS Code 1.142 для этих задач обновили редактор Markdown.
В описании релиза перечислены несколько полезных изменений. Изображение можно вставить прямо из буфера обмена. Для файловых ссылок появился Rename Symbol по F2: переименование отражается по документу.
Редактор также подключили к Outline и навигационной цепочке над документом. По заголовкам проще переходить, не прокручивая весь файл. У блоков кода при наведении появляется кнопка копирования.
В режиме редактирования каждая исходная строка теперь занимает отдельную визуальную строку, чтобы структура Markdown читалась яснее. Режим просмотра сохраняет привычное отображение.
Пригодится тем, кто ведёт инструкции, заметки к релизам и документацию рядом с кодом. Эти изменения входят в стабильный выпуск от 14 октября.
#vscode #документация
Bruno: локальный сервер API из примеров ответов
Бэкенд ещё не готов, а в интерфейсе уже нужно проверить список, пустое состояние и ошибку. В Bruno для этого можно сохранить примеры ответов и поднять локальный сервер, который их возвращает.
В руководстве команды Bruno показан путь от коллекции запросов до работающей заглушки. Для примера задаются статус, заголовки и тело. Его можно написать вручную или сохранить из настоящего ответа API.
Из примеров создаётся mock server. Для одного метода и пути можно подготовить несколько ответов и правила их выбора. Запросы видны в журнале, а определения хранятся на диске рядом с коллекцией — их удобно передавать через Git.
Mock Servers пока в бета-версии. Такой сервер возвращает заданные ответы, не хранит данные и не исполняет бизнес-логику. При закрытии Bruno он останавливается; после перезапуска приложения его нужно запустить снова.
#api #тестирование