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

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

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

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

Регистрация в перечне РКН: https://tprg.ru/mX0S
Download Telegram
Docker Compose: корректный YAML ещё не гарантирует поведение

Параметр может существовать в спецификации Compose и проходить проверку схемы, но не поддерживаться при обычном запуске через docker compose up.

В Compose 5.6.0 добавили предупреждения о неподдерживаемых атрибутах файла. Это помогает заметить ситуацию, когда настройка записана, а ожидаемого эффекта нет.

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

В том же выпуске появилась частичная поддержка jobs: пока доступны только задания с ручным запуском. Задания по расписанию ещё ждут соответствующей поддержки Docker Engine.

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

#docker #конфигурация
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
Chrome DevTools: измерять переходы внутри SPA

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

В обзоре Chrome DevTools описана поддержка soft navigation в разделе Insights панели Performance. Она дополняет отображение таких переходов в Live Metrics и записи выполнения.

Для проверки откройте Performance, начните запись и выполните нужный переход в приложении. Если DevTools распознал его как soft navigation, можно рассмотреть соответствующий участок и связанные подсказки по производительности.

В том же обновлении поиск по Ctrl+F научился находить записи пользовательских дорожек, добавленных через Extensibility API, включая их свойства и текст подсказок.

Сценарии стоит записывать отдельно: открытие приложения, переход между экранами, повторное посещение уже загруженного раздела.

#devtools #производительность
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
DBeaver 26.2.3 запускает SQL-файлы без открытия в редакторе

Когда готовый SQL-скрипт нужно просто выполнить, отдельная вкладка бывает лишней. В DBeaver 26.2.3 добавили запуск файлов со скриптами без открытия в SQL-редакторе.

После успешного выполнения DDL — например, изменения структуры таблицы — появилось уведомление, предлагающее обновить затронутые метаданные. Это помогает привести дерево объектов в соответствие с изменениями в базе.

В той же версии исправили массовый импорт в PostgreSQL: раньше могли некорректно обрабатываться обратные слеши и пользовательские символы экранирования CSV.

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

#инструменты #sql
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
uv помогает подготовить окружение для тестов самого Django

Нашли ошибку во фреймворке и хотите проверить исправление? У Django есть собственный набор тестов. Адам Джонсон показывает, как подготовить для него окружение через uv.

В корне клонированного репозитория Django:

uv venv
uv pip install -e . -r tests/requirements/py3.txt


Первая команда создаёт .venv, вторая устанавливает Django в редактируемом режиме и зависимости тестов. Изменения в исходниках фреймворка будут доступны без повторной установки пакета.

Затем активируйте окружение, перейдите в tests и запустите runtests.py. Это подготовка к работе над самим Django; тесты вашего приложения запускаются отдельно.

В статье также разобрана проблема сборки pylibmc. Его можно исключить из установки, но тогда зависящие от него тесты будут пропущены.

#инструменты #python #django
Zed сравнивает каталоги в двух соседних панелях

Нужно сопоставить две копии проекта или результат генерации файлов? В Zed 1.24.2 появился просмотр различий каталогов рядом друг с другом через zed --diff.

Например, для двух локальных папок:

zed --diff ./before ./after


Так удобнее просматривать изменения сразу в нескольких файлах: исходная и новая версии открываются в соседних панелях.

Ещё в релизе добавили создание Git-тегов из истории коммитов и Git Graph. Команда git: create tag at head ставит локальный тег на текущий коммит. Автоматической отправки тега на сервер нет.

А поиск файлов теперь может подставлять текст, выделенный в редакторе или терминале. Мелочь, которая убирает копирование имени файла из сообщения об ошибке в строку поиска.

#инструменты #zed #git
❤‍🔥2
Azure Developer CLI ограничивает параллелизм по этапам развёртывания

В проекте с несколькими сервисами одновременная сборка и публикация могут упираться в ресурсы машины или ограничения облака.

В сентябрьских обновлениях Azure Developer CLI добавили отдельные ограничения параллелизма для этапов package, provision, publish и deploy. Теперь число одновременно выполняемых операций можно настраивать под каждый этап.

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

В azure.yaml также появились слои инфраструктуры и сервисов для организации сложных проектов. А azd init --template предупреждает, если репозиторий шаблона архивирован.

Это возможности инструмента для развёртывания в Azure. В обзоре разобраны версии 1.33.0–1.34.2.

#инструменты #azure #cli
caffeinate не даёт macOS уснуть до завершения команды

Запустили долгую сборку и отошли от ноутбука? В macOS есть встроенная утилита caffeinate, которая удерживает систему от автоматического сна из-за бездействия.

Передайте ей нужную команду:

caffeinate ./build.sh


Защита действует, пока команда работает. После завершения обычный режим сна вернётся.

Если процесс уже запущен, укажите его PID, например:

caffeinate -w 12345


А вариант caffeinate -id ./build.sh дополнительно не даст погаснуть дисплею. Без аргументов утилита работает до остановки через Ctrl+C.

В руководстве Адама Джонсона есть важное ограничение: закрытие крышки всё ещё может усыпить ноутбук. Блокировка экрана при этом не мешает задаче продолжать работу.

#инструменты #macos #терминал
🤝2🐳1💯1
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 на варианты, выполняющие одинаковую задачу с одними входными данными. Прогрев нужен для сценария с тёплым кешем. Полученные числа описывают вашу машину и эти условия, поэтому переносить коэффициент ускорения на любой проект нельзя.
doggo: какие MX-записи видит выбранный DNS-сервер

После смены DNS-записей полезно явно выбрать сервер, к которому уходит запрос. В doggo домен, тип записи и адрес резолвера помещаются в одну команду:

doggo MX github.com @9.9.9.9


Это пример из README: запрос MX-записей для github.com через 9.9.9.9. Подставьте свой домен, чтобы посмотреть его ответ. Утилита выводит записи в таблице, а флаг --json пригодится, если результат нужно обработать скриптом.

Для такого запроса нужны установленный doggo и доступ к выбранному серверу. Один ответ показывает состояние у этого резолвера в момент проверки. Если проверяете распространение изменения, сопоставьте ответы нескольких серверов: успешный запрос к одному ещё не означает, что новые записи видны всем.
🐳2👌1💯1
sd: сначала посмотреть замену, потом записать файл

У sd важная особенность: если передать имя файла, замена по умолчанию записывается прямо в него. Для предварительного просмотра есть -p.

Допустим, в вашем config.txt нужно заменить локальный адрес. Пример с условным адресом назначения:

sd -p -F 'http://localhost:3000' 'https://api.example.com' config.txt


Флаг -F включает буквальный поиск. Без него поисковая строка считается регулярным выражением. Это важно для адресов с точками и другими специальными символами. С -p вы увидите преобразованный текст в терминале, исходный файл останется прежним.

Если результат подходит, повторите команду без -p и проверьте diff. sd заменяет текстовые совпадения, включая строки и комментарии. Для правки кода, где нужно учитывать структуру выражений, такого поиска может быть недостаточно.
bottom: графики нагрузки и процессы в одном терминале

Сборка тормозит, память растёт, а по одному списку процессов трудно увидеть, как менялась нагрузка. bottom собирает рядом графики CPU, RAM, swap и сетевого ввода-вывода, а также таблицу процессов.

После установки программа запускается как btm. В таблице можно искать и сортировать процессы, есть древовидное представление. Нажмите ? внутри интерфейса, чтобы открыть справку по управлению. Так можно наблюдать систему, пока вы повторяете медленную операцию, и сопоставлять графики со списком процессов.

Это отправная точка диагностики: монитор показывает нагрузку, но сам не назовёт строку кода, из-за которой растёт память. Перед установкой сверяйтесь со списком ОС и архитектур в README. Доступность отдельных показателей зависит от платформы и оборудования.
lychee: проверить ссылки в README перед ревью

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

Если утилита установлена, запустите в каталоге с вашим README:

lychee --no-progress README.md


Флаг --no-progress убирает прогресс-бар и удобен для журналов CI. Код выхода 2 означает, что хотя бы одна не исключённая ссылка не прошла проверку.

Такой результат стоит разобрать: ограничения запросов, авторизация и тайм-ауты могут мешать автоматическому клиенту, даже когда страница существует. Проверка внешних адресов обращается к сайтам по сети. Режим --offline оставляет только локальные файлы. И отдельно проверьте смысл ссылок: доступная страница могла давно сменить содержание.
typos: проверить опечатки и оставить намеренные имена

Фамилия Teh похожа на опечатку, но исправлять её на the было бы ошибкой. У typos для таких случаев есть словарь исключений в _typos.toml:

[default.extend-words]
teh = "teh"


Сам инструмент сверяет слова в исходниках со списком известных опечаток. Поэтому незнакомое слово само по себе ещё не считается ошибкой. После установки пакета typos-cli запустите typos --diff в репозитории, чтобы увидеть предлагаемые изменения без записи файлов.

Для применения есть отдельный флаг --write-changes. Если вариантов исправления несколько, typos сообщает о проблеме и оставляет выбор вам. Это удобная дополнительная проверка перед PR, но она не обнаружит все ошибки и не заменит вычитку русскоязычного текста.
Голое железо и root-доступ, ВМ со снапшотами по расписанию, Kubernetes с GitOps в проде или всё сразу. В фановом тесте от команды Deckhouse из таких ответов складывается один из 10 типов инфраструктуры.

Укротитель давно научился жить с ВМ и Kubernetes рядом, но устал от двух центров управления. Соковыжималка запускает базы и ML прямо на железе, чтобы гипервизор не съедал производительность. Антиквар не трогает систему, которая работает с нулевых. А Повелителю облаков уютно до первого кругленького счёта.

Грузчик и Коллекционер выпадают реже всех. Если достался один из них, ссылкой на результат точно стоит поделиться с командой.

→ Пройти тест и узнать свой тип
actionlint: найти ошибку в workflow до запуска GitHub Actions

В синтаксически корректном YAML может быть неверное имя параметра action или обращение к отсутствующему полю матрицы. actionlint находит такие ошибки статическим анализом. В примере проекта он замечает неизвестный input node_version и обращение к matrix.platform, которого нет в матрице.

После установки запустите в репозитории:

actionlint


Утилита сама найдёт workflow и выведет диагностику с файлом, строкой и проблемным выражением. Для проверки shell- и Python-фрагментов есть интеграции с ShellCheck и pyflakes, если они доступны в окружении. Успешная проверка не гарантирует, что workflow выполнится: доступность сервисов и результат реального запуска она не проверяет.
This media is not supported in your browser
VIEW IN TELEGRAM
gping: сравнить задержку до двух хостов на одном графике

Чтобы сопоставить ping до двух адресов, передайте оба хоста одной команде gping:

gping google.com facebook.com


У каждого адреса появится своя линия. На графике видно, когда задержка выросла и совпали ли всплески у разных хостов. Флаг -b задаёт, сколько секунд истории помещается на экране. По умолчанию это 30 секунд. Адреса в примере можно заменить своими.

Обычный режим измеряет ping, поэтому по нему нельзя судить о времени ответа HTTP или скорости скачивания. Утилита также умеет измерять длительность команд через --cmd, но это отдельный режим. В ролике показана демонстрация из репозитория, её числа не описывают вашу сеть.
This media is not supported in your browser
VIEW IN TELEGRAM
csvlens: отфильтровать CSV прямо в терминале

В csvlens можно открыть CSV, найти значение и оставить на экране только нужные строки. В официальном примере используется таблица с покемонами:

csvlens Pokemon.csv


Нажмите / и введите Flying, чтобы подсветить совпадения. Для фильтра строк нажмите & и введите Bug. Это разные действия: поиск сохраняет всю таблицу, а фильтр скрывает неподходящие строки. Клавиша * задаёт фильтр столбцов. Выражения в этих режимах — регулярные.

Если файл разделён табуляцией, используйте -t. Для автоматического определения разделителя есть -d auto. csvlens работает как просмотрщик и не изменяет исходный CSV. Файл в команде замените своим.