Кроссплатформенное программирование под Unix-ы

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 13 фев 2021, 02:51

Odin_KG писал(а):
13 фев 2021, 02:37
то обычно его будут делать в Windows, а остальные OS пойдут как приятное дополнение.
А вот это - глубочайшее заблуждение :-o ... - и это не из соображений "мне так кажется", а из моего собственного опыта практической разработки программных проектов, и не один год, и не в одной фирме, и фирмы эти, по большинству - аутсорсерные филиалы крупнейших мировых софтверных компаний-разработчиков.
Опыт как-раз в точности противоположный: для крупных, а особенно системотехнических проектов (когда в проекте сотни или тысячи файлов исходного кода) - разработка ведётся по преимуществу в Linux ... иногда в UNIX реального времени QNX ... и только потом, если захочется, и если понравится, это может переноситься в Windows.

Чтоб не быть голословным - посмотрите на все проекты софтверных телефонных станций: Asterisk, FreeSWITCH, YATE ... - везде картина именно та, которую я нарисовал.

И чем же вы тогда объясните такой артефакт, что на рынке труда, из соображений спрос-предложение, предлагаемые зарплаты программистам-разработчикам (высокой квалификации, не junior студентов), при прочих равных требованиях, под Linux выше в 2, 3, 5 ... раз, чем под Windows? :-o

P.S. Одно известное, "крылатое" выражение звучит так: "Система UNIX придумана программистами и для программистов".
Неужели, изобретя что-то самим "для себя любимого" - вы станет пользоваться дерибасом из соседского двора? :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 13 фев 2021, 03:00

Odin_KG писал(а):
13 фев 2021, 02:37
Как раз так всё и делается . Иначе вы не разработчик, а торгаш, который просто нанимает батраков и присваивает добавочную стоимость. В таком случае совершенно не важно, создавать ли софт или торговать носками, ибо цель - просто прибыль.
Что-то мне подсказывает, что у вас ещё нет заметного опыта, бэкграунда работы в качестве наёмного разработчика в IT компаниях, специализирующихся, или хотя бы занимающихся при случае, разработкой программных проектов.

P.S. Тут ключевым является отличие программных проектов от отдельных программ типа a'la "Hello World".
Odin_KG писал(а):
13 фев 2021, 02:37
В таком случае совершенно не важно, создавать ли софт или торговать носками, ибо цель - просто прибыль.
Это может нравиться или не нравиться, это может вызывать отвращение и осуждение ("кто на что учился" :lol: ) ... но "сермяжная правда жизни" состоит в том, что все выжившие и существующие в IT компании, фирмы и команды добровольцев (не важно по форме) руководствуются, в конечном итоге, именно принципом: "не важно, создавать ли софт или торговать носками, ибо цель - просто прибыль".

P.S. Почитайте в этой связи вот это в теме: Бизнес-модели в IT производстве.

Odin_KG
Активист
Сообщения: 13
Зарегистрирован: 10 фев 2021, 01:52
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Odin_KG » 25 мар 2021, 23:19

Здравствуйте,
Так как я вроде как пообещал "держать в курсе", то пора бы мне что-то отписать на эту тему :-). В настоящий момент положение следующее: какое-то время я посвятил общим доработкам программы, а затем решил заняться портированием на Linux-ы. Как я и планировал, я начал с GTK. Но... мои попытки заставить его заработать под Windows оказались напрасными. Сборка "по инструкции" не проходила, так как была проблема в одном из сборочных скриптов. В интернете я нашел как её исправить, но это опять же не кончилось ничем, так как вылезла другая проблема. Кое-как удалось-таки собрать, т.е. я-таки получил динамические библиотеки DLL, но запуск примеров GTK просто приводил к ошибке. Я сейчас не помню детали, так как это было более месяца назад. Но помню, что на всё это "действо" у меня ушло примерно 3 дня, а результат был нулевой. Тогда я подумал, что GTK явно не для средних умов и решил попробовать wxWidgets, который без проблем встал на Windows и без проблем запускал свои примеры. Кроме того мне понравился стиль организации wxWidgets, который явно выдавал в авторе программиста, знакомого с программированием под Windows. В результате я стал заменять свои виртуальные функции взаимодействия с Windows на функции взаимодействия с wxWidgets. После этого мой продукт вполне себе заработал на Windows через wxWidgets. Там оказалось не всё гладко с Drag & Drop (размер курсоров ограничен 32х32, а у меня генерируемые программой курсоры куда крупнее), но я посчитал, что из-за этого искать другой вариант нецелесообразно.
Далее я приступил к самому важному - попытке запуска на виртуальной машине Fedora. Здесь сразу всплыли всякие нехорошие детали, которые, на мой взгляд, являются для wxWidgets сильно отрицательными. Например, вдруг выяснилось, что под Windows курсоры под Drag & Drop строятся из wxCursor, а на Linux-е в ту же функцию уже нужно передавать xwIcon. С моей точки зрения это невероятная бредятина при создании кроссплатформенных API - все такие моменты должны работать одинаково, иначе движок теряет смысл. Клавиатура под Fedora-ой тоже сначала не присылала никаких сообщений. Оказывается здесь клавиатуру блокируют сообщения от мыши и нужно в прямом смысле знать "волшебное слово", чтобы клавиатура заработала. Drag & Drop также работает не совсем так как на Windows, но копировать вроде можно, а ничего другого я уже не требовал. Что меня совсем поставило в тупик, так это функция, которая возвращает положение Рабочего стола, т.е. этот размер должен по уму учитывать, что на экране еще имеется Панель задач. Так вот... под Windows этот размер возвращается вполне правильно (правда, почему-то на один пиксель больше, чем нужно, но тут я могу отнять 1), а вот на Fedora возращается целиком размер экрана без учета Панели задач. Не найдя никакого решения в Интернете я пошел на форум пользователей wxWidgets и пытался там выяснить этот вопрос. В результате мне сообщили, что после проведенных экспериментов было выяснено, что на Ubuntu и Debian Панель задач учитывается правильно, а на Fedora - нет. Возможно, что тут дело в KDE, а не в OS, но факт в том, что был правильный результат в 2-х из 3-х случаев. Далее было замечено, что на Fedora-е вполне себе срабатывает функция Maximize(), которая абсолютно верно разворачивает окно на Рабочем столе, учитывая Панель задач. Именно с этим моментом я в настоящий момент связываю свою надежду на решение проблемы с извлечением этого размера. Но мне придется портить структуру программы, что мне не очень нравится. В результате я пока оставил этот wxWidgets в покое и опять занялся непосредственно программой. Через какое-то время сделаю еще попытку исправить оставшиеся проблемы с wxWidgets. А именно:
- Странновато работает Drag & Drop (нужно искать волшебные заклинания в Интернете)
- Пока нет универсального способа определить размер Рабочего стола
- Не исследован вопрос с входными параметрами приложения (параметры командной строки)
- Почему-то моё окно на Fedora не заводится мышкой за край экрана, т.е. просто упирается в край и дальше не идет. Есть у меня подозрение, что это связано с тем, что у меня окно создается без CAPTION и BORDER, т.е. формально OS может думать, что это окно нельзя двигать или менять его размер. Этот момент тоже может стать моим кошмаром, так как с ним нужно что-то делать, а что и как пока не ясно.

Odin_KG
Активист
Сообщения: 13
Зарегистрирован: 10 фев 2021, 01:52
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Odin_KG » 25 мар 2021, 23:55

Теперь немного лирики...
А вот это - глубочайшее заблуждение :-o ... - и это не из соображений "мне так кажется", а из моего собственного опыта практической разработки программных проектов, и не один год, и не в одной фирме, и фирмы эти, по большинству - аутсорсерные филиалы крупнейших мировых софтверных компаний-разработчиков.
Безусловно есть области разработки, где всё висит на Linux-ах, но это, скажем так, не пользовательский рынок, а рынок типа PRO. Меня сейчас эта область вообще не интересует, тем более что для попадания в этот сегмент рынка нужно уже иметь, скажем так "авторитет" продукта. На начальной стадии его не будет, и неизвестно появится ли он вообще. В любом случае, я вопрос с Linux-ами пытаюсь решить.
И чем же вы тогда объясните такой артефакт, что на рынке труда, из соображений спрос-предложение, предлагаемые зарплаты программистам-разработчикам (высокой квалификации, не junior студентов), при прочих равных требованиях, под Linux выше в 2, 3, 5 ... раз, чем под Windows?
Как раз это объясняется тем, что Linux - это специфическая область программирования, которая мало используется и, соответственно, мало людей, которые в ней разбираются. Конкуренция, соответственно, низкая и там где "очень надо", фирма может немного обрезать зарплату юристу и бухгалтеру и перераспредилить её в пользу программиста.
Одно известное, "крылатое" выражение звучит так: "Система UNIX придумана программистами и для программистов".
Вот именно, что она из области PRO, а пользователь в массе безграмотен и ему нужно ярко и примитивно. Поэтому с таким подходом "популярность в народе" Linux-у получить будет очень сложно. Да и основная проблема даже не в этом, а в огромном количестве версий этой OS, которые по сути делают одно и то же, но плодят несовместимость, что затрудняет создание программ.
Что-то мне подсказывает, что у вас ещё нет заметного опыта, бэкграунда работы в качестве наёмного разработчика в IT компаниях, специализирующихся, или хотя бы занимающихся при случае, разработкой программных проектов.
Вы совершенно правы, я вообще не стремлюсь работать в качестве наемного работника, иначе я бы давно им работал. Меня интересует создание только своих продуктов, а не чужих.
Это может нравиться или не нравиться, это может вызывать отвращение и осуждение ("кто на что учился" :lol: ) ... но "сермяжная правда жизни" состоит в том, что все выжившие и существующие в IT компании, фирмы и команды добровольцев (не важно по форме) руководствуются, в конечном итоге, именно принципом: "не важно, создавать ли софт или торговать носками, ибо цель - просто прибыль".
Всё, что вы говорите, справедливо для крупных компаний, но это абсолютно не работает, когда вас один/два человека, желающих что-то создать. Да, в случае внезапного коммерческого успеха, такие разработчики постепенно мутируют в торгашей, так как у них появится большой штат "обслуги". Даже если сказать точнее, крупные фирмы принадлежат акционерам, которым по большому счету вообще пофиг, чем эта фирма занимается - ему нужен рост акций, чтобы перепродать их. И это и есть торгаши. Я же говорил про такой редкий вариант, как собственное творчество. И здесь работают совершенно другие принципы. Пример для понятности: компания Blizzard сначала состояла из двух человек с уставным капиталом в 10 000 $, на эти деньги они наняли третьего. Но так как в этой компании у власти стояли инженеры, а не торгаши, то в результате они переиграли многих. То же самое было и с ID Software, где взлет обеспечила небольшая команда инженеров. Да, это не типичные случаи, но я не вижу другого варианта честно подняться на более высокий социальный уровень (все остальные варианты связаны либо с нарушением закона, либо с действиями, которые лично моей совести не очень приятны).

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 27 мар 2021, 00:56

Odin_KG писал(а):
25 мар 2021, 23:19
В результате мне сообщили, что после проведенных экспериментов было выяснено, что на Ubuntu и Debian Панель задач учитывается правильно, а на Fedora - нет. Возможно, что тут дело в KDE, а не в OS, но факт в том, что был правильный результат в 2-х из 3-х случаев. Далее было замечено, что на Fedora-е вполне себе срабатывает функция Maximize(), которая абсолютно верно разворачивает окно на Рабочем столе, учитывая Панель задач.
1. Не нужно использовать Fedora для экспериментов в разработке - Fedora это тестово-отладочная площадка для будущих версий RedHat, там всё неустойчиво и зыбко.
2. Используйте Debian или, ещё лучше, варианты Ubuntu - подавляющее большинство разработчиских проектов начинают здесь, а потом расширяются на другие дистрибутивы.
3. Я не случайно сказал про "варианты" Ubuntu, потому что чистую Ubuntu я бы не использовал - там совершенно чудовищный "попугаистый" DE GNOME и, самое главное, там по умолчанию графика Wayland вместо Xorg ... первейшее что я делаю если приходится работать с Ubuntu - забить Wayland и запустить вместо него Xorg.
4. Из "вариантов" Ubuntu я бы выбрал Mint или что-то из клонов Kubuntu, Xubuntu или более экзотические Mubuntu или Rubuntu :lol:

И самое главное:
5. Те артефакты в поведении графики, GUI, которые вас беспокоят - это на особенности тех или иных дистрибутивов Linux, а на 99% определяется используемым в дистрибутиве графическим окружением, DE, которое в любом дистрибутиве может быть выбрано и установлено любое!

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 27 мар 2021, 01:16

Odin_KG писал(а):
25 мар 2021, 23:55
Да и основная проблема даже не в этом, а в огромном количестве версий этой OS, которые по сути делают одно и то же, но плодят несовместимость, что затрудняет создание программ.
Нет никаких "версий этой OS", и уж тем более "в огромном количестве". :lol:

- Есть одна единственная операционная система Linux... - всё что касается её базового состава - ядро, утилиты GNU - абсолютно идентичны и контролируются (по составу) очень ограниченным кругом лиц, разработчиков;
- То что вы видите как "версии этой ОС" - это различия графических окружений, DE, которые не являются составной частью операционной системы Linux, это надстройка (в этом принципиальное отличие философии Linux от Windows, где GUI - "это наше фсё" :lol: );
- В Windows одно-единственное графическое окружение - оконная система Windows, а здесь разных DE на выбор может быть добрая сотня - выбирай на вкус;
- То что отличает дистрибутивы Linux (как просто разные сборки единой операционной системы) - это, главным образом и отличием, используемая в дистрибутиве пакетная система, предназначенная для тиражирования и инсталляций прикладных проектов.

Odin_KG
Активист
Сообщения: 13
Зарегистрирован: 10 фев 2021, 01:52
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Odin_KG » 28 мар 2021, 11:33

Если я правильно понимаю, то вы говорите, что ОС Linux всего одна, а Ubuntu, Debian и Fedora - это просто разные варианты сборки. Так ? ОК. Но меня реально беспокоит вопрос, связанный с возвратом неверных данных в разных вариациях этой сборки. Да, может быть это связано с KDE, но это не принципиально. А важно то, что я не могу проигнорировать эту проблему. Т.е. в результате я должен изворачиваться под эти "особенности" сборки ОС или дисплейного менеджера. Мне бы очень помог ваш совет на тему того, в какой конкретно сборке отладить приложение, чтобы с чистой совестью считать, что если у кого-то не работает, то это его проблема, так как у меня всё в порядке. Т.е. за что мне зацепиться, как за беспроигрышный вариант ? Перебирать и тестить все сборки у меня нет никакой возможности.
Мне не очень понравилась Ubuntu чисто потому, что там панель задач была слева и для всех приложений появлялось одно общее меню наверху. Fedora мне напротив понравилась тем, что в моем варианте она вполне похожа на Windows и мне с ней привычнее управляться.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 29 мар 2021, 10:14

Odin_KG писал(а):
28 мар 2021, 11:33
Если я правильно понимаю, то вы говорите, что ОС Linux всего одна, а Ubuntu, Debian и Fedora - это просто разные варианты сборки. Так ?
Да, именно так, и только так.
И я написал это не для того, чтобы попусту поспорить, а потому что понимание этого очень помогает правильно понимать (диагностировать) проблемы, которые возникают в работе, и, как следствие, понятно, потом их решать.

Более того, точно эта же система Linux работает в миллионах встраиваемых (embedded) экземпляров, в сборках во всех сетевых роутерах, комутаторах, TV-тюнерах ... и всех-всех-всех "электрочайниках" со встраиваемой умной электроникой.

P.S. Ведь смешно (и страшно!) представить Windows встроенный в сетевой коммутатор ... или, тем более, в управление ответственной (crirical mission) систему, типа энергоблока промышленного или что-то подобное?
Вы бы купили билет на самолёт, про который сообщили бы, что ним будет управлять Windows? :lol:

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 29 мар 2021, 10:27

Odin_KG писал(а):
28 мар 2021, 11:33
Мне бы очень помог ваш совет на тему того, в какой конкретно сборке отладить приложение, чтобы с чистой совестью считать, что если у кого-то не работает, то это его проблема, так как у меня всё в порядке. Т.е. за что мне зацепиться, как за беспроигрышный вариант ? Перебирать и тестить все сборки у меня нет никакой возможности.
На сегодня получилось так, что подавляющее большинство (промышленной) разработки проектов "третьей стороны" (т.е. не самого Lnux, а проектов под Linux) стали вести в Debian-based дистрибутивах, а ещё точнее - в Ubuntu-based.

P.S. Это никак не потому что эти дистрибутивы лучше других, а только потому, что в стандартных репозиториях этих дистрибутивов накоплены (насобраны) огромное множество опенсорсных проектов, а значит, с большой вероятностью, там найдётся всё (из одного источника! что очень важно) из инструментария, который может понадобиться разработчику.

Т.е.:
- Debian ... но сильно не советовал, за счёт их "борьбы за соблюдения девственности" там постоянно чего-то не хватает в стандартных дистрибутивах...
- Ubuntu ... ненавижу! :lol: (но это субъективное :lol: ) ... с их Wayland вместо традиционного Xorg (это расчёт на всяких "игрунов", геймеров) + их GNOM попугаистой расцветки и поведения :shock:
- производные Ubuntu, *buntu: Kubuntu, Xubuntu, Mubuntu, Rubuntu и т.д. и т.п. - это уж лучше ... в минусах - очень ограниченные их сообщества, и по числу и по умениям :lol: , это на предмет совета у кого-то попросить;
- Mint - это самое то, это дружественный и традиционный вариант Ubuntu с графическим окружением (DE) Cinnamon;

Путём перепробывания практически всех существующих дистрибутивов, в разработческой работе, на протяжении 20 лет - я на сегодня остановился на Mint 20.1 + Cinnamon.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: Кроссплатформенное программирование под Unix-ы

Непрочитанное сообщение Olej » 29 мар 2021, 10:35

Odin_KG писал(а):
28 мар 2021, 11:33
Мне не очень понравилась Ubuntu чисто потому, что там панель задач была слева и для всех приложений появлялось одно общее меню наверху. Fedora мне напротив понравилась тем, что в моем варианте она вполне похожа на Windows и мне с ней привычнее управляться.
Всё то как выглядит графическая часть любого дистрибутива Linux:
1). не зависит от самого дистрибутива (от слова "вообще" :lol: ), а зависит только и исключительно от того, какое графическое окружение в нём сейчас установлено;
2). в любом дистрибутиве может быть установлено любое DE из более чем сотни существующих (см. Графические окружения в дистрибутивах) ... только с этим придётся немного повозиться...
3). на одном компьютере в одном и том же дистрибутиве может быть установлено хоть десяток разных DE, выбор какое из них будет сейчас работать производится при загрузке системы (или смене логина пользователя);
4). внешний вид любого из DE очень сильно, радикально настраивается ... так что DE можно перенастроить до неузнаваемости.

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей