Файлобмен через email раньше, годах в 2000-2006, был очень популярен. Из сравнительно свежих программ есть Ygoow, позволяющая массово регистрировать почтовые ящики, загружать в них части файлов и генерировать ссылку, содержащую логин/пароль от ящиков и всю информацию, необходимую для скачивания.
Можно ещё резервные копии в Usenet хранить. Покупаешь доступ за $10 в месяц, загружаешь файлы, через 3 года покупаешь ещё раз, скачиваешь.
Если нет принципиальной необходимости в torrent то IPFS вариант наверное проще будет. Уже даже был проектик тут по теме музыки на IPFS — Pathefone
Но это лучше с кем-то кооперироваться на совместное хранение, а то сплошной паразитизм получается с соответствующей проблемой — уйдут сиды и ваша коллекция «посыпется»
У меня в туду именно такая задача и лежит — распределенная файловая система на основе уже существующих торрентов. Типа все описано в обычном YAML файле — сначала используемые торренты, а потом какие файлы из них по каким путям лежат. Сломался на том, что сходу не нашел удачной торрент библиотеки, которая умеет частичную закачку делать. Хотел так свою подборку музыки хранить.
Всё описанное является довольно типичной попыткой без раздумья скопипастить в воркфлоу на Go «лучшие практики» из asp.net. В той или иной степени это весьма распространённый синдром новичка (я не имею ввиду отравляющий газ), и лечится практикой в течении 2-3 месяцев продуктивного кодирования.
Слушайте, худшее, что можно написать на Go, это MVC фреймворк. В Go уже есть 2 фреймворка — gRPC и go-swagger. Там решены большинство задач, типичных для Go приложения, которые следует решать с помощью фреймворков. Например, декларативное описание сервисов в части маршрутизации, валидации моделей апи и авторизации. У Вас этого нет. А вот мельница, с которой Вы воюете, гоферов не интересует от слова вообще — утверждаю это на примере фреймвоков buffalo и beego, которые в сообществе неофициально признаны полным говном.
туда же:
1) добавить go.mod
2) добавить абстракцию для обработки запросов http (может я хочу работать с fasthttp)
3) добавить абстракцию для обработки sql (может я не хочу pq, а хочу тот же sqlite3, mysql, оракл (ну вдруг я извращенец)).
4) реализация кэша очень замудренная, советую посмотреть готовые in-app пакеты, коих на гитхабе несколько популярных для go. Текущий кэш крайне опасен для памяти.
5) опять же абстракцию и для кэша не мешало бы, у вас там мелькает редис, но есть и другие, а логика плюс минус та же.
6) код явно не проверялся на race, а их там будет. Используется много мапов, но только в кэше есть mutex (код кэша явно откуда то взят, либо гайды либо либы другие).
7) GetAPIResult — там есть рефлект, довольно тяжелая вещь, если она вызывается на каждый запрос — то зря. Нагрузку данная реализация не выдержит.
8) логирование — жутко страшное (я про реализацию), плюс еще и в файлы… никакой настройки снаружи…
это то, что просится прям сразу сходу при первом взгляде. Особо не смотрел, возможно там еще есть где кривости.
Архитектура ну совсем так себе. Вы своим пакетом заставляете людей использовать ini файлы для конфигурации… один вопрос — зачем??? (хотел написать иначе, но не хочу показаться грубым)
Зачем делать так:
mggo.Run(rout, "./config.ini")
Когда можно сделать:
mggo.Run(rout, params)
Где params какая-то публичная структура из пакета mggo.
Как задумка — интересная, но реализация — жуть… все прибито гвоздями, и хттп хендлеры, и sql (pg), и кэш безразмерный с очень специфической реализацией…
Зашёл проверить в кабинет, что там. Запустил логгер в ublock, а вредонос оказывается уже был забанен.
Что сообщил uBlock
Фильтр /ruxitagentjs_
Список фильтров EasyPrivacy
Контекст lk.rt.ru
Сторона(1) rt.ru ⇒ rt.ru
Тип script
URL hxxps://lk.rt.ru/ruxitagentjs_ICA2SVfhqrux_10169190521113456.js
Поверхностный поиск по слову «ruxitagentjs» выдаёт ссылки на datamining и статистику. Вероятно, это стандартная навесная приблуда, используемая много где. Не зря она в правиле по ключевому слову без контекста в EasyPrivacy прописана. Расходимся.
В том-то и дело, что по ночам такая скорость — вполне себе норма. Что делал?.. Ну, поворачивал корпус в сторону вышки, ориентируясь на cqi :)
Потому прибором и доволен — из коробки радует. И поддержу товарища DaemonGloom по поводу пое: один провод для такого устройства — это вин.
Это вы в терминале запустили? А как бедному новичку сделать так, чтобы эти вебхуки постоянно висели запущенными, в т.ч. перезапускались, когда вы перезагружаете сервер?
Настройка Git (Digital Ocean Droplet)
Причем тут DO вообще? Кроме постоянного упоминания баззворда.
Не делайте deploy.sh исполняемым файлом.
Добавили бы объяснение, почему.
Для более современных сервисов, которые деплоятся чуть интереснее, чем просто «git pull && apply-migrations» было бы неплохо добавить пример, например, с перезапуском докер контейнера.
Зачем вы с помощью прямого обращения к таблицам делаете то, что прекрасно делает
\Magento\Catalog\Model\Product\Gallery\CreateHandler
за один вызов execute()?
Хотя дочитал — вы думаете так быстрее, но я не понимаю почему это работает у вас так медленно, у меня 100 продуктов (по несколько фото у каждого) импортируются за пару секунд — не дольше.
Вы пробовали отключать cron job magento, чтобы одновременно с импортом не шла индексация?
У меня главный вопрос был ML или что-то ещё. С ML облом вышел потому что долго расти придется с низких зарплат.
Но в вашем случае ML в медицинском стартапе выглядит вполне возможным. Пару лет назад в Сколково стартап Cobrain был готов брать с теоретическими знаниями в ML на 150-180тр. На собеседовании спрашивали про разные деревья и надо было написать код обучения модели и генерации текста, используя цепь Маркова.
У вас же должны уже быть отличные навыки обработки и визуализации данных.
Пройти курс ODS и начать кататься по собеседованиям? Или вообще открывать ИП и находить удаленную работу на зарубежного заказчика. У них ML вообще у всех горит.
В 29 лет сменил основной язык на go с php, чтобы меньше времени тратить на изучение новых фич каждый год и больше времени посвятить поиску новых областей для работы.
Прошел пачку курсов по ML, затем потрясающий Open Data Science. Попробовал себя в ML и python. Добавил умений по обработке и визуализации данных. В ML решил не уходить, но research определенно зацепил.
В итоге 2 года назад ушел в распределенные системы и криптографию. Основной язык всё ещё go, что позволило много времени уделять непосредственно новым областям, где высокий порог вхождения.
В research, мне кажется, возраст вообще народ не замечает.
Мой вариант youtu.be/nOgsU1K7hCo, тема не батарейная, но так же легко интегрировать в MajorDomo из + может работать автономно, больше каналов, все данные доступны с телефона, планшета, ПК.
Довольно просто, развожу немного флюс геля, немного паяльной пасты, ставлю датчик, зажимаю обратным пинцетом, другим пинцетом подправляю позицию, включаю фен, как разогреется быстро круговыми движениями греем, примерно около 5 сек. всё
Связать с duplicati, и будет конфетка.
Можно ещё резервные копии в Usenet хранить. Покупаешь доступ за $10 в месяц, загружаешь файлы, через 3 года покупаешь ещё раз, скачиваешь.
Лучше сразу в π https://github.com/philipl/pifs
Но это лучше с кем-то кооперироваться на совместное хранение, а то сплошной паразитизм получается с соответствующей проблемой — уйдут сиды и ваша коллекция «посыпется»
Syncthing т.е. изобретаете? Или BtSync?
Слушайте, худшее, что можно написать на Go, это MVC фреймворк. В Go уже есть 2 фреймворка — gRPC и go-swagger. Там решены большинство задач, типичных для Go приложения, которые следует решать с помощью фреймворков. Например, декларативное описание сервисов в части маршрутизации, валидации моделей апи и авторизации. У Вас этого нет. А вот мельница, с которой Вы воюете, гоферов не интересует от слова вообще — утверждаю это на примере фреймвоков buffalo и beego, которые в сообществе неофициально признаны полным говном.
1) добавить go.mod
2) добавить абстракцию для обработки запросов http (может я хочу работать с fasthttp)
3) добавить абстракцию для обработки sql (может я не хочу pq, а хочу тот же sqlite3, mysql, оракл (ну вдруг я извращенец)).
4) реализация кэша очень замудренная, советую посмотреть готовые in-app пакеты, коих на гитхабе несколько популярных для go. Текущий кэш крайне опасен для памяти.
5) опять же абстракцию и для кэша не мешало бы, у вас там мелькает редис, но есть и другие, а логика плюс минус та же.
6) код явно не проверялся на race, а их там будет. Используется много мапов, но только в кэше есть mutex (код кэша явно откуда то взят, либо гайды либо либы другие).
7) GetAPIResult — там есть рефлект, довольно тяжелая вещь, если она вызывается на каждый запрос — то зря. Нагрузку данная реализация не выдержит.
8) логирование — жутко страшное (я про реализацию), плюс еще и в файлы… никакой настройки снаружи…
это то, что просится прям сразу сходу при первом взгляде. Особо не смотрел, возможно там еще есть где кривости.
Зачем делать так:
Когда можно сделать:
Где params какая-то публичная структура из пакета mggo.
Как задумка — интересная, но реализация — жуть… все прибито гвоздями, и хттп хендлеры, и sql (pg), и кэш безразмерный с очень специфической реализацией…
Список фильтров EasyPrivacy
Контекст lk.rt.ru
Сторона(1) rt.ru ⇒ rt.ru
Тип script
URL hxxps://lk.rt.ru/ruxitagentjs_ICA2SVfhqrux_10169190521113456.js
Поверхностный поиск по слову «ruxitagentjs» выдаёт ссылки на datamining и статистику. Вероятно, это стандартная навесная приблуда, используемая много где. Не зря она в правиле по ключевому слову без контекста в EasyPrivacy прописана.
Расходимся.Потому прибором и доволен — из коробки радует. И поддержу товарища DaemonGloom по поводу пое: один провод для такого устройства — это вин.
go тем и отличается от остальных, что для деплоя обычно хватает scp на бинарник. Не нужно, в общем, ставить go на сервер. Просто wget https://github.com/adnanh/webhook/releases/download/2.6.9/webhook-linux-386.tar.gz (ссылка со страницы releases) и распаковать.
… ну, вы поняли?
Это вы в терминале запустили? А как бедному новичку сделать так, чтобы эти вебхуки постоянно висели запущенными, в т.ч. перезапускались, когда вы перезагружаете сервер?
Причем тут DO вообще? Кроме постоянного упоминания баззворда.
Добавили бы объяснение, почему.
Для более современных сервисов, которые деплоятся чуть интереснее, чем просто «git pull && apply-migrations» было бы неплохо добавить пример, например, с перезапуском докер контейнера.
\Magento\Catalog\Model\Product\Gallery\CreateHandler
за один вызов execute()?
Хотя дочитал — вы думаете так быстрее, но я не понимаю почему это работает у вас так медленно, у меня 100 продуктов (по несколько фото у каждого) импортируются за пару секунд — не дольше.
Вы пробовали отключать cron job magento, чтобы одновременно с импортом не шла индексация?
У меня главный вопрос был ML или что-то ещё. С ML облом вышел потому что долго расти придется с низких зарплат.
Но в вашем случае ML в медицинском стартапе выглядит вполне возможным. Пару лет назад в Сколково стартап Cobrain был готов брать с теоретическими знаниями в ML на 150-180тр. На собеседовании спрашивали про разные деревья и надо было написать код обучения модели и генерации текста, используя цепь Маркова.
У вас же должны уже быть отличные навыки обработки и визуализации данных.
Пройти курс ODS и начать кататься по собеседованиям? Или вообще открывать ИП и находить удаленную работу на зарубежного заказчика. У них ML вообще у всех горит.
В 29 лет сменил основной язык на go с php, чтобы меньше времени тратить на изучение новых фич каждый год и больше времени посвятить поиску новых областей для работы.
Прошел пачку курсов по ML, затем потрясающий Open Data Science. Попробовал себя в ML и python. Добавил умений по обработке и визуализации данных. В ML решил не уходить, но research определенно зацепил.
В итоге 2 года назад ушел в распределенные системы и криптографию. Основной язык всё ещё go, что позволило много времени уделять непосредственно новым областям, где высокий порог вхождения.
В research, мне кажется, возраст вообще народ не замечает.