четверг, 26 августа 2010 г.

Почти как настоящий...

Думал я тут о разработке кросс-платформенных приложений.
Хотя, "думал" - громкое слово. Нужно сделать так, чтоб приложение работало на *NIX и Windows. Нужно - значит будет!
static_cast<Linix>(Windows)
и даже
static_cast<FreeBSD>(Windows)

Да и, собственно говоря, проблем особых нет. Те утилитки, которые я "программирую" - вещи специфические, и на 99% - консольные приложения. Но в пресловутом "мире современных информационных технологий" консольное приложение - и не приложение вовсе. Так, робот, тулза для гиков. В общем - сугубо для частного использования в узком кругу задач. А чуть в паблик выходишь - так уже без GUI  и никуда.

И что же нам предлагает "современный мир" в качестве решения задачи кросплатформенного GUI? Да не так и много...

.NET - ну есть, конечно, Mono. Но и к самому .NET'у я настороженно отношусь, а Mono'вские интерфейсы (графические) - это вообще что-то с чем-то. Прошлый век по сути. Моё эстетическоре восприятие действительности - протестует :-)
QT. O да! Признанные мэтры! Не поспоришь. И красиво отрисованных приложений я видел не мало. Но, каждая попытка поставить QT и на нем  что-нить наваять, не доходила даже до компиляции пресловутого "Hello, world". Тяжело, массивно, навороченно. И очень напоминает программирование под Windows времен середины 90х - сплошное WinAPI (в смысле стилистика программ очень похожа). Спорить не возьмусь, QT я не знаю - не осилил.
wxWidgets. Этим я даже пользовался. Не одно "приложение" написано. Но вот как-то визуальная часть меня напрягает. Выглядит это все - довольно уныло. Тоже попахивает прошлым веком. А попытка натянуть туда "скины" или хоть как-то раскрасить картинку приводит к пресловутому "ручному" рисованию с обработкой всех подряд сообщений графической подсистемы. Короче - опять "закат солнца вручную".
WEB-based GUI. Модно, современно, и вообще понтово. И красиво, однако. Взять, например, jQuery-UI - шикарнейшие интефейсы без особых проблем. И кастомизация на уровне. Даже проблемы совместимости браузеров практически решены. Одно плохо - непонятно что со смысловой нагрузкой делать? Таскать за собой web-сервер, на котором крутятся CGI - как-то не логично. А в контексте браузера много не наработаешь - доступ к локальной системе порезан из соображений безопасности. Не затачиваться же, в самом деле, под эксплуатапцию уязвимостей браузеров? :)
А  вот еще XUL есть. Ну почти как настоящий - всго-то надо xulrunner или firefox - и приложение с доступом к локальным ресурсам готово. Однако, опять грабли с внешним видом. Долго изучал документацию в разделе "Skins" но не впечатлился доступными возможностями. Цвет элементов - и тот не всегда поменять можно. Грустно...

Однако, как подсказал мне один официант - "Импровизируйте, и все получится". XUL содержит очень полезный элемент - browser (ну или iframe - что в данном случае одно и тоже). Делаем окно, в него browser развернутый на всю площадь - и voila! Рисуем там все что душе угодно с помощью того же jQuery. А доступ к локальным ресурсам обеспечивает код на JavaScript, который выполняется в контексте chrome://, предоставленном xulrunner'ом. Собственно, есть доступ к sqlite DB, локальным файлам и каталогам и, даже, запуск приложений.

Последнее - запросто решает большинство вопросов. Ведь если что-то нельзя сделать из JavaScript, то это можно сделать из нативного приложения. Которому-то, как раз, GUI уже не нужен и даже вреден.

Вот и получается - GUI на базе веб технологий для конфигурирования системы и отображения результатов, нативное приложение для выполнения осмысленных действий, и XUL со своим XPCOM'ом для связывания всего этого в единое целое. Простенько и со вкусом. Да и накладные расходы минимальны.

2 комментария:

  1. Harrah's Casino Reno - Mapyro
    Harrah's Reno Casino 양주 출장안마 & Hotel in Reno 삼척 출장샵 is a casino in downtown Reno, Nevada and is open daily 거제 출장샵 24 hours. The casino's 2,200 부산광역 출장마사지 room luxury hotel  Rating: 4.5 · ‎1,393 reviews · ‎Price range: $ 양주 출장안마

    ОтветитьУдалить
  2. At the time of our evaluate, bitcoin and other cryptocurrencies were not available at Jackpot City. Other sites embody Gaming Club, Lucky Nugget, Euro Palace, Royal 바카라사이트 Vegas, Ruby Fortune, 7Sultans and Spin Casino. Ultimately, all this effort implies that JackpotCity on line casino Canada considered one of the|is amongst the|is probably considered one of the} high sites today.

    ОтветитьУдалить