Инструменты программиста
13K subscribers
1.64K photos
155 videos
4 files
1.99K links
Полезные инструменты для программистов — бесплатные и платные

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

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

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

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

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

В версии 18.17.1 длинные команды в TUI обрезаются посередине. На экране остаются начало команды и последние аргументы.

Заодно исправили:

🔘 порядок импорта истории из zsh и Nushell;
🔘 поиск по префиксу;
🔘 подключение собственных API-адресов к ИИ-функциям;
🔘 документацию по захвату вывода и MCP.

Язык: Rust
Лицензия: MIT

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Нейросети удобно оценивают код, но нестабильны: один и тот же Go-файл может получить разные вердикты в разных прогонах

Repowise делает эту работу детерминированно — он анализирует здоровье Go-кода по синтаксическому дереву и истории коммитов.

Инструмент строит 23 показателя качества на парсере Tree-sitter и git-истории. Один и тот же коммит всегда даёт одну и ту же оценку, поэтому результат можно сравнивать между версиями без шума.

В отличие от универсальных метрик объектно-ориентированного кода, Repowise учитывает специфику Go: вложенность функций, дублирование, покрытие тестами и процессные сигналы — например, частую смену авторов одного файла. Для крупных репозиториев вроде Hugo это даёт стабильную картину рисков.

Если в проекте важна воспроизводимость оценок, такой подход поможет отслеживать деградацию и не гадать на нейросетях. Подробности о метриках в статье.
👍3😁1
Nushell 0.114.1: точнее проверяет типы прямо во время работы

Nushell — командная оболочка со структурированными данными. Её пайпы передают таблицы, записи и типизированные значения. JSON и CSV можно фильтровать командами оболочки без ручного разбора текста.

Версия 0.114.1 стабилизирует runtime annotations, которые недавно включили по умолчанию.

В патч вошли:

🔘 точные позиции ошибок при несовпадении типов;
🔘 исправленные типы closures, команд дат, uname и input listen;
🔘 корректная передача именованных флагов через run script.nu;
🔘 возможность отключить проверки аннотаций для старых скриптов.

Язык: Rust
Лицензия: MIT

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
Любите игры на концентрацию и внимание?

Тогда «Меморина» — то что надо! Найдите все пары как можно быстрее и откройте все ачивки в нашей игре
eza 0.23.5: современный ls научился считать строки кода

eza расширяет возможности ls: показывает Git-статусы, дерево каталогов, иконки и метаданные файлов прямо в терминале.

В версии 0.23.5 завершили многолетний перенос командной строки на clap и добавили подсчёт строк кода с итоговой сводкой. В тесте авторов обход 635 ГБ исходников занял 4,5 минуты.

В релиз также вошли:

🔘 --hyperlink=auto для ссылок в совместимых терминалах;
🔘 --short-nix для компактных путей Nix;
🔘 сводка по строкам и CSV-иконка;
🔘 обновлённые зависимости и новая минимальная версия Rust.

Язык: Rust
Лицензия: EUPL-1.2

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
mise — менеджер рабочего окружения разработчика. Он хранит версии Python, Node.js, Rust и других инструментов, переменные среды и команды проекта в одном mise.toml, чтобы одинаково настраивать проект на разных компьютерах и в CI.

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

В релиз также вошли:

🔘 отдельный стиль вывода для задач;
🔘 установка Flatpak-пакетов через Linux bootstrap;
🔘 воспроизводимые OCI-слои из локальных файлов;
🔘 диагностика программ, которые перекрывают shims mise в PATH;
🔘 доступ Aqua backend к приватным архивам GitHub через авторизованный API.

При обновлении стоит проверить CI: --quiet теперь сохраняет выбранный стиль вывода, а служебные переменные usage_* живут только внутри текущего запуска.

Язык: Rust
Лицензия: MIT

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
Deno — среда для JavaScript и TypeScript, которая запускает код, управляет зависимостями, тестирует, форматирует и собирает приложения одним CLI.

Версия 2.9.2 развивает экспериментальный deno desktop: веб-приложение можно упаковать в самостоятельную настольную программу с интерфейсом в системном webview. Инструмент теперь распознаёт React Router, включает HMR для Vite и Nuxt и запускает обновление через dev-сервер выбранного фреймворка.

В обновление также вошли:

🔘 прозрачность и управление непрозрачностью окон;
🔘 запуск framework build перед упаковкой desktop-приложения;
🔘 вывод ошибок старта собранной программы;
🔘 запуск инспектора сигналом SIGUSR1;
🔘 корректный подсчёт веток в отчётах покрытия;
🔘 форматирование inline-скриптов Astro как TypeScript;
🔘 пути для fmt, lint и bench в watch-режиме.

Разработчики также ускорили Web Streams, передачу сообщений между workers и работу TLS-потоков, сократив лишние копирования буферов.

deno desktop пока считается экспериментальной функцией, поэтому формат и API ещё могут измениться. Остальные исправления входят в стабильный релиз 2.9.2.

Язык: Rust и TypeScript
Лицензия: MIT

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
fzf — нечёткий поиск для терминала: файлы, история команд, процессы, любые списки через пайп. Версия 0.74.1 от 18 июля почти целиком посвящена рендерингу.

Что внутри:

🔘 каждый кадр теперь оборачивается в synchronized update mode — на поддерживающих терминалах пропадает мерцание;
🔘 объём вывода на отрисовку сократился на 10–23% за счёт пропуска избыточных SGR-последовательностей;
🔘 исправлены призрачные символы и смещённые цвета внутри Zellij и восстановление курсора при выходе в терминале Neovim;
🔘 к каждому релизу теперь прикладываются .deb-пакеты для Debian-дистрибутивов.

Из ветки 0.74 стоит знать главное: на tmux 3.7+ флаг --popup открывает fzf в плавающей панели вместо модального popup — её можно двигать мышью, зумить и переключаться на другие панели, пока fzf работает.

Пригодится тем, кто живёт в терминале и запускает fzf сотни раз в день.

Язык: Go. Лицензия: MIT.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Flowork — self-hosted ИИ-стек из двух Go-бинарников

Flowork даёт готовый стек для агентов и LLM внутри вашей инфраструктуры: Flowork Agent управляет жизненным циклом агентов и задачами, а Flow Router направляет запросы к локальным или внешним моделям по вашим правилам.

Оба компонента — одиночные бинарники на Go без Docker-оркестрации и обязательных SaaS. Данные не покидают периметр, а вы платите за своё железо, а не за токены в чужом облаке.

Подходит для чувствительных данных и изолированных сред, но масштабирование, обновления и мониторинг остаются на вас.
RabbitMQ — брокер сообщений и потоков: AMQP, MQTT, STOMP и собственный Stream Protocol, очереди, кластеры и плагины управления. Патч 4.2.9 от 20 июля сосредоточен на надёжности кластера и безопасности.

Что внутри:

🔘 соли паролей переведены на криптографически безопасный генератор случайных чисел;
🔘 исправлено накопление слешей в путях classic queue index, из-за которого путь разрастался до ошибки enametoolong;
🔘 появились операции transfer_leadership для очередей и потоков, а rabbitmq-upgrade drain стал безопаснее;
🔘 при объявлении alternate exchange через AMQP 1.0 теперь корректно проверяются права;
🔘 минимальная поддерживаемая версия Erlang поднята до 27.0.

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

Язык: Erlang/OTP. Лицензия: MPL-2.0.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Несколько coding-агентов в одном рабочем дереве быстро начинают редактировать одни и те же файлы. Emdash разводит агентов по изолированным git worktree и собирает чат, терминал, задачи и pull request в одном локальном приложении.

Версия 1.1.40 вышла 17 июля. Что внутри:

🔘 в чат можно вставлять изображения;
🔘 появился быстрый переключатель Zen Mode;
🔘 у файлов в контекстном меню — команда Show in Finder, у pull request — копирование общего URL;
🔘 исправлена блокировка главного процесса при индексации файлов и падения при повторной подписке file watcher.

Пригодится тем, кто гоняет несколько агентов одновременно и устал следить, чтобы они не редактировали одни и те же файлы.

Язык: TypeScript. Лицензия: Apache-2.0.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
Auto-CPUFreq 3.1: мониторинг CPU и настройки теперь в GUI

Auto-CPUFreq, Linux-утилита для мониторинга и настройки процессора, обновилась до 3.1. Главное новшество: режим мониторинга теперь доступен прямо в графическом интерфейсе, так что смотреть состояние CPU можно без терминала.

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

Подробности о релизе.
👍4
Рутинные команды проекта расползаются по README, Makefile и памяти того, кто их когда-то придумал. just собирает их в один justfile: описываете рецепт, дальше зовёте just build или just test из любой папки проекта.

Версия 1.57.0 вышла 19 июля.

Что внутри:

🔘 появилась функция len() для подсчёта элементов списка, а split('') теперь разбивает строку на отдельные символы;
🔘 переменные из блока [env] стали видны внутри вызовов shell();
🔘 markdown-файл, заданный через --justfile-name, теперь тоже разбирается: рецепты вынимаются из блоков just, поэтому команды могут лежать прямо в README рядом с объяснением, зачем они нужны;
🔘 на Windows аргументы уходят в cmd.exe без экранирования;
🔘 запрещены дублирующиеся группы рецептов и одинаковые имена параметров у пользовательских функций;
🔘 ленивые присваивания перестали пересчитываться заново при каждом обращении внутри таких функций.

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

Язык: Rust. Лицензия: CC0-1.0.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
Nibs: безопасный очиститель терминала для Linux

Nibs — TUI-утилита на Rust, которая освобождает место на диске, не рискуя удалить важные файлы. Она сканирует кеши, логи, старые сборки, установщики, корзину и остатки приложений, а перед очисткой помечает каждую находку как безопасную, требующую проверки или рискованную.

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

Инструмент пока в альфе, но уже открыт для тестирования. Репозиторий: github.com/danitsdev/nibs.
Biome — линтер и форматтер для веб-проектов: JavaScript, TypeScript, CSS, HTML. Одна программа на Rust вместо связки ESLint и Prettier, работает из терминала и через LSP в редакторе.

Версия 2.5.5 вышла 21 июля.

Что внутри:

🔘 новое правило noNegationInEqualityCheck ловит выражения вида !foo === bar. Из-за приоритета операторов это выполняется как (!foo) === bar, хотя автор почти наверняка имел в виду foo !== bar;
🔘 useExhaustiveSwitchCases разобрался с юнионами bigint-литералов: теперь сравнивает их по значению, поэтому двоичная, восьмеричная и шестнадцатеричная запись одного числа больше не путают правило;
🔘 noBaseToString и useNullishCoalescing замолкают, когда тип не удалось вывести до конца. Раньше на рекурсивных типах они выдавали замечания по неполной информации;
🔘 правило noThenProperty ускорили примерно на 50%;
🔘 CSS-форматтер перестал ломать регистр: служебные ключевые слова приводит к нижнему, а имена, придуманные автором, оставляет как есть;
🔘 парсер понимает атрибуты Angular и сокращённую запись v-bind вида :="props";
🔘 закрытие одного редактора больше не гасит общий демон Biome, к которому подключены остальные.

Пригодится тем, кто держит в проекте ESLint с плагинами и Prettier и присматривается, чем это всё заменить.

Язык: Rust. Лицензия: Apache-2.0.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Если вам интересно, что происходит на передовой AI-инфраструктуры и системного программирования — загляните в @coreinfra. Авторы делятся не пересказом новостей, а реальным опытом: как ускоряют тесты, собирают инфраструктуру для фаззинга, следят за новыми моделями и не боятся спорных технических тем.

С чего можно начать:
🔘Почему Docker в Colima замедляет тесты в 1.5 раза — разбор того, как SSH port-forwarding до базы данных съедает драгоценные миллисекунды, и что делать, если Docker всё же обязателен.
🔘Как собирать образы для Firecracker VMM — подробная схема сборки rootfs для лёгкого фаззера CoreInfra AT1: от squashfs до готового ext4-образа, с реальными командами.
🔘Гид по AI Hub без лимитов — обзор того, какие модели (Fable 5, Sonnet 5 и другие) уже доступны через собственный хаб авторов и чем это удобнее подписок.

Больше постов и подробностей в канале @coreinfra ⚡️

Это #партнёрский пост
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🙏1
Turborepo до сих пор был инструментом для монорепозиториев на JavaScript: он кеширует результаты задач, гоняет только то, что затронули изменения, и умеет отдавать кеш на всю команду. В версии 2.10.6 от 22 июля он научился работать с репозиторием, где вообще нет ни одного package․json.

Что внутри:

🔘 поддержка Cargo-воркспейсов включается флагом experimentalCargoWorkspaces в turbo.json, после чего крейты становятся обычными узлами графа пакетов;
🔘 задачи выводятся из самого Cargo: build, test, check, bench превращаются в соответствующие cargo-команды с --package и --locked, lint и clippy зовут cargo clippy, docs зовёт cargo doc;
🔘 run и dev появляются у крейта только если у него ровно один бинарник;
🔘 библиотечные крейты остаются в графе, поэтому --filter и подсчёт затронутых пакетов идут по реальным зависимостям Rust;
🔘 в TUI перестали теряться цвета, а turbo watch переписали;
🔘 при обрезке репозитория сохраняются записи node@runtime: из pnpm-локфайла и расширения пакетов Yarn.

Пригодится тем, у кого в монорепозитории и фронтенд, и Rust-сервисы, а кеширование и определение затронутых пакетов до сих пор жило только на половине проекта.

Cargo-поддержка помечена как экспериментальная, у неё отдельный раздел документации. Обновлять turbo придётся везде сразу, включая CI и локальные хуки: старые версии не понимают новых future-флагов и просто откажутся запускаться.

Язык: Rust. Лицензия: MIT.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Ternlight: поиск по смыслу прямо в браузере, без сервера и ключей

Ternlight превращает текст в векторы и ищет по смыслу прямо в браузере на CPU. Весь пакет включает модель, токенизатор и движок вывода и занимает ≈7 МБ, а сервер, GPU и API-ключи не нужны. Установка: npm i @ternlight/base, после чего embed() даёт 384-мерный вектор, а similar() ранжирует небольшую выборку документов за ≈5 мс на одной вкладке.

Это можно воспринимать как Fuse.js, но с поиском по смыслу вместо символов: библиотеку вешаете на страницу документации или справки, и она находит «как отменить подписку», даже если пользователь написал «хочу вернуть деньги». Демо работает офлайн, посмотрите на ternlight.dev/demo.

Если нужен семантический поиск без инфраструктуры, загляните в статью: там примеры кода и сравнение с классическим текстовым поиском.
Forwarded from Веб-страница
Modern Web Guidance: не даём ИИ-агенту тащить лишние зависимости

Просишь агента сделать модалку — получаешь портал, setTimeout и лишнюю библиотеку. Modern Web Guidance учит агента использовать актуальные API веб-платформы.

Устанавливается через npx modern-web-guidance@latest install или плагин для редактора. Укажите целевой Baseline в AGENTS.md/CLAUDE.md — и агент спросит, можно ли обойтись браузером.

В демо это сработало: CSS Anchor Positioning вместо Floating UI для тултипа, нативный <dialog> вместо самодельного модала, scheduler.yield() вместо useMemo при поиске по 2000 задач.

Сразу говорю, версия ранняя. Но идея здравая: ИИ-код должен ориентироваться на актуальную платформу. Подробности.
2
Запущенный сервером, через rclone serve или удалённый API с флагом --rc, rclone попадает в периметр наравне с любым другим сетевым сервисом. В этом релизе закрыли большой блок уязвимостей именно такого рода.

rclone — консольная утилита для копирования и синхронизации данных между локальными дисками и облачными хранилищами, поддерживает больше семидесяти бэкендов. Версия 1.75.0 вышла 31 июля.

Что внутри:
🔘 около 20 записей об уязвимостях (GHSA), большая часть CVE пока в статусе PENDING: инъекция команд в SFTP через имена файлов на удалённых системах с PowerShell, инъекция в FTP при кодировке без CRLF, утечка ключей S3 при редиректе с HTTPS на HTTP, исчерпание памяти неограниченными заголовками HTTP CONNECT в прокси, выход за пределы каталога в serve restic;
🔘 обработчики pprof у rc-сервера больше не открыты без аутентификации, трассировки стека при панике наружу не отдаются;
🔘 пароли и токены перестали попадать в отладочный лог при rclone config;
🔘 serve s3 получил потоковые multipart-загрузки без буферизации в памяти, заодно починили зависшие оборванные загрузки, исчерпание памяти и ошибку InvalidPart при параллельной работе;
🔘 в языке фильтров появились вложенные альтернативы в фигурных скобках и флаг --files-from0 для списка файлов, разделённого нулевым байтом;
🔘 примерно в пятнадцати бэкендах починили потерю времени модификации после загрузки: Azure Files, FTP, HDFS, Mail․ru, Jottacloud, WebDAV и другие;
🔘 добавлены бэкенды Scality и Zero Services, встроенный веб-интерфейс обновлён до 1.1.11.

Пригодится тем, кто держит rclone в кроне для бэкапов, и в первую очередь тем, у кого serve или --rc смотрит в сеть.

Язык: Go. Лицензия: MIT.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM