TGViewer
Channel Public Channel
Инструменты программиста

Инструменты программиста

@prog_tools

Полезные инструменты для программистов — бесплатные и платные

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

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

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

Регистрация в перечне РКН: https://tprg.ru/mX0S
Subscribers
12.9K
Photos
1.7K
Videos
158
Links
2.1K

Showing posts older than #2916 · Back to latest

Older Posts 20 shown
Post #2915 1.38K
OpenClaw — открытый персональный ИИ-агент: ставится на свою машину, подключается к мессенджерам и почте и выполняет задачи вроде «следи за письмами из школы и пересылай важное в Telegram». Установка начинается с того, что уже есть на компьютере: подписки ChatGPT и Claude, API-ключи, локальные модели. Вышла версия 2.0, крупнейший релиз в истории проекта: больше 16 000 пул-реквестов от 933 контрибьюторов, примерно половина всех пул-реквестов проекта за всё время.

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

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

@prog_tools
  • 🤣 3
  • ❤ 2
  • 👾 1
Post #2914 1.38K
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
  • ✍ 4
  • ⚡ 1
Post #2913 1.35K
Один сценарий сразу по нескольким базам: локальный 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
Post #2912 1.34K
Перегнать логотип из PNG в SVG прямо в браузере, без загрузки на чужой сервер

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

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

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

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

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

@prog_tools
Post #2911 1.26K
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
Post #2910 1.22K
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
Post #2909 1.28K
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
Post #2908 1.36K
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
Post #2907 1.37K
Tailcat — это netcat, у которого канал уже зашифрован. Tailscale открыла его исходники в августе на своей конференции TailscaleUp: одна машина запускает сервер и печатает короткий токен, вторая подключается по этому токену, трафик идёт через WireGuard.

Аккаунт Tailscale при этом не нужен — утилита берёт сетевой слой продукта, но не его control plane. Соединение сначала поднимается через ретрансляторы DERP, а потом пытается перейти в прямой UDP-канал между машинами.

Root тоже не нужен, и это главное отличие от обычного VPN: всё живёт в user space, без tun-интерфейса, без правки таблиц маршрутизации и без настройки DNS.

Что умеет, кроме передачи потока: пробросить локальный порт на удалённую машину, поднять на Linux и macOS встроенный SSH-сервер, когда системного sshd на той стороне нет, и работать прокси по SOCKS5.

Оговорка от авторов: формат токенов, CLI и Go-API пока без гарантий совместимости — в скрипты, которые потом никто не будет чинить, ставить рано.

@prog_tools
Post #2906 1.25K
Hister индексирует полное содержимое страниц, которые вы открывали, и локальных файлов, а потом ищет по ним — из веб-интерфейса, терминала, командной строки или по MCP. Это ответ на ситуацию «я это точно читал, но не помню где»: история браузера хранит только заголовки и адреса. 23 августа вышла версия 0.18.0.

🔘 Строка поиска подсказывает запросы из истории, алиасы, поля, сортировки и значения фасетов с числом результатов. Сортировки задаются прямо в запросе: sort:date, sort:visits, sort:domain, минус перед значением разворачивает порядок.

🔘 Появились извлекатели для Twitter, Bluesky, Reddit и Discourse: сохраняются авторы, даты, реакции и структура тредов, а ленты и треды можно разложить на отдельные документы.

🔘 hister import file принимает PDF, DOCX, Markdown, Org mode и обычный UTF-8 — файлами или целыми каталогами. Разбор идёт в процессе командной строки, поэтому серверу доступ к исходным файлам не нужен.

🔘 Инкрементальный импорт из Linkding, Readeck и wallabag, а команда hister update меняет владельца, метку, заголовок или язык у всего, что нашлось по запросу, с пробным прогоном и подтверждением.

🔘 При обновлении с 0.17.0 придётся один раз заново войти в веб-интерфейс и расширение; токены доступа не затронуты.

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

3 тысячи звёзд на 26 августа. Язык: Go. Лицензия: AGPL-3.0.

@prog_tools
Post #2905 1.23K
terminal-notifier — маленькая утилита для macOS, которая показывает системное уведомление из шелла: собралась сборка, упали тесты, доехал деплой. 23 августа вышла версия 3.0.0 — первый релиз за девять лет.

Всё переписано на Apple UserNotifications: старый NSUserNotification объявлен устаревшим ещё в macOS 11 и с тех пор ломался по частям. Бинарник универсальный, минимальная версия системы — 10.14; для более старых остаётся ветка 2.0.0.

🔘 Вернулись -action TITLE и -reply, которые убрали в 2.0.0 из-за приватного API. Они ждут человека и печатают ответ в stdout, так что скрипт может ветвиться по нажатой кнопке; ожидание ограничивается флагом -timeout.

🔘 -diagnose объясняет, почему уведомления не видно: разрешения, стиль баннера, звук, Фокусирование, сводка по расписанию, запущен ли Центр уведомлений.

🔘 Коды возврата со 2 по 6 различают неверный аргумент, проблему с разрешениями, таймаут и отказ сервиса.

🔘 Уведомления без -group перестали затирать друг друга, -remove действительно удаляет доставленные, а -contentImage больше не удаляет переданный ему файл.

🔘 Флаги -sender, -appIcon и -ignoreDnD теперь только печатают предупреждение и ничего не делают — старые скрипты не падают, но и эффекта нет.

Штатный osascript -e 'display notification ...' уже стоит в системе и ничего ставить не нужно — для одноразового «готово» этого хватает. terminal-notifier берёт своё там, где нужны группировка, удаление, звук, коды возврата и ответ пользователя.

7,3 тысячи звёзд на 26 августа. Язык: Objective-C. Лицензия: MIT.

@prog_tools
Post #2904 1.34K
PocketBase — бэкенд в одном исполняемом файле: внутри SQLite, пользователи, файлы, REST API, подписки в реальном времени и админка. Рядом не нужны ни отдельная база, ни очередь.

23 августа вышла версия 0.40.0:

🔘 ошибки команд и перехваченные паники доходят до app.Start(): программа завершается ненулевым кодом, но хук app.OnTerminate всё равно отрабатывает;
🔘 появился DELETE /api/logs и кнопка в интерфейсе — удалить все логи, не трогая настройку хранения maxDays;
🔘 размер Log.Data ограничен примерно 16 килобайтами на случай, когда в лог пишут непроверенные пользовательские данные; лишнее помечается флагом __pb_truncated__;
🔘 создание резервной копии больше не держит базу в транзакции;
🔘 в заголовки по умолчанию добавлен Cross-Origin-Opener-Policy: same-origin;
🔘 modernc.org/sqlite обновлён до 1.57.0, а защитный режим SQLite включается по умолчанию через _defensive=1.

Порог входа поднялся: нужен Go 1.27 и encoding/json/v2. Автор советует сначала проверить приложение локально — в Go 1.27 старый encoding/json переведён на v2 под капотом и обратно совместим не полностью.

Supabase выигрывает как управляемый сервис на PostgreSQL, когда нужны масштабирование и команда. PocketBase выигрывает, когда приложение должно жить одним файлом на одной машине; до версии 1.0 его API ещё меняется.

60,8 тысячи звёзд. Язык: Go. Лицензия: MIT.

@prog_tools
Post #2903 1.38K
Мышь Logitech умеет больше, чем показывает система: переназначение кнопок, DPI, поведение колеса, жесты. Штатно это настраивается только через Logitech Options+, а под Linux его просто нет.

OpenLogi говорит с устройствами по HID++ напрямую — без аккаунта и телеметрии. Вся конфигурация лежит в одном TOML-файле, который можно синхронизировать между машинами, и рядом с интерфейсом есть полноценная командная строка. 23 августа вышла версия 0.7.10:

🔘 ошибки открытия HID теперь видны в статусе агента, а не гасят работу молча;
🔘 интерфейс проверяет код возврата вспомогательного процесса при запуске агента;
🔘 openlogi list читает список устройств у уже запущенного агента;
🔘 нажатие на колесо-качельку перестало вызывать App Exposé, а прокрутка идёт на родную величину колеса;
🔘 корректно пересобранные записи об устройствах больше не выбрасываются.

Options+ выигрывает официальной поддержкой и обновлением прошивок, и запускать их одновременно нельзя: приложения дерутся за доступ по HID++, ресивером владеет кто-то один. Сам проект честно пишет, что находится в активной разработке и стабильным пока не является. OpenLogi берёт своё там, где Options+ нет вовсе, и там, где настройки хочется держать текстом.

Больше 15 тысяч звёзд. Язык: Rust. Лицензия: Apache-2.0 или MIT на выбор.

@prog_tools
Post #2902 1.38K
tuicr — просмотрщик диффов для терминала, где можно оставлять построчные замечания, как в интерфейсе пул-реквеста, и одной командой отправить их ревью в GitHub, GitLab или Bitbucket. Управление вимовское, работает поверх git, jj и Mercurial.

🔘 Смотреть можно незакоммиченные правки, диапазон коммитов или чужой пул-реквест. Дифф идёт сплошным потоком по всем файлам, как на вебе.

🔘 Отметки «файл просмотрен» сохраняются между запусками, так что большое ревью можно бросить и вернуться. Клавиша H прячет уже отмеченное.

🔘 20 августа вышла версия 0.23.1, двумя днями раньше — 0.23.0 с командой :summary.

git diff универсальнее и не требует авторизации, но построчных замечаний и памяти о прогрессе у него нет. gh pr review выставляет официальный статус ревью, чего локальный просмотр не умеет, зато инлайн-комментарии через него не оставить. Для отправки tuicr нужны авторизованные gh, glab или bkt; у Bitbucket пока нет Request changes и черновиков. Звёзд на GitHub 2820 на 21 августа.

@prog_tools
Post #2901 1.33K
Есть у нас один знакомый разработчик, который давно не отдыхал.

Последний отпуск — где-то в районе позапрошлого года. Чемодан на антресолях, паспорт неизвестно где, в комнате — бардак.

Сам он не соберётся, нужна ваша помощь → https://tprg.ru/0Q5k
  • 👍 1
Post #2900 1.37K
bottom, в командной строке btm, — системный монитор для терминала: процессор, память, swap, сеть, диски, температуры, батарея и дерево процессов графиками на одном экране. 13 августа вышла версия 0.14.8, у проекта 13,9 тыс. звёзд на 17 августа.

🔘 релиз небольшой: починены закрытие меню сортировки по Enter, обработка значения swap в cgroups v1 и ссылки в JSON-схеме конфига;
🔘 графики масштабируются по времени, есть фильтры процессов, темы и собственные раскладки виджетов;
🔘 одна и та же сборка работает на Linux, macOS и Windows.

Альтернатива — htop: он есть в каждом дистрибутиве, проще и понятнее с первого взгляда, и для задачи «найти и убить процесс» его хватает. bottom берёт графиками во времени и тем, что показывает всё сразу, включая сеть и температуры; из той же ниши btop с более нарядным интерфейсом.

@prog_tools
Post #2899 1.44K
Network Doctor — консольная утилита, которая отвечает на вопрос «интернет вроде есть, а сервис не работает — где именно рвётся». Одна команда netdoc github.com прогоняет цепочку интерфейс, DNS, TCP, TLS, HTTP, прокси и path MTU и пишет вердикт обычным языком: DNS упал, всё зависимое пропущено, чинить надо запись. 14 августа вышла версия 1.11.4; у репозитория 253 звезды на 17 августа, проект молодой.

🔘 netdoc host:22 проверяет путь до SSH и баннер, netdoc без цели — локальный интерфейс, выход в интернет, прокси и Wi-Fi;
🔘 --watch ловит плавающие сбои, --json и коды выхода 0/1/2 годятся для скриптов и баг-репортов;
🔘 root не нужен даже для path MTU: только непривилегированные сокеты;
🔘 Linux, macOS, Windows; ставится через Homebrew, Scoop и winget.

Альтернатива — связка ping, dig, curl -v и mtr: она есть везде и показывает больше деталей, а mtr лучше видит потери по хопам. Network Doctor выигрывает, когда нужен не набор выводов, а ответ, чья это проблема: сети, пути или сервиса.

@prog_tools
Post #2898 1.34K
Подключились по SSH к незнакомой базе, и дальше начинается археология: как называется таблица, какие в ней колонки, не снесёт ли этот UPDATE пол-базы.

pgcli — терминальный клиент PostgreSQL, который подсказывает по ходу набора запроса.

🔘 после FROM предлагает таблицы, после WHERE — колонки именно этих таблиц, учитывает псевдонимы;
🔘 подсвечивает синтаксис и печатает результат ровной таблицей;
🔘 \d, \dt, \dn, \du, \dx показывают устройство схемы, пользователей и расширения;
🔘 --warn all предупреждает перед разрушительным запросом, прежде чем выполнить;
🔘 --row-limit не даёт случайно вывалить в терминал миллион строк;
🔘 --auto-vertical-output разворачивает широкие результаты по вертикали, когда они не влезают;
🔘 \watch, \timing и \copy закрывают повторный запуск запроса, замер времени и выгрузку.

Для скриптов и полного покрытия возможностей PostgreSQL остаётся psql: он есть везде и ничего лишнего не делает. pgcli удобнее там, где вы руками разбираетесь в чужой базе.

13,3 тысячи звёзд. Язык: Python. Лицензия: BSD-3-Clause.

@prog_tools
Post #2897 1.43K
После выката надо свести три лога: веб-сервера, приложения и системный. Обычно это заканчивается связкой tail | grep | less в трёх окнах и ручным сопоставлением времени.

lnav открывает все файлы сразу, распознаёт формат каждого, распаковывает сжатые и показывает записи одной лентой по времени.

🔘 lnav app.log nginx/ syslog.gz — файлы, каталоги и архивы вперемешку, форматы определяются сами;
🔘 e и E прыгают к предыдущей и следующей ошибке, не заставляя искать глазами;
🔘 / ищет регулярным выражением, :highlight подсвечивает совпадения дальше по ленте;
🔘 ; открывает SQL по логам: записи разобраны на поля, и по ним можно считать группировки;
🔘 i рисует гистограмму сообщений по времени — сразу видно всплеск;
🔘 P разворачивает структурированный текст вроде JSON в читаемый вид;
🔘 F5 повторяет текущую операцию, включая последний SQL-запрос, когда логи доехали.

Для веб-аналитики с отчётами удобнее goaccess, для потоковой обработки в конвейере — angle-grinder. lnav сильнее именно как интерактивный просмотр разнородных логов на одной машине.

10,5 тысячи звёзд. Язык: C++. Лицензия: BSD-2-Clause.

@prog_tools
Post #2896 1.32K
Баг воспроизводится раз в сотню запусков, а под отладчиком не воспроизводится вообще.

rr записывает выполнение программы под Linux целиком, а потом проигрывает эту запись сколько угодно раз — с точностью до инструкции. Тот самый неудачный запуск можно пересматривать, ставить точки останова задним числом и двигаться по времени назад.

🔘 rr record ./program записывает выполнение вместе со всем, что программа получила извне;
🔘 rr replay открывает запись в GDB, где работают привычные команды;
🔘 reverse-cont продолжает выполнение назад — от места падения к причине;
🔘 watch -l ставит аппаратную точку наблюдения за адресом, после чего можно откатиться к предыдущей записи в него;
🔘 повторный run проигрывает тот же след заново, сохраняя расставленные точки останова;
🔘 rr pack делает след самодостаточным, чтобы передать его коллеге;
🔘 записываются деревья процессов и потоки, а режим хаоса помогает выловить редкие варианты планирования.

Ограничения честные: только Linux и только на процессорах с подходящими счётчиками производительности. Обычные GDB и LLDB переносимее, но обратной отладки не дают.

10,6 тысячи звёзд. Язык: C++. Лицензия: MIT.

@prog_tools
  • 👍 1
  • 🙊 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →