Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/katarinamolotova/smart-calc-v3.0


https://github.com/katarinamolotova/smart-calc-v3.0

Last synced: 2 days ago
JSON representation

Awesome Lists containing this project

README

        

# SmartCalc v3.0

Интерфейс написан с помощью __Javafx__, как широко известной в узких кругах платформой
для создания GUI приложений на Java.

Для создания форм использовались `.fxml` файлы. Посмотреть можно в папке `resources/forms`.
Intellij IDEA имеет встроенный Scene Builder, что упрощает разработку интерфейса.

![SceneBuilder](https://gluonhq.com/wp-content/uploads/2016/03/scene-builder-in-action.jpg)

Был использован шаблон проектирования MVVM.

BackEnd написан полностью на Java.

# Логирование

Для логирования использовалась библиотека [log4j](https://logging.apache.org/log4j/2.x/), как единственная, которая позволяла
настраивать период ротации в днях, месяцах и т.п.

Конфигурацию можно настраивать как в файле `.properies`, так и `.xml`.

Было сделано 4 разных логировщика, потому что программно поменять период ротации
у одного логировщика нельзя. Конфигурацию можно посмотреть в `resorces/log4j2.xml`.

Логи сохраняются внутри приложения в папке `logs`.

# Установщик

В качестве настройки установщиков использовалось приложения [install4j](https://www.ej-technologies.com/).
Оно позволяет собирать, как обычные архивы, так и установщики для разных операционных
систем с тонкой настройкой.

[Ссылка](https://disk.yandex.ru/d/uyuAEDPTQgISXg) на установщики для всех macos, linux и windows.

# Стили, настройки и история операций

Стили настраиваются с помощью `.css`. Файл перезаписывается программно и повторно
применяется к формам. Сохраняются стили в файл `resources/settings/settings.properties` при закрытии приложения.

История операция сохраняет с помощью xml файла `resources/history/history.xml` так же
при закрытии приложения. Для чтения и записи используется встроенная библиотека
`javax.xml.bind`