logo
logo

Форум Синхронизация

создать новую тему раскрыть все
Синхронизация iurum 23/04/2012 10:01 #написать ответ
Здравствуйте! Спасибо огромное за программу - пользую еще с первых версий, т.е. очень давно уже, о-очень доволен!
Хочу спросить: не планируется ли сделать синхронизацию с удаленной базой по ftp, http, а также работа с удаленной базой? Спасибо.
Синхронизация Алексей 24/04/2012 16:27 #написать ответ
Как вариант - разместить базу (файл .cash) в папке Dropbox'a, Яндекс.Диска или, если нужно шифрование и смущают первые два варианта - настроить Wuala на синхронизацию файла-базы с сервером (там 2 гега бесплатно - хватит).
и как синхронизировать? (-) а? 25/04/2012 07:06 #написать ответ
А вот так: Алексей 25/04/2012 11:03 #написать ответ
На примере Dropbox'a:
1. Размещаете файл базы "база.cash" где-нибудь в папке Dropbox'а. Дропбокс автоматом заливает новый файл в ваше личное облако.
2. Работаете через AbilityCash с базой, вносите изменения, закрываете.
3. Дропбокс (демон которого в памяти висит постоянно), видя, что файл базы изменился, автоматом подливает его в ваш аккаунт дропбокса в облаке, т.е. синхронизирует его содержимое с тем, что было до этого в облаке.
4. Допустим, включаете другой компьютер, на котором также стоит клиент дропбокса. Дропбокс, убедившись, что на сервере файл базы отличается от того, что лежит на винте, выгружает файл базы с сервера на комп. Если вы с этого компьютера работаете по этому же алгоритму и меняете что-то в базе, то после ее закрытия клиент дропбокса синхронизирует этот файл базы с сервером и на том, первом компьютере, файл базы также автоматом изменится на новую версию. Все всегда up-to-date.
 
В Wuala еще лучше:
1. Создаете в облаке Wuala папку, заливаете туда базу
2. На каждом компе, на котором есть необходимость работы с базой, создаете новую синхронизацию некоторой локальной папки (где вы хотите, чтобы лежала база) с папкой в Wuala, в которой лежит база.
3. Работаете с базой из любого места, где стоит клиент Wuala. Все изменения автоматом синхронизируются с облаком + автоматически обновляется файл базы на других компьютерах + в Wuala доступна история версий файла базы (можно не делать бэкап силами Ability Cash).
 
Однако изложенные варианты хороши только для однопользовательского режима, либо последовательного доступа (когда лезут в базу строго по очереди), но никак не параллельного (когда куча народу разом редактирует базу), потому что для облачного сервиса хранения данных последняя по времени версия файла переписывает предыдущую.
 
Тут нет никаких блокировок по записям, транзакций и прочая прочая. Если вам нужна такая синхронизация, которая бы обеспечивала корректное разруливание параллельного доступа кучи народа - это точно не к Ability Cash.
Уже долгое время пользуюсь базой в Dropbox. Meinfin 26/04/2012 11:47 #написать ответ
Совместно с супругой. Пару раз получался конфликт версий, но удавалось сохранить данные. Дропбокс может сохранить обе версии файла, а потом можно перенести данные из одного в другой.
Но в целом, с многопользовательским доступом беда и (не могу  упустить возможность сказать) очень не хватает мобильного клиента.
Конфликты участились... Meinfin 22/01/2014 16:15 #написать ответ
поэтому набросал маленький скрипт на AutoIT (скомпилированный exe можно взять тут) который проверяет не запущена ли программа на другом компьютере.
Программист из меня никудышный, поэтому могут, наверное, быть ошибки, но у меня работает, может пригодиться еще кому.
(повредить данные или повлиять на работу скрипт никак не может, ошибки могут быть только в определении запущена ли AC).
 
Для работы программу нужно положить в папку вместе AbilityCash.exe и для запуска использовать только RUN_AC.exe
Что делает программа:
1. Проверяет нет ли в каталоге с программой специального файла-семафора (Log.txt)
2.а Если Log.txt не обнаружен, то создает его и запускает AbilityCash
3.а И ждет завершения работы AbilityCash, а затем удаляет Log.txt
2.б Если Log.txt обнаружен, то предполагается что программа уже запущена и будет выведено предупреждение.
 
Код скрипта:
$Semafor = @ScriptDir & "\Log.txt"
$text = "Программа запущена на компьютере " & @ComputerName &", пользователем " & @UserName &" в "& @HOUR&":"&@MIN &" "& @MDAY&"."&@MON&"."&@YEAR
If Not FileExists($Semafor) Then
FileWrite($Semafor, $text)
RunWait(@ScriptDir & "\AbilityCash.exe")
FileDelete($Semafor)
Else
$log = FileRead($Semafor)
MsgBox(0, "Ошибка", "Запуск программы не возможен!" & @LF & $log & @LF & "Сообщите об этом системному администратору")
EndIf

 
P.S.
Если компьютеров много и запускаете программу с ярлыка, то можно AbilityCash.exe переименовать в Cash.exe и рядом положить чуть переделаный скрипт он называется AbilityCash.exe, поэтому все ярлыки будут работать и для других пользователей подмена пройдет не заметно
Спасибо огромное radonic 20/02/2016 19:11 #написать ответ
Meinfin, спасибо огромное!
Очень даже рабочий вариант, Вы мне очень помогли
blagodaru (-) spasibo 26/04/2012 16:36 #написать ответ