Хобби: Десктопное UI - говно, что делать?
Feb. 3rd, 2011 04:20 pmДесктопные UI библиотеки {как будто} застыли в начале 90-х: картиночки в контрольчиках, автоматический ресайз, анимация - ничего этого или нету, или оно через жопу. И неудобно, долго писать. И в каждой новой библиотеке - на новый лад. И пара-тройка мегабайт для программы Hello, World! - это уже как бы и немного. Что делать? Есть ли выход? Выход есть, и он в вебовских технологиях на десктопе. Скорость разработки резко повышается, качество результата - тоже. Есть ли минусы? Ну, вроде нету. Я не вижу. Вижу одни плюсы.
Вебовский мир UI по сравнению с десктопным - мечта, волшебный сон. Во-первых, он ошеломляюще массовый, всего больше в десятки раз, если не в сотни - сравните число книг по веб-дизайну и по разработке UI на .Net или Java, или число тулсов по причёсыванию .html и .rc файлов. За счет массовости всё лучше отлизано, многократнее проверено, и понятнее описано. Во-вторых, HTML много разнообразнее и мощнее любой десктопной библиотеки - всё можно нарисовать картинками и оживить JavaScript-ом, всё можно засунуть внуть всего. В-третьих, писать HTML и JS руками прямо на живой программе, перегружая страничку по три раза в минуну для микро-тестирования - очень, очень быстрый способ разработки. В-четвертых - вебовский UI максимально кроссплатформен и тулсонезависим. Браузеров много, рендерится всё достаточно одинаково везде (см. ниже) - если вам надоел MS, запускайте те же исходники на iPad-е. Более того, можно одну и ту же программу с минимальными переделками запускать как десктопный исполнимый файл, и как интернетовский сайт.
Как достигается сей парадиз? Очень просто. Существует97 способов половых сношений как минимум 4 массово используемые технологии для. Почему четыре? По числу минимально живых браузеров плюс флэш. Надо взять любимый вашими потенциальными пользователями браузер, спрятать его внутри вашей программы, как-то упаковать туда же HTML/JS/etc., и всё.
IE состоит внутри из набора хорошо документированных COM-объектов, которые фактически являются частью Win32 API, есть в любой виндовой инсталляции, и массово используются в UI самих Виндов начиная с Search dialog box в Windows 2000 и всё чаще и чаще в каждой следующей версии. Гуглить надо IWebBrowser, самый простой способ попробовать - в MS VisualStudio создать MFC Application, выбрать Dialog Based и прочекать HTML Dialog. Всё. Оно создаст программу (кошмарную, но об этом позже), состоящую из живущего в ресурсах HTML и из одного окна класса CDHtmlDialog, которое в свою очередь не содержит ничего, кроме объекта IWebBrowser.
Крутость использования IE заключается в том, что он встроен в Винды и всегда везде есть. Соответственно суппорт просто почти как у голой Win32 программы, нету вечной борьбы за работоспособный рантайм, можно упихать программу с весёленьким UI в 100K - это полный размер всей инсталляции. Кроме того IE всё ещё самый популярный браузер, и если лень возиться с мультибраузерностью но нужно вываливать HTML в Интернет - быть IE-специфичным меньшее из зол.
Продолжение тут
Вебовский мир UI по сравнению с десктопным - мечта, волшебный сон. Во-первых, он ошеломляюще массовый, всего больше в десятки раз, если не в сотни - сравните число книг по веб-дизайну и по разработке UI на .Net или Java, или число тулсов по причёсыванию .html и .rc файлов. За счет массовости всё лучше отлизано, многократнее проверено, и понятнее описано. Во-вторых, HTML много разнообразнее и мощнее любой десктопной библиотеки - всё можно нарисовать картинками и оживить JavaScript-ом, всё можно засунуть внуть всего. В-третьих, писать HTML и JS руками прямо на живой программе, перегружая страничку по три раза в минуну для микро-тестирования - очень, очень быстрый способ разработки. В-четвертых - вебовский UI максимально кроссплатформен и тулсонезависим. Браузеров много, рендерится всё достаточно одинаково везде (см. ниже) - если вам надоел MS, запускайте те же исходники на iPad-е. Более того, можно одну и ту же программу с минимальными переделками запускать как десктопный исполнимый файл, и как интернетовский сайт.
Как достигается сей парадиз? Очень просто. Существует
IE состоит внутри из набора хорошо документированных COM-объектов, которые фактически являются частью Win32 API, есть в любой виндовой инсталляции, и массово используются в UI самих Виндов начиная с Search dialog box в Windows 2000 и всё чаще и чаще в каждой следующей версии. Гуглить надо IWebBrowser, самый простой способ попробовать - в MS VisualStudio создать MFC Application, выбрать Dialog Based и прочекать HTML Dialog. Всё. Оно создаст программу (кошмарную, но об этом позже), состоящую из живущего в ресурсах HTML и из одного окна класса CDHtmlDialog, которое в свою очередь не содержит ничего, кроме объекта IWebBrowser.
Крутость использования IE заключается в том, что он встроен в Винды и всегда везде есть. Соответственно суппорт просто почти как у голой Win32 программы, нету вечной борьбы за работоспособный рантайм, можно упихать программу с весёленьким UI в 100K - это полный размер всей инсталляции. Кроме того IE всё ещё самый популярный браузер, и если лень возиться с мультибраузерностью но нужно вываливать HTML в Интернет - быть IE-специфичным меньшее из зол.
Продолжение тут
no subject
Date: 2011-02-04 07:12 pm (UTC)Я попробовал проверить: прочекал HTML Dialog и запустил результат. Получилось вот такое:
По мне так есть некоторые отличия.
> Я не знаю, что такое Swing. В нём это тоже пять строчек?
Я вот сделал сейчас "Сохранить веб-страницу, полностью" для пустой папки в gmail'е. Получилось 1.6 мегабайт, из них как минимум мегабайт какого-то беспробельного скриптового говна.
no subject
Date: 2011-02-04 10:59 pm (UTC)> Я попробовал проверить: прочекал HTML Dialog и запустил результат.
> По мне так есть некоторые отличия.
"если не хочешь" != "автоматически"
Вы MSThemeCompatible в хидер прописали?
> Я не знаю, что такое Swing. В нём это тоже пять строчек?
>> Я вот сделал сейчас "Сохранить веб-страницу, полностью" для пустой папки в gmail'е. Получилось 1.6 мегабайт, из них как минимум мегабайт какого-то беспробельного скриптового говна.
[Терпеливо]: Какие же выводы вы делаете из это удивительного факта?
no subject
Date: 2011-02-05 07:13 pm (UTC)Ну вот сейчас прописал. Кнопки округлились, но выделение и меню по правой кнопке - остались.
> Какие же выводы вы делаете из это удивительного факта?
Да в общем-то простые: описание приличного интерфейса хоть на плюсах, хоть на javascript'е занимает довольно много места. И как только возникают нетиповые задачи вроде "нарисовать вот такой вот особенный прогрессбар в левом верхнем углу", нижележащий браузер перестаёт помогать и даже, о ужас, может начать мешать. Как, впрочем, и win32'шные контролы в некоторых случаях.
Ну, в общем, HTML-движок - это, увы, не серебряная пуля для создания интерфейсов.