В предыдущей статье мне подсказали как сократить название калькулятора, не то чтобы меня особо заботило количество букв в названии, но сокращенное название калькулятора позволяет больше информации разместить в заголовке, так что да, в заголовке я решил попробовать сократить "Chi Calculator" до "ChiCa", насколько удачным вышло такое сокращение уже покажет время. И сразу же отвечу особо наглому комментатору... Вот тебе надо, ты и делай, ведь так принято у линуксоидов? Или может у моего калькулятора закрытый исходный код? Нет, у моего калькулятора открытый исходный код, так вперед и с песней! Я вообще не обязан поддерживать и развивать свой калькулятор, но поддерживаю и развиваю, хотя свою цель я достиг сполна, калькулятор работает не только в помойке "актуальных" дистрибутивов, но и в давно брошенных дистрибутивах 2013-2015 годов, где даже хвалёный центр приложений откровенно посылает пользователя лесом с ошибкой. И мой калькулятор не исчезнет как всякие Angry Birds по указке разработчиков, даже если попытаюсь удалить, некоторые рабочие копии моего калькулятора уже есть у других людей, и эти люди вполне свободно могут распространить сохранившиеся у них версии калькулятора, и никто их не будет за это преследовать. Вот и опять, разработчики доверились Flatpak, вложили свой труд, а в итоге Canonical просто взяли и выбросили труд разработчиков, потом возьмут и выбросят мусор под названием Snap вместе с трудами разработчиков доверившимися этому мусору, я уже говорил, но адепты Linux судя по всему ничему не учатся, и видимо не желают учиться... Я называю Snap мусором не просто так, у меня уже был опыт, к счастью небольшой, но мне хватило, я понял что из себя представляет Snap... Тотальную зависимость, вот что из себя представляет Snap, да еще и проблемную зависимость... P.S. Да, навалил, не отрицаю, однако оно работает, и это всяко лучше, чем если пользователь впустую потратит время/нервы на колдовство в терминале и чтение кривых мануалов, а потом окажется что нужное для работы было выброшено из дистрибутива какой-то там британской компанией :) Пора бы подойти к калькулятору, я его разрабатываю уже 11 дней, при этом попутно писал статьи и занимался домашними делами: Конечно же я не ущемлял свой отдых ради работы над калькулятором, ведь мне не нужно постоянно переписывать свой проект по вине других людей решивших колыхнуть болото зависимостей, или вообще что-то убрать из линуксоидного болота, ведь я не полагаюсь на сомнительные зависимости в которых утопают дистрибутивы. - Репозиторий и Godot Engine Исходный код и готовые для запуска версии Chi Calculator можно найти в репозитории: ( github.com/Shedou/Chi-Calculator ). Здесь же упомяну и Godot Engine: ( godotengine.org ). - Code 2.3 - 2.5 Начну с версии 2.3, первым делом я сделал поле ввода выражений активируемым только при наведении мыши на него, для этого добавил несколько функций отслеживающих курсор мыши, можно было это добавить в основной код главной ноды, но я решил не засорять такими мелочами основной код. Далее я избавился от функции _process(delta) и развесил гирлянду управления в функцию реагирующую на действия ввода, теперь эти условия обрабатываются только при действии со стороны пользователя. Это скорее из разряда оптимизации потребления ресурсов. Не то чтобы вышеупомянутая оптимизация значительно сократила потребление ресурсов калькулятором, мой калькулятор и без этого рисовал окно только при активности пользователя (я это сделал еще в версии "1.1.0.0", см. changelog), просто некоторым диванным экспертам наверняка станет спокойнее от того, что калькулятор теперь еще более оптимизированным стал... Дальше я начал рефакторинг кода, наверное любимое занятие разработчиков приложений для Linux, иногда это нужно делать, чисто чтобы код стал удобнее для разработчика, в данном случае для меня, но злоупотреблять не стоит этим, ибо софт может "протухнуть" пока разработчик будет занят бесконечным переписыванием кода... Заодно я добавил пару функций задача которых присваивать значение полям ввода/вывода, просто чтобы если я поменяю эти объекты мне не приходилось по всему коду бегать поправлять путь, теперь достаточно поправить одну функцию. А еще исправил функцию правки ввода, теперь она понимает что была стерта точка и дает об этом знать всему остальному коду через переменную отвечающую за наличие точки в конкретном месте. Еще превратил кнопку AC в C/AC, при первом нажатии она стирает только поле ввода, при повторном нажатии стирает всё. На этом версия 2.3 закончена, для версии 2.4 не буду заводить отдельный раздел, ибо здесь я отделил обработку знака точки от цифр, и немного поработал над оформлением кода попутно исправив проблему двойного ввода при работе с кастрированными клавиатурами без NumPad. Далее версия 2.5. Для успокоения диванных экспертов я думал еще сильнее заморочиться над оптимизацией, но это дурная работа, ведь калькулятор и так хорошо оптимизирован, для его работы хватает и GTX 1070 в режиме энергосбережения при частоте ядра 139 МГц, и то калькулятор едва на 1% нагружает видеокарту в таком режиме если активно мельтешить курсором чтобы окно калькулятора постоянно обновлялось. Для понимания ситуации, сейчас производительность GTX 1070 примерно на уровне GeForce 8800 GT, и этой производительности с головой хватает калькулятору, так что расслабьте булки мои ненаглядные диванные эксперты, с моим калькулятором технически справится даже старый ПК ~2010 года. В конце концов при тестировании калькулятора я запускаю одновременно 14 виртуальных машин, как думаете, это мой Ryzen 2700X слишком хорош, или может просто калькулятор слишком мало кушает, чтобы устроить ад для моей системы? Так или иначе вернемся к версии 2.5, с этой версии я отделил код и ресурсы от исполняемого пакета, это нужно для дальнейшей реализации всяких интересных штук с калькулятором. Вот собственно и размер приложения (код + ресурсы), менее 2 МБ весит мой калькулятор, то что исполняемый файл весит 36 МБ не страшно, все же это самодостаточное приложение, и к версии 2.5 особо никак не раздулось... Это вам не 2.6 МБ + 2000 МБ всевозможных зависимостей необходимых для работы... Так что в очередной раз скажу диванных экспертам, расслабьте булки, а то как бы судороги не словили себе на пятую точку, впрочем, Linux дистрибутивы и так всю жизнь судорожно сидят под плинтусом как операционные системы для ПК и ноутбуков. И еще раз напомню вечно забывчивым линуксоидам, вдруг уже забыли ради чего я вообще создавал калькулятор... Далее был отключен показ содержимого массива, так гораздо приятнее выглядит калькулятор, ну и немного поработал над ссылками внизу окна. В общем то пока остановлюсь на этом, ведь нужно детальнее посмотреть насколько мой калькулятор прожорлив... - -- Проверка Для начала посмотрим на файлы, есть исполняемые файлы для Windows/Linux, и пакеты с ресурсами (исходный код, значки и т.п.), и если внимательно посмотреть можно заметить, что пакет ресурсов под все платформы одинаков, явные различия есть только в исполняемом файле под разные платформы. А это значит что при обновлениях достаточно просто заменить пакет с ресурсами, а сам исполняемый файл можно не трогать, ведь все настройки, код, ресурсы приложения не зависят от исполняемого файла. Только пакет с ресурсами должен иметь то же имя, что и исполняемый файл, но этот нюанс можно решить в будущем, сейчас я не собираюсь на это тратить время. Теперь посмотрим на занятую память, вполне сносно в итоге, ~105 МБ для x64 версии, и ~95 МБ для x32 версии, порой одна вкладка браузера жрёт как два калькулятора вместе взятых, линуксоиды точно жаловаться не должны, они и так давно положили болт на оптимизацию софта и ОС. Посмотрим на нагрузку ЦП, все более чем хорошо, конечно, незначительное потребление есть, сотые доли процента, но разве это много? Сколько калькуляторов нужно запустить, чтобы нагрузить мой Ryzen 7 2700X хоть на один процент? ~50 калькуляторов? Зачем? Теперь перейдем к нагрузке на видеокарту. Пока калькулятор никто не трогает нагрузка на видеокарту просто нулевая, свидетели постоянной перерисовки OpenGL окна, вы где? Даже когда я усердно дергаю мышью в окне калькулятора нагрузка на ГП иногда достигает 2%, а при обычном использовании без усердного шевеления мышью и вовсе менее 1%. Да, у меня GTX 1070, но она в режиме энергосбережения, и её фактическая производительность сейчас примерно на уровне GeForce 8800 GT, не думаю что 1-2% нагрузки при активной работе приложения это много с видеокартой такого уровня производительности... Совсем другое дело выделенный объем памяти на видеокарте, приложение выделяет 173 МБ видеопамяти, что весьма неприятно может быть для видеокарт с 512-1024 МБ памяти на борту, но линуксоиды еще в прошлом году кричали что такие видеокарты уже давно мусор (в том числе R9 290 на 4 ГБ)... Так что все отлично, линуксоидам точно не нужно беспокоиться по этому поводу. Так или иначе даже на видеокартах с малым объемом памяти калькулятор будет работать, а если не влезет в локальную память видеокарты, драйвер подкачает эту память из системной памяти, в общем ничего страшного, это не активная игра где каждый "микро фриз" на счету. У меня калькуляторы уже запущены почти час, пока пишу вот статью да бытовыми делами занимаюсь, и я не вижу чтобы приложения особо грузили мне систему просто находясь в фоне. Ради интереса я перезапустил калькуляторы и рядом включил встроенный калькулятор Windows 7, подождал несколько минут и посмотрел, конечно же калькулятор от Windows 7 потребил многократно меньше ресурсов за это время, но с моим "железом" разницу в производительности на глаз заметить просто невозможно, и то и другое прекрасно работает. Можно сколько угодно упрекать мой калькулятор за прожорливость, но есть одно "но", мой калькулятор прекрасно работает и под разнообразными дистрибутивами Linux, кроме особенно неадекватных разумеется, в этом и была суть разработки калькулятора на игровом движке, чтобы пользователь не мучался пытаясь установить/запустить приложение в среде Linux. Ну что, перейдем к Ubuntu 13.04. Что я могу сказать, композитор в дистрибутиве Linux жрёт как три моих калькулятора вместе взятых, и даже больше, но в целом потребление памяти меньше чем в Windows. Как калькулятор грузит графическую подсистему узнать не дано простыми способами, это же Linux, тут не бывает просто, ну кроме запуска моего калькулятора :) Далее смотрю на общий график, ничего нового, мой калькулятор слабо влияет на общую загрузку системы, даже несмотря на то, что у меня системы в виртуальной машине работают. В x32 версии дистрибутива мой калькулятор скушал 70 МБ памяти, в x64 версии уже 75 МБ. Далее я решил сразу 6 дистрибутивов запустить одновременно, и даже стало интересно сравнить с "родными" калькуляторами, но уже в Debian 11.6.0 Xfce я не смог найти в списке приложений "калькулятор". Сначала подумал что это я слепой не вижу искомый калькулятор нигде в меню приложений, но даже поиск приложений не выдал ничего, вот он, User Experience, выходит не зря разрабатывал свой калькулятор... Сначала я думал во всех дистрибутивах разом запущу и посмотрю, но как показала практика, то калькулятора встроенного нет в дистрибутиве, то диспетчеры задач весьма скверные... В Debian KDE есть kcalc, и да, он меньше кушает памяти чем мой калькулятор, но многократно больше чем калькулятор в Windows 7, а вот в Debian Xfce я так и не нашел никакого калькулятора, потому сравнивать нечего с моим калькулятором. Если верить графику, то в x32 KDE версии Debian мой калькулятор потребляет 180 МБ, а вот в x64 Xfce версии все 200 МБ памяти. Вообще Debian Xfce мне не понравился, какой-то неудачный отпрыск "крысы" и "гнома", думаю многие уже заметили по процессам в диспетчере задач... Далее ROSA Fresh 12.2 в версии LXQT (x32) и KDE (x64). Посмотрим по общему потреблению памяти, судя по разнице в общей загрузке памяти мой калькулятор кушает 181 МБ (LXQT x32), и 196 МБ в KDE x64 версии дистрибутива. Ладно перейду к SalentOS 14.04.2 full, эта операционная система в одной оболочке OpenBox, только разная разрядность. И вот тут даже я офигел, в x64 версии дистрибутива нет калькулятора, но есть диспетчер задач, в x32 версии есть калькулятор, но нет диспетчера задач, вашу кочергу линуксоиды! Вы хоть что-нибудь способны сделать по-человечески?! Ладно в Debian Xfce может я не знаю какими обрядами шаманскими нужно призывать калькулятор, но здесь то явно в x64 версии нет калькулятора, а в x32 версии он есть... В итоге только мой калькулятор везде отлично работает. На этом пожалуй хватит... Одно дело просто запустить своё приложение в массе дистрибутивов и использовать, но совсем другое дело использовать функционал тех самых дистрибутивов "как он есть", лучше бы линуксоиды на самом деле скопировали Windows и не мучили пользователей своими уродствами... - -- Заключение В этот раз я не проверил абсолютно все дистрибутивы, что у меня есть в виртуальных машинах, но общая картина плюс-минус одинакова, мой калькулятор работает везде. Да, он немного нагружает процессор, больше памяти кушает чем "нативные" калькуляторы, но не следует забывать что дистрибутивы Linux работают в среде VirtualBox, и раз мой калькулятор прекрасно себя чувствует в очень скудных виртуальных машинах, то с полноценным старым ПК точно проблем не будет, я уже не говорю про современные системы. Для очень старых ПК с 256-512 МБ ОЗУ и видеокартой уровня GeForce 4 MX440 мой калькулятор будет не лучшим выбором, но на такие системы противопоказано устанавливать дистрибутивы Linux, только Windows XP и старее будут полноценно использовать возможности таких систем. Так что в итоге? В общем ничего особенного, моё приложение не только работает в любых более-менее исправных дистрибутивах Linux, но и потребляет действительно мало вычислительных ресурсов системы, нет такого, чтобы постоянно перерисовывалось окно OpenGL как уже успели пофантазировать диванные эксперты в комментариях, нет, приложение не делает этого. А еще я остался в недоумении от Debian 11.6.0 x64 Xfce +nonfree, дружки-пирожки, мои ненаглядные линуксоиды, подскажите мне, криворукому и тупому неосилятору, как мне наколдовать калькулятор в этом дистрибутиве, а то я такой вендузятник не могу найти никак... Уже все "шашечки" перетыкал, ну никак не могу найти калькулятор в дистрибутиве, ну кроме того что я сам разработал и скопировал на рабочий стол... Только не говорите что мне нужно использовать LibreOffice "Excel" чтобы посчитать 2+2... Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
ChiCa 2.5: Прошло 11 дней разработки, проверяю насколько прожорлив мой калькулятор (ГП/ЦП/ОЗУ)
24 февраля 202324 фев 2023
19
12 мин