Инструменты программиста
13.6K subscribers
1.55K photos
138 videos
4 files
1.82K links
Полезные инструменты для программистов — бесплатные и платные

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

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

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

Регистрация в перечне РКН: https://tprg.ru/mX0S
Download Telegram
Вышла вторая версия Torrra — это TUI‑клиент, который позволяет искать и качать торренты прямо из консоли, без браузера и без отдельного GUI‑клиента. Сделан на Python, интерфейс собран на Textual, так что всё выглядит аккуратно и отзывчиво.​

Можно подключаться к своим индексаторам Jackett или Prowlarr, смотреть результаты поиска и выбирать чем качать — через встроенный движок на базе libtorrent или передать внешний magnet в свой любимый клиент. Автор утверждает, что в версии v2 серьёзно ускорил UI, улучшил навигацию, прокачал поиск и работу с несколькими торрентами сразу, плюс почистил интеграцию с индексаторами и полирнул раскладку интерфейса.​

Установить можно через pipx install torrra, либо взять пакеты из AUR, Homebrew, докер‑образ или готовые бинарники под основные платформы. После установки минимальный сценарий такой: поднимаете Jackett или Prowlarr, запускаете torrra jackett --url https://localhost:9117 --api-key <ключ>, а дальше стрелками ходите по списку, Enter — скачать, p — пауза, r — продолжить, q — выйти.​

Поведение можно подкрутить через config.toml: задать дефолтные индексаторы, пути, какие клиенты использовать, чтобы каждый раз не вбивать одно и то же в аргументах. Проект кроссплатформенный (Linux/macOS/Windows) и живой: есть документация и регулярные релизы.

Код в репо, на видео демонстрация работы.

@prog_tools
This media is not supported in your browser
VIEW IN TELEGRAM
👍53🔥1
Два топовых проекта для безопасной передачи файлов

1️⃣LocalSend — опенсорсный AirDrop внутри одной сети, где устройства просто находят друг друга по локальному бродкасту. Про это вы скорее всего слышали уже. А вот дальше интереснее.

3️⃣AltSendme — свежий p2p‑AirDrop через интернет: создаёте тикет, второй человек вводит его у себя, оба клиента идут в сеть iroh, находят друг друга по этому идентификатору и устанавливают зашифрованный QUIC‑туннель напрямую, минуя любые облачные хранилища.​

Чтобы всё это работало за NAT, iroh сначала пытается пробить прямое соединение (NAT hole punching), а если не получается — временно использует релей‑сервер: он просто прокидывает зашифрованный трафик, пока нельзя выйти на прямой маршрут, после чего трафик идёт уже только между пир‑клиентами. Публичные релеи держит команда iroh и даёт их по умолчанию всем желающим, но код релея открыт: есть crate iroh-relay, если хочется полностью контролировать инфраструктуру и не зависеть от чужих узлов.

@prog_tools
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥74
CameraLink — это минималистичная опенсорс‑приложуха, которая превращает старый Android‑смартфон (Android 12+) в IP‑камеру с обычным HTTP и MJPEG‑стримом. Оно поднимает на телефоне встроенный веб‑сервер, даёт поток по /stream, кадры по /snapshot и продолжает стримить даже с выключенным экраном, плюс умеет пинговать Tailscale‑пиры, чтобы телефон не засыпал для удалённого доступа.​

Как пользоваться
1️⃣Установите APK (или соберите сами), запустите, выдайте доступ к камере и foreground‑сервисам, нажмите Start Streaming — на экране появится URL вида https://IP_телефона:8080.​
3️⃣Откройте этот адрес с любого устройства в той же сети (браузер или VLC) и смотрите /stream (видео) или /snapshot (кадры).​
3️⃣Для удалённого доступа через интернет настройте Tailscale: приложение будет раз в N секунд пинговать указанные MagicDNS‑имена/100.64.x.x‑адреса, чтобы туннель не простаивал.​

Быстрый старт из исходников:
1️⃣git clone https://github.com/onepersonhere/camera-link && cd camera-link;
3️⃣./gradlew assembleDebug && ./gradlew installDebug (или запуск через Android Studio);
3️⃣На телефоне отключите оптимизацию батареи для CameraLink — тогда foreground‑сервис с wake lock будет стабильно держать камеру и сеть часами.​

Дальше можно тонко настроить порт HTTP, выбор фронтальной/тыловой камеры, JPEG‑качество, FPS и список Tailscale‑пиров через константы в CameraStreamingService, StreamingServer и TailscalePinger. Это готовый код для домашнего видеонаблюдения, умного дверного глазка или своей NVR‑системы без облаков и сторонних серверов.​

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥62
У clox вышла новая версия 1.3 — это консольные часы и календарь, которые показывают время прямо в терминале. Инструмент рассчитан на то, что вы всё делаете в командной строке и хотите иметь под рукой аккуратное текстовое отображение времени и даты.​

clox умеет показывать время в нужном часовом поясе, поддерживает ручные смещения, календарный режим и разные форматы даты. Часы рисуются псевдографикой, есть разные циферблаты, можно включать и выключать мигание, скрывать дату и пояс, переключать 12/24‑часовой формат.​

Быстрый старт: устанавливаете пакет как обычный модуль Python: pip install clox==1.3. После этого достаточно запустить clox в терминале, чтобы увидеть часы, или, если удобнее, python -m clox; завершение через Ctrl+C. Дальше можно поиграться с аргументами: выбрать вариант отображения clox --face=3, указать пояс clox --timezone="Etc/GMT+7" или включить календарь clox --calendar=month.​

Код в репо, на видео пример работы.

@prog_tools
This media is not supported in your browser
VIEW IN TELEGRAM
🔥3👎1
Dembrandt — инструмент для извлечения дизайн-токенов с любого сайта с помощью одной команды

Результаты автоматически сохраняются в формате .json и содержат:

🔘Цвета (семантика, палитра, переменные CSS);
🔘Типографика (шрифты, размеры, вес, исходные тексты);
🔘Интервалы (поля/отступы);
🔘Границы (радиус, ширина, стили, цвета);
🔘Тени;
🔘Компоненты (кнопки, инпуты, ссылки);
🔘Брейкпоинты;
🔘Значки и рамки.

#web #css

@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥61
Локальный инструмент для очистки Gmail — без подписок и без отправки данных на внешние серверы. Всё происходит через Gmail API на своей машине.​

Что умеет:
🔘Bulk delete по отправителю (показывает, кто больше всего спамит)
🔘Массовая отписка от рассылок в один клик
🔘Mark as read для тысяч писем разом
🔘Фильтры по возрасту (7/30/90 дней), размеру (1/5/10 MB) и категориям (Promotions, Social, Updates)​

Под капотом FastAPI + uv, есть Docker-образ. Batch requests обрабатывают по 100 писем за один вызов API, так что даже большие ящики чистятся за минуты.​

История проекта забавная: автор — junior dev, написал первую версию за день буквально одним файлом, просто для себя. Выложил на Reddit, собрал 600+ звёзд — и теперь активно переписывает всё по-человечески, добавляет тесты и нормальную структуру. В комментариях попросили фильтр по размеру — добавил на следующий день.​

Код в репо, там же инструкция по получению API-ключа и настройке. Или есть видео-инструкция. А дальше просто клонируем репо и docker compose up -d. На видео демо.

@prog_tools
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Помните XKCD #2347 про башню зависимостей, которая держится на проекте «какого-то чувака из Небраски»? Один разработчик решил реализовать эту метафору на практике и написал StackTower — инструмент, который рисует башню из зависимостей любого пакета.​

Подаём на вход пакет из PyPI, npm или crates — получаем визуализацию, где блоки реально стоят друг на друге. Чем глубже зависимость в графе, тем она ближе к основанию. Есть два стиля рендеринга: чистый и hand-drawn в духе XKCD.​

Самое интересное — под капотом оказалась NP-hard задача. Чтобы блоки не пересекались, нужно найти правильный порядок узлов в каждом слое. Автор прошёл путь от брутфорса через PQ-деревья и барицентрическую эвристику до комбинированного алгоритма с branch-and-bound. Подсчёт пересечений рёбер свёлся к подсчёту инверсий через дерево Фенвика — O(E log V) вместо O(E²).​

Бонусом идёт «Nebraska Guy Ranking» — алгоритм находит мейнтейнеров, на которых держится вся башня. Чем глубже пакет и чем меньше у него мейнтейнеров, тем выше скор.​

Быстрый старт
go install github.com/matzehuels/stacktower@latest

# Парсим зависимости fastapi, например
stacktower parse python fastapi -o fastapi.json

# Рендерим что получилось
stacktower render fastapi.json -t tower -o fastapi.svg


Написано на Go, код на гитхабе.

@prog_tools
42
Forwarded from Типичный программист
Летим зимовать ✈️

Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.

Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!

Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:

😎 Типичный программист
🐸 Библиотека программиста
🟢 Ostrovok! Tech

Теперь осталось нажать на кнопку участия под этим постом и вы в игре!

Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.

Всем удачи!

Участников: 27
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (4 дня)
Please open Telegram to view this post
VIEW IN TELEGRAM
1