У вас есть проблемы напоминаний в MLO-Android? Ответьте: Да/Нет.

Полностью автоматическая синхронизация

Поделитесь с другими, как Вы используете MLO (шаблоны, система управления задачами и т.д.). Нашли способ настроить MLO особым образом? Расскажите! Нам интересно!
Автор темы

Rus1am89
Сообщения: 3
Зарегистрирован: мар 2020
Поблагодарили: 2 раза

Полностью автоматическая синхронизация

Сообщение Rus1am89 » 27 окт 2020, 16:27

Сделал себе утилиту powershell которая позволяет полностью автоматически синхронизировать mlo между телефоном и несколькими пк, кому либо интересна данная тема? Не раскрыл тему т.к. это требует времени и переписывания утилиты в удобный вид, а то окажется что все используют mlo cloud.

Данная утилита решает вопрос синхронизации(далее при упоминании слова имею ввиду мгновенную автоматическую синхронизацию)
двух ПК версий mlo как в домашней сети так и глобальной сети.
Простой пример мы имеем 1 копию mlo на домашнем ПК и на работе. На работе создаем, изменяем или удаляем задачу и в обычной ситуации
необходимо нажимать F9 чтобы начать синхронизацию и если есть какой то промежуточный mlo файл то и на домашнем ПК тоже надо нажимать,
при использовании утилиты нажимать либо запускать обмен не нужно совсем, т.е. изменили задачу, свернули, нажали alt+tab, изменили фокус на другую программу
или закрыли mlo синхронизация начнется сразу.
Решение заключается в следующем: в mlo есть опция Автоматически сохранять все изменения и утилита следит за изменением файла в реальном и запускает процедуру
синхронизации командой %path_to_mlo%\mlo.exe' '%path_to_file%\my todo.ml' -quicksync -console что синхронизировать прописываем в mlo разделе синхронизация.
Самое лучшее это использовать облачное хранилище, синхронизировали на работе с sync файлом(имею ввиду промежуточный файл с которым синхронизируются обе версии).
Факт изменения sync файла на домашнем пк подхватываются утилитой и запускается синхронизация. В обратную сторону это также работает. А если запускаем wifi синхронизацию
с телефона то все также корректно будет работать :) Единственное что в телефоне необходимо запускать wifi синхронизацию при запуске и после изменений,
ну и очень неудобное переключение между базами с прописыванием ip.
Это можно решить через vpn сеть и постоянно работающим домашним ПК либо включать его по необходимости через wake on lan.
Упрощенныое описание:
I Этап Рабочий ПК
II Этап Обмен файлами через облако
III Этап Домашний ПК
I<>II Синхронизация через mlo
II<>II Копирование файла mlo на другой пк через облачное хранилище
II<>III Синхронизация через mlo

Статья завершена на 35% процентов, в ближайшее время продолжу.

upd1 Добавил полное описание
Последний раз редактировалось Rus1am89 29 окт 2020, 16:12, всего редактировалось 1 раз.

refresh
Сообщения: 17
Зарегистрирован: май 2014
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Полностью автоматическая синхронизация

Сообщение refresh » 28 окт 2020, 08:43

Еще как интересно.
А разве синхронизация запускается не с телефона?

justme
Сообщения: 208
Зарегистрирован: дек 2016
Есть ответ: 1
Благодарил (а): 38 раз
Поблагодарили: 24 раза

Полностью автоматическая синхронизация

Сообщение justme » 29 окт 2020, 13:15

Rus1am89 писал(а):Источник цитаты powershell

Распишите, пожалуйста, подробно и с примерами как и что сделали

Автор темы

Rus1am89
Сообщения: 3
Зарегистрирован: мар 2020
Поблагодарили: 2 раза

Полностью автоматическая синхронизация

Сообщение Rus1am89 » 29 окт 2020, 16:21

justme писал(а):Источник цитаты Распишите, пожалуйста, подробно и с примерами как и что сделали

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

Код: Выделить всё

$PathToMonitor = "%path_to_folder%"
$DatabaseName = "my_todo"

$FileSystemWatcher = New-Object System.IO.FileSystemWatcher
$FileSystemWatcher.Path  = $PathToMonitor
$FileSystemWatcher.IncludeSubdirectories = $true

# make sure the watcher emits events
$FileSystemWatcher.EnableRaisingEvents = $true

# define the code that should execute when a file change is detected
$Action = {
    $details = $event.SourceEventArgs
    $Name = $details.Name
    $FullPath = $details.FullPath
    $OldFullPath = $details.OldFullPath
    $OldName = $details.OldName
    $ChangeType = $details.ChangeType
    $Timestamp = $event.TimeGenerated
    $text = "{0} was {1} at {2}" -f $FullPath, $ChangeType, $Timestamp
    Write-Host ""
    Write-Host $text -ForegroundColor Green
   
    # you can also execute code based on change type here
    switch ($ChangeType)
    {
        'Changed' {
         if(((Get-Date) - (gi '%path_to_folder%\my_todo.lock').LastWriteTime).totalseconds -gt 10) {
         $file = Get-Item "%path_to_folder%\my_todo.lock"
         $file.LastWriteTime = (Get-Date)
         & '%path_to_mlo%\mlo.exe' '%path_to_folder%\my todo.ml' -quicksync -console}
            
      }
        default { Write-Host $_ -ForegroundColor Red -BackgroundColor White }
    }
}

# add event handlers
$handlers = . {
    Register-ObjectEvent -InputObject $FileSystemWatcher -EventName Changed -Action $Action -SourceIdentifier FSChange
    Register-ObjectEvent -InputObject $FileSystemWatcher -EventName Created -Action $Action -SourceIdentifier FSCreate
    Register-ObjectEvent -InputObject $FileSystemWatcher -EventName Deleted -Action $Action -SourceIdentifier FSDelete
    Register-ObjectEvent -InputObject $FileSystemWatcher -EventName Renamed -Action $Action -SourceIdentifier FSRename
}

Write-Host "Watching for changes to $PathToMonitor"

try
{
    do
    {
        Wait-Event -Timeout 1
        Write-Host "." -NoNewline
       
    } while ($true)
}
finally
{
    # this gets executed when user presses CTRL+C
    # remove the event handlers
    Unregister-Event -SourceIdentifier FSChange
    Unregister-Event -SourceIdentifier FSCreate
    Unregister-Event -SourceIdentifier FSDelete
    Unregister-Event -SourceIdentifier FSRename
    # remove background jobs
    $handlers | Remove-Job
    # remove filesystemwatcher
    $FileSystemWatcher.EnableRaisingEvents = $false
    $FileSystemWatcher.Dispose()
    "Event Handler disabled."
}


Вернуться в «Обмен опытом»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей