DeSoft.ru
236 subscribers
116 photos
10 videos
1 file
213 links
Авторский канал: ИТ, разработка, безопасность, администрирование.

Сайт: desoft.ru
Автор: @y_demin
Download Telegram
Расскажу про реализованный исследовательский проект в области видеоаналитики, в рамках которого удалось собрать жизнеспособный прототип и найти ему практическое применение в индустрии спорта.

⚽️ Задача заключалась в разработке автоматизированной системы оценки качества исполнения каких-либо спортивных упражнений, элементов, снарядов. Для примера были взяты стандартные положения в футболе, а именно штрафные удары и пенальти.

🔎 Схема работы

🔹 На вход системы подаются короткие видео фрагменты эталонного и анализируемых записей ударов футболистов.

🔹 ML модуль обрабатывает кадры видео и производит:

✔️ Детекцию мяча
✔️ Определение момента удара
✔️ Построение скелета игрока

🔹 Для каждого из направлений работы ML модуля готовились соответствующие модели на базе yolo. Отдельное внимание уделялось комбинированному скелетному генератору (совместная работа нескольких моделей из раздела pose estimation), т.к. от точности формирования скелета зависит дальнейшая работа комплекса в целом.

🔹 Зафиксировав кадр момента удара и получив с него скелет с более чем 20 контрольными точкам, модуль оценки производит расчет пространственных характеристик (положение тела и его частей).

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

🙎‍♂️ Для кого

Инструмент будет полезен игрокам, тренерам, аналитическим платформам, автоматизированным тренировочным комплексам.

⚡️ Перспективные направления

Футбол, баскетбол, гимнастика, боевые единоборства, теннис, тяжелая атлетика, пауэрлифтинг.

💡 Что дальше

▪️ Специализация под конкретный вид спорта с учетом особенностей и требований.
▪️ Расширение набора метрик оценки.
▪️ Клиентский сервис.
▪️ Модули внешней интеграции для расширения функциональности уже существующих систем.

💻 Участники проекта

💥 Демин Юрий - Backend, ML
💥 Рязанов Владимир - Frontend
💥 Мясников Филипп - ML
💥 Листопад Валентина - Design

#проекты
🔥7👏3
В одной из предыдущих заметок были рассмотрены вопросы организации бэкапов на restic. Здесь же приведу дальнейшие манипуляции с репозиториями, которые позволят эффективно использовать представленный инструмент (см. расширенную версию с примерами на сайте или в дзен).

🔎 Подготовка

Удобнее тестировать функциональность на локальном хранилище, поэтому подготовим новый репозиторий
restic -r ~/restic_extra/repo init


и сделаем несколько снимков с промежуточными изменениями файлов
restic -r ~/restic_extra/repo --verbose backup ~/restic_extra/data


📝 Проверка данных

🔹 Список снимков репозитория
restic -r ~/restic_extra/repo snapshots


🔹 Список файлов снимка
# для конкретного снимка
restic -r ~/restic_extra/repo ls 83d1269c

# для последнего снимка
restic -r ~/restic_extra/repo ls latest


🔹 Занимаемое дисковое пространство
# сколько места требуется для восстановления последнего снимка
restic -r ~/restic_extra/repo stats latest

# сколько места занимает снимок в хранилище
restic -r ~/restic_extra/repo stats --mode raw-data latest


🔹 Верификация данных
# проверка структуры хранилища, целостности снимков
restic -r ~/restic_extra/repo check

# расширенная проверка с включением файлов в снимках
restic -r ~/restic_extra/repo check --read-data


📌 Рекомендация разработчиков системы говорит о необходимости периодического проведения верификации данных дабы вовремя обнаружить проблемы с хранилищем и данными и предпринять меры по их устранению. Пример обнаружения и исправления поврежденного репозитория представлен в документации.

🪓 Очистка хранилища

🔹 Исключение нежелательных данных из репозитория
В результате удаления файлов с помощью команды rewrite формируется новый снимок, однако старый, где были обнаружены искомые файлы, остается в хранилище. Применим опцию --forget для автоматического удаления замененных снимков.
restic -r ~/restic_extra/repo rewrite --exclude secret.txt --forget


🔹 Удаление данных
Хоть мы и очистили хранилище от снимков с нежелательными данными, сами данные остались нетронутыми, а лишь потеряли привязку к снимкам. Для очистки от неиспользуемых более данных существует команда prune.
restic -r ~/restic_extra/repo prune


📌 Для автоматизации процесса очистки forget и prune могут быть использованы вместе.
# оставляем 2 последних снимка, остальное очищаем
restic -r ~/restic_extra/repo forget --keep-last 2 --prune

За правила очистки отвечает опция --keep-*. Все доступные варианты использования здесь.

🗂 Восстановление данных
# восстанавливаем последний снимок в каталог repo_restored
restic -r ~/restic_extra/repo restore latest --target ~/restic_extra/repo_restored

Команда restore также поддерживает различные параметры фильтрации для более детальной настройки, что подробно расписано в документации.

💡 Представленные разделы работы с бэкапами в restic показывают гибкость и глубокую проработку инструментария, что позволяет спроектировать и создать на его основе собственную систему хранения и контроля файловых резервных копий. Хоть версия программы еще не добралась до релиза, множество сценариев применения уже могут быть воплощены в реальных условиях эксплуатации.

#backup #opensource #selfhosted #tools #restic
👍5👏1
🦾 Подборка AI-ассистентов для разработчика

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

⚡️ Cline - популярный агент с широкой функциональностью. Поставляется в виде расширения для VS Code.

🔥 Roo-Code - форк Cline, "как Cline, только лучше". Представлен также в виде расширения для VS Code и Eclipse.

🔸 Continue - поддерживает работу как через внешние провайдеры AI, так и с использованием локальных моделей. Расширение для VS Code и JetBrains.

💥 Tabby - self-hosted решение. Позволяет развернуть на своем сервере приложение c web UI для управления репозиториями и совместной разработки с поддержкой AI моделей, и подключиться к нему из расширения для IDE.

🔸 Mutahunter - генератор unit тестов с возможностью встраивания в ci/cd.

🔸 Vanna - система взаимодействия с базами данных на естественном языке, генератор sql запросов.

🔸 GPT-Migrate - AI переводчик исходного кода с одного языка/фреймворка на другой.

Напишите свой опыт использования подобных помощников в комментариях. На каких языках, для каких задач применялся и на сколько хорошо справлялся тот или иной ассистент.

#tools #ai #полезное
👍2🔥2
Существует множество способов быстро передать данные с целевой машины. Одним из наиболее простых вариантов является публикация через веб сервер для открытия в браузере. Приведу несколько решений по организации доступа к локальным данным по http протоколу, как для одноразового применения, так и для постоянного целевого использования.

📌 python нынче поставляется в комплекте многих операционных систем, его базовый http сервер и применим.

▪️ Переходим в каталог с данными.
▪️ Запускаем сервер
python3 -m http.server 8000

▪️ Забираем данные через браузер.
▪️ Завершаем работу сервера.

Для разовых манипуляций более чем достаточно.

📌 Браузерный файловый менеджер File Browser
Уже куда более приятный инструмент для работы с расшаренными ресурсами прямо в веб интерфейсе.

▪️ Загрузка каталогов и файлов на / с сервера
▪️ Создание, удаление, изменение файлов и директорий
▪️ Доступ по временной ссылке
▪️ Многопользовательский доступ
▪️ Обработка событий с возможностью добавления собственных скриптов
# устанавливаем
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash

# задаем адрес и порт в настройках
filebrowser config init -a 0.0.0.0 -p 8080

# добавляем админа
filebrowser users add demo demo -perm.admin

# запускаем над каталогом с данными
filebrowser -r /home/desoft/data


📌 Схожим набором функций обладает еще одно минималистичное решение - Mikochi
Можно запустить через бинарник, поднять в docker или kubernetes.
# запускаем
docker run \
-p 8080:8080 -v /home/desoft/data:/data \
-e DATA_DIR="/data" -e USERNAME=demo \
-e PASSWORD=demo zer0tonin/mikochi:latest


📌 Богатая на возможности программа RClone
Помимо основного назначения синхронизации файлов с облачными хранилищами, утилита предоставляет функцию трансляции файловой системы через веб сервер для взаимодействия по http протоколу.
# устанавливаем
sudo -v ; curl https://rclone.org/install.sh | sudo bash

# запускаем
# --dir-cache-time - время хранения кэша записей смонтированной директории
# --poll-interval - время ожидания между опросами изменений
rclone serve http -vvv /home/desoft/data --addr 0.0.0.0:8020 --dir-cache-time 5s --poll-interval 0


▪️ Широкий выбор операционных систем, в том числе Linux, macOS, BSD, Windows
▪️ Поддержка буферизации и кэширования файлов
▪️ Подключение как локальных, так и облачных хранилищ
▪️ Поддержка запросов на чтение отдельных частей файлов
▪️ Мониторинг обращений
▪️ Гибкая настройка параметров

Полный перечень доступных конфигураций здесь.

#share #opensource #selfhosted #tools
👍6
💎 Для тех, кто хочет глубже погрузиться в работу с командной строкой Unix, найти готовые инструменты для определенных задач, поднатаскаться в написании скриптов, подобрал ряд полезных ресурсов по теме.

📚 Гайд "Искусство командной строки" - от азов до продвинутого использования.

📝 Список программ по категориям

⚖️ Современные аналоги популярных утилит

💡 Недавно познакомился с оболочкой fish-shell, осваиваю постепенно. На первый взгляд - сборник лучших практик из разных командных оболочек, уже преднастроенных.
▫️ Репозиторий проекта
▫️ Дополнительная информация

💻 Сборник эмуляторов терминала под разные системы

#terminal #unix #linux #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
Новые китайские AI модели заполонили новостные ленты, а отличительной особенностью является не только заявленная эффективность, но и доступность - поработать с ними можно бесплатно как в веб чате от разработчика, так и в мобильных приложениях.

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

💥 LM Studio

💥 LobeChat

Дополню список еще несколькими решениями, благодаря которым удастся опробовать и оценить нашумевшие DeepSeek и Qwen самостоятельно.

🔸 GPT4All

🔸 Ollama

🔸 LocalAI

#tools #ai #полезное
👍4👏1
🔥 Компания Apple на регулярной основе выпускает патчи безопасности, не обошлось без обнов и в январском выпуске. Особый интерес как у исследователей, так и рядовых пользователей вызвала исправленная уязвимость CVE-2025-24085 в компоненте CoreMedia, позволяющая вредоносным приложениям повысить привилегии в системе iOS в версиях до 17.2, а значит, потенциально, получить доступ к данным.

⚡️ Случаев эксплуатации этой уязвимости до сих пор раскрыто не было, однако, подробности опубликованы, а значит существует риск. Поскольку исправления уже выпущены, всем пользователям iPhone и iPad настоятельно рекомендуется обновиться до версии 18.3.

📚 Источники: [1], [2], [3]

#security #leaks
👍4😱1
Про бэкапы в autobase (см. полную версию на сайте).

Текущая версия autobase в ui консоли не поддерживает управление резервным копированием, поэтому настроим эту опцию через предлагаемые конфигурации.

📦 Подготавливаем s3 хранилище

🔹 Ставим MinIO s3 локально или арендуем хранилище с большим диском у облачных провайдеров.
Для поддержки https протокола подключим самоподписанный сертификат.
docker run \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-v ~/autobase/minio/data:/data \
-v ~/autobase/minio/certs:/certs \
-e "MINIO_ROOT_USER=demouser" \
-e "MINIO_ROOT_PASSWORD=demouser" \
-e "MINIO_SCHEME=https" \
-e "SSL_CERT_FILE=/certs/public.crt" \
quay.io/minio/minio server /data --console-address ":9001" /data --certs-dir /certs


🔹 Идем в веб панель на порт 9001
- Создаем bucket autobase для хранения резервных копий.
- Создаем Access Key.
- В настройках прописываем регион хранилища.

⚒️ Настраиваем и пересобираем образ automation

🔹 Клонируем ветку актуального релиза autobase
git clone --branch 2.1.0 --single-branch https://github.com/vitabaks/autobase.git


🔹 Настраиваем pgbackrest под s3
Для включения бэкапов нужно внести корректировки в конфигурацию вспомогательного образа automation, который ранее подтягивался из dockerhub уже в готовом виде.
vi ./autobase/automation/vars/main.yml


‼️ pgbackrest требует работу через https. Регион хранилища также должен быть задан.

✔️ Находим секцию pgbackrest и заменяем значения на заготовленную конфигурацию для бэкапов в MinIO S3 из документации. Не забываем внести свои значения параметров доступа к развернутому ранее MinIO.

✔️ Устанавливаем расписание бэкапов в секции pgbackrest_cron_jobs (по умолчанию еженедельные полные бэкапы).

✔️ Указываем pgbackrest как метод создания реплик patroni.

✔️ Примеры конфигураций

🔹 Собираем локальный образ automation
cd ./autobase
docker build -t automation-pgrest:latest -f ./automation/Dockerfile .


🚀 Запускаем консоль autobase

🔹 Указываем в переменной окружения консоли PG_CONSOLE_DOCKER_IMAGE собранный выше локальный образ automation и запускаем.
docker run -d --name autobase-pgrest-console \
  --publish 80:80 \
  --publish 8080:8080 \
  --env PG_CONSOLE_API_URL=http://192.168.1.135:8080/api/v1 \
  --env PG_CONSOLE_AUTHORIZATION_TOKEN=secret_token \
  --env PG_CONSOLE_DOCKER_IMAGE=automation-pgrest:latest \
  --volume console_postgres:/var/lib/postgresql \
  --volume /var/run/docker.sock:/var/run/docker.sock \
  --volume /tmp/ansible:/tmp/ansible \
  --restart=unless-stopped \
  autobase/console:latest


🔹 Создаем и разворачиваем кластер согласно инструкции из первой части.

pgbackrest устанавливается как на основной хост кластера, так и на реплики. Для проверки и отладки работы программы можно отслеживать логи по пути, указанному в конфигурационном файле main.yml собственного образа automation, { option: "log-path", value: "/var/log/pgbackrest" }.

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

#db #tools #selfhosted
👍5
🥷 Тот, кто решил не разворачивать китайские модели локально для тестирования, как я предлагал ранее, а подключиться к API DeepSeek, используя разработанные клиентские решения, имел все шансы нарваться на любезно подготовленные злоумышленниками вредоносы в репозитории PyPI.

🔎 Исследователи из Positive Technologies обнаружили замаскированные под Python-клиенты инфостилеры в пакетах deepseek и deepseekai. Сбор и отправка информации на удаленный сервер (пользователь, машина, переменные окружения) происходят после запуска консольных команд установленных пакетов.

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

#security #leaks
👍3🔥1
🔧 Очередная подборка. Полезные инструменты для монтирования удаленных каталогов, дисков, хранилищ.

⭐️ В контексте организации доступа к данным по http протоколу была представлена утилита RClone, однако основное ее назначение как раз в работе с удаленными хранилищами. Поддержка широкого набора протоколов и облачных решений делает ее приоритетным инструментом для гибкой и быстрой настройки.

🔸 SSHFS - простая и удобная программа для подключения удаленных файловых систем по SFTP.

🔸 HTTPDirFS - монтирование http каталога, как локальной директории.

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

🔥 BTFS - монтирование .torrent файлов или magnet ссылок в качестве каталогов, доступных только на чтение. Содержимое загружается по требованию, а поскольку реализовано на базе виртуальной файловой системы, то и стандартные файловые операции также работают корректно.

#tools #mount #полезное
🔥3👍2
🔥 Добавил в управление каналом первую версию бота MiniDe на aiogram - анализатор ссылок в сообщениях через VirusTotal.

Логика несложная, как и сам скрипт:
✔️ Перехват сообщений
✔️ Поиск скрытых за текстом и прямых ссылок
✔️ Отправка найденного в VirusTotal через API
✔️ Обработка и представление результата в ответном сообщении.

🔎 Как попробовать самостоятельно

🔹 Заводим аккаунт на VirusTotal. По умолчанию выдается доступ к API с ограничением на проверку 4 ссылок в минуту и 500 в день - для тестовых запусков и ненагруженного ссылками потока сообщений более чем достаточно. Забираем API_KEY.

🔹 Создаем нового бота в @BotFather. Сохраняем token.

🔹 Добавляем бота в администраторы чата, сообщения из которого хотим получать для анализа, и куда будут поступать ответы с результатами. В моем случае это чат с комментариями к этому каналу. Запоминаем имя чата.

🔹 Забираем исходники бота minide из репозитория на gitverse.
Для работы потребуется docker. Можно запустить, к примеру, локально или на VPS сервере.

🔹 Прописываем в docker-compose.yml контейнера minide полученные ранее BOT_TOKEN, VIRUSTOTAL_API_KEY и CHANNEL_NAME.

🔹 Запускаем бота
docker compose up -d


🔹 Делаем отправку тестовых сообщений с ссылками или без, смотрим на результат.

💡 Что дальше

▫️ Добавить поддержку большего числа внешних сервисов проверки.
▫️ Проверять не только ссылки, но и файлы.
▫️ Сохранять историю.

#проекты
🔥4👏1
🔎 Для расширения перечня сервисов, задействованных в проверке файлов и ссылок с помощью представленного бота, собрал ряд инструментов, предоставляющих API для взаимодействия.

🔹 Платформа от Лаборатории Касперского

🔹 Уже примененный к решению задачи VirusTotal

🔹 Triage

🔹 Hybrid Analysis

🔹 Metadefender

🔹 Intezer

🔹 FileScan

🔹 URLQuery

🔹 urlscan

В большинстве случаев требуется завести аккаунт и получить API KEY для отправки запросов.

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

#security #scan
👍3
📝 Несколько доработок для бота

Добавил простую проверку на сокращенные ссылки путем HEAD запросов и обработки статусов для забора локации редиректа.

Поправил некоторые ошибки обработки невалидных сообщений, разнес бота и сервисы проверки.

Если сервис сокращенных ссылок закрыт за CloudFlare - отправка запросов именно из docker контейнера не срабатывает. Если просто запустить на хосте - все отлично проходит. Попробовал обогатить запросы заголовками для обмана системы с помощью aiocfscrape, однако ошибка сохранилась, ловлю 403, также попробовал поиграться с сетью docker, вынести на host например, но и это не спасло. Надо отследить цепочку запросов дабы объяснить проблему.

🌐 Исходники

#проекты #changelog
👍4
Рассматривал ранее вариант построения виртуальной сети с помощью zerotier. На днях попробовал еще одно решение на эту тему - Nebula - инструмент для построения защищенных оверлейных сетей. Узлы сети устанавливают прямое vpn соединение между собой (p2p). Отличительная особенность системы - ее простота - все поставляется в комплекте, запускается посредством бинарника с раскиданными по хостам конфигурационными файлам и сертификатами, которыми подтверждается принадлежность к сети.

🗝 Ключ и сертификат сети

▪️ Забираем актуальную версию Nebula из релизов под любую систему.
▪️ Воспользуемся nebula-cert из архива для генерации ключа и сертификата для последующего выпуска сертификатов хостов сети.
./nebula-cert ca -name "DeSoft.ru"


🔖 Сертификаты хостов

▪️ Создаем и подписываем сертификаты для хостов системы
# контроллер сети и его внутрисетевой адрес
./nebula-cert sign -name "lighthouse-1" -ip "10.10.101.1/24"
# хост №1
./nebula-cert sign -name "vps-1" -ip "10.10.101.11/24" -groups "vps"
# хост №2
./nebula-cert sign -name "vps-2" -ip "10.10.101.12/24" -groups "vps"


⚙️ Конфигурационные файлы хостов

▪️ Берем конфигурационный файл из репозитория
curl -o config.yml https://raw.githubusercontent.com/slackhq/nebula/master/examples/config.yml


▪️ Готовим конфиг для контроллера сети, он же lighthouse
cp config.yml config-lighthouse.yaml


Раздел static_host_map оставляем пустым, в разделе lighthouse выставляем параметр am_lighthouse в true, а hosts также оставляем пустым.
static_host_map:
lighthouse:
am_lighthouse: true
hosts:


▪️ Готовим конфиг для хостов
cp config.yml config.yaml


В разделе static_host_map должен быть прописан внутренний и внешний адреса lighthouse сервера. По умолчанию используется udp порт 4242, не забываем оставить его открытым.
static_host_map:
"10.10.101.1": ["<vps ip>:4242"]


В разделе lighthouse в hosts прописываем внутренний адрес сервера lighthouse.
lighthouse:
am_lighthouse: false
interval: 60
hosts:
- "10.10.101.1"


❗️ Отдельно упомяну про раздел firewall, параметры которого позволяют разграничить трафик между хостами в сети. По умолчанию весь исходящий трафик открыт, а вот входящий заблокирован, кроме icmp пакетов. Также в конфиге представлен пример разграничения по группам, что добавляет гибкости в настройках взаимодействия между устройствами в сети.
firewall:
outbound:
- port: any
proto: any
host: any
inbound:
- port: any
proto: icmp
host: any
- port: 443
proto: tcp
groups:
- laptop
- home


🚀 Запускаем lighthouse

▪️ Скачиваем бинарник под систему, на которой будет располагаться lighthouse.
▪️ Переносим на сервер подготовленные ранее ca.cert, lighthouse-1.crt, lighthouse-1.key, config-lighthouse.yaml.
▪️ Поскольку в конфигурационных файлах указаны пути до рабочего каталога и файлов в нем (раздел pki), перенесем всю рабочую конфигурацию в этот каталог, соблюдая типовое наименование.
mkdir /etc/nebula
mv ca.crt /etc/nebula/ca.crt
mv lighthouse-1.crt /etc/nebula/host.crt
mv lighthouse-1.key /etc/nebula/host.key
mv config-lighthouse.yaml /etc/nebula/config.yaml

▪️ Стартуем
./nebula -config /etc/nebula/config.yaml


🚀 Запускаем host

▪️ Переносим на сервер подготовленные ранее ca.cert, vps-1.crt, vps-1.key, config.yaml.
▪️ Можно также создать каталог и перенести туда рабочую конфигурацию или внести корректировки в pki раздел config.yaml, указав собственные пути. Для единообразия оставим предложенную схему.
mkdir /etc/nebula
mv ca.crt /etc/nebula/ca.crt
mv vps-1.crt /etc/nebula/host.crt
mv vps-1.key /etc/nebula/host.key
mv config.yaml /etc/nebula/config.yaml

▪️ Стартуем
./nebula -config /etc/nebula/config.yaml

По аналогии настраиваем и запускаем nebula на втором хосте (vps-2).

🔎 Проверка

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

#vpn #nebula
👍4🔥3
📝 Changelog анализатора ссылок

Добавил поддержку нового сервиса проверки - Kaspersky Threat Intelligence Portal.

Пришлось распиливать ссылку на составные части с помощью urllib.parse.urlsplit для определения наличия path, поскольку в запросе нужно отправлять домен на один endpoint, а если это ссылка на ресурс, то на другой. Заодно добавил метод по проверка ip адреса (да, у него тоже отдельная ручка), нужно будет валидацию ссылки на ip учесть в следующей версии.

Учел обработку ошибок запросов, прикрутил корректную обработку exception к каждому сервису.

Докинул параметров в переменные окружения.

🌐 Исходники

#проекты #changelog
🔥3👍1
🔥 Наткнулся на интересный сборник ресурсов по 10 направлениям в AI. Как его характеризуют авторы - required reads для AI инженеров. Подборка и правда получилась "без воды", взял оттуда несколько занятных источников для изучения. Подойдет как практикующим специалистам, так и тем, кто только знакомится с областью.

📚 Разделы

1️⃣ Передовые языковые модели
2️⃣ Бенчмарки, тесты
3️⃣ Промпт
4️⃣ Генерация с расширенным поиском (RAG)
5️⃣ Агенты
6️⃣ Кодогенерация
7️⃣ Обработка и анализ изображений
8️⃣ Голос / речь
9️⃣ Генерация изображений / видео
🔟 Настройка / "тюннинг" моделей

🌐 Источник

#ai #полезное
🔥3