Как проект поживает?
Seneca
Необходимо собраться с мыслями,
написать лицензионное соглашение,
собрать установочник
отладить это всё,
настроить систему обновлений,
забилдить,
протестировать на другом пк,
если всё ок
думать о том как это всё выпустить как можно быстрее.
Если перестану щёлкать клювом, то мб к новому году созрею.
Сегодня впервые с начала декабря занялся проектом, пообщался с нейросетью по поводу "быстрого старта", в общем выработался роуд-мап примерно следующий:
ближайшую неделю - тестирую приложение, ищу видимые баги, исправляю, полирую функционал, нового функционала сверх заявленного изначально не будет, может быть даже что-то уберу. Самое большое - необходимо написать модули:
First start:
- license agreement
- disclaimer
- tutorial
Settings:
- API_KEY
- Keyboard-Shortcuts
- Tamagochi-ColorPicker
- Customization (interface colors - skins)
- PIN\Password
Так же мне необходимо провести ревизию файлового пространства приложения и сделать следующее:
- Шифрование конечных файлов единым симметричным ключом
- Запаковку всего объема контента (шорткаты, история клипборда, настройки кнопок и так далее) - в один единственный системный файл который будет лежать в корне программы.
Без этих двух штуковин я оставляю огромную брешь в безопасности что кто-либо сможет просто поменять или выкрасть json с вашими паролями и копипастами.
Кроме этого - я добавил модельку лягушки, но она почему то в дефолтной позе, и анимаций пока не воспроизводит, плюс непонятно что с рендером освещения, поднимать его на flutter было бы задачей с двумя звёздочками. Возможно в релизной версии я просто нарисую статичный спрайт и оставлю так до лучших времён.
Так же нужно сделать перевод всех текстов приложения на английский.
В общем поделав всё это в течении ближайшей недели-полутора, после чего я публикую приложение как есть на gumroad. Задача публикации - получить хотя бы несколько первых пользователей и возможно заработать свои первые 5 долларов. Вот такой самому себе подарок к новому году.
** UPDATE ***
Доброго тебе времени, читатель.
Не так страшны первые 90% разработки как вторые 90% разработки.
Когда вы разрабатываете продукт - то на завершении каждого этапа всегда есть опция проделать небольшой пул нужной для публикации работы и выпуститься, но вместо этого по ряду причин вместо того что бы заниматься этой несомненно важной обязательной частью работы вы выбираете запилить какой-то фичер повкуснее. А когда фичеры повкуснее заканчиваются, остаётся вот эта обязательная работа, и ручки опускаются сами. Потому что оно не интересное, не вкусное, и оно есть движение к реализации, которая выглядит несколько небезопасно.
В общем где то на этом этапе я застрял и за декабрь всего один раз открыл IDE и тут же закрыл.
Просто психологическая блокировка. Даже думать о проекте было тревожно.
Но.
НО!
Сегодня мне удалось преодолеть этот блок и я наконец кое что поделал. Кое что очень важное и приближающее к релизу.
А именно.
Я запилил шифрование!
Дело в том что когда у вас где то на компьютере есть папки "clipboard_history", "ai_chat_history", и "essentials", и там просто лежат json файлы - то это огромная дыра в безопасности. Одна угроза в том что оттуда данные могут своровать, другая угроза в том что данные туда могут поместить без вашего ведома.
Для предотвращения обеих угроз я навайбкодил симметричное шифрование, теперь Clipboard, Essentials и Chat хранят свои данные в зашифрованном виде. Это была большая задача на сегодня.
Кроме этого по неизвестной причине декоративная функция которая отслеживала drag'n'drop в винде начала крашить приложение. Я не стал разбираться что там конкретно с ней не так, и просто отключил её.
Так же поскольку 3Д модель пока не работает в полной мере, я решил что в самом первом демо-релизе будет просто картинка-спрайт.
Кроме этого я временно убрал весь код связанный с нейронкой, его в первом релизе тоже не будет.
В общем медленно движемся в сторону релиза и закрываем важные таски.
На завтра у меня три задачи:
1. Сделать систему для управления локализацией приложения и запилить перевод всех текстов и кнопок на английский язык
2. Подготовить простое лицензионное соглашение.
3. Начать подготовку settings window, что бы можно было выбрать язык, настроить кнопки, запаролить приложение пинкодом и так далее.
PeeKay
> Подготовить простое лицензионное соглашение.
Научи плз, Ка это делать.
Надо ли юридически где то заверять?
paveloid1982
> Надо ли юридически где то заверять?
Да, у Нотариуса, и к каждой копии приложения автоматически присылаешь на почту распечатанный вариант под подпись, пользователь должен подписать и заказным письмом прислать обратно.
PeeKay
> paveloid1982
> > Надо ли юридически где то заверять?
> Да, у Нотариуса, и к каждой копии приложения автоматически присылаешь на почту распечатанный вариант под подпись, пользователь должен подписать и заказным письмом прислать обратно.
Я серьезно, не троллинг.
paveloid1982
> Я серьезно, не троллинг.
А если серьезно, то нейросетью пишешь лицензионное соглашение, делаешь обязательным согласие с ним для того что бы пользоваться приложением (например подписание при установке), соответственно любой кто пользуется твоим приложением де-юре согласен с твоим лицензионным соглашением. Примерно так.
PeeKay
> paveloid1982
> > Я серьезно, не троллинг.
> А если серьезно, то нейросетью пишешь лицензионное соглашение, делаешь обязательным согласие с ним для того что бы пользоваться приложением (например подписание при установке), соответственно любой кто пользуется твоим приложением де-юре согласен с твоим лицензионным соглашением. Примерно так.
спасибо.
*UPD #2*
О да, я уже чувствую как накатывает суперсила фигачить сутками.
После того как я завершил возиться с шифрованием я ещё некоторое время помедитировал, но решил что именно кодить что-то я не буду. Поговорил с нейросетью по поводу того как собрать инсталлятор и решил провести ревизию существующего материала с тем что бы выписать все текстовые поля всех интерфейсов для перевода, чем собственно и занялся.
По итогам на 6 модулей получилось всего около 80 единиц текстов. Отрадно.
Организовать я это решил самым простым способом, а именно - просто создать json с парами "ключ":"значение", соответственно каждая локализация это один такой словарь пар, где ключи везде одинаковые, а значения соответствуют языку. При выборе языка просто присваивается нужный словарь в переменную из которой и происходит автоматическое заполнение всех полей во всём приложении).
Пока выписывал все тексты из приложения ещё раз прошёлся по всему функционалу и отметил места требующие внимания, выписал себе в задачи. И радостно сообщаю что в общем то там не так много что требует полировки :3
Ещё одна задача на завтра, очень весьма важная - это сделать так что бы можно было открыть только один инстанс приложения. Потому что сейчас можно этими лягушками всё пространство экрана заполнить)) Нашествие лягух!
*UPD*
Добрый день.
Сегодня с некоторым скрипом вернулся к работе, долго буксовал на пороге первой задачи в итоге сделал следующее:
1. Сделал систему защиты от открытия нескольких копий приложения. Метод имеет одну небольшую но маловероятную уязвимость - он занимает один конкретный TCP порт. То есть логика такая - первый инстанс приложения резервирует TCP порт и отвечает на него "ЗАНЯТО!", если кто то обратится, и когда создаётся новый инстанс приложения, он обращается по этому порту, и если там "ЗАНЯТО!", то процесс схлопывается. Субпроцессы (модули) при этом игнорируются так как в аргументах присутствует тэг --subprocess который скипает эту проверку. Идеально.
2. Немного допилил класс перевода и попробовал затестить перевод на одном из модулей. В принципе - получилось. Теперь надо применить колдунство ко всем моудялм, и допилить туда смену локализации из настроек и сохранение в хранилище приложения текущей выбранной языковой настройки. После этого наклепать машинным переводом переводы на самые основные языки и в принципе это победа.
На сегодня наверное всё, пойду делать билд в Path of Exile с падающими с небес зомбарями.
*UPD*
*вместо зомбарей сделал перевод ещё одного окошка - Clipboard History. Осталось Screenshoter, Virutal Keyboard, Chat,Eaten files, settings *
PeeKay
> 1. Сделал систему защиты от открытия нескольких копий приложения.
а может на каждое запущенyое приложение выпустить подписку?
так сделана игра EVE online.
И карману твоему хорошо и игрокам.
paveloid1982
> а может на каждое запущенyое приложение выпустить подписку?
Технически каждый модуль это отдельное приложение, я потом могу его разобрать и выпустить каждый фичер по отдельности за какую-нибудь копейку. Подписка для таких вещей - это кажется верх наглости) Как цельное приложение - да, подписка может быть норм, а вот каждый модуль покупай отдельно - это скорее оттолкнёт моего потенциального пользователя, а если будет хотя бы какой то спрос и внимание то через неделю появится то же самое только с лучшими условиями и скорее всего лучше сделанное)
*UPD*
Сделал разметку под перевод для Eaten Files, Virtual Keyboard и Chat. Осталось только окно настроек и сам тамагочи, там буквально 10 строк. В принципе эта задача почти завершена. Из большого осталось сделать окно настроек, цепочку первого запуска приложения, апдейтер (!!!!), и пройтись по всем основным багам. В любом случае - движемся-движемся.
*UPD*
Так, всё, я зафиналил перевод на английский язык, теперь сделать перевод на другой язык значит просто дать нейросети одну переменную, и скопипастить её в приложение, и так хоть 100 языков (что я наверное и сделаю).
медленными шагами пытаясь не перепугаться сверх необходимого я подошёл вплотную к реализации апдейт системы, что означает что в ближайшем будущем я начну тестировать сетевую часть приложения. Я всё ещё хочу сделать некое общее файловое пространство для своих устройств, для этого нужен билд под андроид. в общем работы предстоит ещё немеряно.
Кстати, а как сделать вишлисты? Как вообще собрать их? Куда писать? Я хочу выпуститься в стиме.
вот бы мне ещё одни руки в помощь...