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

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

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

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

Регистрация в перечне РКН: https://tprg.ru/mX0S
Download Telegram
Держите версии 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
slotstream: локальный сервер для MoE-модели, которая не влезает в память вашего Mac

Инструмент на Swift запускает Qwen3.8-Flash-Next на 125 млрд параметров на Mac с 48 ГБ: веса лежат на SSD (105 ГБ), а в память подгружаются только нужные для текущего токена эксперты, через pread в фиксированный пул слотов. Наружу торчит HTTP API, совместимый с Ollama и OpenAI.

🔘 постоянно в памяти 3,8 ГБ, процесс около 33 ГБ, генерация около 12 токенов в секунду на M5 Pro;
🔘 промпт 8000 токенов около 39 секунд, 32 000 около трёх минут, контекст до 32 768;
🔘 требования: Apple Silicon, macOS 14, около 110 ГБ на диске; MIT;
🔘 работают curl, Open WebUI и OpenAI SDK; в slotstream 0.2.0 Ollama CLI пока не подключался.

Против Ollama и LM Studio: те дают модели, которые целиком помещаются в память, и быстрый prefill; slotstream даёт модель на класс больше ценой минут ожидания на длинном промпте. Linux и дискретных GPU нет и не планируется. Почему mmap здесь не работает, на сайте.

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣1
Помнишь бумажные анкеты, которые ходили по классу на переменах — «любимый цвет», «любимая песня», «твой лучший друг»? SpaceWeb, которому в этом году исполнилось 25, вместе с Типичным программистом пересобрали этот формат: вместо тетрадки — сайт, вместо заполненных анкет — вся история рунета с 2001 года.

Есть только появившийся биткоин, GTA 3, Diablo 2 и другие легендарные игры на рабочем столе. Между вопросами покажем, как развивались веб и компания. В конце — промокод на услуги SpaceWeb и результат: на что записаны твои воспоминания.
🔥1
Как сделать свою CLI такой, чтобы агент не уходил за документацией в веб

Автор ведёт открытые утилиты aqua, pinact, tfcmt и ghalint и описывает проблему: про малоизвестный проект модель ничего не знает, уходит в веб-запрос, а тот ещё и возвращает пересказ вместо текста. На примере ghtkn, утилиты для восьмичасовых токенов GitHub App, показано, что с этим делать.

🔘 класть сообщения для агентов прямо в вывод --help и в логи;
🔘 привести документацию в порядок и разложить по отдельным документам;
🔘 добавить подкоманды, которые перечисляют документы и печатают их содержимое;
🔘 поставить указатели на эту подкоманду в README, --help, --version и текстах ошибок.

#инструменты
👍2
duckboard открывает CSV и даёт писать по нему SQL прямо в терминале

Ритуал знакомый: новый файл открывается в Excel, чтобы понять, что внутри, потом пишется быстрый сниппет на pandas ради одного вопроса, и уже на середине выясняется, что в колонке мусор. Десять минут ушло на то, что должно было занять две. Автор собрал duckboard, чтобы этого не делать.

🔘 команда, файл, SQL: ни блокнота, ни импортов, ни настройки окружения;
🔘 плохие данные инструмент ловит сам, а не ждёт, пока вы на них наткнётесь.

#инструменты
Минимальный CI на голых git-хуках, без раннеров и YAML

У автора личный сервер с его репозиториями: новый заводится через ssh server git init --bare, клонируется обычным git clone server:repo. Дальше выясняется, что для простого CI ничего больше и не нужно.

🔘 хук на стороне сервера ловит пуш и запускает проверку;
🔘 ни платформы, ни раннеров, ни конфигурации в YAML;
🔘 вся схема помещается в несколько строк.

Взрослый пайплайн это не заменит, но для пет-проекта или своего хостинга рабочий минимум.

#инструменты
Из Open VSX убрали 77 расширений-двойников: девятнадцать уносили полный путь к вашей рабочей папке

Расширения загружали в маркетплейс с 26 июля по 1 августа 2026 года и сняли 3 августа. Все выдавали себя за легитимные инструменты разработчика. Домен для утечки у всех общий, код и поведение схожи.

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

#инструменты
🤯2
include-tidy следит, чтобы файл на C и C++ включал ровно те заголовки, что использует

Принцип include-what-you-use простой: файл напрямую включает каждый заголовок, из которого ссылается на символы, и ровно по одному разу. Лишние включения раздувают время сборки, недостающие ломают её при первой перестановке заголовков.

🔘 инструмент проверяет оба случая автоматически, вместо памяти разработчика;
🔘 это вторая часть рассказа автора, с деталями реализации поверх базовой идеи.
🔘 лишние включения раздувают время сборки, недостающие ломают её при перестановке заголовков.

#инструменты
🤣1
Media3 1.11 добавил слоты Player в Compose и предзагрузку коротких видео через PlayerPool

Media3 это библиотека, на которой работает подавляющее большинство топовых медиаприложений под Android. В 1.11 изменения затронули воспроизведение, редактирование и UI-компоненты сразу.

Для тех, кто на Compose, главное в UI-модулях: настраиваемые слоты Player с готовыми дефолтами, интерактивные жесты, наблюдатели состояния и предзагрузка коротких видео через PlayerPool. Последнее прямо про ленты в стиле Reels, где следующий ролик должен стартовать мгновенно.

Помимо этого интеграцию с Cast обновили под SystemUI Output Switcher, добавили сетевое расширение на клиенте Ktor и утилиты муксинга для Ogg и WAV.

#android
CleanSlate запускает агента для кода в IDE, терминале и через SDK, без привязки к вендору

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

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

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

#инструменты
Скрытая инструкция в issue на GitHub довела до доступа Editor во внутреннем проекте Google Cloud

Pillar Security показала цепочку целиком: в issue положили скрытые инструкции, а разбирал этот баг-репорт ИИ-агент через рабочий процесс Gemini CLI.

🔘 инъекция привела к выпуску учётных данных Workload Identity Federation;
🔘 одна из них позволила выдать себя за более привилегированную учётную запись;
🔘 итог — доступ уровня Editor к внутреннему проекту Google Cloud.

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

#инструменты
🤣1