Инструменты программиста
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
Версии Rust для сборки и запуска nextest

cargo-nextest — отдельный запускатель тестов Cargo. Перед добавлением в CI проверьте, собираете ли вы сам nextest из исходников или используете готовую утилиту: в README для этих случаев указаны разные требования.

Минимальная версия Rust для сборки nextest — 1.91. Для запуска указан Rust 1.41, но авторы отдельно оговаривают, что столь старые версии не тестируют. Они ожидают совместимость с версиями Rust, выпущенными за последний год. Старый номер в таблице не стоит читать как гарантию для давно замороженного CI-образа.

В репозитории также есть библиотеки runner, metadata и filtering. Если вам нужен именно инструмент запуска тестов, ориентируйтесь на пакет cargo-nextest. Подробный выбор тестов и режимов вынесен в руководство проекта.
jwt-cli для разбора токена в терминале

При отладке авторизации бывает нужно увидеть заголовок и claims JWT: например, проверить, какое значение передаёт тестовый клиент. jwt-cli декодирует их локально, без вставки токена на сторонний сайт.

Утилита принимает токен из стандартного ввода. В примере из README сначала создаётся токен с заведомо учебным секретом, затем сразу разбирается:

jwt encode --secret=fake '{"hello":"world"}' | jwt decode -


Аргумент - означает чтение из stdin. Такой способ подходит и для цепочки команд, которая уже получила тестовый JWT. Не подставляйте рабочие токены и секреты в пример или общий журнал команд.

Декодирование показывает содержимое, но не доказывает подлинность подписи. По прочитанным claims нельзя принимать решение о доступе: проверка подписи и условий доверия должна оставаться в обработчике авторизации.
❤1
cargo-audit проверяет версии из Cargo.lock по RustSec

Перед обновлением Rust-проекта cargo-audit помогает найти зависимости с описанными в RustSec уязвимостями. Проверка относится к конкретным версиям из Cargo.lock, поэтому отчёт удобно разбирать вместе с изменением lockfile.

Смотрите, какая версия затронута и какие условия описаны в advisory. Наличие записи в базе ещё не показывает, вызываете ли вы уязвимый API или включили нужную для проблемы feature. Обычная проверка не обновляет зависимости. Экспериментальное автоматическое исправление — отдельный режим, который меняет Cargo.toml.

Запускайте Cargo только в доверенных проектах. Если lockfile отсутствует, cargo-audit может вызвать Cargo для его создания. Для чужого lockfile README предлагает передавать файл явно и работать из каталога вне недоверенного проекта. Утилите нужен Rust 1.74 или новее.
Vegeta задаёт темп HTTP-нагрузки

Для тестового сервиса полезно проверить поведение при заданной частоте запросов. Vegeta позволяет задать темп и длительность отдельно, а результаты передать в генератор отчёта. Небольшой пример для вашего локального HTTP-сервера на порту 8080:

printf 'GET http://127.0.0.1:8080/\n' | vegeta attack -rate=2/s -duration=2s | vegeta report


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

У -duration есть важная деталь: это время выдачи запросов. Весь процесс может идти дольше, пока приходят последние ответы. Такой тест отвечает на вопрос о выбранном темпе на конкретном стенде. Он не доказывает предельную пропускную способность сервиса.
❤1
Проверка конфигурации GoReleaser до выпуска

После изменения настроек релиза запустите check у GoReleaser. Команда читает конфигурацию и проверяет её допустимость, без запуска публикации.

В корне Git-проекта с файлом конфигурации:

goreleaser check


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

В репозитории GoReleaser есть ссылки на инструкции для локальной машины и CI. Поведение check также видно в открытом исходнике команды. После правки YAML сначала проверьте настройки, затем отдельно — сборку и доставку артефактов.