Всем привет! Я знаю, что немного вылетел из информационного поля, в этом посте хочу рассказать почему и что изменилось в сервисе за последнее время.
Прежде всего хочу поблагодарить тех людей, что проявляли активность, кто добавился в группу (нас уже около 360 человек), и особенно тех, кто выразил заинтересованность проектом и поддержали словами, именно ваш интерес и побуждал меня продолжить разработку.
Так же не могу не поблагодарить всех пикабушников, кто выкладывал мало постов или воздержался от этого, благодаря чему я не задерживался в прокрастинации и смог сосредоточиться на работе. Особенно радует переход из горячего прямо в свежее, что бы я без этого делал.
Спустя неделю после публикации статьи мне прилетело много багов, прикинув примерное время, требующееся на их устранение, прибавив к этому время необходимое для реализации тех возможностей, что были в планах, а так же учитывая, что Python язык больше скриптовый, мало подходит для тиражируемого релизного приложения, особенно учитывая компилируемый размер файла и меньшую производительность, я пришел к выводу, что рано или поздно это всё придется переписывать на другом языке, а это большие затраты времени, и чем дальше бы я зашел, тем больше бы вложений потребовалось, а учитывая что финансирую разработку только я сам, это могло бы вылиться в стагнацию или вообще повлиять на жизнеспособность сервиса.
Давайте теперь вернемся в настоящее. И вот спустя примерно пять недель работы, пару бутылок виски и четыре дня в депрессии, я все таки переписал клиента программы на более низкоуровневом языке, который пришлось изучать с нуля, попутно лысея. И как по мне - получилось весьма неплохо, давайте расскажу подробнее.
Начнем с самого частого, на что обращаешь внимание - размер программы, для сравнения:
Windows, было 58,6 мб, стало 3,3 мб в консольном варианте и 6,1 мб с GUI. Разница в 17,7 раз!
Linux, было 233,6 мб, стало 7,5 мб. Еще большая разница в 31,1 раз!
MacOS, ничего не изменилось, потому что клиента для неё пока нет. Но я увидел проголосовавших в группе по этому вопросу, буду его прорабатывать.
Конечно еще можно считерить и упаковать файл в zip архив, тогда размер получается 1,79 мб, это примерно 32,7 раз. Моя небольшая победа.
В windows пришлось разбить программу на две версии, т.к. можно скомпилировать или консольное или графическое приложение, изначально была задумка запускать консольное при наличии соответствующего аргумента. Объединить можно, но это займет время и добавит сложности в разработке.
Вот скриншоты интерфейсов, в консольном варианте он стал попроще:
По производительности тоже есть изменения. Потребление памяти при обновлении процессов в новой версии 37 мб против 70 мб в старой. На первый взгляд все открывается быстро, хоть это сейчас и не сильно важно, но при требовательных операциях в будущем будет конечно ощутимо в сравнении с Python.
Сервис стал доступнее для большего количества версий операционных систем, например я понизил архитектуру до x86, и минимальная поддерживаемая версия на которой тестировалась программа — windows 7, а для linux — ubuntu 18. Правда обе доступны только в консольном варианте, в графическом режиме отказывалось запускаться, думаю потом поменяю на другой GUI фреймфорк. Для более новых версий windows всё осталось так же.
Еще сделал наверное самую нужную функцию на текущий момент - автоматическое обновление, что бы не пришлось ручками переставлять на каждой машине, особенно если у вас много станций.
Так же были внесены небольшие изменения:
Исправлен баг с открытием окна командной строки на пару секунд при выполнении команд и при запуске.
Не всегда отображались IP адреса, особенно на linux.
Баг с отключением сервиса программы через 3 дня, из за чего станции были в офлайне. Никто об этом не написал, но я исправил.
Вывод результата кастомной команды теперь более приближен к оригинальному.
Генерация пароля каждый час, если он не был задан вручную.
Поправлена немного админка.
Было еще много изменений по мелочи, из того что успел прочитать в чате проекта и в личке, которые делал буквально на лету, не записывая.
Немного изменил логику, в том числе взаимодействие между клиентом сервером, поработал с безопасностью последнего, так что Python версию нужно будет заменить на новую.
По правде говоря, чистая работа с кодом сама по себе заняла около 3 недель, а последние две ушло на сборку и отладку под разные дистрибутивы, и на каждом встречались свои ошибки, и когда я закрывал ошибку скажем на ubuntu 22, на 18 вылазила новая. Меня это печалило до такой степени, что по ночам снились кошмары, например где я нахожу баг, но не могу его описать, не могу найти логов, хотя четко понимаю и вижу как приложение крашится, или еще сон с бесконечной сборкой, когда запускаешь команду и ждешь, ждешь, ждешь и больше ничего делать не можешь, просыпаешься в холодном поту и приходит радость, что это всё не в заправду. Для справки - мне обычно снились приятные или нейтральные сны, которые я часто забывал проснувшись, но эти я помню до сих пор.
Ну еще немного выскажусь, если вы не против. Хоть переписывать было и интересно в технологическом плане, но всё же я немного приуныл, так как мне хочется реализоввывать новые фишки, и удивлять вас ими, а так получается я делал всё одно и то же. В планах было запустить релизную версию уже на шестой месяц проекта (сейчас), и получать хоть какую ни будь отдачу, что бы были деньги раскручивать проект, а не двигаться со скоростью черепахи. И единственное что меня мотивировало — это ваши добрые пожелания и отзывы, которые показывают потребность в этом сервисе, только благодаря им я сделал спринт и выпустил это обновление раньше, чем работая в нормальном темпе.
Итак к делу, что бы обновиться на новую версию — нужно удалить старую, скачать новую и установить. Что бы ID станции и привязка к вашему аккаунту сохранились — переместите файл config.json из "C:\ProgramData\Cusco\CuscoRemoteControl" в "C:\ProgramData\Cusco\RemoteControl"
Новые файлы уже залиты на сайт, находятся в разделе загрузки.
В ближайшем будущем начну работу над визуальным управлением, попутно реализовывая ваши пожелания, если будет время.
Всё так же было бы классно увидеть ваши результаты тестирования, если можно то со скриншотами и подробностями как воспроизвести найденную ошибку.
Спасибо за ваше время, жду вас в группе. Обращу внимание, что в ней есть подгруппы: баги, основная — для общения, и идеи — которую в скором времени подчищу от флуда.