OberonCore
https://forum.oberoncore.ru/

Большой проект на BlackBox
https://forum.oberoncore.ru/viewtopic.php?f=27&t=1170
Страница 2 из 5

Автор:  Trurl [ Вторник, 30 Сентябрь, 2008 08:10 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Илья Ермаков писал(а):
Если Вы создадите некое неграфическое приложение (библиотеку функций) на другом компиляторе, а на ББ напишете приложение, дающее интерфейс к нему, то Вы обязаны опен-сорснуть только графическое приложение.


Но для этого приложение на ББ должно уметь работать без библиотеки.

Автор:  rv82 [ Вторник, 30 Сентябрь, 2008 09:46 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Info21 писал(а):
Илья Ермаков писал(а):
На чём писать DLL? Можно на другом Обероне (на XDS). ...

Почему же не на Блэкбоксе.
Если то, что запаковано в DLL, является автономным изделием, то разве оно автоматически не выходит из-под действия лицензии на ББ-приложения?
Другое дело, что если это изделие продавать, то нужно делиться с Оминк.

Наверно для надёжности лучше буду работать с OpenWatcom C/F77 и XDS. Хотя, наша программа сама по себе никакой ценности не имеет. Она просто продаётся вместе с установкой (весьма недешёвой :) ). А закрыта она, т.к. алгоритмы в ней ценные.

Ещё вот что! Можно ли в ББ делать красивости, типа кнопок с картинками (так называемые быстрые кнопки)?

Автор:  Евгений Темиргалеев [ Вторник, 30 Сентябрь, 2008 09:59 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

В ББ можно делать активные документы. В которые помещается описание, рабочие элементы и всякие красивости. Все, что нужно для решения данной задачи (одной из программных функций) - в одном месте. Это гораздо мощнее/удобнее тулбаров. Но этот подход не традиционен и не привычен, в этом месте могут возникнуть проблемы реализации (приходится больше думать/пробовать, по стандартной схеме не наклепаешь).

Автор:  Александр Ильин [ Вторник, 30 Сентябрь, 2008 10:10 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

rv82 писал(а):
Тогда вопрос: будет ли сборщик мусора от XDS прикручен к моей DLL?
Будет, если попросите (GENDLL+, USEDLL-).

Автор:  Иван Кузьмицкий [ Вторник, 30 Сентябрь, 2008 10:43 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

rv82 писал(а):
Наверно для надёжности лучше буду работать с OpenWatcom C/F77 и XDS. Хотя, наша программа сама по себе никакой ценности не имеет. Она просто продаётся вместе с установкой (весьма недешёвой :) ). А закрыта она, т.к. алгоритмы в ней ценные.

Ну так алгоритмы можно оформлять в отдельном модуле, который для работы не будет требовать фреймворка. Следовательно, исходники можно не раскрывать.

rv82 писал(а):
Ещё вот что! Можно ли в ББ делать красивости, типа кнопок с картинками (так называемые быстрые кнопки)?
Можно! Вот пример подобного (правда, режим disable никак не влияет на картинку в кнопке, но это просто руки не доходят - надо добавить в интерфейс Abf функцию трансформации цвета):

Вложения:
button.png
button.png [ 21.43 КБ | Просмотров: 7165 ]

Автор:  Vlad [ Вторник, 30 Сентябрь, 2008 16:22 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

rv82 писал(а):
Вот и думаю, на чём остановиться, на BlackBox или Delphi?


Учтите, что в случае BB у вас не будет кучи готовых компонент (пусть дельфовые компоненты и не всегда приемлемого качества, но есть среди чего поискать). Все, что выходит за рамки фрэймворка BB (который много меньше VCL) придется дотачивать и создавать своими ручками. Так что я бы предложил вам для начала проанализировать какую часть вашей "большой задачи" BB покроет "из коробки" или с минимальной доточкой.

P.S. Вопрос к общественности: есть ли реализация регулярных выражений для BB?

Автор:  Valery Solovey [ Вторник, 30 Сентябрь, 2008 16:31 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Смотрите у Зинна. Вроде, что-то такое делала подсистема Babel

Автор:  Илья Ермаков [ Вторник, 30 Сентябрь, 2008 16:39 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

В коллекцим Зинна есть следующие пакеты для разработки компиляторов:
http://zinnamturm.eu/downloadsAC.htm#Babel
http://zinnamturm.eu/downloadsAC.htm#Cow
http://zinnamturm.eu/downloadsAC.htm#Coco

А вот тут обещают именно отдельно регулярные выражения:
http://zinnamturm.eu/downloadsAC.htm#CpcRegul

Ещё я готовлю к публикации вот такую подсистему, которая может перекрыть как задачи регулярного разбора, так и рекурсивного разбора по грамматикам:
http://metasystems.ru/download/science/ ... 08-eie.pdf (800K)

Теперь касательно "подсистем"-"дотачивания" и т.п.
Я запомнил второй свой серьёзный проект на ББ (ныне издаётся здесь - djone.ru), где я выбирал между Дельфой и ББ, в авральных условиях. Хорошо, что выбрал ББ. Когда аврал, АК-47 приходит на помощь :-) Кой мне был толк в куче мультимедиа-компонент для Дельфы, если при стыковке их между собой (на основе HTML-компонента, т.к. иной хоть сколько-нибудь нормальной поддержки сложных текстов в распространённых средах нет) получается нечто с грубыми стыками и стартующее по 2-3 минуты... При этом делал это до меня очень неплохой разработчик, знающий Дельфу. Пришлось просто выкинуть - спасли составные документы ББ.

Автор:  Илья Ермаков [ Вторник, 30 Сентябрь, 2008 16:49 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

P.S. А Vlad-у неплохо бы обозначить чётко, что он не использовал ББ. Т.е. его высказывания следует трактовать как мнения-соображения, а не как опыт.

Автор:  Vlad [ Среда, 01 Октябрь, 2008 15:23 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Илья Ермаков писал(а):
Т.е. его высказывания следует трактовать как мнения-соображения, а не как опыт.


Подтверждаю, мои высказывания следует трактовать именно так.

P.S. Я тут все регэкспы пытаюсь прикрутить... Вопрос по ходу дела: как принято компилить/инсталлировать новые подсистемы, в которых больше одного модуля?

Автор:  Valery Solovey [ Среда, 01 Октябрь, 2008 16:05 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Для начала, подсистема закидывается в корневой каталог ББ. Основная установка закончена.

Далее, следует посмотреть в поддиректорию Docu. Правилом хорошего тона считается оставлять там документацию по модулям и некоторую сопутствующую информацию. По сопутствующей информации: она хранится в файлах, зачастую имеющих в названии дефисы. Для дополнительной установки посмотрите файл "Quick-Start".

Автор:  Vlad [ Среда, 01 Октябрь, 2008 16:42 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Valery Solovey писал(а):
Далее, следует посмотреть в поддиректорию Docu.


Я все ищу кнопку "Построить все"... Неужели все запасаются терпением и ручками компилят модуль за модулем? А по какому принципу угадывать порядок компиляции модулей?

Автор:  Valery Solovey [ Среда, 01 Октябрь, 2008 17:22 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Там обычно и есть эта кнопка:

(!)DevCompiler.CompileThis модуль1 модуль2 модуль3 ...

Автор:  Geniepro [ Четверг, 02 Октябрь, 2008 07:55 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Илья Ермаков писал(а):
Ещё я готовлю к публикации вот такую подсистему, которая может перекрыть как задачи регулярного разбора, так и рекурсивного разбора по грамматикам:
Вложение:
Cot-r-001-refal0-2008-eie.pdf

Любопытно...
Кстати, у Вас там упоминается забавный термин "tale call". Что это ещё за "сказочный зов"? :lol:
Правильнее было бы "tail call". Мелочь, конечно, но как-то неаккуратненько... :wink:

Автор:  Илья Ермаков [ Четверг, 02 Октябрь, 2008 17:49 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Благодарю! Лопухнулся с идентификатором.
Впрочем, хвостовая рекурсия для функциональщиков и прям "сказочный зов" - раз, и цикл :-)

Автор:  rv82 [ Пятница, 03 Октябрь, 2008 07:39 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Подскажите пожалуйста, можно ли сделать таймер (что-то типа TTimer в Delphi, или скорее невизуального javax.swing.Timer в java) в обычном BlackBox (не в Active!)?
И ещё, можно ли окна, сделанные визуально (odc-файлы) запихнуть в exe-файл при помощи DevLinker? Что-то у меня это не получается. Если честно, с DevLinker вообще у меня проблем больше, чем работы. По DevPacker тоже не всё понятно. Надо с переводчиком почитать документацию по всему этому :)

Автор:  Иван Кузьмицкий [ Пятница, 03 Октябрь, 2008 08:34 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Аналог таймера в ББ делается с помощью модуля Services.

Создаёте свой тип-наследник от Services.Action и реализуете его метод Do. Экземпляр типа регистрируете через Services.DoLater, с указанием отсроченного момента запуска. Когда наступит указанный момент, среда один раз выполнит ваш метод Do.

А если надо выполнять метод Do периодически, то внутри метода ставите повторную регистрацию этого же экземпляра.

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

Автор:  Илья Ермаков [ Пятница, 03 Октябрь, 2008 13:39 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

А уж насколько легче удалённому заказчику скидывать апдейты...

Автор:  Евгений Темиргалеев [ Суббота, 04 Октябрь, 2008 00:21 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

rv82 писал(а):
Подскажите пожалуйста, можно ли сделать таймер (что-то типа TTimer в Delphi, или скорее невизуального javax.swing.Timer в java) в обычном BlackBox (не в Active!)?
См. пример ObxActions. И вообще, обратите внимание на карту примеров (F1, Overview by Example), это типа FAQ по прогр-ю в ББ.
Цитата:
И ещё, можно ли окна, сделанные визуально (odc-файлы) запихнуть в exe-файл при помощи DevLinker? Что-то у меня это не получается. Если честно, с DevLinker вообще у меня проблем больше, чем работы. По DevPacker тоже не всё понятно. Надо с переводчиком почитать документацию по всему этому :)
1) Обратите внимание на команду Info->Create Tool (по выделенному списку модулей делает коммандеры для компиляции/выгрузки/сборки екзе файла (тут, возможно придется подправить)).
2) Скачайте русскую документацию. Или Вы имели ввиду, что по русской не совсем понятно, надо почитать оригинал?

Автор:  stern [ Понедельник, 06 Октябрь, 2008 10:07 ]
Заголовок сообщения:  Re: Большой проект на BlackBox

Уважаемые господа!
Удивительно, насколько многим людям приходится делать системы сбора данных (ССД), в том или ином виде. И всем приходится решать по сути одни и те же задачи. И все решают по-разному, но все решения объединяет одно: пишется долго и муторно, часто - неудачно. Конечно, педагогическую ценность пути "через тернии к звездам" никто не отменял, но... В связи с чем у меня возникла вот какая мысль: нужен фреймвок для ССД с хорошей реализацией. Мне кажется, что можно сделать практически законченную систему, оставив на совести пользователя реализацию лишь предметной логики. Думается, что под эту задачу ББ заточен исключительно хорошо. Выскажу некоторые свои соображения, хотя программером меня можно назвать с очень большой натяжкой. Надеюсь на ваше понимание.
Я бы предложил разделить задачу на 3 основных модуля. Я назвал их так: Драйвер, Ядро, Диспетчер. "Работает" это система так.
Драйвер общается с портами.
Он же предоставляет интерфейс для настройки этого общения, позволяет запускать и останавливать считывание. Считав данные с порта, Драйвер "генерирует" сообщение, которое содержит считанные данные с привязкой по каналам.
Это сообщение принимается на следующем уровне, на уровне Ядра. Ядро позволяет подключать/отключать датчики на каналы, вызывать настроечные окна датчиков (для калибровки и пр.). Получив очередную порцию данных от Драйвера, Ядро обрабатывает (рассчитывает) данные по датчикам в соотв. с их калибровками, и генерируют сообщение, в котором указываются имена рассчитанных параметров и их значения. Это сообщение отправляется Диспетчеру.
Роль Диспетчера по моему замыслу - ключевая. Его задача: обеспечить подключение/отключение произвольных модулей для обработки первичных данных. Именно в этих модулях и происходит обработка данных в соотв. с предметной областью. Модули могут не только обрабатывать данные и сигнализировать о выходе за пределы, например, но и отображать данные в таблицах, на графиках, сохранять в БД и пр.
Я бы предложил такой интерфейс для загружаемых модулей:
- "Тип модуля" (рассчетный (производит расчеты), информационный (отображение значений или графиков, сохранение на диск))
- Список входных параметров (по сути - их имена) - для рассчетных модулей
- Список выходных (рассчитанных) параметров - для рассчетных модулей
- Команда для открытия настроечного окна для данного модуля
- Команда для запуска расчета (навроде Do*(IN ..., OUT...) где IN - значения входных параметров, в соотв. со списком, а OUT - значения выходных, рассчитанных)
- "Описание" (короткое имя модуля, которое идет в соотв. системное меню. Именно кликом по "описанию" в системном меню запускается команда для открытия окна настроек соотв. модуля).
- "Кнопка" в тулбар (бывает нужна для оперативного реагирования).
Работает Диспетчер так: считав список имен модулей в соотв. документе, Диспетчер загружает эти модули, добавляет соотв. пункты (если для этого модуля оно требуется) в системное меню, добавляет кнопки (по необходимости) на тулбар. Считывает списки входных и выходных параметров и в зависимости от них определяет порядок, в котором рассылаюся сообщения между подгруженными пользовательскими модулями.
Работает так.
Пусть, для простоты, у нас 4 модуля, А, Б, С, Д.
Модуль А на вход требует a, b на выходе имеет c, d.
Модуль Б на вход требует a, d на выходе дает f.
А вот С - это модуль "информационный", он отображает числовые значения в таблице (или графики рисует).
Модуль Д тоже "информационный", его задача - сохранение рассчитанных данных в БД.
От Ядра пришло сообщение со значениями параметров a, b.
Диспетчер, в соотв. с определенным ранее порядком, сообщает значения a, b модулю А и вызывает его команду на рассчет.
Модуль А рассчитывает c,d и "сообщает" Диспетчеру эти рассчитанные значения.
Далее, Диспетчер сообщает значения входных параметров модулю Б и запускает его на рассчет.
После того, как расчетные модули сделали по порядку свое дело, данные отправляются модулям информационным.
В каком порядке расположены модули С и Д уже не важно, ибо они сами ничего не рассчитывают.
Диспетчер расположил их в таком порядке: С, Д.
Модуль С отобразил рассчитанные данные в своей таблице, модуль Д сохранил рассчитанные данные на диск.
В принципе, такой каскад можно организовать для неограниченного числа модулей с пользовательской логикой. Модули, имеющий "тип" - информационный, всегда идут в конце (здесь их порядок относительно друг друга уже не важен, ибо они всегда получают все рассчитанные данные). Эти модули рисуют графики, сохраняют на диск и т.п.
Несколько несущественных замечаний:
1. Потребуется интерфейсный модуль для работы с БД.
Нужно будет учесть, то работать придется с 2-мя типами данных. Первый - значения настроек в модулях, второй тип - значения рассчитанных параметров, которые нужно постоянно сохранять на диск. Работать можно будет с разными БД, на "вкус и цвет".
2. Для каждого типа датчика следует предусмотреть свой загружаемый динамически модуль.
3. Про педагоческую ценность, вкупе с практической даже и упоминать не буду :-)

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

Страница 2 из 5 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/