Tatar.Cypriot

Tatar.Cypriot

Пикабушник
Дата рождения: 31 июля
158 рейтинг 0 подписчиков 0 подписок 1 пост 0 в горячем
Награды:
Пикабу 17 лет!

Завайбкодил загрузчик в несколько облаков сразу

В последнее время я, как, думаю, и многие другие все чаще слышу высказывания о том, что программисты больше не нужны и их вот уже прямо сейчас заменяют нейросети. На мой личный взгляд в этих словах есть доля смысла, но только доля. Но, чтобы не быть голословным, я решил попробовать навайбкодить какой-то проект и выложить его в паблик, чтобы им пользовались другие люди (у меня уже полно разных скриптов и утилит для личных целей, но это немного не то - они решают очень узкие задачи в строго определенном окружении и ни о какой универсальности и переносимости речи не идет).

Но вайбкодить проект ради проекта как-то не интересно - он должен выполнять какую-то полезную работу. Я периодически вижу посты, где люди жалуются на жадность почты и диска от Яндекса, а так же ищут какие-то облачные хранилища (ОХ) для своих данных. И вот я подумал - а зачем выбирать, когда можно совмещать? Собрать все популярные ОХ типа Яндекс.Диск, Google Drive, Dropbox, Amazon S3, добавить к этому WebDAV для универсальности и объединить все это в одно. Собственно, этим моя утилита и занимается - она позволяет подключить сразу несколько облачных хранилищ и заливать на них файлы из одного места. Однако, сначала давайте посмотрим на то, что уже имеется:

- Диск О: пожалуй, самая удобная и полноценная программа для обычных пользователей. Крайне рекомендую обратить на нее внимание - нормальный интерфейс (я в интерфейсы не умею вообще :)), богатый функционал. Позволяет прокинуть ОХ как простые папки в вашем проводнике и работать с облачными файлами как с локальными. Из минусов: она условно-бесплатная (но годовая подписка стоит совсем немного), и она закрытая (а учитывая что разработана компанией VK, для многих это может быть тревожным звонком)

- rclone: прямой конкурент. Делает абсолютно то же самое, что и наша тулза, при этом очень старый проект, развивающийся годами и умеющий работать с огромным количеством ОХ (я даже не знал, что столько существует). Так же она открыта и любой желающий может изучить ее исходники и убедиться, что она никуда не сливает ваши данные (что с данными делают сами облака, мы опустим :)). Из минусов - это консольная утилита. У нее есть WebGUI, но он пока экспериментальный. А это значит, что обычному пользователю с ней работать будет не очень удобно - она больше подходит для того, чтобы встроить ее в какое-то свое приложение.

- Всяческие проф. системы бэкапа и NAS, как платные, так и свободные: это уже "высшая лига" - системы, которые не просто копирую файлики, а умеют делать снимки системы, дампы баз данных, накопительные архивы... Тут правят бал серьезные программные решения от крупных контор, сюда я не лезу.

Изначально мне хотелось сделать инструмент, который бы был удобен для пользования обычным людям без каких-то глубоких технических знаний, который они бы использовали в своих личных целях. В первую очередь я подумал о веб-сервисе, так как моя основная работа связанна именно с этим. Запустить сайт, где пользователи могли бы в личном кабинете подключать свои аккаунты от внешних ОХ, а далее загружать файл один раз через браузер на мой сервер, откуда он уже в фоне без участия пользователя раскидывался бы по всем хранилищам. Это достаточно удобно - пользователь загружает файл один раз (можно прикрутить проверку хэша чтобы убедиться что файл загружен корректно) и на этом все. Но в такой модели есть одно очень уязвимое место - доверие. Не думаю, что люди охотно будут не только лить свои файлы на какой-то малопонятный сайт, да еще давать ему доступ к своим учеткам на других сервисах, где хранятся их данные. Поэтому я все-таки решил остановится на обычной прикладной утилите, которая будет запускаться локально на машине пользователя и связываться по сети только с указанными пользователям сервисами напрямую без каких-то третьих участников. Так же на всякий случай добавил опциональную возможность сверхи котрольных сумм загружаемых файлов для проверки целостности - но тут нужно быть внимательным: не все облака умеют возвращать хэш загруженного файла по API - для некоторых типа WebDAV чтобы проверить корректность загрузки файла, нужно снова его скачать, что для больших файлов сильно затратно и по траффику, и по времени. Так же на форуме rclone заметил запрос на добавление интересной фичи - отслеживание изменения файлов в какой-то папке и автоматическая их заливка в облако при обновлениях - реализовал и это. Ну и, до кучи, это будет OpenSource - если вдруг кто-то захочет детально убедиться в приватности своих данных.

С задачами и функционалом определились, теперь о реализации. Поскольку это эксперимент с вайбкодом - то я сразу заложил главное правило: не смотреть код. Не читать его, не править, не просить ИИ объяснить какие-то его фрагменты... Я тут исполняю роль не разработчика, а продакта - а вот за разработчика как раз будет ИИ. Единственное, что я себе позволил - это обсуждать с ИИ общую архитектуру приложения (что-то вроде "спрячь драйверы к разным ОХ за один общий интерфейс, используй композицию мелких интерфейсов для реализации дополнительных фич, специфичных для конкретного провайдера", "всю логику работы с конкретным провайдером инкапсулируй в его драйвере, ядро должно работать только с публичным интерфейсом и ничего не должно знать о технических деталях конкретного провайдера").

Изначально я думал реализовать такое на Go с GUI на Fyne, и даже реализовал тестовую версию, умеющую только в WebDAV - но когда запустил ее и попытался настроить и подключить свой Яндекс.Диск, то сильно приуныл от абсолютно ужасного интерфейса. Я еще некоторое время пытался заставить ИИ сделать его визуально привлекательным и удобным, но так как сам я в интерфейсы умею не очень (последнее, что помню - это как я возился с Grid Layout на Java SE для своей курсовой лет 20 назад) - то ничего вразумительного у меня не родилось. В итоге было принято решение все-таки перейти на более привычный мне веб, но локальный :) То есть переложить GUI на браузер. А это означало и крупные переделки в архитектуре приложения - оно должно стартовать локальный web-сервер на каком-нибудь свободном порту и работать через него посредством своего REST-API. В таком случае фронтом становится простая HTML-страничка, которую можно вообще хранить отдельно и наклепать кучу разных вариантов на любой вкус. Да ИИ, по моим ощущениям, с HTML-версткой справляется очень хорошо. К тому же при таком подходе появляется еще одна фича - сервер может быть не только локальный. Ее теперь можно закинуть на нормальную VPS и/или встроить в какой-то свой бэкенд (честно говоря сомневаюсь, что кто-то будет это делать, но вариант запуска в докере я все-таки предусмотрел. Правда, утилита хранит креды для доступа к вашим сервисам в системном хранилище ключей, так что придется все-таки доустановить кое-какие крупные пакеты на ваш VPS/Docker-контейнер). В общем, получилась вот такая штука: исходники опубликованы на GitHub, там же в разделе релизов можно сразу скачать готовый бинарник под вашу платформу. Поддерживается Win под amd64, Linux под arm и amd64 а так же современный Mac Os под arm64. Сборку для Mac под intel сознательно решил не делать.

Пока что самостоятельно удалось протестировать Yandex.Disk и WebDAV. Если вдруг найдете какой-то баг или захотите предложить какую-то фичу/идею - буду очень благодарен если сделаете это через issue на GitHub либо личным сообщением, если там нет учетки, так как тут я появляюсь не часто и могу пропустить какие-то комментарии. Так же пишите, какие бы еще ОХ вы хотели видеть в первую очередь - планирую их активно добавлять.

Кому интересно, скачать готовый бинарник можно на страничке релизов, документашка есть на английском и на русском. Расспростроняется под MIT лицензией - бесплатно и открыто: можете делать с кодом что хотите :) Благодарю за внимание, буду рад обратной связи

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества