OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 19 Июль, 2018 05:18

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 297 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15
Автор Сообщение
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Воскресенье, 03 Октябрь, 2010 23:24 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Так как раздел Компоненты и Библиотеки закрыт внешним посетителям, продублирую сообщение о доступности консольного компилятора для Linux/Windows:
консольный компилятор для Компонентного Паскаля можно скачать из Component Pascal Compiler for command-line (описание частей, как с ним работать и, конечно, исходный код).

Готова динамическая загрузка модулей посредством вызова библиотеки bbldr (пока только прототип для Windows, а для Linux самую малость осталось доделать):
Вложение:
libBBox.zip [12.67 КБ]
Скачиваний: 211

Подробности читать в libBBox и расширяемый framework.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 27 Октябрь, 2011 07:57 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 660
Откуда: СССР
Уважаемый Роман.

Вы проделали большую работу.
С консоли libexport.so и модули HostDynLoader.pas и DynLoader.pas без проблем компилируются.

У Вас есть готовый пример программы на freepascal,
использующей модуль HostDynLoader.pas, чтобы пользователи Вашей системы могли запускать libexport.so?

С уважением,
Кубаныч


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Воскресенье, 30 Октябрь, 2011 12:32 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Прошу прощения, т.к. не мог ответить сразу.

Насколько я понимаю, вопрос относится не к BlackBox, а к Free Pascal. Если я прав, то на пример использования DynLoader можно посмотреть в файле cdev.pas проекта CPcc, ответственного за загрузку библиотеки компилятора.

Насчёт запуска библиотеки - не понял вопроса. Если про то как запускать библиотеки, скомпонованные в BlackBox, то метод описан в теме по libBBox. Остальное могу добавить после получения подробностей задачи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 05 Ноябрь, 2011 01:19 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 660
Откуда: СССР
Уважаемые коллеги.

Как вы думаете, будет ли рационально и возможно перенос GUI BlackBox на Linux организовать таким образом?

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

2. Затем постепенно переносить остальные элементы управления постепенно по мере необходимости.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 05 Ноябрь, 2011 05:02 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 660
Откуда: СССР
Проблема переноса BlackBox на Linux не в Linux, а в BlackBox!

Димыч писал(а):
... дело не в ГУИ библиотеке, которая будет в основе "BB-on-Linux"....
Сделать привязку [к любой библиотеке] относительно не сложно
...
В практике же Host-подсистему придется переписывать с нуля.
И вот это - переписывание, а точнее сказать, перепроектирование - и есть, собственно, задача. Библиотека же в этом смысле, вторична.


подсистема Host в папке Docu на все вопросы дает ответы
This module has a private interface, it is only used internally

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

1. В качестве первого шага это технически будет несложно, достаточно поставить и изучать обычный BlackBox в Windows.
2. Если кто-то заинтересованный работает преподавателем в вузе, то может эту работу можно распределить в качестве каких-нибудь курсовых/дипломных среди студентов,
причем изучение каждого модуля подсистемы может быть отдельной задачей.
3. После получения понимания того, как работает существующая подсистема, будет намного легче осуществить перенос BlackBox на Linux.

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

Или как в химии, катализаторы позволяют разделить труднопротекаемую реакцию на несколько легкопротекаемых,
в итоге труднопротекаемая реакция намного ускоряется.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Воскресенье, 06 Ноябрь, 2011 11:59 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Скорее, дело даже не в БлэкБокс, а в малом сообществе и ещё более малом количестве заинтересованных лиц. Судя по всему, многих устраивает "отзывчивость" запуска виндовс-версии в Wine.

Однако полностью согласен насчёт технической документации по реализации. Также нужно собрать мнения, высказанные ранее в этой теме и смежных. Полагаю, Вики вполне подойдёт для этих целей.
Частично я сам уже начал: BlackBox: Porting subsystem Hosts to Linux (DokuWiki).

Моё мнение таково: если уж переносить, то избавляться от грехов BB. Соответственно, он не будет похож 1:1 на виндовс-версию.
То есть нужно пересмотреть что нужно, что переделать. Но, прежде всего, высокой переносимости можно добиться путём совершенствования реализации подсистемы Host и самого каркаса. Тогда, гляди, останется переписать лишь незначительную часть.

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

P.S.
Я столкнулся с тем, что перенесённый в Линукс консольный компилятор (проект cp-dev) в некоторых случаях валится при компиляции модулей, импортирующих SYSTEM или Kernel . Не знаю на что грешить, но по логике вещей, виновата реализация подсистемы Host в Линукс (прежде всего, модуль Kernel), ибо тот же компилятор корректно работает в "родной" реализации Host. Конкретнее, связано с привязкой компилятора к COM.


Последний раз редактировалось Роман М. Воскресенье, 06 Ноябрь, 2011 21:09, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Воскресенье, 06 Ноябрь, 2011 13:38 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2515
Откуда: Россия, Ярославль
исходя из опыта попытки переноса ББ под gpcp и, предшествовавшего этому, анализа Host-части могу сказать, что самый нормальный способ портирования - стереть всю хост часть и написать по-новой, реализуя стандартные интерфейсы и дополняя набор абстракций до полного. При этом постепенно выкорчёвывая из "платформенно-независимых" модулей, типа Stores всякие заигрывания с SYSTEM. Больше ничего на ум не пришло.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Воскресенье, 06 Ноябрь, 2011 17:48 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 660
Откуда: СССР
Пфистер К. писал(а):
Интерфейс, который задает слишком много несущественных деталей, заставит программистов использовать их и допускать их истинность. Становится невозможным изменить эти детали позже, даже если это действительно потребуется. Особенно заманчиво приводить много деталей, когда уже существует сложный и недокументированный код, который должен быть включен в компонент.
Тогда простым решением кажется опубликовать исходный код и не беспокоиться по поводу определения менее ограниченного интерфейса. В результате вся реализация становится интерфейсом, и ее уже никогда нельзя изменить, так как это может нарушить работу клиентского кода.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Воскресенье, 06 Ноябрь, 2011 18:37 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2515
Откуда: Россия, Ярославль
кто пишет платформеннозависимо, с прямым или косвенным импортом (иногда приходится, да) Host* - сам себе враг, и знает что делает. Ну или не знает, но тогда сам виноват. Нет смысла делать на них поправку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Понедельник, 07 Ноябрь, 2011 02:34 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 660
Откуда: СССР
Роман М. писал(а):
...
Частично я сам уже начал: BlackBox: Porting subsystem Hosts to Linux (DokuWiki).
..


Ссылка не открывается.

Пётр Кушнир писал(а):
... стереть всю хост часть и написать по-новой ...


Может быть, тогда стоит составить развернутое описание по каждому модулю из Host,
на основе которого можно составить список задач, если будет много желающих принять в этом участие?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Понедельник, 07 Ноябрь, 2011 11:30 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Kubanych, она рабочая, но в ограниченное время суток.
Эта ссылка доступна в неночное время ~23-24-до утра (GMT+2). Я попросту вырубаю ПК с работающим веб-сервером, чтобы не мешал спать. 8)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 08 Ноябрь, 2011 11:11 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 660
Откуда: СССР
Роман М. писал(а):
...
Частично я сам уже начал: BlackBox: Porting subsystem Hosts to Linux (DokuWiki).
..


Хорошее дело.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 19 Ноябрь, 2011 01:07 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 660
Откуда: СССР
Уважаемые коллеги

Димыч писал(а):
... дело не в ГУИ библиотеке, которая будет в основе "BB-on-Linux"....
Сделать привязку [к любой библиотеке] относительно не сложно
...
В практике же Host-подсистему придется переписывать с нуля.
И вот это - переписывание, а точнее сказать, перепроектирование - и есть, собственно, задача. Библиотека же в этом смысле, вторична.


Как вы думаете насчет такого варианта перенесения на Linux?

1. Посмотреть, какие функции WinAPI вызывает подсистема Host.
2. Написать для них wrapper над qt (так как функции WinAPI документированы). При этом можно подсмотреть, как это дело реализовано в Wine.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Суббота, 19 Ноябрь, 2011 09:07 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8958
Откуда: Россия, Орёл
У меня была такая мысль.
Технически этот путь реален.

Стратегически он тупиковый, потому что не даёт возможности отвязаться от старых изъянов типа MDI.

Кроме того, Вы получите то же самое, что уже имеете в виде Wine. Свой "мини-Вайн".

Вот вам статистика, сколько функций нужно будет реализовать:
USER32.dll 77 функций
GDI32.dll 67 функций
KERNEL32.dll 27 функций


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Воскресенье, 20 Ноябрь, 2011 11:33 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Возможно, лучшей стратегией было бы переписывание Host с использованием какой-нибудь межплатформной библиотеки. Так что Linux, как уже выражались ранее, "станет как литой".

Пожалуй, стоило бы даже начать с переорганизации каркаса. Избавиться от архаичных технологий, а затем двигаться вперёд.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Вторник, 22 Ноябрь, 2011 02:05 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 660
Откуда: СССР
Илья Ермаков писал(а):
Технически этот путь реален.
Стратегически он тупиковый, потому что не даёт возможности отвязаться от старых изъянов типа MDI.
Кроме того, Вы получите то же самое, что уже имеете в виде Wine. Свой "мини-Вайн".
Вот вам статистика, сколько функций нужно будет реализовать:
USER32.dll 77 функций
GDI32.dll 67 функций
KERNEL32.dll 27 функций

Да, по большому счету перенос напрямую подсистемы Host - более правильное решение. Однако на этом пути есть барьеры:
1. Недокументированность подсистемы Host.
2. Требуются большие усилия одного человека или малой группы людей (Кто это будет делать? Насколько хватит его энтузиазма?).

С другой стороны
1. Функции из USER32.dll, GDI32.dll, KERNEL32.dll в достаточной степени документированы.
2. Работу можно распараллелить на множество малозависимых друг от друга процессов, так что можно использовать административный ресурс, например, в вузах.
3. Сегодня делается много диссертаций по программированию. Проблема у них - найти реальное масштабное внедрение. Вот и мотивация для тех, кто работает в вузе,
имеет административный ресурс и хочет повысить свою степень. А результат этой работы, если она будет сделана достаточно хорошо, может быть реально масштабно внедрен (просьба не разводить флейм о том, что сам BlackBox мало применяется и не переходить на оффтопную критику современных диссертаций)

Пусть будет свой "мини-Вайн". Отличия этого "мини-Вайна" от Вайна:
1. Запуск elf исполнимого файла, а не exe и dll.
2. Заточенность именно под BlackBox и программы, сделанные на нем.

При этом сам Вайн послужит примером, как функции USER32.dll, GDI32.dll, KERNEL32.dll реализовывать в Линуксе.
Пусть с недостатками, но полностью работающий в Linux дистрибутив BlackBox, который можно будет включить в стандартные репозитарии Ubuntu, Fedore, Debian и др.
- намного лучше, чем Windows BlackBox, запускаемый под Wine.

Тем более, для облегчения начало массовых работ:
1) начать эту работу можно в Windows, перепривязывая BlackBox к Qt под Windows;
2) саму переделку вызовов функций USER32.dll, GDI32.dll, KERNEL32.dll на вызовы библиотеки qt можно сделать в виде модулей BlackBox;
3) при необходимости отработки у студентов навыков работы на Си++, эту работу можно выполнить при помощи Си++.

Пусть это послужит первым шагом для дальнейшего полного переноса подсистемы Host на Linux.

На сегодняшний день написание GUI приложений для Linux - пока еще задача с довольно высоким барьером.
Lasarus дает очень много сбоев в работе, он не спроектирован, как коммерческий продукт, а как система для достижения целей самих его разработчиков, видимо, еще десятки лет он будет работать так.
А BlackBox изначально спроектирован, как коммерческий продукт, хорошо проработан. Тем более, технически этот шаг реален (а qt поддерживает MDI).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Перевод BlackBox под Linux
СообщениеДобавлено: Четверг, 16 Май, 2013 09:32 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4485
Откуда: Россия, Орёл
1) (согл. п. 3.3) три сообщения удалены как оффтопик
2) (согл. п. 3.3) выделена новая тема: Наработки Ominc


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 297 ]  На страницу Пред.  1 ... 11, 12, 13, 14, 15

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB