Как я создавал простой тест производительности, но получился аналог AIDA64 для Linux дистрибутивов
Значит так, бенчмарк есть и работает, но есть проблемы с практичностью интерфейса, например кнопка "Save Settings", справа вверху ей точно не место потому переношу вниз поближе к кнопке закрытия меню:
реклама
Раз уж заговорил про кнопку "выход", то нужно бы и такую кнопку сделать, ибо не каждый современный пользователь сможет выйти из моего бенчмарка без кнопки выхода если вдруг переключит в полноэкранный режим, да, Alt+F4 банально и стандартно, но кто знает какие извращения могут быть в разных дистрибутивах линукса для закрытия приложения...
В любом случае кнопку выхода нужно сделать, как-никак это базовая вещь которая обязана быть в наличии, прямо как настройка формата даты и времени в часах операционной системы, или обводка/тень у белого текста на белом фоне, и т.п.
Как такое сложное действие было реализовано? Это было действительно очень сложно, целую строчку кода пришлось написать...
реклама
А дальше я принялся работать над разделом системной информации, хочу кое-что проверить, а для этого нужно разделить платформы, ведь в среде Linux нельзя вызвать WMI Info и т.п., а в среде Windows нельзя вызвать утилиты для Linux:
Для чего я собственно это делал... По идее я хотел вывод скрипта neofetch направить в Godot, но что-то пошло не так...
реклама
Думаю теперь ясно что именно пошло не так, neofetch использует цветовую разметку терминала, а она не поддерживается в моём случае, отсюда и куча лишнего мусора в выводе:
Как отключить всю эту похабщину? По идее можно прописать ряд аргументов для neofetch, и я так сделал, не сразу конечно получилось как надо, но последний результат меня вполне устраивает:
Правда позже выяснился неприятный факт, в одном дистрибутиве всё работает, а в другом нет...
реклама
Впрочем, и эту проблему удалось решить, теперь можно без лишних телодвижений вызвать neofetch не выходя из моего бенчмарка:
Ещё добавил вывод информации о процессоре разными методами, правда все они выглядят так себе ибо под терминал подгонялись, вряд ли разработчики предполагали что в качестве терминала будет выступать ChimbaBench...
Ну ничего страшного, терминальное уродство потом можно будет переоформить, сейчас главное чтобы оно работало, и следующим шагом я добавил утилиту dmidecode, да, она требует root права для работы, но работая в линуксах и так нужно теребить root права направо и налево, потому не вижу проблем:
Кстати, уже заметили предпросмотр всей страницы в зоне полосы прокрутки? Весьма полезная вещь, особенно когда выведено очень много информации, хотя есть и незначительный баг, при первом выводе часть текста может быть спрятана под этим новым элементом, но при повторном вызове текст нормально переносится, в общем баг есть, но не критичный, потому оставлю как есть пока:
Конечно же нужно сделать уведомление если вдруг команда не будет работать в каком-нибудь дистрибутиве Linux, выйдет весьма нехорошо если пользователь будет получать "ничего" в ответ:
Так как у меня много однотипной рутины в коде, имеет смысл провести рефакторинг грубо говоря, почему грубо говоря? Потому что я не только улучшил код, но и изменил функционал, хотя здесь всё ещё есть весьма много косяков которые нужно исправить:
И да, при нажатии кнопки USB Info я вызываю сначала команду lsusb и сразу же usb-devices, что я себе позволяю! На самом деле ничего страшного, ведь ещё в первых версиях ChimbaBench я позаботился о том, чтобы последующие вызовы диалогового информационного окна просто добавляли новые данные в вывод, потому у меня всё прекрасно работает:
Дальше нужно разобраться с dmidecode утилитой, вообще на ресурсе pkgs нашлись скомпилированные бинарники данный утилиты для дистрибутива Slackware, и оно в принципе даже работает:
Работает пока на сцену не выползает болото зависимостей характерное дистрибутивам Linux... Да, моя Slackware видимо уже слишком устарела, чтобы запустить dmidecode версии 3.5, GLIBC_2.34 видите ли не нашёлся, чем не принуждение к обновлениям? Это ещё похлеще принудиловка к обновлениям чем у Microsoft по сути...
Потому я загрузил Ubuntu 13.04 и скомпилировал dmidecode версии 3.5 в среде давно брошенного дистрибутива в котором тот самый GLIBC достаточно старой версии, чтобы быть в любом более новом дистрибутиве:
Почему мне вообще нужно было заниматься такой дичью? Правильно, потому что разработчики софта не сделали исполняемый файл приложения, они лишь рассказали что приложение вроде как есть под всякие дистрибутивы и даже в составе инструментов, но адекватного исполняемого файла нет, только исходный код.
Радует лишь одно, мне не пришлось плясать над бубном, чтобы скомпилировать dmidecode, к сожалению далеко не с каждым приложением так везёт.
В итоге несчастный dmidecode прекрасно работает как в древней Ubuntu 13.04, так и в Debian 11.6, и даже в Slackware 15.0, вообще именно так и должен работать любой софт, но линуксоидные извращенцы они такие, вечно всё переделывать и доделывать за ними нужно:
В общем одной проблемой меньше, кстати, ChimbaBench работает даже в Ubuntu 13.04, правда в виртуальной машине доступен только OpenGL 2.0 со всеми вытекающими последствиями, но работает ведь!
Правда есть другая проблема, я конечно вывожу код ошибки в случае если что-то пошло не так, но заставлять пользователя насиловать поисковую систему и форумы, чтобы узнать что значит тот или иной типичный код ошибки, это было бы так характерно для линуксоидных кривых поделок... К счастью у меня сейчас хоть и кривая поделка, но не линуксоидная:
На текущий момент я выделил лишь основные коды завершения работы приложений, и некоторые из них явно нужно изменить чтобы описание было более понятным для пользователя даже без помощи интернета:
Хорошо, а что будет если всплывёт специфический код ошибки? Всякое ведь бывает, например я случайно удалил код 127 из ассоциативного массива... Но ничего страшного, в описании будет просто "Null":
Так гораздо лучше, казалось бы, мелочь, но из таких мелочей как раз и состоит всё:
Протестировав новый функционал на работоспособность можно вернуть массив с описаниями ошибок в нормальное состояние, в том числе путь к скрипту который был преднамеренно искажён ради тестов:
В общем меня пока устраивает работа нового функционала:
А вот так это выглядит со стороны исходного кода, ещё я думал предоставить пользователю терминал внутри своего бенчмарка, но кому этот терминал сдался когда можно просто нажать уже готовую кнопку и получить информацию?
Хм, вот всё и работает как положено, но есть одна проблема... Интересно, что же здесь не так? Что потерялось весьма незначительное, но крайне полезное для пользователя?
Правильно, здесь нужна кнопка "сохранить"! Теперь не нужно вручную копировать информацию из окна сообщений, ведь я добавил кнопку сохранения текста в файл.
А чтобы не разводить помойку в системе пользователя, приложение само собой всё сохраняет рядом с исполняемым файлом в отдельной папке, а чтобы сохранённые файлы не перемешивались я добавил в имя текущую дату и время в адекватном формате ISO8601:
Мне всё равно даже если в часах дистрибутива у пользователя извращённый формат даты и времени по вине неполноценных гномов, версия которых уже перевалила за 40, а разработчики до сих пор так и не осилили настройки формата даты и времени...
Ладно, пожалуй на этом пора заканчивать ChimbaBench версии 2.1, только поправить парочку кнопок, хотя это не такая уж и большая проблема как два крестика в интерфейсе Slackware для закрытия окна, причём работает только левый крестик, а правый вовсе исчезает порой:
Хотя есть и баг с сохранением информации в файл, сохранение работает только в среде Linux, в среде Windows не сохраняет, но пока особо нечего сохранять в среде Windows потому этот баг исправлю в других версиях ChimbaBench.
Информации в некоторых случаях действительно много, потому кнопка сохранения в файл очень полезна:
И да, сцену я не трогал, потому она осталась без изменений:
В общем на этом всё, версия 2.1 завершена, в итоге я создал нечто действительно похожее на аналог AIDA64, в отличие от всяких GTK Stress Testing и иных названных аналогами утилит...
Теперь мне не нужно насиловать терминал если захочу быстро собрать информацию о системе, достаточно будет просто нажать пару кнопок и готово, теперь я так подумал, а почему бы не автоматизировать сбор всей информации... Ну да ладно, это уже оставлю на следующие версии.
Где найти ChimbaBench: ( https://github.com/Shedou/ChimbaBench ).
И напоследок оставлю забавный комментарий из предыдущих статей, он меня даже рассмешил:
P.S. Странно это постоянно повторять, но я не программист, а потому делаю как получается, это всяко лучше пустого звона от фанатиков Linux которые вообще ничего не сделали полезного для дистрибутивов :)
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила