hedgeov: (Default)
[personal profile] hedgeov
Последние несколько лет для учета расходов я использовал программу Financisto. А в середине осени ушедшего года переключился на форк под названием Flowzr. Причин переключения было две: более новый интерфейс, основанный на стандартных виджетах Андроид 4 и возможность ведения базы с нескольких устройств. Эта совместная работа с базой основана на синхронизации данных через облако flowzr.com. Как я понимаю, оно максимально использует инфраструктуру google для работы с аккаунтами и совместного доступа к данным с разных Андроид-устройств. Особенности реализации таковы, что синхронизация работает достаточно медленно и за один заход синхронизировать всю базу не удавалось даже используя домашний Wi-Fi. Через несколько дней экспериментов я обнаружил, что список счетов и журнал транзакций содержат массу дубликатов, а дерево категорий "развалилось" - потомки потеряли предков, пара категорий пропала, но появилось несколько новых пустых категорий. Ужас в общем.

К счастью у меня было включено ежедневное резервное копирование базы, так что за несколько итераций восстановления данных удалось найти полностью исправную версию базы. Теперь оставалось понять как в эту исправную версию внести последние изменения. Первая мысль была редактировать резервные копии, но оказалось что формат представления данных в них несколько неудобен для быстрой ручной правки - хотя файл и текстовый, но содержит не строки sql-запросов а эдакие "параграфы" для каждой записи каждой таблицы. Причем, поскольку все в куче, схему базы не видно и на поиск нужных записей пришлось бы потратить существенное время. В результате несложных исследований оказалось, что financisto использует Sqlite. Дальше оставалось найти файл базы в телефоне (\data\data\com.flowzr\databases\financisto.db) и удобный редактор баз для PC под управлением Windows XP. От редактора требовалось умение открывать базу, показывать схему, выполнять sql-запросы, экспортировать и импортировать записи таблиц. Попробовав несколько разных редакторов я в итоге остановился на SQLite Studio - мне в нем больше всего понравилось как он умеет экспортировать данные в набор sql-запросов и как он показывает несколько одновременно открытых баз в одном окне.

Дальше выяснилось почему синхронизация рушила базу: у каждой записи есть поле "remote_key" в котором содержится уникальный идентификатор источника этой записи, связанный с гугло-аккаунтом. В ходе моих экспериментов с синхронизацией в некоторых записях оказался довольно странный идентификатор, не похожий на аккаунт. То ли мой косяк, то ли облачный сервис был еще не достаточно отлажен. Как результат, данные всегда считались новыми и всегда добавлялись в базу. Для решения проблемы значение поля было сброшено для всех записей всех таблиц. (Кстати надо заметить, что автор системы синхронизации не стал заморачиваться с отдельной таблицей для хранения этого идентификатора, а тупо добавляет его к каждой записи. Идентификатор это довольно длинная текстовая строка, так что после полной синхронизации размер базы увеличивается примерно в 2-2,5 раза. У меня он с ~3,5 мегабайт вырос до почти 10).

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

Date: 2015-01-10 12:33 pm (UTC)
From: [identity profile] lisabeta.livejournal.com
Продолжай рассказывтаь об успехах с этим сервисом! Может мы в очередной раз продолжим ведение =)

Date: 2015-01-12 10:27 am (UTC)
From: [identity profile] arsoron.livejournal.com
У Financisto синхронизация с Flowzr идет только при наличии платной подписки. Так что нет.

Date: 2015-01-12 05:19 pm (UTC)
From: [identity profile] hedgeov.livejournal.com
Исходники синхронизатора открыты. Можно свое облачко поднять.

Date: 2015-01-12 05:20 pm (UTC)
From: [identity profile] hedgeov.livejournal.com
Вот только глючная эта синхронизация :(

Date: 2015-01-19 07:26 am (UTC)
From: [identity profile] empomonna.livejournal.com
заметает пурга белый путь,хочет в мягких снегах потонуть


http://huntingcoloradostyle.com/content/coumadin-without-prescription-usa-coumadin-without-dr-approval
;
http://huntingcoloradostyle.com/content/cordarone-buy-discount-online-usa-cordarone-shipped-cash-delivery

Profile

hedgeov: (Default)
hedgeov

April 2016

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 28th, 2017 08:43 am
Powered by Dreamwidth Studios