Дневник разработки №2 - OlibKey
Для того чтобы ввести вас в курс дела, расскажу предысторию. Однажды, после завершения работы над проектом Olib (о котором, возможно, я расскажу в следующих дневниках разработки), возникло желание попробовать что-то новое. Мой взгляд случайно упал на изображение, на котором представлен список возможных проектов. Мой выбор остановился на разработке менеджера паролей, сложность у него - средняя. "Отличная идея!" - подумал я и приступил к разработке.
Это произошло в начале января 2020 года. К тому моменту я уже немного овладел языком C# и платформой WPF в процессе работы над Olib. Первую версию программы я создал за три дня, которые были насыщены активной деятельностью. Изначально программа называлась Olib Password Manager, и она была довольно проста. Она могла хранить пароли, отображать дату и время создания и изменения, а также шифровать хранилище. Ниже вы можете увидеть скриншоты первых версий программы.
Я полностью переписывал код несколько раз по разным причинам. В первом случае - из-за плохо структурированного кода. Тогда я ещё недостаточно разбирался с принципами объектно-ориентированного программирования и не имел достаточного опыта работы с WPF. Во второй раз - из-за ограничения работы программы только в Windows; мне хотелось обеспечить поддержку других ОС. Именно в этот период я познакомился с AvaloniaUI - платформой пользовательского интерфейса.
Уже в версиях 3.0.0 я начал использовать NativeAOT для компиляции приложения в машинный код. Принцип работы, насколько я понимаю, заключается в том, что, начиная с функции main, NativeAOT конвертирует байт-код в машинный. Это позволяет избежать необходимости использования JIT (Just-In-Time) компилятора, который обычно компилирует байт-код C# в машинный "на лету". Кроме того, отключена сборка мусора, и не требуется установка среды выполнения .NET.
Последней версией программы стала 3.1.0. В это время у меня угас интерес к продолжению разработки этого проекта, и 26 сентября 2020 года я объявил о прекращении работы. В общей сложности над менеджером паролей я трудился 9 месяцев.
Затем, в рамках разработки проекта Regul (о котором я также расскажу в следующих записях дневника разработки), я создал менеджер паролей в виде модуля. Он сохранял те же функции, что и программа, но уже предоставлял более современный и аккуратный пользовательский интерфейс.
Разработку проекта Regul я завершил. Необходимость в менеджере паролей возникла, когда в программе Padlox я столкнулся с проблемой сохранения кодов для двухфакторной аутентификации (с тех пор я шутливо прозвал эту программу Padla). В результате, совсем бесплатно, я решил возобновить работу над следующем поколением OlibKey.
В ходе пересмотра, я полностью переосмыслил дизайн логотипа программы. В его создании будут задействованы новейшие технологии, доступные на момент написания статьи, включая:
- .NET версии 8;
- AvaloniaUI версии 11.0.4;
- Полная поддержка NativeAOT;
- Разработка для мобильных устройств (все ещё на стадии эксперимента).