[alpha] "QDroid" ("Среда исполнения и фреймворк для QtScript (ECMA-262, ~JavaScript))

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

[alpha] "QDroid"

Сообщение Denjs »

Представляю вашему вниманию проект QDroid : http://qdroid.berlios.de

"Среда исполнения и фреймворк для QtScript"
"Скриптовый фреймворк для повседневных нужд" ))

________________________________________________________________________
Резюме проекта

Название проекта:
„QDroid”
Фреймворк для разработки программ и утилит средней сложности с помощью QtScript .
Среда исполнения скриптов QtScript.

Цель проекта:
Получение программной платформы на базе которой с помощью QtScript можно быстро собирать из готовых функциональных блоков утилиты средней сложности, простые GUI-приложение, с возможностью последующей переработки (модификации скриптового кода)

Результаты проекта:
  • Исполняемая программа, позволяющая выполнять скриптовые модули и расширять набор используемых в программе типов объектов.
  • Шаблоны модулей расширения и указания для программистов.
  • Исходные тексты, спецификации форматов, документация на платформу в общем
    доступе по лицензии GNU/GPL;


Представление проекта
«QDroid» - это фреймворк, среда, в которой исполняются небольшие приложения и
утилиты различного предназначения, написанные на скриптовом языке «QtScript» .

QtScript является интерпретируемым (не компилируемым, скриптовым) ООП-языком
программирования, соответствующий стандарту ECMA-262. Во многом он похож на
JavaScript, который так-же был разработан на базе данного стандарта.

QDroid создает вокруг скриптового движка среду исполнения с набором прикладных
классов, механизмами расширения, препроцессором языка и другими возможностями.

Одна из «прелестей» движка QtScriptEngene заключается в том, что он позволяет из
скрипта обращаться непосредственно к методам объекта, определенным при описании C++\
QT-класса. Это позволяет в короткие сроки простыми методами расширять функции набор
доступных в QDroid классов.

Другая «прелесть» - это поддержка сигнал-слотового механизма связи между
объектами, который предлагается в библиотеке QT.

«QDroid» позволяет ”сразу-и-на-месте”, в короткие сроки создавать и модифицировать
инструменты и утилиты для автоматизации различных операций.

«QDroid» содержит механизмы расширения, что позволяет в runtime по требованию
расширять функциональность системы.

В составе исходных кодов системы предоставляются образцы и шаблоны для быстрого
создания на С++ \ QT новых классов с заданной функциональностью.

Конфигурирование QDroid можно разделить на 2 уровня.
Инструменты и многократно используемые классы создаются с помощью стандартных
средств разработки для С++\QT4 в короткиие сроки и динамически подключаются к уже
собранной платформе.
Бизнес-логика, настройки и вариации необхомые ”здесь-и-сейчас” - описывается на
QtScript. Для создания или модификации QDroid-приложения не требуется средств
разработки – достаточно текстового редактора для правки исходного текста скрипта. Скрипт
QDroid ведет себя аналогично shell или bat скрипту — он сразу готов к исполнению.

Но в отличии от shell-скриптов, QtScript является ООП языком, поддерживает сложные
структуры данных, обработку событий и механизм сигнал-слотов и тд.

Область применения результатов проекта :
Автоматизация ручных операций; разработка утилит средней сложности

Стратегия осуществления :
  • Разработка базовой версии собственными силами до достижения уровня полезности в собственных задачах c использованием свободно-доступных версий библиотеки QT.
  • Создание открытого проекта для развития системы силами сообщества СПО.
________________________________________________________________________


Существующие аналоги и схожие проекты.:


Плюсы по сравнению с автоматизацией на основе shell-скриптов - OOП-язык, работа со сложными структурами данных, поддержка сигнал-слотового механизма, отладчик скриптов (в будущем - с выходом QT 4.5);
Плюсы по сравнению с автоматизацией на основе других скриптовых языков расширенные GUI-классы, возможность обработки событий (сигналов)(например при выборе элемента в GUI); быстрые механизмы расширения и построения новых "модулей";

Технические достижения: QDroid решает ряд рутинных задач с регистрацией в QtScript новых классов, регистрацией конструкторов, недоступностью из скрипта многих public-функций стандартных GUI-классов (создаются классы-оболочки), наличием в некоторых сигналах не QObject-наследованных объектов (т.е. вы не можете обрабатывать такие сигналы с помощью скриптовых функций).

Первая функциональная веха - скрипт и набор ботов предоставляющий механизмы для отслеживания изменений в составе файлов 2-х ветвей разработки (основная и разработка), ведения заметок по составу файлов и синхронизации каталогов. ( пишется для применение в следующей ситуации: ведется разработка системы в 2-х ветвях "стабильная"("основная", "отчетная") и "разработка" - в стабильную ветвь выкладывается только часть файлов/проектов ветви "разработки"; необходимо отслеживать изменения в обоих ветвях и вести заметки кто когда и почему включил или нет тот или иной файл в основную ветвь, периодически проводить обновление основной ветви в соответствии с реестром файлов предназначенных для включения в основную ветвь.).
Предполагается, что так-же будут реализованы механизмы управления/регистрации наборами скриптов и подгрузки сторонних библиотек предоставляющих новых "ботов".

Срок выхода альфа версии - неделя-две - где-то в первой половине декабря, если меня не нагрузят другими задачами. Сейчас осталось доработать взаимодействие с GUI-классами и работу с системами управления версиями.

Платформы: все поддерживаемые QT ( Windows, Linux, Mac и др.). Пока проверяется на Windows и Linux.

Прошу высказать идеи, пожелания; указать на аналоги, высказать мысли по позиционированию программы и т.п.?
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: [alpha] "QDroid"

Сообщение eduard_pustobaev »

Пока не вижу применения. Назовите примеры. А так, с точки зрения код посмотреть наверное любопытно будет.
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
Gogast
Сообщения: 549
ОС: Gentoo amd64

Re: [alpha] "QDroid"

Сообщение Gogast »

это для тех, кто не умеет писать скрипты
Без виндовза 3 года
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

Gogast писал(а):
30.11.2008 13:54
это для тех, кто не умеет писать скрипты
вы имеете в виду shell?
возможно) опустим особенности программирования на shell и его сравнение с нормальным ООП-языком. (ничего против не имею, но область задач несколько другая)
перейдем сразу к примеру.

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

Или реализуйте некий аналог KDIFF3 но когда в качестве третьего каталога у вас не каталог а ранее сохраненный "эталонный список"?

или выведите на экран 2 списка что бы между ними можно было обмениваться элементами, скажем, по двойному клику на одном из элементов?
Выведите формочку с кнопками и меняйте содержимое формочки по нажатию на кнопки?

Реализуете это на shell, причем с нормальной GUI ?

=======================
у shell есть своя область, но QDroid - это больше прототип 1С-для-разных-операций, чем замена shell.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
minoru-kun
Сообщения: 621
ОС: Debian GNU/Linux

Re: [alpha] "QDroid"

Сообщение minoru-kun »

Qt-шка и без того bloatware.
Спасибо сказали:
Аватара пользователя
Aectann
Бывший модератор
Сообщения: 3491
Статус: ...
ОС: OS X, GNU_и_не_только/Linux

Re: [alpha] "QDroid"

Сообщение Aectann »

minoru-kun писал(а):
30.11.2008 16:10
bloatware.

Расшифруйте, пожалуйста, сей термин.
My god... it's full of stars!...
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

Aectann писал(а):
30.11.2008 17:57
minoru-kun писал(а):
30.11.2008 16:10
bloatware.

Расшифруйте, пожалуйста, сей термин.

гуглеяндес утверждает что есть несколько толкований.

с одной стороны - это
Саркастическое именование программы, имеющей множество возможностей и требующей соответственного объема дисковой и оперативной (RAM) памяти. Т.к. стоимость оперативной и дисковой памяти падает, наблюдается растущее пренебрежение разработчиками размерами программы. Некоторые называют эту тенденцию - "ползучий улучшизм" (creeping featuritis). Если "удучшизм" - симптом, то разбухание - болезнь.
(http://www.math.rsu.ru/dictionary/b/bloatware.htm)

с другой стороны такое толкование - нисколько не соответсвует английскому
Software that provides minimal functionality while requiring a disproportionate amount of diskspace and memory. Especially used for application and OS upgrades. This term is very common in the Windows/NT world. So is its cause.
(http://www.computer.edu.ru/lib/jargon/html/entry/bloatware.html)

википедия утверждает
Раздува́ние програ́ммного обеспече́ния (англ. software bloat, bloatware) — тенденция новых программ быть больше по объёму и требовать больше системных ресурсов по сравнению со старыми. В результате у многих людей появляется ощущение, что рост мощности компьютеров более чем компенсируется замедлением работы программ.
Основной причиной этого является добавление в программы всё новых функций и возможностей, в том числе и не являющихся абсолютно необходимыми для работы. Например, графический интерфейс требует существенно бо́льших ресурсов, чем текстовый, однако пользователи уже привыкли работать только с графическим интерфейсом (даже если им фактически и не требуется работать с изображениями).
В то же время программисты стали уделять меньше внимания оптимизации программ, так как она становится всё менее окупаемой.
ru.wikipedia.org/wiki/Раздувание_программного_обеспечения

Сдается мне - этот термин можно навесить на любую более-менее сложную систему. и совершенно не важно оправдывает он себя в конкретном случае или нет - в стиле "популярного обвинения" в адрес больших программных комплексов.

minoru-kun забыл добавить в конце поста ", imho." ^_^
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: [alpha] "QDroid"

Сообщение eduard_pustobaev »

О, это типа как мегакрутая фича у ябблоюзеров? На которую они там частенько мастурбируют, название тока не помню. Тогда круто.
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

eduard_pustobaev писал(а):
30.11.2008 18:19
О, это типа как мегакрутая фича у ябблоюзеров? На которую они там частенько мастурбируют, название тока не помню. Тогда круто.
ээээ... а подробнее про предмет возбуждения яблочников? если уж сравниваться, то "надо знать врага в лицо". и фичи и предназначение.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

теме ап. обновил резюме проекта. В течении недели будет альфа релиз.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

пре-альфа релиз. Бинарники для Linux.
Пока только бинарники для Linux.
Собиралось на SuSe 10.2, вероятно оптимизировано под Celeron.
Требуют установленного QT 4.4.3

Исходники будут на выходных.
Прошу посмотреть, высказать идеи.

качать здесь: http://developer.berlios.de/projects/qdroid/, модуль QDroid.binaries, версия pre-alfa.

в архиве вы найдете
./DirCompare/
- директория куда скрипт script0.DirectoryChangeNotes.qs складывает файл-отчет о состоянии отслеживаемой папки.
./test_area/
- тестовая папка с двумя подпапками, которые сравнивает скрипт script0.Compare2Directories.qs
./QDroid_programmer`s_manual.pdf
- перечисление методов доступных в скрипте классов и их собственных методов. Пока только по Русски)
./qdroid.scriptlist.xml
- список скриптов с описанием которые загружает бинарник на старте.
./qdroid_v1.bin
- собственно исполняемый код.
./script0.Compare2Directories.qs
- скрипт который сравнивает 2 папки, показывает дерево и различия между ними, позволяет ответить что делать с каждым из отличных файлов (скопировать/удалить) и делает вид что может их синхронизировать (операции копирования/удаления заблокированы - см исх. скрипта)
./script0.DirectoryChangeNotes.qs
- скрипт который позволяет отслеживать изменения в папке по сравнению с "предыдущим разом" - выводит дерево файлов, отметки новый/удалили, позволяет ввести/отредактировать заметки к каждому из файлов и сохранить заметки и новую структуру файлов "до следующего раза".

После запуска программа считывает список с описанием скриптов и отображает его в меню. для запуска программы нажмите run, программа считает скрипт с диска и запустит его - т.е. можно изменить скрипт и запустить его новую версию не перезапуская программу.

Состав классов будет развиваться и варьироваться; задача данного релиза - показать и обсудить концепции и подход которые программа уже реализует. Так сказать - налицо "исполняемая архитектура" - нужны идеи, критика.

PS: За структуру объектов доступных в скрипте, стиль и методы работы с ними - сильно не ругайте, делал что бы быстрее получить рабочий код. В частности, для виджета "дерево" использовал item-based QTreeWidget, отсюда и ряд костылей в методах работы с отображенным деревом. Сейчас делаю model-based отображение дерева - будет поприятнее работать.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
trdm
Сообщения: 266
ОС: Window XP

Re: [alpha] "QDroid"

Сообщение trdm »

minoru-kun писал(а):
30.11.2008 16:10
Qt-шка и без того bloatware.

Не готов согласиться, с учетом целевого назначения самой библиотеки и её модульности.
Что там лишнего?
Все можно отсечь на момент сборки проекта использовав только то что реально необходимо бинарику или либе.
qt1L, 2C и прочие "аналоги" 1С.
Смертельная доза aлкoгoля 8 гр. на 1 кг вeсa тела: 80 кг * 8 = 640 гр.
Хотите знать больше?
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

пре-альфа релиз. Исходный код и документация.

http://developer.berlios.de/project/showfi...?group_id=10448
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
whirlwind
Сообщения: 67

Re: [alpha] "QDroid"

Сообщение whirlwind »

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

Код: Выделить всё

var str = new String();

var astr = BBot.str_left(str, 3)
print(astr)
var str2 = str.slice(0,3);
print(str2);

var s3 = BBot.str_to_upper(str)
print (s3, "---", str);
var s4 = str.toUpperCase()
print (s4, "---", str);

А еще там есть тип Date, который много чего умеет, в том числе и переводиться toString. Хотя, конечно, ваш BBot_date_time гораздо гибче.
Добро всегда побеждает зло. Мы победили, значит мы - добро.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

гм... замечание совершенно верное)
а самом деле мне по началу было проще/быстрее написать обёртку для QT-шных функций, чем копать документацию на ECMAScript ))
потому собственно и появилось много функций которые возможно и дублируют базовый функционал заложенный в ECMAScript.

если по правильному развивать это направление - то следует написав наследованную от QObject обертку для QString, вынеся в секцию slots все нужные функции. Не знаю как оно будет работать с родной строкой, и будет ли...

Но можно и использовать наитивные функции. Над этим надо подумать. но потом.
Лично мое мнение таково: я за создание обёрток для большей части Qt-шных классов. Это снизит "порог перехода" на QDroid для QT-шных программистов ... да и проще будет передавать данные по связям сигнал-слот из скрипта в QT-объекты и наоборот.

Это конечно дублирование функциональности, с той точки зрения что многое может быть уже есть в ECMAScript, но это удобно.
- каждый будет использовать тот стиль который ему нравится. имхо.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
whirlwind
Сообщения: 67

Re: [alpha] "QDroid"

Сообщение whirlwind »

Denjs писал(а):
11.01.2009 15:28
если по правильному развивать это направление - то следует написав наследованную от QObject обертку для QString, вынеся в секцию slots все нужные функции. Не знаю как оно будет работать с родной строкой, и будет ли...
если не возражаете, могу покопаться в этом направлении. Времени у меня довольно много, но код ботов писать стремно, пока система не стабилизировалась :)
Добро всегда побеждает зло. Мы победили, значит мы - добро.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

whirlwind писал(а):
12.01.2009 16:38
Denjs писал(а):
11.01.2009 15:28
если по правильному развивать это направление - то следует написав наследованную от QObject обертку для QString, вынеся в секцию slots все нужные функции. Не знаю как оно будет работать с родной строкой, и будет ли...
если не возражаете, могу покопаться в этом направлении. Времени у меня довольно много, но код ботов писать стремно, пока система не стабилизировалась :)

я то не возражаю. любая помощь думаю будет полезна.

а вообще - что на текущий момент непосредственно нужно:
* технология которая позволит динамически "подгружать" новые классы(новых ботов) из внешних библиотек, типа плагинов.
Не самим скриптом, а до его начала работы - при запуске среды, что бы скрипт мог работать с уже подгруженным классом.
Т.е. нужен процесс типа "пишется новая сторонняя библиотека (отдельный проект) которая потом динамически подключается к QDroid, "регистрирует"(?) новый класс(бота), который становится доступен QScriptEngine и следовательно скрипту".

Это "самый серьезный аритектурный риск" на текущий момент. Который вообще никак не проработан. :(
Для начала будет достаточно работающего прототипа.

* ну и информация рода что "вообще надо бы". т.е. какие боты вообще нужны.

Писать код ботов я бы не остерегался, потому как "боты" - это обычные C++/QT классы но у которых все полезные функции вынесены в секцию slots.
Плюс конструкторы копирования и пара дополнительных конструкций для объявления типов для скриптового движка - последние могут изменитьсятолько если это изменят в самом QT.
Сами классы никакого API среды не используют (да и нет никакого API в QDroid для ботов). Максимум - сигнал stdout.
не будет оно сильно перерабатываться. незачем и нечего. в крайнем случае не будет там ничего что один человек не мог-бы переписать за сутки.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
whirlwind
Сообщения: 67

Re: [alpha] "QDroid"

Сообщение whirlwind »

Denjs писал(а):
12.01.2009 16:59
* технология которая позволит динамически "подгружать" новые классы(новых ботов) из внешних библиотек, типа плагинов.
Не самим скриптом, а до его начала работы - при запуске среды, что бы скрипт мог работать с уже подгруженным классом.
Т.е. нужен процесс типа "пишется новая сторонняя библиотека (отдельный проект) которая потом динамически подключается к QDroid, "регистрирует"(?) новый класс(бота), который становится доступен QScriptEngine и следовательно скрипту".

Как оказалось, все легко делается с помощью QPluginLoader. Дукументирован он туманно, но в целом читабельно. Если очень коротко и не пересказывая assistant, то суть приблизительно такова:
1. В отдельном заголовочном файле описывается интерфейс плагина. Интерфейсом здесь называют класс, содержащий только чисто виртуальные функции и все.
2. Отдельным проектом пишется реализация плагинов. Реализация - класс, наследник QObject и интерфейса. В результате компиляции получаем so-файл для Linux и dll для Windows.
3. В основной программе создаем QPluginLoader и указываем ему на dll-ку. Он ее анализирует и волшебным образом извлекает экземпляр класса-плагина. С полученным экземпляром можно делать, что захочется, в том числе и регистрировать в QScriptEngine. Прелесть в том, что даже методы, не обьявленные в интерфейсе, становятся доступны в скриптах.

Вот нечто вроде тестового проекта. Там небольшой класс на три метода, два из них замечательно в конце концов получается использовать в скрипте. Работает и на Linux, и на Windows, но с последним проблема. В версии с интегрированным MinGW неправильно указан build key, его приходится исправлять вручную. Вообще, как я понял, QT достаточно строго контролирует совместимость версий, это может стать проблемой.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Добро всегда побеждает зло. Мы победили, значит мы - добро.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

whirlwind писал(а):
14.01.2009 20:22
Вот нечто вроде тестового проекта. Там небольшой класс на три метода, два из них замечательно в конце концов получается использовать в скрипте. Работает и на Linux, и на Windows, но с последним проблема. В версии с интегрированным MinGW неправильно указан build key, его приходится исправлять вручную. Вообще, как я понял, QT достаточно строго контролирует совместимость версий, это может стать проблемой.


уфф... наконец добрался до разбора полетов с плагинами...
Спасибо. Идею я понял...

Единственное, наверное буду делать какой-то вариант "фабрики классов"... т.е. тот объект который поставляется в плагине - это не сам объект, а "фабрика", которая может породить нужный нам объект.

Суть в том что хочется сделать максимально удобным "включение в плагин" сторонних, изначально не предназначенных для qdroid классов.
"Фабрика" в таком варианте должна взять на себя всю нагрузку по "интеграции класса в плагин", но без изенения кода самого класса.
Вплоть до уровня, когда заголовок и класс из стороннего QT-проекта просто кладутся рядом, прописываются в инклюдах шаблона плагина, в этом-же шаблоне заменяются некоторые объявления и константы - и все. Плагин, поставляющий в QDroid "просто сторонний qobject-based-класс" готов.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
whirlwind
Сообщения: 67

Re: [alpha] "QDroid"

Сообщение whirlwind »

стучайно наткнулся на похожий проект: http://www.nsoft-s.com/aboutwinscript.html
Добро всегда побеждает зло. Мы победили, значит мы - добро.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

whirlwind писал(а):
23.03.2009 11:58
стучайно наткнулся на похожий проект: http://www.nsoft-s.com/aboutwinscript.html

Гм.... спасибо.
Я посмотрю на него, возможно появятся новые идеи относительно реализации некоторых объектов.

Однако сразу хочу отметить, что имхо, схожесть ограничивается названием.
QDroid будет являться открытой расширяемой ООП-средой с системой плагинов,
которые в первую очередь будут ориентированы на простоту
интеграции в QDroid различных C++/Qt-классов.
Т.е. классы уже написанных проектов созданных на C++\QT будут легко встраиваться в QDroid.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

Обзор готовящегося релиза.
Релиз предполагаю "выпустить" на этой-следующей неделе.

- введен режим работы из командной строки (запуск скрипта через >qdroid script.qs)
- развитие механизмов препроцессора. (инициирующая строка теперь выглядит как "#!/usr/bin/qdroid" (сами понимаете зачем, ибо это удобно), строка определения кодировки исходника как "#codepage=Windows-1251;")
- механизм расширений (теперь можно динамически подгружать библиотеки с расширениями и после этого создавать новые классы объектов внутри скрипта)
- демо пример исходника библиотеки с классом "простой бот".
- расширение добавлющее в qDroid класс ByteArray позволяющий работать с QByteArray из скрипта. (исходники класса не мои - вытянуты из examples для QT)
- расширение добавляющее класс seriallink_otpd для работы с последовательным портом. (С помошью этого-же класса можно работать и с многими промышленными usb-принтерами чеков и др. устройствами (т.к. многие из них реализуют интерфейс последовательного порта на usb который автоматически распознается большинством linux-систем с созданием устройства типа /dev/USBtty0 и т.п.)
С этого класса начинается процесс перетаскивания на qDroid классов проекта OTPD. Для OTPD это означает, что в будущем конфигурация узла печати будет определяться не бинарником, а скриптом, что позволит собирать совершенно произвольные механизмы обработки заданий.

Если что-то ещё забыл - напишу попозже.
Возможно добавлю класс для TCP-соединения а-ля "telnet"-клиента (опять же взят будет из OTPD).

Если у кого есть ещё идеи и "потребки" - прощу высказать.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

Далее - прошу высказаться по поводу следующей идеи : (возможное направление развития в следующих релизах)

Я подумываю о том что бы сделать механизм доступа к среде уже запущенного скрипта.
Так что бы можно было обратиться и поработать с объектами созданными уже работающих скриптом.

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

Далее, вы начинаете использовать тот механизм который я предлагаю обсудить: при необходимости мониторинга, вы подключаетесь к движку на котором уже работает данный сервис и запускаете скрипт мониторинга.
Этот скрипт, (запускаясь в отдельном потоке но на том-же движке что и первый скрипт), "осматривается", находит созданные объекты, подключается к ним, и как-то обрабатывает поступающую информацию. При необходимости, завершается.

Основной плюс - "не раздутая" функциональность - сервис - отдельно, мониторинг - отдельно.
Конечно возникают вопросы безопасности - кто и как может подключаться, можно ли таким образом порушить работу сервиса и т.п. - но это решаемые вопросы. Сейчас надо обсудить полезность концепции.

Прошу высказаться. Есть ли аналоги, прототипы, нечто подобное?
Стоит ли делать такой сервис и насколько он предположительно будет востребован.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

QDroid: QtScript framework. Alpha release.
ver.2009.07.21.alpha.sources

• Механизм загрузки расширений (новые классы и функции фреймворка).
• Работа в качестве интерпретатора скрипта (запуск из командной строки); препроцессор знает про указание «#!/usr/bin/qdroid» в начале скрипта для «автоматического» запуска скрипта из командной строки под Linux.
• Начаты работы по адаптации классов OTPD (Open Ticket Printer Drivers) под QDroid. Добавлены классы работы с последовательным портом и tcp-клиент (интерфейс модуля связи OTPD)
• Добавлены классы tcp-сервер, tcp-клиент (интерфейс QTcpSocket), bytearray
(интерфейс QByteArray ).

Документация пока только на вкомпиленные классы, на расширения и их классы (tcp-сервер, tcp-клиент, bytearray) доков пока нет. Смотрите исходники, демо скрипты. Спрашивайте меня, по характеру вопросов буде пополнять документацию.

--5115--
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

Можно сказать, проект достиг некоторой вехи. а именно -
Начинаем входить в стадию "полезной нужности".

Представляю вам комплект
server com2tcp(QDroid) + addon_libtelnet(1C)

На базе QDroid создано решение для управления COM-оборудованием удаленно из 1С.
На QDroid крутится скриптовый com2tcp-сервер, к которому мы подключаемся из 1С c помошью внешней компоненты addon_libtelnet.
Естественно, теперь из 1С можно управлять оборудованием подключенным к Linux-станциям.

Теоретически, решение может дать возможность управлять локальным и сетевым оборудованием из-под вайна, но компонента 1С к сожалению _ПОКА_ не работает под вайном. проверял на етерсофтовском вайне 1.0.9. Проблему конечно же попробуем и будем решать. если кто может посоветовать или помочь в этом - прошу не обойти стороной.

Позже, на базе этого решения будет создаваться сетевой узел печати OTPD.

Анонс на "Мисте": http://www.forum.mista.ru/topic.php?id=422844
Бинарники для виндоус (7мб) - на сайте QDroid: http://developer.berlios.de/project/showfi...?group_id=10448

UPD: вольное описание - брать тут: Com2Tcp_LibTelnet1C.readme.rus.pdf
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

Анонс: Компонента 1С addon_libtelnet.dll работает под wine@etersoft 1.0.10 !
(По крайней мере, все автоматические тесты для компоненты отрабатываются на "ok" в 1Cv7.7 под wine, и каких-либо неполадок мною не замечено.)

В общем теперь - и из 1С запущенного под wine - можно контролировать любое оборудование подключенное подключенное к последовательным портам
своей или удаленной машины, а также сетевые устройства - такие как например принтеры чеков с ethernet интерфейсом.

В настоящее время работаем над стабилизацией работы под 1Сv8.1 и корректировкой набора функций,
а для 1Сv7.7 практически все готово. Как только будут закончены работы для 8.1 - будет релиз.

Прошу заинтересованных в развитии данного направления - поучаствовать в тестировании, задать вопросы и высказать пожелания.
За последними сборками и сорсами обращаться ко мне.
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
RederikGray
Сообщения: 2
ОС: Win XP SP3

Re: [alpha] "QDroid"

Сообщение RederikGray »

Denjs писал(а):
18.08.2009 02:58
Анонс: Компонента 1С addon_libtelnet.dll работает под wine@etersoft 1.0.10 !
(По крайней мере, все автоматические тесты для компоненты отрабатываются на "ok" в 1Cv7.7 под wine, и каких-либо неполадок мною не замечено.)

В общем теперь - и из 1С запущенного под wine - можно контролировать любое оборудование подключенное подключенное к последовательным портам
своей или удаленной машины, а также сетевые устройства - такие как например принтеры чеков с ethernet интерфейсом.

В настоящее время работаем над стабилизацией работы под 1Сv8.1 и корректировкой набора функций,
а для 1Сv7.7 практически все готово. Как только будут закончены работы для 8.1 - будет релиз.

Прошу заинтересованных в развитии данного направления - поучаствовать в тестировании, задать вопросы и высказать пожелания.
За последними сборками и сорсами обращаться ко мне.


Привет! Вы - круты. Я искал компоненту для чекового принтера aura 7000 для 7.7. и кроме атоловской (с guardant и все дела) нашел только Вашу.

Я очень заинтересован в развитии данного проекта и готов тестировать ее долго и много.
Текущий build у меня работает отлично, естественно отсутствие русских шрифтов очень расстраивает.
Может есть уже какие-то наработки в этом направлении?
свертка в tray и картинки тоже очень интересны.

Со своей стороны...даже не знаю что Вам нужно кроме тестирования. Например - красивые примеры могу сделать.
Есть возможность снабдить меня последним buildом если там что-то поменялось относительно прошлого?

Когда ждать релиз?

Еще раз спасибо за Вашу работу, не бросайте ее!
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: [alpha] "QDroid"

Сообщение Denjs »

отпишите в личку ваш e-mail - я могу прислать вам текущие сборки.
там реализована конвертация кодировок (win ->ibm866), что даст вам возможность после выбора на принтере соответвующей кодовой страницы печатать по русски.
Кроме этого в новой версии com2tcp сервера есть возможность удаленной перенастройки параметров ком-порта.
В компоненте 1С изменились функции (убран SocketID - идея в том, что сколько вам нужно соединений - столько и создавайте объектов, а не плодите соединения внутри одного объекта; + добавлены синхронные режимы работы (подключение, отправка и ожидание данных, "пауза" (аналог сишного sleep() ) )

Под 8.0 уже вроде-бы все работает. Сейчас я добавляю в компоненту возможность запуска консольного приложения с перехватом stdin-stdout-ввода-вывода - и как только это сделаю и это протестируют - будет релиз. (Это конечно не совсем функциональная область компоненты, но предполагается что это будет крайне удобно для запуска локально копии com2tcp-сервера (только под виндоус конечно) - что бы можно было всем автоматически управлять из 1С без лишних телодвижений).

свертка в tray и картинки тоже очень интересны.

Свертку в трей пока было решено отложить (проблема стояла в основном только из-за того, что когда com2tcp сервер запускается из 1С - консольное окно "какбы нафиг не нужно" - с запуском com2tcp сервера из 1С без консольного окна - проблема исчезает). Но от фичи я не отказываюсь, просто она будет решена позже. С картинками будет скоро - я полагаю исходный конвертор картинок, созданный для OTPD генерирует в принципе подходящие данные, но его вывод надо немного адаптировать т.к. пока не совсем подходит для текущих "режимов фильтрации" компоненты; в принципе там нужно не много доработок.

Вы - круты. Я искал компоненту для чекового принтера aura 7000 для 7.7. и кроме атоловской (с guardant и все дела) нашел только Вашу.

Спасибо за лестный отзыв. Надеюсь, после перевода OTPD на платформу QDroid - итог вас порадует ещё больше.) (В OTPD есть поддержка страничного режима, в будущем - поддержка принтеров этикеток и пр.)
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
RederikGray
Сообщения: 2
ОС: Win XP SP3

Re: [alpha] "QDroid"

Сообщение RederikGray »

Denjs писал(а):
31.08.2009 19:47
С картинками будет скоро - я полагаю исходный конвертор картинок, созданный для OTPD генерирует в принципе подходящие данные, но его вывод надо немного адаптировать т.к. пока не совсем подходит для текущих "режимов фильтрации" компоненты; в принципе там нужно не много доработок.


Да, с pos-html будет офигительно! :rolleyes:
Атол я пробовал - очень хлопотно и убого.

я очень сожалел что тот проект был приостановлен, но как оказывается-нет. и это ХОРОШО.
Еще раз повторюсь, в течение довольно длительного поиска я ничего подобного этому проекту не нашел.
Спасибо сказали:
Аватара пользователя
gcc
Сообщения: 526
ОС: FreeBSD 8.0 CURRENT

Re: [alpha] "QDroid"

Сообщение gcc »

может не в тему: я вот оформил статью http://www.lissyara.su/?id=1960 PerlQT

пробовал некоторые вещи...

на крайняк: почему не Java? или qDroid это как альтернатива имется виду наверное...
Спасибо сказали: