В прошлой своей статье я показал как нужно разрабатывать софт для Linux дистрибутивов, чтобы этим софтом могло воспользоваться большинство обычных пользователей, а не только красноглазые танцоры над терминалом: Для тех кто не понял, мой "калькулятор" можно запустить буквально в два клика мышью, его можно скопировать на флешку и легко перенести на любой ПК с более-менее исправным дистрибутивом Linux, при этом наличие интернета не имеет значения. А самое главное, что не нужно плясать над терминалом с бубном как над ущербными DEB пакетами, устанавливая которые обычный пользователь не только вынесет себе мозг и испортит нервы, но еще и обязан предоставить доступ в интернет для скачивания болота зависимостей. Хотя назвать DEB установочным пакетом, это как сказать что булыжник на палке это удобный бытовой молоток... - -- --- Подробный ответ настойчивому комментатору... Ответ спрятан в спойлере, просто не каждому читателю это будет интересно, потому я предпочел спрятать ответ в спойлер. Подробный ответ настойчивому комментатору 1) Если ты не понял смысл использования GODOT, то это уже не мои проблемы, это проблемы твоего уровня развития, не зря говорят что мозги есть у всех, просто уровень интеллекта разный... Объясняю: GODOT просто хороший инструмент, с помощью которого даже я, якобы тупой и криворукий, смог создать приложение работающее практически везде, и моё приложение не требует чтобы пользователь учился плясать с бубном над терминалом и системой в целом. Я не заставляю никого писать софт используя именно GODOT, я показал как должен работать софт. 2) Посмотри скриншот под моим текстом, что ты процитировал ("Простое открытие пакета запускает архиватор"), там отчетливо видна галочка разрешающая файлу запуск как приложение. 3) Поменьше софизма и лицемерия, твои простыни содержат массу противоречий и вырванных из контекста отрывков, ты не критикуешь, ты подгоняешь реальность под свой выдуманный мирок, в котором все прекрасно и никаких проблем нет при работе с дистрибутивами Linux. Ты просто защищаешь "любимицу", и на каждый факт придумываешь порой откровенно бредовые оправдания, а вину за все проблемы перекладываешь на пользователей. Ты там случайно не забыл как говорил про отмену поддержки 32-битных приложений в линуксах называя меня лжецом? А как потом переобулся и начал оправдывать разработчиков за этот поступок? P.S. Не только Manjaro без x86 поддержки... 4) Обязанность разработчиков как раз в том, чтобы предоставить пользователю конфиги в виде удобных кнопочек и галочек в настройках приложения, как и ковыряние в исходниках, если думаешь что это обязанность пользователя, я тебя разочарую, ты просто дурак в таком случае. Заранее прощу прощения если обидел, но я тебе говорю прямо в лоб, чтобы ты наверняка понял сказанное. 5) Претензии должны быть обоснованными, и мои претензии к дистрибутивам Linux обоснованны, чего не сказать про попытки некоторых комментаторов "натянуть сову на глобус". А что до AppImage, пусть научится для начала хранить конфиги вместе с исполняемым файлом в одной папке, и приложения смогут эти конфиги правильно считывать при каждом запуске (камень в огород Flameshot-12.1.0.x86_64_"точка"_AppImage), меня совсем не радует что портативное приложение гадит своими файлами в систему и не может их потом нормально еще подгрузить при каждом запуске. Зачем мне в системе лишний мусор от портативного софта? Это ли портативность? Линуксоиды вообще видели как должен на самом деле вести себя портативный софт? Или только обвинять пользователя во всех проблемах способны когда пользователь ругает все эти кривые поделки линуксоидные... 6) "А это "болото зависимостей" точно есть на линуксе? " - Есть и активно бурлит уничтожая труды разработчиков которые не желают тратить свое время на постоянные доработки своего софта просто потому что какая-то зависимость там изменилась, именно поэтому адекватные разработчики обходят за 100 километров его, от чего и нет толком софта под Linux дистрибутивы. Да и не вижу чтобы разработчики пищали от счастья когда Google заставляет переписывать софт под Android просто удаляя из новых версий ОС "устаревшие функции". Вот объясни мне дружок пирожок, зачем "правильному" линуксоидному калькулятору библиотека liblzma? Что там kcalc собрался сжимать? А libxml2 зачем, какие XML документы он собрался анализировать пока пользователь просто считает 2+2? А остальные зависимости? И это все ради калькулятора хвалёного линуксоидного? Да, мой "калькулятор" имеет некоторые зависимости, но понимаешь в чем суть, "Chi Calculator" не зависит от половины всех библиотек в системе, он берет только самое необходимое, и эта "база" обязана быть в любом адекватном дистрибутиве Linux. К сожалению этой базы нет в BSD, потому мой калькулятор там пока что не работает, зато мой калькулятор уже работает в macOS, прямо с флешки, но не буду забегать вперед... Мой "калькулятор" прекрасно переживет отсутствие всяких liblzma, libxml2, и массы прочих зависимостей, при этом я не обделен возможностями для воспроизведения звука, хоть сейчас могу вставить звук пердежа в свой калькулятор, и он его воспроизведет без зависимостей "libogg, libvorbis". У меня "калькулятор" имеет всего 20 зависимостей, и это как правило базовые библиотеки системные, без которых сама система работать не будет, тем временем линуксоидный калькулятор имеет 93 зависимости... Теперь то понимаешь в чем проблема софта под Linux дистрибутивы и про какое болото я говорю? Или ты просто не хочешь это понимать? И да, еще расскажи как у меня все место заполнилось на диске от программ которые изначально держат все зависимости при себе, расскажи как я страдаю от нехватки места по вине "огромного" размера программ несущих все необходимое вместе с собой: Да, папка с операционной системой у меня 20 GB весит, но у меня Windows 7 уже далеко не свежая, и как-то не страдаю по этому поводу... А в дистрибутиве Linux даже занятое место на диске расписано через жопу, в одной строке пишет что занято 9.7 GiB, в другой строке пишет что 7.9 GiB свободно из 18.6 GiB, что вообще курили разработчики представляя таким образом информацию пользователю? Не пробовали "подсмотреть" как сделано у действительно популярных и удобных операционных систем? Или все нужно делать "не как у всех", чтобы пользователю выносить мозг на каждом нюансе? Наверное и здесь у меня "руки кривые" да "мозги неправильные", вот прочитаю инструкцию и сразу пойму как в дистрибутиве Linux перекомпилировать всю систему, чтобы каждую чёртову мелочь привести в адекватный вид... И да, на всякий случай сделаю дополнительное пояснение, я не говорю копировать все из Windows, я говорю сделать хотя бы аналогично как в Windows, если не могут сделать лучше, чтобы обычные пользователи не матерились спотыкаясь об всякую линуксоидную дичь. Я бы еще во многое тебя потыкал носом, но увы, мне нужно еще написать про разработку своего "калькулятора", с которым нет проблем свойственных помойке дистрибутивов Linux и софту в этой помойке... - -- --- Почему Chi Calculator 2.0? Почему уже версия 2.0? Очень просто, главное число я изменяю когда есть значительные изменения, второстепенное число для незначительных улучшений постепенных, на текущий момент произошли действительно значительные изменения, потому я сразу сменил версию на 2.0, ведь от версии 1.3 практически ничего не осталось... Здесь же прикреплю ссылку на репозиторий: ( https://github.com/Shedou/Chi-Calculator ). - Работа в macOS Как-то ради интереса я скомпилировал macOS версию своего "калькулятора", но тестировал уже другой человек, просто потому что у меня мобильный интернет с трафиком был, и я не имел возможности скачать операционную систему для тестов... Вместо тысячи слов: - Работа над внешним видом Чтобы "калькулятор" стал калькулятором, нужно как минимум приделать ему все кнопки, я же делаю не очередную кривую утилиту которая умрет в следующей версии дистрибутива, а значит есть смысл над ней поработать. Через некоторое время "калькулятор" стал похож на настоящий калькулятор. Чтобы кнопки не болтались "абы как" я их сгруппировал, а чтобы я мог перемещать кнопки целой группой разом в редакторе, я сделал отметку на "контейнере" сочетанием ctrl+g, оно запрещает в редакторе взаимодействовать с элементами внутри "контейнера" отмеченного таким знаком. Еще настроил "тему" для кнопок, мне нужно было изменить и настроить шрифт, такие вещи у меня не потребовали никакой работы с кодом. На этом собственно работа с внешним видом закончена, нужно бы поработать с кодом. - Работа с кодом Так как внешний вид калькулятор был основательно переработан, то и старый код уже не очень пригоден для полноценной работы. Да, можно костылями подставить немного, чтобы показать видимость работы, но старый код уже не способен работать с новым интерфейсом, настолько, что я перевел управление на клавиатуру "гирляндой" из "if". Чтобы калькулятор работал полноценно, мне нужно не только управление через кнопки, но и управление с клавиатуры или прочих устройств ввода, на самом деле можно хоть на геймпад сделать управление, но я не собирался поддерживать игровые консоли и свойственные им аксессуары... Хотя может быть в будущем реализую и такое... Да, "гирлянда" немного разрослась, почему бы и нет, здесь ведь ничего сложного нет, да и проект пока что позволяет такой подход реализовать. А теперь постараюсь объяснить что я сделал. Я поставил условие "if", если кнопка "numb_0" (кнопка "0" на основной клавиатуре или NumPad) была нажата, то вызываю функцию "add_buffer("0")", где "0" это значение которое я отправляю в функцию. А дальше работает функция, в скобках функции стоит numb, это переменная в которую будет записано "0" если я нажму кнопку 0 на клавиатуре, этот "0" я беру из переменной numb и добавляю в переменную buffer, а следующим действием я обновляю окошко ввода калькулятора присваивая ему значение переменной buffer. Важно заметить, окно ввода калькулятора работает с текстом, потому функцией str() я конвертирую значение buffer в текстовый вид, просто чтобы не записать в окно принимающее только текст что-то иное. Переменная buffer объявлена в самом начале кода, чтобы к ней был доступ из любого места в коде, ведь с ней работают и другие функции. А вот переменную numb объявлять не нужно отдельно, ведь это локальная переменная функции add_buffer(), она будет доступна только внутри так как это аргумент функции, она не должна быть доступна за пределами функции. Так или иначе калькулятор научился считать, от старого кода конечно осталась пара функций, но их я перепишу, в другой раз... Есть у меня некоторые идеи, и пока я не решил как именно буду реализовать задуманное. На данный момент у калькулятора работают все цифры, работает умножение и деление, а так же сброс ввода, и работает это всё через клавиатуру, нажимать кнопки мышью бесполезно, сейчас это просто "шаблон" над которым нужно поработать. На этом закончу, но не работу над калькулятором... Слишком большой объем статьи потрачен на "ответ назойливому комментатору", в том числе и время которое могло пойти на разработку калькулятора, но что поделать, порой нужно и отвечать. Благодарю за внимание, больше интересных статей в блоге Hard-Workshop. Майнерам криптовалюты на заметку...
Chi Calculator 2.0: Проверяю в macOS, работаю над интерфейсом и отвечаю настойчивому комментатору
20 февраля 202320 фев 2023
6
9 мин