понедельник, 22 апреля 2019 г.

Обновление MoneyTrackerServer

MoneyTrackerServer - небольшое приложение на Java, работающее одинаково надежно на Windows (тестировалось на Windows 7), Linux (тестировалось на Ubuntu 18.04 и, после переделки, на 19.04) и MacOS (изначально разработка шла в данной операционной системе). Предназначено для резервного копирования и восстановления базы данных моего личного финансового менеджера под Android.
Сегодня после обновления Ubuntu с версии 18.04 до 19.04 пропала библиотека JavaFx. Ну как пропала? Она есть, но в репозиториях нестыковка между доступным OpenJDK и OpenJfx, и заставить работать их совместно в разумное время у меня не получилось. Возможно, решение появится позже, когда с проблемой столкнётся больше разработчиков.
В итоге я решил перейти с JavaFx на Swing, которая работает "из коробки".
Сама переделка простая, отличия в библиотеках не сильно существенные. Наиболее тяжелая часть касается позиционировния полей и кнопок в окнах, в нем библиотеки различаются.
На снимке показан внешний вид окна MoneyTrackerServer в текущей реализации. Субъективно кажется, что в старой версии на основе JavaFx более аккуратный внешний вид. Возможно, причина в других шрифтах.
Исходный код сервера доступен у меня в GitHub по ссылке https://github.com/rgeta/MoneyTrackerServer.

вторник, 9 октября 2018 г.

Обновление Irregular Verbs 1.4

По требованию Google необходимо было изменить целевой SDK для приложения. Насколько я понимаю, если это условие не выполнить, приложение будет недоступно в Play Market с ноября месяца.
Пока вносил исправление в настройки приложения, решил переписать его под концепцию MVP (Model - View - Presenter), теперь в нем вместо одного класса стало 6, но зато в них все просто и понятно.
Кроме того, добавил озвучку глаголов при нажатии кнопки "Help".
Чтобы данная "фича" работала, голосовой движок для английского должен быть доступен в настройках Android (британский или США). Мне показалось, что британская версия более качественная, но это не точно.
Размер установочного файла получился по современным меркам совсем миниатюрный - 60 кбайт.

среда, 30 мая 2018 г.

Обновление MoneyTracker 1.31

В этом обновлении проведено не слишком заметное, но сложное чисто технически улучшение, касающееся экрана проводок.
В предыдущей версии экран проводок выглядел, как на скриншоте:
Давно хотел вынести повторяющуюся на каждой записи дату в отдельную общую строку - заголовок, объединяющий сразу несколько записей. Забегая вперед, в текущей версии экран проводок будет выглядеть вот так:
Чтобы добиться такого эффекта, пришлось пойти на усложнение запроса к базе данных, т. к. в моем понимании норма, когда одна запись в RecyclerView соответствует одной записи в предоставляющем данные Cursor'е (либо придется делать очень хитрый адаптер), а тот, в свою очередь, подгружает данные из базы. Ушло три вечера, чтобы написать корректный запрос, учитывающий изменение сортировки в зависимости от примененного фильтра.
К сожалению, в итоге осталась незамеченной поломавшаяся функция расчета общего количества и суммы отфильтрованных проводок, и теперь при любом фильтре внизу красуется 0,00. Но это временно до следующего обновления.

пятница, 24 ноября 2017 г.

Проблема в обновлении MoneyTracker 1.27

Вот такая "красота" наблюдается в старых версиях Android после вчерашнего обновления.
Проблема в том, что рисованный объект, к коим относится и рамка, если у него не указан цвет заливки, на старых версиях Android заливается черным! На последних версиях, как и ожидалось, объект будет прозрачным.
Чтобы устранить дефект, пришлось спешно выпустить обновление 1.28, в котором рамка принудительно заливается белым. Обновление уже доступно.

Обновление MoneyTracker 1.27

В одном из прошлых релизов Money Tracker была добавлена возможность в расход / доход вносить сумму в двух валютах. С необходимостью этого сталкиваешься, когда используешь банковскую карточку, например, из Казахстана (с валютой в тенге, это важно) в России, покупая за рубли. С карты все, разумеется, списывается в тенге, но при этом происходит конвертация из рублей в тенге (по курсу используемой системы, при этом точное значение суммы списания известно не сразу, а обычно через три банковских дня). Ранее расход в рублях было вносить просто некуда.
Новая функция "сломала" поведение экрана ввода расхода / дохода, сделав полем по-умолчанию поле с суммой, но это неудобно, в текущем релизе полем по-умолчанию при добавлении расхода / дохода вновь стало поле с описанием. При редактировании существующего дохода / расхода полем по-умолчанию, как и прежде, является поле с суммой (ведь обычно запись редактируется в связи с уточнением суммы).
И, наконец, поля сумм, подписи к ним и поле с валютой операции взяты в рамку для удобства работы.
Жду обновления в Play Market.

вторник, 10 октября 2017 г.

Обновление Money Tracker 1.23

Пришлось "прыгнуть" через версию из-за нелепых ошибок, вызванных обфускацией приложения перед публикацией. Цель обфускации в моем случае - уменьшение размеров установочного файла и удаление неиспользуемых методов, ресурсов и т. п. Как оказалось, приложение нужно тщательно тестировать после каждого применения обфускации, иначе то одно в нем перстает работать, то другое.
Я настроил Android Studio таким образом, чтобы обфускации подвергался не только релиз, но и отладочная версия, чтобы уже на этапе отладки получить полный комплект ошибок и устранить причину до выпуска ошибочного релиза (поиск причин ошибок и донастройка правил обфускации - отдельная полная страданий процедура).
Как бы то ни было, данный релиз - один из самых масштабных, и решение о его выпуске далось непросто, т. к. полностью переделан внешний вид Money Tracker. Это так называемый Material Design со своими достоинствами и недостатками.
Основное меню теперь спрятано в выдвижной боковой панели.
Работать с курсами валют теперь удобнее.

понедельник, 1 мая 2017 г.

Обновление Money Tracker 1.21

Для меня это очень важный релиз Money Tracker, потому что в нем наконец-то реализована настоящая синхронизация данных между устройствами. К сожалению, пока синхронизируются только проводки (доходы, расходы, переносы средств между счетами), а счет (счета), контрагентов, валюты и категории нужно обязательно привести в соответствие. Это очень важно! Причем не просто названия, а и внутренние идентификаторы тоже. Сложность в том, что без ручной правки JSON-файлов или без перетаскивания файлов из папки в папку этого пока что не сделать. Есть, чем заняться при подготовке следующего обновления.
Самый интересный момент в синхронизации - синхронизация проводок, относящихся к переносу со счета на счет. Эти проводки - парные (одна является расходом для одного счета, другая - доходом для другого), обе ссылаются друг на друга. Поскольку при синхронизации изменяются идентификаторы соответствующих строк в таблице, ссылки друг на друга становятся недействительными, и их приходится заменять в конце процесса синхронизации.
Еще один скользкий момент, для синхронизации нужно выбрать идентификатор устройства, если оно уже участвовало в синхронизации, либо ввести вручную. Но если ввести идентификатор "от балды", то в процессе синхронизации сервер "виснет", поскольку такая ситуация в нем не обрабатывается. Надо подправить и код сервера, благо у меня он выложен на GitHub.
Проводки, загруженные с другого устройства, отображаются светло-серым в списке проводок.