Здравствуйте, Евгений Музыченко, Вы писали:
S>>Через API, но не используя стандартную оконную систему а отрисовывая все с нуля. ЕМ>Чем это отличается от owner/custom draw?
Тем что потратили тысячи человеко-часов и сотни тыс. у.е., чтобы все было удобно и работало.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Чем это отличается от owner/custom draw?
Маленький совет:
1) Сделай пару простейших оконных примеров на Qt и WPF. Таких, чтобы в основном окне было еще несколько контролов
(простых оконных объектов — напимер combo-box; edit-box; list-box).
2) Позапускай эти незамысловатые примеры и просмотри их и их внутренние окошечки (вышеуказанные контролы)
программкой SPYXX.EXE (раньше эта графическая утилита поставлялась со студией). Думаю, что найти её несложно.
3) Сравни с тем, что ты бы увидел, если бы сделал вышеуказанные примеры на WinAPI и MFC.
Здравствуйте, Shmj, Вы писали:
S>Тем что потратили тысячи человеко-часов и сотни тыс. у.е., чтобы все было удобно и работало.
+100500
И чтобы пляски с бубнами при разработках на MFC и WinAPI были незнакомы молодому поколению разработчиков ПО
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Да хоть через HWND/DC, хоть через desktop DC, хоть через OpenGL — это все WinAPI.
Как тогда работают графические утилиты на Unix-подобных OS?
А ведь там никакого WinAPI нет и никогда не было...
ЕМ>Десятки элементов — это "сложные окна"? Я всегда думал, что сложные начинаются с нескольких сотен (с которыми GDI вполне себе справляется). А какие революционные технологии отрисовки и/или обрезки применены в Qt, которых нет в GDI?
ИМХО здесь всё уже упрётся не в возможности техники, а в восприятие этой картинки человеком (пользователем).
P.S. Лично я вижу, что в последние годы разработчики стараются наоборот — упростить UI.
И если лет 20 назад окно с нагромождением десятков контролов было вполне обычным делом, то теперь это выглядит нонсенсом.
Здравствуйте, rude-531, Вы писали: R5>PS: вопрос в первую очередь касается работы в РФ (как в Москве, так и в регионах), но было бы интересно услышать и о том, что у них там "в заграницах"...
ух, кошмар. это было неактуально уже когда я универ заончил 15 лет назад
Здравствуйте, CreatorCray, Вы писали:
N>>GDI может быть невероятно медленным на сложных окнах, потому что будет отрисовывать десятки контролов. CC>GDI точно так же HW accelerated. CC>И если не надо рисовать всякие прозрачности то GDI фигачит весьма достойно.
Совсем не также. GDI со своим BitBlt даже картинку нормально показать не может, не говоря уже о выводе видео. Я лично в системе видеонаблюдения делал многооконный интерфейс и простые контролы (в том числе с полупрозрачностью и градиентами) сначала на DirectDraw, потом на Direct3D, а потом Qt стала LGPL и мы весть этот кошмар и диалоги на WinAPI переписали на Qt. Тормозов не прибавилось, зато код стал гибким и компактным. У меня большой опыт использования WinAPI с ownerdraw в том числе: делали кастомные listviw и treeview, например.
Можно посмотреть на страндартные примеры интерфейса в Qt, посмотреть что он может из коробки и даже вопросов не возникнет после этого: также быстр GDI или нет.
Здравствуйте, Евгений Музыченко, Вы писали:
N>>У этих контролов нет HWND. Qt может отрисовывать их через OpenGL, задавая любое поведение. ЕМ>Да хоть через HWND/DC, хоть через desktop DC, хоть через OpenGL — это все WinAPI.
Ну, нет конечно. Где-то там глубоко одно окно создано через WinAPI, а остальные контролы уже не имеют своего DC, HWND и рисуются не в 2D, а в 3D.
N>>GDI может быть невероятно медленным на сложных окнах, потому что будет отрисовывать десятки контролов. ЕМ>Десятки элементов — это "сложные окна"? Я всегда думал, что сложные начинаются с нескольких сотен (с которыми GDI вполне себе справляется). А какие революционные технологии отрисовки и/или обрезки применены в Qt, которых нет в GDI?
3D vs 2D. Попробуй вывести в GDI картинку в несколько мегапикселей и на мышку сделать зум. И на Qt тоже самое. Когда увидишь разницу, все вопросы отпадут.
Здравствуйте, AlexGin, Вы писали:
AG>1) Сделай пару простейших оконных примеров на Qt и WPF. Таких, чтобы в основном окне было еще несколько контролов AG>(простых оконных объектов — напимер combo-box; edit-box; list-box). AG>2) Позапускай эти незамысловатые примеры и просмотри их и их внутренние окошечки (вышеуказанные контролы) AG>программкой SPYXX.EXE (раньше эта графическая утилита поставлялась со студией). Думаю, что найти её несложно. AG>3) Сравни с тем, что ты бы увидел, если бы сделал вышеуказанные примеры на WinAPI и MFC.
Зачем мне все это делать/пробовать? Я окна с несколькими десятками подобных элементов делал на голом WinAPI еще в конце 90-х, и перерисовывались они по десятку раз в секунду и чаще, ибо обслуживали звуковые потоки в реальном времени. И много других подобных программ регулярно использовал, когда Qt, WPF даже в проекте не было, а DirectDraw, OpenGL и прочее считалось экзотикой. И все прекрасно крутилось на самом убогом тогдашнем железе, можно было зацепить окно мышкой, и елозить им по экрану в режиме полной перерисовки, а не только рамки.
А вот когда попробовал делать то же самое на MFC — сразу заметил сильные тормоза даже на простых конфигурациях. Вот там приходилось извращаться, чтобы не затыкалось совсем уж неприлично.
Здравствуйте, AlexGin, Вы писали:
ЕМ>>Да хоть через HWND/DC, хоть через desktop DC, хоть через OpenGL — это все WinAPI.
AG>Как тогда работают графические утилиты на Unix-подобных OS? AG>А ведь там никакого WinAPI нет и никогда не было...
Ну дык, в Unix-подобных свои API. Я к тому, что под виндой все новомодные GUI в итоге все равно работают через WinAPI.
AG>P.S. Лично я вижу, что в последние годы разработчики стараются наоборот — упростить UI. AG>И если лет 20 назад окно с нагромождением десятков контролов было вполне обычным делом, то теперь это выглядит нонсенсом.
Все зависит от задач, выполняемых софтом. Запоминать десятки клавиатурных комбинаций и/или жестов мышью удобно далеко не всем.
Здравствуйте, Nuzhny, Вы писали:
N>Ну, нет конечно. Где-то там глубоко одно окно создано через WinAPI, а остальные контролы уже не имеют своего DC, HWND и рисуются не в 2D, а в 3D.
И куда при этом девается WinAPI? Или Вы относите к WinAPI только функции, принимающие HWND/HDC?
N>Попробуй вывести в GDI картинку в несколько мегапикселей и на мышку сделать зум. И на Qt тоже самое.
С каких пор эта операция часто выполняемой, и оттого особо критичной к быстродействию?
N>P.S. И будь мужиком, поменяй уже фон на кнопке!
Я давным-давно сделал рамку, о чем тогда же отписался.
Здравствуйте, Nuzhny, Вы писали:
N>GDI со своим BitBlt даже картинку нормально показать не может
Показать то он как раз может и весьма быстро, но тебе ж надо не "показать" а сделать scale с фильтрацией.
GDI, в отличие от GDI+, как раз весьма быстрый.
N> не говоря уже о выводе видео.
Для этого давно есть оверлеи. Гонять каждый кадр через память банально тупо дорого.
N>Можно посмотреть на страндартные примеры интерфейса в Qt, посмотреть что он может из коробки и даже вопросов не возникнет после этого: также быстр GDI или нет.
У меня есть свой UI написанный для финансовых целей, где 99% всего рисуется через TextOutW и BitBlt + в паре мест есть Ellipse, MoveToEx/LineTo.
И perf замеров я в процессе этой развлекухи делал дофига, даже по результатам местных срачей был проект сравнения с Direct2D, который для одной и той же сцены по времени отрисовки заметно слил.
N>контролы (в том числе с полупрозрачностью и градиентами)
Прозрачностей, градиентов и видео там нет, да. Одни скучные финансы, просто плотненко кучи цифр и графиков.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Зачем мне все это делать/пробовать? Я окна с несколькими десятками подобных элементов делал на голом WinAPI еще в конце 90-х, и перерисовывались они по десятку раз в секунду и чаще, ибо обслуживали звуковые потоки в реальном времени.
Я тоже начинал оконную разработку с WinAPI в 1997-98 годах.
С тех пор капитально распробовал MFC, BorlandCBuilder, WinForms, WPF, Qt.
Могу только сказать, что из всего данного ассортимента, WinAPI окажется наиболее убогим
Я в последние три года остановил свой выбор на WPF (для C# .NET проектов) и Qt C++ (native applications).
Насчёт перерисовывания окон — для чего нужна такая бешенная скорость перерисовки?
Глаз человека это не отследит всё равно. ИМХО даже не каждый монитор корректно воспроизведёт. Так для кого это?
ЕМ>И много других подобных программ регулярно использовал, когда Qt, WPF даже в проекте не было, а DirectDraw, OpenGL и прочее считалось экзотикой. И все прекрасно крутилось на самом убогом тогдашнем железе, можно было зацепить окно мышкой, и елозить им по экрану в режиме полной перерисовки, а не только рамки.
Qt просто набрало популярность в последние годы.
Это связано прежде всего с таким замечательным свойством Qt, как кроссплатформенность.
Вот WinForms и WPF — соглашусь, тогда не было.
ЕМ>А вот когда попробовал делать то же самое на MFC — сразу заметил сильные тормоза даже на простых конфигурациях. Вот там приходилось извращаться, чтобы не затыкалось совсем уж неприлично.
P.S. Зная WinAPI и MFC — разработчик софта просто должен распробовать Qt
Я начал заниматься на Qt более трёх лет назад, тогда для меня раскрылись новые интересные аспекты.
Здравствуйте, __kot2, Вы писали:
__>Здравствуйте, rude-531, Вы писали: R5>>PS: вопрос в первую очередь касается работы в РФ (как в Москве, так и в регионах), но было бы интересно услышать и о том, что у них там "в заграницах"... __>ух, кошмар. это было неактуально уже когда я универ заончил 15 лет назад
а что сейчас по вашему сейчас актуально в США (ML скажем 10 вакансий в неделю в MA, зачастую меньше, с учетом что здесь несколько топ университетов это не о чем)
Здравствуйте, sergey2b, Вы писали: S>а что сейчас по вашему сейчас актуально в США (ML скажем 10 вакансий в неделю в MA, зачастую меньше, с учетом что здесь несколько топ университетов это не о чем)
русских часто берут на С++, потому что больше никто его не знает
тут я бы сказал скорее нужен правильный менталитет, чем знание каких-то фреймворков. русские известны тем, что любят ходить и громко ругаться, в общем-то вполне по делу, типа
— почему этот дебил Шринивас опять поломал продакшен? кто этому мудаку вообще дал доступ?
а это дико тут.
а если уметь общаться тактично, есть опыт проектирования с нуля на нескольких языках, опыт контроля качества и так далее, знание чего-то более современного типа питона, ml, может быть опыт работы в каких-то областях типа секьюрити, то, в общем, работы полно
ну и по резюме хорошо, чтобы было видно чем человек вообще хочет по жизни заниматься
Здравствуйте, __kot2, Вы писали:
__>Здравствуйте, sergey2b, Вы писали: S>>а что сейчас по вашему сейчас актуально в США (ML скажем 10 вакансий в неделю в MA, зачастую меньше, с учетом что здесь несколько топ университетов это не о чем) __>русских часто берут на С++, потому что больше никто его не знает __>тут я бы сказал скорее нужен правильный менталитет, чем знание каких-то фреймворков. русские известны тем, что любят ходить и громко ругаться, а это дико тут. а если уметь общаться тактично, есть опыт проектирования с нуля на нескольких языках, опыт контроля качества и так далее, знание чего-то более современного типа питона, ml, может быть опыт работы в каких-то областях типа секьюрити, то, в общем, работы полно __>ну и по резюме хорошо, чтобы было видно чем человек вообще хочет по жизни заниматься
я получил GC и уволился с работы тк был контрактором (и после 2.5 года вообще без отпуска у меня крыша потекла)
мне 47 лет,
последнии 8 лет в США писал на Си и С++
сейчас происходи, что то странное меня не приглашают на очное собеседования после тел интервью
я сам себе это объясняю, что последнии годы занимался всякой херью, мной затыкали дыры и получился программист не очем
до перезда я занимался секьюрети с некоторыми успехами на то время
денег у меня на 2 месяца жиизни
и я мооглу вложить это время либо
восстановить зания в секюрети
углубленно изучить программирование сетевых вещей
написание драйверов под linux
как последний шанс стать java junior, тк в MA на одну вакснияю реалльно больше 50 желающих и компании перебирают кандидатов
Здравствуйте, sergey2b, Вы писали: S>я получил GC и уволился с работы тк был контрактором (и после 2.5 года вообще без отпуска у меня крыша потекла) S>мне 47 лет, S>последнии 8 лет в США писал на Си и С++ S>сейчас происходи, что то странное меня не приглашают на очное собеседования после тел интервью S>я сам себе это объясняю, что последнии годы занимался всякой херью, мной затыкали дыры и получился программист не очем
однажды, когда мы собеседовали похожего чувака, после разговора мой куда более опытный коллега, сказал: к такому возрасту и с таким опытом у человека должны быть какие-то уже существенные достижения. если их нет, то он из тех, кто приходит в офис греться у батареи и досиживать до пенсии.
чисто теоретически могу сказать, что интерес к жизни, наверное, может показать какой-то свой собственный проект
S>денег у меня на 2 месяца жиизни
мало времени. я бы просто подавался тогда везде и всюду. удаленная работа или так, контракт, без разницы где, может быть имеет смысл сунуться в более крупные места типа Нью-Йорка
S>и я мооглу вложить это время либо S>восстановить зания в секюрети S>углубленно изучить программирование сетевых вещей S>написание драйверов под linux
люди обычно не читают резюме, я не думаю, что на это что-то повлияет, если даже на очку попать не получается
S>как последний шанс стать java junior, тк в MA на одну вакснияю реалльно больше 50 желающих и компании перебирают кандидатов
навряд ли. джуниор это в первую очередь человек без своего мнения, а в 47 лет это сложно
Здравствуйте, __kot2, Вы писали:
__>Здравствуйте, sergey2b, Вы писали: S>>я получил GC и уволился с работы тк был контрактором (и после 2.5 года вообще без отпуска у меня крыша потекла) S>>мне 47 лет, S>>последнии 8 лет в США писал на Си и С++ S>>сейчас происходи, что то странное меня не приглашают на очное собеседования после тел интервью S>>я сам себе это объясняю, что последнии годы занимался всякой херью, мной затыкали дыры и получился программист не очем __>однажды, когда мы собеседовали похожего чувака, после разговора мой куда более опытный коллега, сказал: к такому возрасту и с таким опытом у человека должны быть какие-то уже существенные достижения. если их нет, то он из тех, кто приходит в офис греться у батареи и досиживать до пенсии.
сушественные достижения есть, но они мало инетерестны текущем работодателям, тк
технология умерла
я пили последнии 2.5 года внутренний проект который кроме данной компании не кому не нужен
__>чисто теоретически могу сказать, что интерес к жизни, наверное, может показать какой-то свой собственный проект
свои проекты есть, я их показываю
но они все были сделанны до 13 года
S>>денег у меня на 2 месяца жиизни __>мало времени. я бы просто подавался тогда везде и всюду. удаленная работа или так, контракт, без разницы где, может быть имеет смысл сунуться в более крупные места типа Нью-Йорка
спасибо за мнение
но по факту — я уволился потому, что понял что мной как контрактором затыкают дыры, и этто не приносит денег и знания
а идти на любую работу сейчас, это сново попасть в такую же дыру, где после 10 часового дня уже особо нового не выучиш
Здравствуйте, sergey2b, Вы писали: S>сушественные достижения есть, но они мало инетерестны текущем работодателям, тк S>технология умерла
не ну если человек например скажет, что он много когда-то сделал для оберона, то почему бы его не взять на движок жабоскрипта?
взяли же того же разрабочика Эльбруса в Интел и неплохо так взяли.
главное, что человеку есть что рассказать о себе
S>я пили последнии 2.5 года внутренний проект который кроме данной компании не кому не нужен
у меня в микрософте так же было. но мое достижение — что я пинал огромную толпу индусов, заставляя их писать вменяемый код и мы построили-таки систему контроля качества над говнокодерами. это огромное достижение было. достижения они разные бывают.
S>свои проекты есть, я их показываю S>но они все были сделанны до 13 года
я в одно время прямо ссылку на свой код на гитхабе кинул в профиль linkedin. не знаю, привлекло это кого-то или отпугнуло, но я лично по коду могу о человеке гораздо больше сделать выводов, чем о любом его собственном рассказе о себе
S>спасибо за мнение S>но по факту — я уволился потому, что понял что мной как контрактором затыкают дыры, и этто не приносит денег и знания S>а идти на любую работу сейчас, это сново попасть в такую же дыру, где после 10 часового дня уже особо нового не выучиш
не факт. самый удачный вариант — это рнайти небольшую компанию, которая никого кроме совсем тупых нанять не может и убедить их, что у вас и опыт есть и желание какого-то саморазвития. ну тут наверное надо будет показать опыт руководства кем-то
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>И куда при этом девается WinAPI? Или Вы относите к WinAPI только функции, принимающие HWND/HDC?
Мы сейчас конкретно про GUI разговаривает, поэтому — да.
N>>Попробуй вывести в GDI картинку в несколько мегапикселей и на мышку сделать зум. И на Qt тоже самое. ЕМ>С каких пор эта операция часто выполняемой, и оттого особо критичной к быстродействию?
Я не говорю, что она часто выполнима. Например, сделать просмотрщик фотографий. Суть в том, что при зуме мышью мало того, что будут тормоза, так ещё и картинка отстойно выглядеть.