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

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

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

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

Регистрация в перечне РКН: https://tprg.ru/mX0S
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
cliamp — музыкальный плеер для терминала, сделанный по мотивам Winamp. Плейлист, параметрический эквалайзер и спектроанализатор рисуются прямо в текстовом окне, а играть он умеет локальные файлы, потоки, подкасты и то, что лежит в YouTube, SoundCloud, Bandcamp, Spotify, Navidrome, Plex, Jellyfin и Audiobookshelf.

Ветка 2.0 пока в предрелизе: 26 августа вышел v2.0.0-rc.2 с зеркальным спектроанализатором, режимом 60 кадров в секунду и упрощённым режимом воспроизведения. Стабильной остаётся 1.63.2 от 13 августа. Звёзд у репозитория 3751 на 27 августа.

Очевидная альтернатива — cmus: он легче и старше, и если задача — управлять локальной фонотекой с клавиатуры, брать стоит его. cliamp берёт числом источников и картинкой, но для AAC, ALAC, Opus и WMA ему нужен ffmpeg, а для YouTube, SoundCloud и Bandcamp — yt-dlp.

Ставится через brew install bjarneo/cliamp/cliamp, есть пакет в AUR и запуск одной командой nix run github:bjarneo/cliamp.

@prog_tools
Firewall, IDS или балансировщик ведут себя странно только на настоящем трафике, а настоящий трафик приходит в неудобное время и не повторяется. tcpreplay решает это в лоб: берёт записанный pcap и проигрывает его в сетевой интерфейс с нужной скоростью, сколько угодно раз подряд.

🔘 Набор состоит из нескольких утилит: tcpprep делит дамп на клиентскую и серверную стороны, tcprewrite переписывает адреса и заголовки второго, третьего и четвёртого уровней, tcpreplay отправляет результат в один интерфейс или в два сразу.

🔘 В версии 4.6.0 переработали быстрый путь через AF_XDP: на обычной карте e1000 отправка выросла примерно с 13 тысяч пакетов в секунду до 305 тысяч, это 941 Мбит/с. Режим --io-uring шлёт пакеты пачками вместо системного вызова на каждый и тратит примерно на 11 процентов меньше процессора.

🔘 Тогда же починили давнюю ошибку с jumbo-кадрами: кадр больше MTU, которому не хватало одной страницы кольцевого буфера, молча обрезался до 4096 байт.

🔘 Версия 4.6.1 вышла 15 августа и посвящена прежде всего безопасности и укреплению кода. Проект завёл три цели фаззинга — на разбор pcap, на правила fragroute и на парсер --services — и отдал их в OSS-Fuzz. За первые дни работы нашлось девять дефектов, от записи за границей кучи до зависания на исчерпании ресурсов; все исправлены в релизе вместе с тремя отдельно сообщёнными уязвимостями, две из которых с оценкой 7,0 и выше.

Очевидная альтернатива — Ostinato: у него есть графический интерфейс, и конструировать пакеты руками в нём удобнее. Но если сценарий уже записан в дамп, воспроизводимый прогон и автоматизация из терминала — это про tcpreplay. Звёзд у репозитория 1344 на 27 августа.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
xenarch-guard: песочница для команд ИИ-агента без Docker и без прав администратора

Агент с доступом к командной строке удобен ровно до того момента, когда вызывает инструмент, лезущий не туда. Docker проблему закрывает, но тащить демон и права администратора ради одного вызова — перебор.

xenarch-guard запускается как обёртка: xenarch-guard --allow-write ./workspace python script.py — и python видит только ./workspace, а опасные системные вызовы отрезаны. Внутри Landlock ограничивает пути, seccomp-bpf фильтрует системные вызовы; оба механизма ядра Linux работают без привилегий. Обёртка не форкает процесс, а заменяет себя на команду через execve(), так что родителя, к которому можно обратиться, не остаётся.

Очевидная альтернатива — bubblewrap: он старше, гибче и умеет полноценные пространства имён с монтированием. Но и настраивать его дольше, а тут одна строка перед командой. Сравнивать с Docker честнее по цене входа: демона и root-прав здесь нет вовсе.

В нашем канале Tproger разобрали подробнее.

@prog_tools
age шифрует файлы коротким ключом и работает в shell-пайпах

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

У age один короткий ключ, без брелоков, серверов ключей и сетей доверия. Установка на macOS: brew install age. На Linux: apt install age.

В версии 1.3.2 усилили проверки входных данных. Утилита отвергает заголовки больше 2 МБ, файлы с более чем 1024 получателями и некорректные ключи SSH. Открытый текст не в UTF-8 больше не выводится в терминал сам собой: принудительно это включается через -o -. Для релиза подготовили сборки под Windows ARM64 и macOS на Intel.

GnuPG выигрывает, когда нужна вся экосистема OpenPGP: подписи, сети доверия, совместимость с чужими инструментами и почтой. age выигрывает простотой для обычного шифрования файлов и юниксовых конвейеров.

К 30 августа репозиторий age собрал 23 400 звёзд на GitHub.

@prog_tools
👍1
Перегнать логотип из PNG в SVG прямо в браузере, без загрузки на чужой сервер

Векторизация растрового логотипа — задача, которая кажется мелочью, пока за неё не возьмёшься: автор Vectron описывает свой опыт так: онлайн-сервисы просят по $10 за картинку или подписку, а результат бесплатных выглядит так, будто логотип обводили во время землетрясения.

Vectron закрывает этот случай. Под ним лежит VTracer — открытый движок трассировки на Rust, у которого отличный алгоритм и интерфейс командной строки вместо интерфейса. Автор собрал VTracer в WebAssembly и запустил в Web Worker, поэтому работа идёт целиком на вашей машине: файл никуда не уходит, картинки небольшого размера обрабатываются почти мгновенно.

Что важно знать до того, как открывать:

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

Если нужен пакетный прогон или тонкая настройка параметров, тот же VTracer работает как обычная консольная утилита — сборки и исходники лежат на GitHub.

@prog_tools
Один сценарий сразу по нескольким базам: локальный SQL-клиент DataZen

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

Поддерживаются PostgreSQL, MySQL, MariaDB, SQLite и Redis. Приложение написано на Tauri v2, Rust и React и работает локально.

Версию 0.1.0 выпустили как первый публичный preview. На Linux пакет ставится командой sudo apt install ./DataZen-*-linux-x64.deb; доступны также AppImage и сборки для macOS и Windows.

DBeaver зрелее, проверен годами и знает намного больше источников данных. DataZen пока берёт компактностью и сценариями между разными базами. Это версия 0.1.0, ждать стабильности рано.

@prog_tools
1🔥1
StemDeck раскладывает трек на шесть дорожек у вас на машине — бесплатно и без облака

Вокал, барабаны, бас, гитара, пианино и всё остальное: StemDeck разделяет аудио на стемы открытой моделью Demucs и раскладывает их в микшер, как в DAW, — mute и solo по дорожкам, лупы по фрагменту, экспорт отдельных стемов или собственного микса.

Принимает MP3, WAV, FLAC, OGG, M4A и ссылки на YouTube. Модель весит около 170 МБ и качается один раз; на видеокартах NVIDIA и Apple Silicon разделение быстрое, на процессоре медленно, но работает. Аудио не покидает машину.

Это открытая альтернатива облачным Moises и LALAL.AI: без аккаунта, квот и подписки. Код под Apache 2.0, у проекта 3,4 тыс. звёзд.

github.com/stemdeckapp/stemdeck

@prog_tools
41
OpenClaw — открытый персональный ИИ-агент: ставится на свою машину, подключается к мессенджерам и почте и выполняет задачи вроде «следи за письмами из школы и пересылай важное в Telegram». Установка начинается с того, что уже есть на компьютере: подписки ChatGPT и Claude, API-ключи, локальные модели. Вышла версия 2.0, крупнейший релиз в истории проекта: больше 16 000 пул-реквестов от 933 контрибьюторов, примерно половина всех пул-реквестов проекта за всё время.

Что внутри:
🔘 установка упростилась, часть настроек убрали, а остальное делается уже в диалоге с агентом;
🔘 браузерное приложение пересобрано заново и стало полноценным интерфейсом;
🔘 общие облачные сессии: задачу агента можно передать коллеге вместе со всем накопленным контекстом;
🔘 релиз затронул память, скиллы, автоматизации, плагины и безопасность.

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

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣31👾1
tailcat соединяет две машины за NAT без аккаунта и без сети: адрес машины — её ключ

Tailscale открыла CLI и Go-пакет, который делает то, что netcat делал в локальной сети, только через интернет. На одной машине запускаете tailcat в режиме ожидания и получаете адрес, на другой передаёте этот адрес, и между ними появляется шифрованный канал. Поверх можно пустить SSH, передачу файлов или проброс порта.

Адрес здесь не IP, а публичный ключ WireGuard плюс сведения о релее DERP, через который машину можно найти, если прямой путь через NAT не пробьётся. Поэтому не нужны ни аккаунт, ни tailnet, ни root, ни TUN-интерфейс.

🔘 Установка: go install github.com/tailscale/tailcat/cmd/tailcat@latest, лицензия BSD-3-Clause
🔘 Годится для разового доступа: забрать файл с домашней машины, пустить коллегу на стенд
🔘 Не годится как постоянная сеть: нет списка устройств, ACL и DNS, а стабильность CLI авторы не обещают

Честное сравнение: для постоянной сети между серверами обычный Tailscale или WireGuard-конфиг остаются удобнее, а ngrok выставляет порт в публичный интернет, чего tailcat как раз не делает. Автор, Брэд Фицпатрик, написал прототип ещё в 2023 году и рассказал, зачем он нужен.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Запускайте программы для macOS прямо в Linux с помощью Darling

Darling позволяет запускать программы для macOS на Linux. Он выполняет для macOS ту же роль, что Wine для Windows: переводит системные вызовы и предоставляет приложению знакомое окружение. Название проекта составлено из слов Darwin и Linux.

Аппаратная эмуляция не используется, поэтому программы исполняются напрямую. Darling реализует среду Darwin — ядро и базовую систему macOS и iOS, включая Mach, dyld и launchd. В обычном Linux-шелле uname возвращает Linux, а после darling shell показывает Darwin.

Проект открыт, распространяется по GNU GPL 3 и использует свободные исходники Darwin, опубликованные Apple. По словам разработчиков, такой подход соответствует EULA Apple. Базовая экспериментальная поддержка простых графических приложений уже есть.

Darling работает и в Windows через WSL 2. В дальнейших планах — запуск приложений iOS на ARM-устройствах; для этого команде потребуется собственная реализация UIKit, системы интерфейсов iOS.
❤‍🔥2
Держите версии Node, Python, Go и Terraform в одном файле, и пусть ставятся при первом вызове

mise это менеджер версий инструментов на Rust: один файл mise․toml в проекте описывает, какие версии языков и CLI нужны, а при входе в каталог они подхватываются автоматически. Замена nvm, pyenv и asdf разом, у репозитория 33 тысячи звёзд.

В версии 2026.9.0, вышедшей 1 сентября, появилась ленивая установка: у инструмента в конфиге ставится lazy = true, и mise создаёт для него заглушку-шим. Сам бинарник скачивается только при первом запуске команды. mise install такие инструменты пропускает, mise install --include-lazy ставит всё заранее.

🔘 зачем: в монорепе с десятком инструментов новый человек получает рабочее окружение за секунды, а редкие утилиты не тянутся, пока не понадобятся
🔘 против asdf: тот же формат плагинов, но mise быстрее на старте шелла и умеет ещё задачи и переменные окружения; asdf проще и старше

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
Приложите скриншот к issue одной командой, не открывая браузер

GitHub CLI, официальный терминальный клиент GitHub, до сих пор умел работать только с текстом: картинку к багрепорту приходилось тащить через веб. В версии 2.99.0 появился флаг --attach.

🔘 gh issue comment --attach ./screenshot.png загружает файл в комментарий;
🔘 работает в gh issue и gh pr для create, edit и comment, флаг можно повторять;
🔘 alt-текст после решётки: --attach './login.png#The login error state';
🔘 локальная ссылка ![alt](./login.png) в Markdown переписывается на загруженный файл;
🔘 форматы PNG, JPEG, GIF, WebP, SVG, MP4, MOV, WebM; лимит 10 МБ на картинку, видео до 100 МБ на платных планах.

Нужен OAuth-токен от gh auth login или classic PAT и право записи в репозиторий. GitHub Enterprise Server пока мимо. Веб-интерфейс всё ещё удобнее для перетаскивания десятка файлов, но для CI и скриптов альтернативы у него нет. Как встроить в пайплайн, разобрали на сайте.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Утилиты, которые показывают, где именно вы опечатались в команде

uutils coreutils, переписанные на Rust ls, cp, sort и остальные базовые утилиты Linux, в версии 0.11.0 получили диагностику как у компилятора: под командой печатается сама строка, под ней каретка на неверном символе и подсказка с правильным синтаксисом.

🔘 работает в 28 утилитах, включая cut, chmod, sort, tr;
🔘 в пайпах и скриптах остаётся однострочное сообщение, парсеры stderr не сломаются;
🔘 UUTILS_DIAG=always|never|auto переключает режим;
🔘 попробовать можно в песочнице в браузере без установки;
🔘 бонусом PGO-сборки до 31% быстрее и cp быстрее на 32,93%.

Против GNU Coreutils: тесты совместимости проходят на 653 из 685, оставшиеся расхождения касаются редких флагов, и в старых скриптах они могут всплыть. Ставить стоит рядом с системными утилитами, а не вместо них. Подробности релиза на сайте.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
WebLLM запускает языковую модель прямо во вкладке браузера, сервер не нужен

npm-библиотека от команды MLC AI: модель скачивается один раз, кэшируется в браузере и считает на видеокарте пользователя через WebGPU. API совместим с OpenAI. 18,8 тыс. звёзд на GitHub, Apache-2.0.

🔘 npm install @mlc-ai/web-llm или импорт с CDN https://esm.run/@mlc-ai/web-llm;
🔘 CreateMLCEngine("Llama-3.2-1B-Instruct-q4f32_1-MLC", { initProgressCallback }), дальше engine.chat.completions.create({ messages, stream: true });
🔘 Web Worker и Service Worker, чтобы не вешать интерфейс; JSON-режим реализован в WASM-части;
🔘 на графике, сколько видеопамяти просят предсобранные модели: от 0,7 ГБ у gemma3-1b до 6,4 ГБ у Qwen3.5-9B.

Против серверного API: промпты не уходят с устройства и инференс бесплатен, но первый запуск ждёт скачивания весов, а на слабом ноутбуке модель не поместится. Попробовать без кода: chat.webllm.ai. Разбор с кодом, замерами и FAQ на сайте.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
VS Code 1.136: агент сам доводит ваш pull request до зелёных проверок

Agent Merge в новом VS Code берёт открытый PR и крутит цикл: читает замечания ревью, правит код, перезапускает упавшие проверки, разрешает конфликты, пока ветку не станет можно сливать. Функция в Preview.

🔘 включение: chat.agentMerge.enabled, запуск из окна Agents;
🔘 агенты Copilot и Claude экспериментально работают с multi-root workspace (chat.agentHost.copilotAgent.multiRootEnabled, chat.agentHost.claudeAgent.multiRootEnabled), хуки пока в пределах одной папки;
🔘 дерево сессий со статусами и ожидающими подтверждениями, уведомления, когда агенту нужен ввод;
🔘 терминальные расширения больше не ждут до 5 секунд при запуске.

Против ручного цикла «прочитал комментарий, поправил, запушил» выигрыш очевиден на быстром CI; на медленных пайплайнах каждая итерация агента стоит минут и токенов, а сколько именно, Microsoft не пишет. Без подписки Copilot остаются Compact layout, ускорение запуска терминальных расширений и мелкие правки редактора и доступности. Подробнее на сайте.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
Zed 1.18 вспоминает файлы прошлой сессии и показывает значения переменных в C и C++ прямо в коде

Zed это нативный редактор от авторов Atom, ставка на скорость и встроенную совместную работу; экосистема расширений у VS Code по-прежнему шире. В 1.18.0 117 коммитов, из заметного:

🔘 File Finder показывает недавно открытые файлы из предыдущих сессий, а не только текущей;
🔘 отладчик через CodeLLDB и GDB рисует inline-значения для C и C++, Continue Program и Continue Thread разведены;
🔘 git: toggle diff base переключает базу диффа между HEAD и веткой по умолчанию;
🔘 сломанное подключение внешнего агента перезагружается без рестарта редактора; задержка inline-подсказок настраивается через edit_predictions.<provider>.prediction_debounce;
🔘 терминал понимает ctrl-alt-<буква>, на Linux кэшируются шрифты и глифы.

Установка на Linux и macOS: curl -f https://zed.dev/install.sh | sh, для Windows отдельная сборка на сайте.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
Mantis: Google выложила гайд по своему ИИ-конвейеру для поиска и починки уязвимостей

Mantis это набор скиллов для кодинг-агента, которым Google проверяет собственные репозитории: 16 последовательных стадий плюс вспомогательные скиллы, от /mantis-history (учится на прошлых security-фиксах в истории коммитов) до /mantis-reproduce (воспроизводит уязвимость в контейнере без сети) и /mantis-patch. Репозиторий google/mantis открыт с июня под Apache-2.0, а 2 сентября Google опубликовала инструкцию по запуску, где представила скилл mantis-advise из репозитория, который подсказывает агенту безопасные решения ещё до правок.

▪️ Установка: git clone https://github.com/google/mantis.git или npx skills add google/mantis.
▪️ Агент любой: Google проверяла с Gemini CLI, Antigravity CLI и ADK; модель приносите свою.
▪️ Запуск: открыть агента и написать «I would like to use Mantis framework in path/to/mantis to review my code in path/to/your/code, can you help me get started?».
▪️ Песочница обязательна: gVisor с --network=none, microsandbox или отдельная VM; флаги вроде --yolo авторы прямо запрещают.
▪️ Каждую находку подтверждает человек: README запрещает массово слать непроверенные ИИ-отчёты мейнтейнерам.

Как устроены стадии и что Mantis не обещает, разобрали на сайте.
rustup 1.29.1 ставит компоненты параллельно и раздаёт документацию по HTTP

rustup, установщик и менеджер версий Rust, обновился до 1.29.1. Обновление не эффектное, но два изменения замечает каждый.

🔘 rustup update сначала проверяет доступные обновления параллельно, а rustup component add с несколькими компонентами ставит их одновременно;
🔘 rustup doc --serve поднимает локальный HTTP-сервер с документацией, спасение для контейнеров, где нет браузера;
🔘 неявная установка активного toolchain при вызове rustup и rustup-init объявлена устаревшей и теперь предупреждает;
🔘 rustup-init больше не оставляет мусор после отменённой установки;
🔘 новая официальная host-платформа aarch64-pc-windows-gnullvm; «target triple» по всему проекту переименован в «target tuple», флаг --target не менялся.

Обновиться: rustup self update. Из подводных камней команда напоминает про антивирусы, которые после каждого релиза по несколько недель блокируют распаковку rust-docs. Анонс в блоге Rust.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
jj converge: Jujutsu 0.45 сводит расходящиеся коммиты одной командой

В jj, системе контроля версий поверх Git, у изменения постоянный change ID, и когда одно изменение оказывается переписано дважды по разным веткам истории операций, в логе появляются два коммита с одним ID. Раньше это разгребали руками через abandon, squash и rebase. В версии 0.45.0, вышедшей сегодня, появился jj converge: группирует ревизии по change ID, собирает из расходящихся одну новую, перебазирует на неё потомков и переносит закладки. Спрашивает только когда эвристики не справились: слить ли описания, каких родителей взять. Результат смотрят через jj op show -p, откатывают через jj undo.

▪️ Ломающее: jj config edit/set/unset --user правит первый загруженный конфиг без вопроса; нужный файл указывать через --file <PATH>.
▪️ Ломающее: jj git import в неколоцированных репозиториях не импортирует коммиты с detached HEAD.
▪️ Git HEAD теперь хранится отдельно для каждого worktree, репозитории мигрируют сами.
▪️ Обновление: cargo binstall --strategies crate-meta-data jj-cli или brew install jj.

Полный список изменений и что проверить после обновления, разобрали на сайте.
2
ИИ-агент для админа прямо в терминале, с моделью на серверах Selectel

aish появился в SELECTOS, дистрибутиве Linux от Selectel. Это терминальный агент: описываете проблему словами, он сам собирает контекст с сервера, предлагает команды и выполняет их только после вашего согласия.

🔘 установка: sudo apt update, sudo apt install aish, запуск aish;
🔘 сценарии из документации: не стартует сервис, кончилось место, надо посмотреть логи или конфиг;
🔘 каждая команда показывается до выполнения, автономных действий нет;
🔘 модель развёрнута на серверах Selectel, контекст не уходит зарубежным провайдерам;
🔘 подключение других моделей обещано в будущих релизах.

Против Warp AI и ассистентов в облачных консолях главный аргумент юрисдикция данных, а не качество: что за модель внутри и сколько это будет стоить, Selectel не раскрыл. Работает только в SELECTOS, про Ubuntu и другие дистрибутивы ни слова. Что проверить перед запуском на боевом сервере, на сайте.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Dawarich хранит историю ваших перемещений у вас на сервере и теперь тянет миллион точек

Это открытая self-hosted замена Google Timeline: Rails, PostgreSQL, Docker, импорт Google Takeout, трекинг через OwnTracks и мобильные приложения. В 1.14.1 точки, треки и маршруты отдаются картами-тайлами, как в OpenStreetMap: набор из 957 350 точек грузится меньше секунды, JSON ужался с 590 МБ до 150 КБ.

🔘 определение посещений переписано с нуля;
🔘 метаданные устройств переехали в таблицу point_sources: перед обновлением бэкап базы;
🔘 OwnTracks в HTTP-режиме показывает членов семьи, перелёты из AirTrail считаются отдельно;
🔘 для перетаскивания точек режим тайлов нужно выключить.

Против облака самого проекта: self-hosting бесплатен со всеми функциями, облачный тариф от 59,99 евро в год с лимитом истории в 12 месяцев. Против Google Timeline: данные у вас; отрисовка по-прежнему в браузере, сервер отдаёт только тайлы. Русского интерфейса нет. Подробнее на сайте.

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