Обновить
1024K+

Open source *

Открытое программное обеспечение

749,25
Рейтинг
Сначала показывать
Порог рейтинга

Я не разработчик, но сделал Telegram-бота для Hysteria 2

Я не программист, языков не знаю, я небольшой руководитель отдела в айти, неплохо знаю серверную архитектуру. Но у меня была простая боль: недавно завел для себя и родни сервер Hysteria 2, до этого было с VLESS на сервере и устал каждый раз руками править YAML, когда нужно:

добавить или удалить пользователя, выдать доступ, проверить статус, перезапустить сервис и при этом ничего не сломать

Перерыл интернет и какое было мое удивление, когда я не нашел ничего, абсолютно, то есть единственное решение - либо лазить каждый раз на сервер либо сделать самому.

Сразу честно: делал с помощью LLM. Статью эту тоже, кстати. Панаму я приготовил. Цель статьи не выпендреж, а просто рассказать о боте, что бы его уже нормальные разработчики посмотрели переделали, может на основе его сделали адекватный продукт

Почему не SSH?

Да, можно через SSH, nano и systemctl. Но когда делаешь это регулярно — растёт шанс ошибки.

Хотелось проще: открыть Telegram, нажать пару кнопок и выдать доступ без ручного редактирования config.yaml.

Веб-панель тоже рассматривал, но бот оказался быстрее и удобнее “на ходу”.

Что умел MVP

Минимум, который был нужен:

/status — жив ли сервис /users — список пользователей add / delete / enable / disable генерация hy2:// ссылки /logs — последние логи /restart — перезапуск с подтверждением

Звучит просто. Пока не думаешь о безопасности.

Главная проблема: бот ≠ root

Первая (и плохая) идея — дать боту полный доступ: пусть сам правит YAML, дергает systemctl и читает логи.

Это почти готовый root-доступ извне.

Я сделал иначе:

Бот — это интерфейс, не исполнитель.

Бот хранит данные (SQLite) Все опасные действия делает отдельный helper на сервере Helper: генерирует YAML делает backup валидирует только потом применяет и перезапускает

В sudoers разрешены только конкретные команды helper-а, а не shell.

Безопасность (без этого смысла нет)

Сделал максимально жёстко:

deny by default доступ только по Telegram user ID (не username) админ-команды только в личке в группах — никаких опасных действий delete/apply/restart — через подтверждение audit log: кто, когда и что сделал

Бот должен быть параноидальным, а не “удобным для всех”.

Грабли, на которые я наступил

  1. Права на конфиг permission denied на /etc/hysteria/config.yaml — лечится не перезапуском, а нормальными правами.

  2. Cert/key Один неправильный путь — сервис не стартует. Плюс легко сломать доступ к privkey.pem.

  3. URI и userpass

hy2:// и hysteria2:// формат username:password спецсимволы нужно кодировать

Очень легко получить “почти рабочую” ссылку.

  1. Клиенты На iOS импорт URI иногда работает хуже, чем ручной ввод.

  2. OpenWrt + sing-box Сначала “не работает”, потом “работает, но не так”, и только после настройки DNS и роутинга — всё нормально.

Что получилось

Сейчас это нормальный админ-пульт:

управляю доступами из Telegram не трогаю YAML руками опасные действия подтверждаются и главное — нет полного root-доступа у бота

Удобство появилось без видимых дыры в безопасности.

Про LLM

Да, я использовал нейронку. Но это не “магическая кнопка”.

Без продуманной архитектуры (права, границы, apply, валидация, rollback) получилась бы просто опасная игрушка.

Что бы сделал иначе сразу делал бы helper-архитектуру добавил бы audit log с самого начала разделил бы read и write операции по правам сделал бы preflight-проверки перед apply

Что дальше

Планирую:

улучшить UX, возможно добавить лёгкую веб-панель, оставить Telegram, как быстрый пульт

Уверен, что в коде кучу дыр в безопасности, еще раз говорю, я код не знаю, мои были идеи, промты и направление, как сделать лучше на самом сервере.

P.S. Это моя первая статья, готов ко всем минусам, хейту и так далее. Единственная цель этого поста - рассказать о боте и дать его в народ

ссылка не репу https://github.com/Ramisya4ka/hysteria-bot-manager (внутри есть очень подробное Readme)

Теги:
+5
Комментарии0

Представлен сервис для автобиографии whoami.wiki (опубликован на GitHub под лицензией MIT). Работает как личная Википедия: загружаете фото, музыку и другие моменты о пользователе, а ИИ-агенты на основе предоставленных данных собирают полноценный рассказ о человеке. Проект полностью опенсорсный и работает локально.

Теги:
+4
Комментарии1

Доступные инструменты для миграции: Apache NiFi, Talend и Airbyte

Можно заплатить за коммерческие инструменты миграции и жить спокойно. Но зачем, если есть open-source? В блоге разобрали самые востребованные бесплатные решения для переноса данных: когда брать Apache NiFi, чем от него отличается Talend Open Studio и в каких задачах выигрывает Airbyte. 

Читайте полный разбор на сайте Рег.облака.

Теги:
+1
Комментарии0

lazy-tmux — быстрый и «ленивый» менеджер сессий tmux

Весь мой рабочий процесс происходит внутри сессий tmux. Долгое время я использовал tmux-resurrect + tmux-continuum. Они работали… но с нюансами. Иногда терялись все сохранённые сессии, а при множестве активных сессий всё оставалось загружено в память, в частности, запущенные nvim процессы, которые поднимаю lsp, что со временем отъедало все больше и больше ОЗУ.

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

Так родился lazy-tmux, написанный на Go. Ключевые фичи:

  • Сохраняет текущую сессию, конкретную сессию или все сессии целиком. Снимки сохраняют окна, панели, layout, команды (например, npm, docker-compose, редакторы) и опционально scrollback историю шела.

  • Ленивое восстановление: поднимается только выбранная сессия. RAM не расходуется на всё сразу.

  • Интерактивный TUI браузер с деревом сессий, окон и панелей, таблицей с активными командами, временем последнего снимка, количеством окон/панелей и статусом сессии. Поддержка fuzzy search для быстрого поиска.

  • Навигация и полное управление сессиями и окнами с клавиатуры в TUI браузере сессий.

  • Гибкая сортировка сессий и окон через флаги --session-sort и --window-sort

  • Можно заменить встроенный TUI на fzf, использую облегчённый бинарник.

  • Автосейв через фоновый демон, периодически снимающий все сессии на диск.

  • Восстановление при старте tmux для автоматизации workflow.

Проект ещё молодой, но буду рад любой помощи и идеям по улучшению: GitHub issues

За моими новостями можно следить в Telegram-канале

Теги:
+3
Комментарии0

ingress-nginx официально переведён в архив

Репозиторий

24 марта 2026 года репозиторий kubernetes/ingress-nginx переведён в архив и стал read-only.

Проект просуществовал более восьми лет, набрал 20 тысяч звёзд на GitHub и стал стандартом для HTTP-маршрутизации в Kubernetes. Теперь поддержка и разработка полностью прекращена: новых релизов, багфиксов и патчей безопасности не будет.

Причина архива: ресурс Ingress изначально был слишком ограничен. Весь расширенный функционал реализовали через vendor-специфичные аннотации, нормального RBAC не было, протоколы: только HTTP/HTTPS. Gateway API решает все эти проблемы на уровне спецификации.

Мейнтейнеры рекомендуют переходить на реализации Gateway API:

"If you are not already using ingress-nginx, you should not be deploying it as it is not being developed. Instead you should identify a Gateway API implementation and use it."

Источник

Актуальные варианты: NGINX Gateway Fabric, Cilium, Envoy Gateway, Istio, Traefik.

Теги:
+5
Комментарии1

Представлен открытый мультиплатформенный проект Snowify. Это аналог Spotify в виде музыкального плеера с кодом на JavaScript без рекламы и без регистрации. Музыка стримится с YouTube Music. Все функции Spotify на месте: списки треков, текст песен, плейлисты с рекомендациями и даже синхронизация с облаком. При этом в интерфейсе нет ничего лишнего, что отвлекало бы от музыки. Проект поддерживает кастомные плагины.

Теги:
+3
Комментарии2

Представлен открытый проект Pascal Editor — браузерный полноценный 3D‑редактор зданий без подписок. Стены, этажи, зоны, перекрытия — всё редактируется прямо в 3D. Перетаскиваете элементы, меняете форму, «разбираете» этажи по слоям. Система обновляет только то, что вы изменили, поэтому всё работает быстро даже в браузере. Всё запускается как веб-приложение и использует GPU вашего компьютера для отрисовки 3D в реальном времени.

Теги:
+1
Комментарии1

Как я писал софт для фрагментного анализа ДНК

Всем привет! Меня зовут Александр Дориф, я химик, молекулярный генетик и сисадмин-инфраструктурщик в компании WebHostMost, многие знают меня по нику Father Nurgle.

Итак, на дворе осень 2022 года, я, на тот момент аспирант, разрабатываю способы диагностики болезней экспансии коротких повторов (хорея Хантингтона, синдром ломкой Х хромосомы...) или с изменением количества локусов в геноме (инсерции/делеции, анеуплоидии). Я активно использую капиллярный электрофорез на ABI 3500 Dx и фрагментный анализ с помощью GeneMapper 5. И это стало проблемой. Компов в лабе мало, денег тоже, лицензия GeneMapper одна (а дополнительная стоит больше 10к$), комп с GeneMapper часто занят, софт сам по себе прибит к венде и БД Oracle. А сам я работаю на ноуте, устаревшем ещё в конце нулевых. Да, есть NCBI OSIRIS, но для него нужен Wine, а это лишний слой абстракции, да и интерфейс у него переусложнён на мой взгляд, Fragman не поддерживал импорт файлов с 3500, fatools не развивались и автор не отвечал на сообщения.

Так я решил писать FragalyseQt. Я изначально видел его как кроссплатформенный и свободный софт, поэтому выбрал за основу Python (для него есть много полезного типа BioPython) и Qt для интерфейса. Учитывая то, что у меня не было опыта написания десктопных приложений, несколько дней я изучал мануалы, после чего тёмным вечером 6 октября 2022 выпустил самую первую версию FragalyseQt с номером 0.1 и кодовым именем «Huntington». Это была смотрелка файлов FSA, умеющая селективно скрывать выбранные каналы флуоресценции и экспортировать данные внутреннего анализа (для ABI 3500 и SeqStudio) в CSV.

В версии 0.2 «Friedreich», добавилась возможность независимого от прибора поиска и базового анализа пиков на электрофореграммах, я познакомился со SciPy и табличными возможностями Qt.

Версия 0.3 «DiGeorge» принесла возможность правки базовой линии и тонкой настройки поиска пиков. И... Я упёрся в фундаментальную проблему: определение размера фрагментов на электрофореграммах требовало теории приблизительных вычислений, которую нам в своё время не давали, давая математику по остаточному принципу. Без сайзинга, FragalyseQt будет всего лишь смотрелкой. Я начал ботать матан. Мозги плавились, времени не хватало, к аспирантуре добавились заботы о дочке, но я учил. Здесь же случилось знакомство с реальностью: не каждая декларация «мы поддерживаем формат ABIF» значит «мы поддерживаем ПОЛНУЮ спецификацию ABIF». Также пришлось столкнуться с древними вариантами ABIF, полученными до его стандартизации. Была работа в Okteta, написание парсеров, FragalaseQt стал читать и старый ABIF, и его криминалистическое подмножество — HID.

1 сентября 2024 вышла FragalyseQt 0.4 «Jeffreys» с сайзингом пиков методами степенных сплайнов, взвешенных степенных сплайнов и МНК. README стал подробнее, стремясь к полноценному мануалу. Позже добавил локальный и глобальный методы Саузерна. Софт стал реально аналитическим, с его помощью была опубликована работа на ESHG 2025 ( https://doi.org/10.13140/RG.2.2.14637.81123 ). Потом развитие опять затянулось — задержки ЗП в начале года по 3-4 месяца не способствовали размышлениям о чём-то, кроме выживания. В сентябре я перешёл в WebHostMost и, внезапно, у меня появились адекватные задачи, время и поддержка коллег. Была переработанна структура для соответствия PEP 517, добавлен гибкий интерфейс и экспериментальная поддержка импорта сырых данных российского Нанофор-05 (формат реверсил).

20 марта 2026 вышла FragalyseQt 0.5 «Southern» с импортом панелей GeneMapper, GeneMarker и NCBI OSIRIS, фильтрацией статтеров, экспортом в CODIS XML. Для скриншота мне было скучно использовать стандартные заглушки для данных (и ясно, что невозможно взять реальные данные дел), поэтому демо сделано как опознание тел после Резни в Зоне Высадки, Исстваан 5.

FragalyseQt 0.5 - экспорт данных после применения панелей в формат CODIS XML: выбираются вкладки с данными для экспорта, назначаются роли в рамках дела (жертва, персонал, подозреваемый, предполагаемый родитель и т.д.), заполняются данные лаборатории и экспортируются. Экспортированные данные могут быть внесены в совместимую с CODIS систему (например, SmallPond).
FragalyseQt 0.5 - экспорт данных после применения панелей в формат CODIS XML: выбираются вкладки с данными для экспорта, назначаются роли в рамках дела (жертва, персонал, подозреваемый, предполагаемый родитель и т.д.), заполняются данные лаборатории и экспортируются. Экспортированные данные могут быть внесены в совместимую с CODIS систему (например, SmallPond).
Теги:
+5
Комментарии0

Представлен открытый проект Project N.O.M.A.D. — локальная база знаний для выживания с ИИ на борту:

  • работает на ИИ Ollama — личный локальный ИИ-ассистент, который подскажет, как починить генератор или оказать первую помощь, не обращаясь к внешним серверам;

  • Вся Википедия, медицинские справочники и учебники в офлайне;

  • карты и навигация любого региона планеты;

  • в теории можно развернуть полноценную станцию выживания с N.O.M.A.D. и запитать её всего от одной солнечной панели.

Теги:
+5
Комментарии5

Команда проекта ReactOS сообщила о значительном прогрессе в обеспечении совместимости с проприетарными видеодрайверами. Благодаря серии исправлений и внедрению подсистем KMDF (Kernel‑Mode Driver Framework) и WDDM (Windows Display Driver Model) удалось реализовать поддержку примерно 90% драйверов GPU для Windows XP и Windows Server 2003. До внесения изменений запуск многих фирменных драйверов либо заканчивался сбоем, либо работал нестабильно. Теперь же в свежих ночных сборках ветки 0.4.16 наблюдается устойчивая работа драйверов от различных производителей, включая Intel, NVIDIA и AMD.

Среди прочего, продемонстрирована работа ReactOS на реальном оборудовании и загрузка с установленными драйверами для видеокарт уровня Intel GMA 945, Nvidia GeForce 8800 GTS и GTX 750 Ti и AMD Radeon HD 7530G. Отдельно отмечается успешный запуск на мобильной графике, например Nvidia Quadro 1000M, где помимо 2D/3D‑ускорения также функционируют звук и сетевые подключения. В дополнительных тестах также подтверждена работа на более редких и устаревших конфигурациях, включая ноутбук с Radeon Xpress 1100, а также на высокопроизводительных видеокартах, таких как Nvidia GTX Titan X.

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

Теги:
+14
Комментарии11

Представлен открытый проект Awesome Web Scraping Tools 2026 с веб-скрейперами с API-ориентированным подходом (YouTube, Bluesky, Reddit, Google Maps).

Все инструменты бесплатны и доступны в Apify Store, включая компоненты для:

  • API-first — более 20 инструментов используют официальные API (Reddit JSON, YouTube Innertube, Wikipedia MediaWiki);

  • JSON-LD вместо CSS — для сайтов с обзорами структурированные данные более надежны;

  • бесплатных API — CoinGecko, Open-Meteo, ip-api, Frankfurter;

  • ограничения скорости запросов — встроенные задержки, никогда не нацелены на DDoS-атаки на сайты.

Теги:
0
Комментарии0

Разработчик Роман Гущин (Roman Gushchin) из команды мейнтейнеров ядра Linux в Google объявил о доступности новой ИИ-системы Sashiko для проверки кода с помощью искусственного интеллекта. Внутри Google она уже используется для выявления проблем, и теперь она доступна публично и охватывает все сообщения, отправленные в список рассылки ядра Linux. Гущин пояснил, что Sashiko смогла обнаружить около 53% ошибок на основе неотфильтрованного набора из 1000 недавних проблем ядра Linux с меткой «Исправления:».

Теги:
+3
Комментарии0

В Minecraft можно добавить свой город, район и улицу. Представлен открытый инструмент Arnis, превращающий цифровые карты в игровые блоки. Решение подтягивает данные из OpenStreetMap и воссоздаёт улицы, дома и районы прямо в Minecraft с учётом рельефа.

Теги:
+7
Комментарии0

Ближайшие события

Представлен открытый мультиплатформенный проект GitHub Store. Это GitHub в виде магазина с приложениями — скачивать, обновлять и устанавливать ПО с платформы теперь можно, как из обычного магазина приложений:

  • все приложения ставятся в один клик;

  • установленные версии ПО сами обновляются;

  • есть тренды и топы по репозиториям;

  • работает на Android, Windows, macOS и Linux.

Теги:
+6
Комментарии0

WT CDEK library v.1.3.0 - обновление PHP SDK для Joomla + CDEK.

Небольшая нативная PHP Joomla библиотека для работы с API v.2 службы доставки CDEK. Библиотека представляет собой клиент для авторизации в CDEK API по OAuth, работы с некоторыми методами API: получения ряда данных и расчета стоимости доставки. Поддерживается Joomla 4.2.7 и выше.

В пакет входят:

  • библиотека Webtolk/Cdekapi

  • системный плагин System — WT Cdek для хранения настроек и AJAX‑интеграций

  • task‑плагин Task — Update WT Cdek data для обновления локальных копий справочников CDEK по расписанию

  • web asset с официальным JavaScript‑виджетом СДЭК

👉 v.1.3.0. Что нового?

  • Полный рефакторинг библиотеки. Библиотека переработана в entity‑based API с фасадом Cdek и отдельным слоем запросов. Обратная совместимость не нарушена, поэтому версия библиотеки — 1.3.0.

  • Добавлена поддержка новых разделов API СДЭК. Добавлена поддержка новых разделов API СДЭК: webhooks, prealert, печатные формы, payment, passport, reverse, intakes и других сущностей.

  • Улучшена интеграция с Joomla. Улучшена интеграция с Joomla: installer script для layouts, новые поля Joomla Form для тарифов и обновлённые js виджета CDEK.

  • документация библиотеки. Все методы библиотеки подробно описаны, а так же текст документации собран в отдельной папке в git репозитории.

Пример запроса — запрос информации о городе.

<?php

use Webtolk\Cdekapi\Cdek;

\defined('_JEXEC') or die;

// Вариант 1: брать credentials из настроек плагина
$cdek = new Cdek();

// Вариант 2: передать credentials явно
$cdek = new Cdek(test_mode: true, client_id: 'your_client_id', client_secret: 'your_client_secret');

$result = $cdek->location()->getCities([
    'postal_code' => '410012',
    'city'        => 'Саратов',
    'size'        => 1,
]);

Результат запроса:

Array
(
    [0] => Array
        (
            [code] => 428
            [city_uuid] => 7e54a0b3-76f0-41e2-92e0-f1e600ad84fd
            [city] => Саратов
            [fias_guid] => bf465fda-7834-47d5-986b-ccdb584a85a6
            [country_code] => RU
            [country] => Россия
            [region] => Саратовская область
            [region_code] => 47
            [fias_region_guid] => df594e0e-a935-4664-9d26-0bae13f904fe
            [sub_region] => городской округ Саратов
            [longitude] => 46.034266
            [latitude] => 51.533562
            [time_zone] => Europe/Saratov
            [payment_limit] => -1
        )

)

Библиотека эта нужна для разработчиков, создающих свои расширения для интеграции Joomla и курьерской службы CDEK.

Страница расширения

GitHub расширения

Теги:
+2
Комментарии0

Больше 200 игр объединили в один лаунчер RohanKar Launcher и релизнули для различных операционных систем. Разработчик RohanKar собрал открытый лаунчер для запуска игр из своего архива. Все тайтлы можно запустить без лишних проблем, так есть моды для оптимизации, улучшения графики и дополнительных фишек. Новые релизы и обновления тайтлов автоматически подтягиваются в лаунчер.

Теги:
0
Комментарии0

Представлен открытый проект TUI Studio (Visual Terminal UI Designer), среды для визуального проектирования интерфейсов пользователя, работающих в текстовом терминале. Среда позволяет в интерактивном режиме наглядно формировать интерфейс, перетаскивая готовые блоки мышью, редактируя свойства в визуальном режиме и предпросматривая результат на лету. Сформированный макет интерфейса может быть экспортирован для использования во фреймворках Ink, BubbleTea, Blessed, Textual, OpenTUI и Tview.

Решение написано на TypeScript с использованием React, Vite, Zustand, Tailwind CSS и Lucide React. Код распространяется под лицензией MIT. Из особенностей разработки отмечается, что почти весь код TUI Studio написан ИИ‑ассистентом Claude.

В TUI Studio предоставляется более 20 готовых компонентов для формирования интерфейса (кнопки, меню, таблицы, списки, индикатор прогресса, диалоги, всплывающие подсказки и тому подобное) и поддерживается 8 тем оформления, а также светлый и тёмный режим, градиентные заливки, ASCII‑цвета и акцентные цвета. Имеется возможность отката изменений. Доступен интерфейс для создания своих компонентов. Проекты сохраняются в формате JSON.

Теги:
0
Комментарии1

 Claude Code: 3 фичи, которые стоит знать

Opus 4.6 и контекст в 1 млн токенов

Теперь включён по умолчанию. Миллион токенов — это примерно 750 000 слов или несколько крупных кодовых баз целиком. На практике это означает, что агент дольше «помнит» контекст задачи без деградации качества на длинных сеансах.

Для большинства задач разница с предыдущими лимитами несущественна. Но если вы работаете с большими монорепозиториями или длинными аналитическими сессиями — почувствуете.

Три фичи, которые стоит знать

/btw — вопросы на ходу

Агент работает час, вы не прерываете его — просто пишете /btw что такое этот класс?. Он отвечает из копии контекста, основной поток не трогает. Работает через кеш — почти бесплатно.

Почему это важно

Раньше, если в середине часового сеанса агента нужно было что-то уточнить, вы открывали новый сеанс, пересоздавали весь контекст — и платили за это токены. Теперь Claude Code создаёт одноразовый снимок текущего состояния, отвечает на ваш вопрос и удаляет снимок. Основной агент ничего не знает и продолжает работу.

/loop — цикл до условия

Запускает команду повторно, пока не выполнится условие. Например: «запускай тесты и фикси ошибки, пока все не пройдут». Без вашего участия.

Agent Teams — параллельные агенты

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

Практически: спросили «почему здесь используется этот паттерн», получили ответ, не потеряли прогресс.

Когда это реально нужно?

Агенты буквально пишут сообщения друг другу: делятся находками, оспаривают решения. Это не маркетинговая метафора — в логах видно переписку.

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

Куда это всё движется

Claude Code последовательно поглощает функциональность внешних инструментов. Сначала взял на себя управление контекстом, потом — параллелизацию. Сейчас добавляет циклическое выполнение и внутренние коммуникации между агентами.

У меня ощущение, что через год-два это будет единственный инструмент, который нужен для большинства задач разработки. Или конкуренты успеют ответить — посмотрим. А вы что думаете?

Если материал был полезен, проголосуйте пожалуйста, чтобы дать мне возможность писать полноценные гайды и статьи :)

Теги:
+3
Комментарии0

Открытый проект WebToApp позволяет превратить сайт в полноценное Android‑приложение прямо на саартфоне без ПК, Android Studio или знаний кодинга. Можно сделать приложение из обычного HTML‑сайта, React, Vue или Next.js. Также можно добавить иконку, включить блокировку рекламы и защиту приватности, тёмную тему, медиа‑инструменты и даже собственные скрипты.

Теги:
+3
Комментарии2

Сделать ИИ подотчетным? Теперь это реально

Пока статья набирает просмотры, выкатили DCL Evaluator - v1.1.0 с webhook API. Любой LLM pipeline получает криптографическое доказательство каждого решения за 3 строки кода. Tamper-evident. Offline-capable. 🔗 fronesislabs.comGitHub

Теги:
0
Комментарии0
1
23 ...