pad.ws — это доска для рисования, которая одновременно является полноценной средой разработки прямо в браузере. По сути, у вас один бесконечный холст, где можно рисовать схемы, а рядом открывать терминал и редактор кода, подключённый к облачной Ubuntu‑машине.
Полгода назад эта поделка стала опенсорсной, теперь можно поднять на своём сервере.
В центре — доска на базе Excalidraw: рисуешь архитектуру, последовательности запросов, схемы баз, заметки — как в Miro. Прикол в том, что можно также кинуть на доску терминал и веб‑IDE (VS Code или Cursor), которые работают поверх облачного dev‑окружения, так что из блок‑схемы можно сразу провалиться в код и запустить его. Это удобно, когда нужно не прыгать между Miro, IDE и SSH, а держать всё в одном окне.
В репозитории есть docker‑compose с PostgreSQL для хранения досок, Redis для кеша и сессий, Keycloak для входа по OIDC и отдельным контейнером с самим pad (FastAPI + фронтенд). Лицензия MIT, основной стек — TypeScript на фронте, Python на бэкенде, так что при желании можно допилить под свои нужды.
Код в репо, демо на сайте.
@prog_tools
Полгода назад эта поделка стала опенсорсной, теперь можно поднять на своём сервере.
В центре — доска на базе Excalidraw: рисуешь архитектуру, последовательности запросов, схемы баз, заметки — как в Miro. Прикол в том, что можно также кинуть на доску терминал и веб‑IDE (VS Code или Cursor), которые работают поверх облачного dev‑окружения, так что из блок‑схемы можно сразу провалиться в код и запустить его. Это удобно, когда нужно не прыгать между Miro, IDE и SSH, а держать всё в одном окне.
В репозитории есть docker‑compose с PostgreSQL для хранения досок, Redis для кеша и сессий, Keycloak для входа по OIDC и отдельным контейнером с самим pad (FastAPI + фронтенд). Лицензия MIT, основной стек — TypeScript на фронте, Python на бэкенде, так что при желании можно допилить под свои нужды.
Код в репо, демо на сайте.
@prog_tools
🤯7🔥4
Вышла вторая версия Torrra — это TUI‑клиент, который позволяет искать и качать торренты прямо из консоли, без браузера и без отдельного GUI‑клиента. Сделан на Python, интерфейс собран на Textual, так что всё выглядит аккуратно и отзывчиво.
Можно подключаться к своим индексаторам Jackett или Prowlarr, смотреть результаты поиска и выбирать чем качать — через встроенный движок на базе libtorrent или передать внешний magnet в свой любимый клиент. Автор утверждает, что в версии v2 серьёзно ускорил UI, улучшил навигацию, прокачал поиск и работу с несколькими торрентами сразу, плюс почистил интеграцию с индексаторами и полирнул раскладку интерфейса.
Установить можно через
Поведение можно подкрутить через
Код в репо, на видео демонстрация работы.
@prog_tools
Можно подключаться к своим индексаторам Jackett или Prowlarr, смотреть результаты поиска и выбирать чем качать — через встроенный движок на базе libtorrent или передать внешний magnet в свой любимый клиент. Автор утверждает, что в версии v2 серьёзно ускорил UI, улучшил навигацию, прокачал поиск и работу с несколькими торрентами сразу, плюс почистил интеграцию с индексаторами и полирнул раскладку интерфейса.
Установить можно через
pipx install torrra, либо взять пакеты из AUR, Homebrew, докер‑образ или готовые бинарники под основные платформы. После установки минимальный сценарий такой: поднимаете Jackett или Prowlarr, запускаете torrra jackett --url http://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
👍5❤3🔥1
Два топовых проекта для безопасной передачи файлов
1️⃣ LocalSend — опенсорсный AirDrop внутри одной сети, где устройства просто находят друг друга по локальному бродкасту. Про это вы скорее всего слышали уже. А вот дальше интереснее.
3️⃣ AltSendme — свежий p2p‑AirDrop через интернет: создаёте тикет, второй человек вводит его у себя, оба клиента идут в сеть iroh, находят друг друга по этому идентификатору и устанавливают зашифрованный QUIC‑туннель напрямую, минуя любые облачные хранилища.
Чтобы всё это работало за NAT, iroh сначала пытается пробить прямое соединение (NAT hole punching), а если не получается — временно использует релей‑сервер: он просто прокидывает зашифрованный трафик, пока нельзя выйти на прямой маршрут, после чего трафик идёт уже только между пир‑клиентами. Публичные релеи держит команда iroh и даёт их по умолчанию всем желающим, но код релея открыт: есть crate iroh-relay, если хочется полностью контролировать инфраструктуру и не зависеть от чужих узлов.
@prog_tools
Чтобы всё это работало за 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
🔥7❤4
CameraLink — это минималистичная опенсорс‑приложуха, которая превращает старый Android‑смартфон (Android 12+) в IP‑камеру с обычным HTTP и MJPEG‑стримом. Оно поднимает на телефоне встроенный веб‑сервер, даёт поток по
Как пользоваться
1️⃣ Установите APK (или соберите сами), запустите, выдайте доступ к камере и foreground‑сервисам, нажмите Start Streaming — на экране появится URL вида
3️⃣ Откройте этот адрес с любого устройства в той же сети (браузер или VLC) и смотрите
3️⃣ Для удалённого доступа через интернет настройте Tailscale: приложение будет раз в N секунд пинговать указанные MagicDNS‑имена/100.64.x.x‑адреса, чтобы туннель не простаивал.
Быстрый старт из исходников:
1️⃣
3️⃣
3️⃣ На телефоне отключите оптимизацию батареи для CameraLink — тогда foreground‑сервис с wake lock будет стабильно держать камеру и сеть часами.
Дальше можно тонко настроить порт HTTP, выбор фронтальной/тыловой камеры, JPEG‑качество, FPS и список Tailscale‑пиров через константы в
@prog_tools
/stream, кадры по /snapshot и продолжает стримить даже с выключенным экраном, плюс умеет пинговать Tailscale‑пиры, чтобы телефон не засыпал для удалённого доступа.Как пользоваться
http://IP_телефона:8080./stream (видео) или /snapshot (кадры).Быстрый старт из исходников:
git clone https://github.com/onepersonhere/camera-link && cd camera-link;./gradlew assembleDebug && ./gradlew installDebug (или запуск через Android Studio);Дальше можно тонко настроить порт HTTP, выбор фронтальной/тыловой камеры, JPEG‑качество, FPS и список Tailscale‑пиров через константы в
CameraStreamingService, StreamingServer и TailscalePinger. Это готовый код для домашнего видеонаблюдения, умного дверного глазка или своей NVR‑системы без облаков и сторонних серверов.@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤2
У clox вышла новая версия 1.3 — это консольные часы и календарь, которые показывают время прямо в терминале. Инструмент рассчитан на то, что вы всё делаете в командной строке и хотите иметь под рукой аккуратное текстовое отображение времени и даты.
clox умеет показывать время в нужном часовом поясе, поддерживает ручные смещения, календарный режим и разные форматы даты. Часы рисуются псевдографикой, есть разные циферблаты, можно включать и выключать мигание, скрывать дату и пояс, переключать 12/24‑часовой формат.
Быстрый старт: устанавливаете пакет как обычный модуль Python:
Код в репо, на видео пример работы.
@prog_tools
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 — инструмент для извлечения дизайн-токенов с любого сайта с помощью одной команды
Результаты автоматически сохраняются в формате
🔘 Цвета (семантика, палитра, переменные CSS);
🔘 Типографика (шрифты, размеры, вес, исходные тексты);
🔘 Интервалы (поля/отступы);
🔘 Границы (радиус, ширина, стили, цвета);
🔘 Тени;
🔘 Компоненты (кнопки, инпуты, ссылки);
🔘 Брейкпоинты;
🔘 Значки и рамки.
#web #css
@prog_tools
Результаты автоматически сохраняются в формате
.json и содержат:#web #css
@prog_tools
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤1
Локальный инструмент для очистки 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-ключа и настройке. Или есть видео-инструкция. А дальше просто клонируем репо и
@prog_tools
Что умеет:
Под капотом 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
🔥4
Помните 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, код на гитхабе.
@prog_tools
Подаём на вход пакет из 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.noscript
Написано на Go, код на гитхабе.
@prog_tools
☃4❤2
Forwarded from Типичный программист
Летим зимовать ✈️
Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.
Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!
Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:
😎 Типичный программист
🐸 Библиотека программиста
🟢 Ostrovok! Tech
Теперь осталось нажать на кнопку участия под этим постом и вы в игре!
Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.
Всем удачи!
Участников: 27
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (4 дня)
Когда холодает, айтишники пакуют чемоданы, а мы разыгрываем ваучер на 50 000 рублей в Островке.
Поехать к морю или остаться среди снежных пейзажей — выбирайте сами!
Чтобы участвовать, нужно оставить любую реакцию под этим постом и подписаться на каналы ниже:
Теперь осталось нажать на кнопку участия под этим постом и вы в игре!
Итоги подведём 12 декабря. Победителя выберем с помощью бота. Подробнее с правилами можно ознакомиться здесь.
Всем удачи!
Участников: 27
Призовых мест: 1
Дата розыгрыша: 19:00, 12.12.2025 MSK (4 дня)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Forwarded from Типичный программист
Карты прямо в консоли заказывали?
Что только не встретишь, когда ищешь интересный контент. Вот попалась тулза, которая позволяет просматривать карты OpenStreetMap прямо в консоли. Называется она MapSCII и собрана на Node.js, для рендера использует ASCII-символы. Причём эта штука поддерживает зум, навигацию и управляется мышкой.
Я не знаю зачем это вам в реальной жизни, но выглядит необычно. Попробуйте сами по ссылке.
Что только не встретишь, когда ищешь интересный контент. Вот попалась тулза, которая позволяет просматривать карты OpenStreetMap прямо в консоли. Называется она MapSCII и собрана на Node.js, для рендера использует ASCII-символы. Причём эта штука поддерживает зум, навигацию и управляется мышкой.
Я не знаю зачем это вам в реальной жизни, но выглядит необычно. Попробуйте сами по ссылке.
✍2
ebook2audiobook — self-hosted конвертер, который берёт epub/pdf/mobi и генерирует полноценную аудиокнигу с главами, метаданными и обложкой. Под капотом несколько TTS-движков на выбор: XTTSv2, Bark, VITS, Fairseq, YourTTS, Tacotron2 .
Главные фишки:
🔘 Voice cloning — можно скормить аудиофайл с голосом (свой или чей-то) и модель будет читать этим голосом
🔘 1110+ языков — включая русский, поддержка через Fairseq
🔘 Автоматическое разбиение на главы — лучше всего работает с epub/mobi
🔘 Веб-интерфейс на Gradio — не нужно возиться с CLI
🔘 Минимальные требования — 4GB RAM, работает на CPU (медленно) или GPU (почти realtime на NVIDIA)
Как запустить:
Откроется веб-интерфейс на localhost:7860. Есть готовый Docker-образ с поддержкой GPU.
Выходные форматы: m4b (с главами), mp3, flac, wav, ogg. Проект активно развивается — 13.9k звёзд, 22 контрибьютора.
Репо на гитхабе, на видео демо.
@prog_tools
Главные фишки:
Как запустить:
git clone https://github.com/DrewThomasson/ebook2audiobook.git
cd ebook2audiobook
./ebook2audiobook.sh # Linux/Mac
# или ebook2audiobook.cmd на Windows
Откроется веб-интерфейс на localhost:7860. Есть готовый Docker-образ с поддержкой GPU.
Выходные форматы: m4b (с главами), mp3, flac, wav, ogg. Проект активно развивается — 13.9k звёзд, 22 контрибьютора.
Репо на гитхабе, на видео демо.
@prog_tools
This media is not supported in your browser
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🆒6👍3🔥2