Задача: настроить робот-пылесос Xiaomi Mi Robot Vacuum Mop (SKV4093GL)
Источники
Обзор пылесос-робот Xiaomi Mi Robot Vacuum Mop SKV4093GL белый
Обсуждение Xiaomi Mi 1C / Mi Robot Vacuum-Mop / Mijia Sweeping Vacuum Cleaner 1C - робот пылесос
В настоящее время нет бесплатного сервиса с открытым исходным кодом, который позволяет синхронизировать несколько облачных хранилищ пользователя без загрузки файлов исходных хранилищ на локальный компьютер. Требуется создать сервис, выполняющий решение задачи.
Имеем множество ПарыОблаков пар вида (Источник, Приёмник). Для каждой пары из множества ПарыОблаков нужно провести процедуру синхронизации пары. Каждый Источник и Приёмник представляет собой множество - дерево из каталогов и файлов с атрибутами. Нам нужно обойти каждое дерево и оптимальным образом, за наименьшее возможное время, найти разницу между множествами. После этого нужно добавить или заменить в Приёмнике все каталоги и файлы из Источника, которых нет в Приёмнике, затем удалить на Приёмнике все файлы, которых нет в Источнике.
CloudPairs = { (Source, Receiver) }, где
file = { (path, size, date created, date modified, owner) }, где
1. Если каталога из исходного дерева нет в приёмнике - скопировать весь каталог с содержимым, не обходя поддерево в источнике.
2. Если файл в источнике и файлы приёмнике имеет одинаковый путь, но разные размер, дату создания или дату изменения - заменить файл в Приёмнике на файл из Источника.
3. Для каждого файла вычислять хэш-значение, сравнивать файлы по нему.
4. Хранить в базе данных историю обхода дерева источника и приёмника, журнал операций для создания отчётов пользователю.
1. Администратор сервиса не должен иметь технической возможности получения доступа к данным пользователя для аутентификации пользователя в облачном сервисе и/или данным в файлах пользователя.
2. Сервис должен иметь возможность использовать актуальные российские алгоритмы для шифрования и/или электронной подписи данных в облаке.
Программа находится в стадии проектирования.
Как использовать Rsync для удаленной и локальной синхронизации данных
Новый алгоритм синхронизации Яндекс.Диска: как не подавиться 900 000 файлов
Хроника событий
C 30.03.2020 сижу дома, режим самоизоляции на неделю. Смотрю на YouTube видео Игоря Рыбакова, Александра Панчина, Илью Варламова.
Материалы, источники данных.
Википедия
YouTube
Cython- это оптимизирующий статический компилятор как для языка программирования Python, так и для расширенного языка программирования Cython (на основе Pyrex). Это делает написание расширений C для Python таким же простым, как и сам Python.
Cython объединяет возможности Python и C, позволяя
Язык Cython - это надмножество языка Python, которое дополнительно поддерживает вызов функций C и объявление типов C для переменных и атрибутов классов. Это позволяет компилятору генерировать очень эффективный код C из кода Cython. Код C генерируется один раз, а затем компилируется со всеми основными компиляторами C / C ++ в CPython 2.6, 2.7 (2.4+ с Cython 0.20.x), а также в 3.3 и всех более поздних версиях. Мы регулярно запускаем интеграционные тесты для всех поддерживаемых версий CPython и их последних веток, находящихся в разработке, чтобы убедиться, что сгенерированный код остается широко совместимым и хорошо адаптированным для каждой версии. Поддержка PyPy находится в стадии разработки (с обеих сторон) и считается наиболее полезной, начиная с Cython 0.17. Здесь всегда рекомендуется последняя версия PyPy.
Все это делает Cython идеальным языком для упаковки внешних библиотек C, встраивания CPython в существующие приложения и для быстрых модулей C, которые ускоряют выполнение кода Python.
Документация
Внешние ресурсы:
Todo