Визуальный программинг: конструируем приложения с помощью hiasm

Пишем тестер веб-сервера

Мы возьмем самый стандартный пакет под Windows (на сайте hiasm.com сейчас доступна версия 4.4) и попробуем написать упрощенный аналог утилиты ab из пакета приложений apache-tools. Основная задача этой утилиты – отправка запросов веб-серверу на получение данных по указанному URL и измерение времени, которое потребовалось на их выполнение. В примере ниже мы будем отправлять по 100 последовательных запросов на адрес https://ya.ru и измерять время, которое на это ушло.

Итак, первый этап. Для начала соберем простую схему, которая по нажатию кнопки на форме отправит только один запрос и выведет его содержимое на экран. Для этого откроем HiAsm и создадим новый проект: «Файл –> Новый…», далее выбираем «Windows –> Приложение Windows». После нажатия «ОК» переходим в режим редактирования формы «Вид –> Редактор формы». Вытаскиваем на форму с вкладки «Интерфейс» элементы «Кнопка» и «Редактор текста», после чего с помощью редактора форм размещаем их так, как нам это удобно. Теперь нам нужен элемент, который умеет соединяться с удаленным сервером по протоколу TCP и отправлять ему некоторые данные. Для этого вытаскиваем с вкладки «Интернет» элемент с именем «TCP-клиент». В его свойствах указываем стандартный порт для HTTP-сервера – 80, и IP адрес ya.ru – 93.158.134.3.

Теперь вытащим элемент, который умеет хранить многострочный текст. Он находится на вкладке «Строки» и называется «Список строк». В его свойство Strings запишем текст HTTP-запроса для получения содержимого корня сайта:

GET / HTTP/1.1 Host: ya.ru Connection: close <�пустая строка> <�пустая строка>

Обрати внимание на то, что в конце запроса должны стоять две пустые строки. Теперь осталось соединить все эти элементы так, как показано на рисунке

В схеме был также использован элемент «Разветвитель (Hub)», который находится на вкладке «Инструменты» и занимается только тем, что последовательно вызывает два события справа при вызове метода слева. Теперь запускаем программу и убеждаемся, что после нажатия кнопки нам приходит ответ от сервера, который должен начинаться со строки «HTTP/1.1 200 OK».

Теперь попробуем понять, что и как у нас происходит в схеме после нажатия кнопки на форме:

  • элемент «Кнопка» генерирует внутреннее событие onClick (единственная точка на его правой стороне);
  • это событие вызывает метод doEvent1 элемента «Разветвитель»;
  • элемент «Разветвитель», как уже было написано выше, последовательно вызывает события onEvent1 и onEvent2;
  • первым происходит событие onEvent1, которое вызывает метод doOpen элемента «TCP-клиент». Именно в этот момент происходит соединение с сервером ya.ru по 80 порту;
  • после того, как соединение установлено, и управление вернулось в программу, происходит следующее событие хаба onEvent2;
  • оно, в свою очередь, вызывает метод doSend элемента «TCP-клиент». Этот метод в процессе своей работы задействует верхнюю точку Data, с которой получает данные для отправки на сервер. В нашем примере эта точка соединена с нижней точкой Text элемента «Список строк», которая, в свою очередь, возвращает текст, содержащийся в списке, то есть заголовок запроса к серверу;
  • и, наконец, после отправки запроса элемент «TCP-клиент» в асинхронном режиме принимает ответ сервера и выдает его в поток на правую точку onRead
  • точка onRead соединена с точкой doAdd элемента «Редактор текста», которая принимает данные из потока и добавляет их в редактор.

Следует обратить внимание на то, что методы элементов могут принимать данные как со своих верхних точек, так и из потока. В грамотно спроектированной схеме большинство методов читает нужные им данные именно из потока, что избавляет от необходимости прокладывать дополнительные связи и визуально разгружает схему

Скажем, в примере выше текст запроса можно было поместить в свойство Data элемента «Кнопка», а элемент «Список строк» удалить совсем. При таком включении событие onClick выдало бы эти данные в поток, которые, пройдя через «Разветвитель», попали бы на doSend. В более сложных схемах всегда бывает по несколько возможных правильных вариантов включения элементов, решающих определенную задачу, и выбор какого-то одного из них будет зависеть от достигнутого компромисса между читабельностью схемы и ее размером. Убедившись, что схема работает, можно приступать к следующему этапу.

Когда это можно использовать?

Вот так просто мы создали несложное, но полезное сетевое приложение. Собственно, в этом и заключается главное достоинство HiAsm (ради которого, собственно, и был создан конструктор) – в возможности собирать свои собственные программы без знания каких-либо языков программирования. Поскольку в HiAsm приложение строится из готовых блоков и связей между ними, то понятия «синтаксическая ошибка», как такового, тут нет – при любом расположении и соединении элементов схема будет скомпилирована и запущена. Будет ли она при этом работать – это уже совсем другой вопрос :). Часть элементов палитры реализует уже готовый функционал для выполнения конкретной часто встречающейся задачи (скажем, для закачки файла из интернета и сохранения его на диске), за счет чего многие схемы в HiAsm создаются за гораздо меньшее время, чем аналогичные программы в других языках и средах программирования. Если же готового элемента нет, то велика вероятность того, что нужная схема (или близкая к ней) уже есть в примерах, и пользователю останется только слегка изменить ее.

Но, как это часто бывает, все недостатки конструктора вытекают из его достоинств. Так, отсутствие необходимости в знании языка программирования совершенно не исключает необходимость в знании основ работы операционной системы, сетевых протоколов, форматов и стандартов, математики и физики, то есть основ той предметной области, для которой создается программа. Иногда это является неожиданным сюрпризом для пользователя, который с самого начала привык получать готовое решение в два клика без заморочек с хелпом и прочими доками.

Отсутствие каких-либо ограничений на расположение и связывание элементов выливается в то, что схему из 10 кубиков можно легко превратить в хаос, с ходу разобраться в котором не сможет даже опытный разработчик. Не исключены также схемы со множеством лишних связей и элементов, которые никак не влияют на работу программы, но оставлены в ней только потому, что «и так все работает». Это, однако, не означает, что такого не бывает в обычных языках – просто визуальное конструирование к этому располагает в гораздо большей степени. Если задача пользователя достаточно сложна и не укладывается в рамки стандартных элементов палитры, то ее реализация, как правило, получается более громоздкой, чем при использовании обычного языка программирования. Происходит это из-за того, что качество и простота схемного решения обратно пропорциональны сложности элементов, из которых строилось приложение. Например, простая математическая формула, реализованная несколькими кубиками, является менее наглядной, чем аналогичная запись в текстовом виде хотя бы потому, что занимает на экране больше места.

Производительность получаемого приложения в пакете Windows (именно он рассматривается в данной статье) хоть и сильно зависит от используемого набора элементов, но все же в среднем ниже производительности аналогичного решения на компилируемом языке программирования.

Пакеты

Дополнить HiAsm возможностями по созданию приложений определённого рода можно с помощью пакетов.

Delphi & FPC

Базовый пакет, поставляющийся вместе со средой, позволяет разрабатывать Windows-приложения с использованием компонентов Интернета, баз данных, графики (GDI и OpenGL), широких мультимедийных возможностей (звук), поддержка COM-портов и многого другого, а также фоновые программы, апплеты панели управления, библиотеки DLL и прочее.

PocketPC

Как и предыдущий пакет, позволяет разрабатывать приложения, но уже под Windows CE, то есть для КПК и частично смартфонов. Причём пакет построен таким образом, что схемы, собранные под PocketPC, практически без изменений можно переносить в Delphi&FPC и наоборот, что сокращает время как на саму разработку программы, так и на её портирование под другие платформы.

WEB

Как следует из названия, данный пакет позволяет разрабатывать WEB-приложения для серверной (скрипт на языке PHP) и клиентской стороны (JavaScript) с использованием языка разметки HTML. Отличительной особенностью данного пакета является то, что генерируемый по собранной схеме код практически не уступает по качеству тому, что мог бы написать разработчик вручную. Благодаря этому, данный пакет может также использоваться для автоматической генерации некоторых шаблонов WEB-приложений с последующей их ручной правкой.

FASM

Большей частью пакет служит примером и одновременно демонстрацией возможностей оболочки и потому интересен будет скорее всего только программистам, желающим разработать свой собственный пакет. Позволяет писать Win32-приложения на чистом ассемблере (Flat Assembler), с использованием компонентов вставки кода и связей между ними.

Qt

Пакет на основе позволяет разрабатывать кроссплатформенные приложения. Сам HiAsm возможно запускать только через Wine.

wxWidgets

Пакет на основе wxWidgets, так же как и Qt, позволяет создавать кроссплатформенные приложения.

Принцип работы в среде HiAsm

Разработка приложений в среде HiAsm представляет собой процесс расстановки различных графических элементов в визуальном редакторе с последующей настройкой их свойств и выполняемых ими действий (функций). Другими словами, работа с HiAsm напоминает конструктор, в котором вместо сборных деталей используются различные программируемые компоненты со своими собственными уникальными функциями.

Алгори программы в HiAsm выглядит следующим образом (на примере разработки программы под Windows):

  • Пользователь расставляет в окне редактора различные функциональные элементы (например, таймер и простое диалоговое окно с сообщением).
  • Присвоение требуемых значений соответствующим параметрам добавленных компонентов. В нашем случае — время для таймера и сообщение для диалогового окна.
  • Настройка связи между компонентами. В HiAsm это осуществляется путем прокладывания графической соединительной линии от одного элемента к другому.
  • Настраивает условия, при которых должно произойти то или иное событие. К примеру, открытие диалогового окна и вывод сообщения «Hello World!» на экран по срабатыванию таймера.

В данном конкретном случае таймер начинает отсчет сразу после запуска программы, а по завершению заранее установленного времени на экран выводится сообщение.

По завершению конструирования программы HiAsm самостоятельно компилирует код и создает соответствующий исполнимый файл (в нашем случае — EXE-файл). Его можно будет запустить в любой момент, как и любую другую программу на компьютере без необходимости использования HiAsm.

[Android] Вконтакте Видео и Музыка 8.3.8 [2013, Музыка и аудио] RU

Год выпуска: 2013Жанр: Музыка и аудиоРазработчик: Digital CookiesСайт разработчика: http://vkmusicvideo.tumblr.com/Язык интерфейса: РусскийПлатформа: AndroidСистемные требования: Android 2.2+Описание: Проигрыватель видео и аудио с vk.com Возможности + Просмотр видео + Прослушивание аудио new + Загрузка видео и аудио на SD + Выбор качества видео перед просмотромзагрузкой + Не требует авторизации (по желанию) + Не требует дополнительного программного обеспечения (adobe flash player,дополнительный видео/аудиопроигрыватель) + Бесплатно (есть реклама,лечится программой AdFree) + Простой инте …

Программы / КПК и Мобилы / На базе Android
Подробнее  

Hion

HiAsm Online IDE (hion) — web версия среды, позволяющая создавать простые web-приложения для запуска в браузере, находится в стадии alpha тестирования. Текущая версия — 1.4 alpha. Доступен по адресу ide.hiasm.com. Среда поддерживает все современные браузеры: Chrome, Firefox, Opera, Safari, а также их мобильные версии.

Работа Hion базируется на консольной версии Hiasm 5 и кодогенератора RTCG. Собранная в среде схема отправляется на сервер, после чего открывается в hiasm5 и с помощью кодогенератора RTCG собирается в готовое для запуска приложение, представляющее из себя набор файлов *.html, *.js и *.css. Скомпилированное приложение можно запустить непосредственно с сервера hion или скопировать к себе на хостинг и запускать от туда.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector