OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 16 Декабрь, 2018 02:08

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




Начать новую тему Ответить на тему  [ Сообщений: 121 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 09:01 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9062
Откуда: Россия, Орёл
Info21 писал(а):
Да, мне тоже непонятно насчёт разноименных модулей.
Ведь всё равно нужно что-то сделать (прописать, перекомпилить(?)), чтобы на нужной платформе подключался нужный.
Общий ход мысли Петра отражает направление Потока Дао.


У меня, схематично, было так: пускач (EXE или ELF) выставляет признак, на какой ОС работаем, а потом уже при загрузке, допустим, абстрактного Files загружается, в зависимости от ОС, либо Host_winFiles, либо Host_linFiles и регистрирует свой Directory в Files, без перекомпиляций и прописываний.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 09:25 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2538
Откуда: Россия, Ярославль
Иван Денисов писал(а):
Илья Ермаков писал(а):
- не должно быть так, что есть HostFiles и для одной ОС, и для другой.
Ну это какая-то ваша концепция, которая не соответствует изначальной задумке Оминк. В том-то и фишка, что названия одинаковые, что не нужно ничего перекомпилировать, достаточно заменить реализацию, и ББ будет работать на другой ОС.

откуда вы это берете?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 09:33 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Пётр Кушнир писал(а):
Иван Денисов писал(а):
Илья Ермаков писал(а):
- не должно быть так, что есть HostFiles и для одной ОС, и для другой.
Ну это какая-то ваша концепция, которая не соответствует изначальной задумке Оминк. В том-то и фишка, что названия одинаковые, что не нужно ничего перекомпилировать, достаточно заменить реализацию, и ББ будет работать на другой ОС.

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

Тут описаны ВСЕ модули, которые изменяются при портировании, а именно System/Kernel, Host и привязки к либам. На том ВСЕ. Ничего больше не меняется. Никаких мета-хаков в стиле, который предлагает Илья, никаких сложностей с разбиением ядра, про что сказал Александр.
Цитата:
Ported Modules

System

In the System subsystem, only the module Kernel has been changed. The module has many portable parts, but many things also needed changes. Thus, the Kernel module on Linux is similar to the Windows version in many respects. One notable difference is that on Linux the standard scheeme for allocating memory is the same as the one that on Windows is only used for DLLs.

Lin

Lin is a new Linux specific subsystem (similar to Win for Windows). All modules in this subsytem are new and they are only useful under Linux. This subsystem mostly contain interface modules. No interface modules has been automatically generated, they were all made by hand, so they are not complete, but they contain everything that BlackBox is using at the moment.

Lin/Mod/tool.odc Tool for building the Linux part of BlackBox
LinLinker Links a Linux executable
Lin/Rsrc/exe.img Image file for the LinLinker
Lin/Rsrc/blackbox.c C-program to create the exe.img
Lin/Rsrc/Makefile Makefile for blackbox.c
LinLog Implements the Log.Hook interface and logs to standard out
LinLibc Interface module for the libc library
LinSockets Interface module for the libc library (TCP/IP communication)
LinX11 Interface module for the libx11 library
LinDl Interface module for the libdl library (dynamic loading of libraries)
LinGLib Interface module for the libglib library
LinGdk Interface module for the libgdk library
LinGdkImlib Interface module for the libgdk_imlib library (pictures)
LinGtk Interface module for the libgtk library
LinGnome Interface module for the libgnome library
LinGnomeUI Interface module for the libgnomeui library
LinGnomeSupport Interface module for the libgnomesupport library
LinTestPic Shows how to use gdk_imlib to load pictures
Lin/Rsrc/applogo.png BlackBox icon
Lin/Rsrc/file.xpm Icon used in the Tree control
Lin/Rsrc/folder.xpm Icon used in the Tree control
Lin/Rsrc/openfolder.xpm Icon used in the Tree control
Lin/Docu/LinuxPort This document

Host

All modules in the Host subsystem needs changes. So far the following modules have been ported. The list is split up into categories depending on how much still needs to be done with the modules, for details about what needs to be done, see Left to Do below.

90% (or more) Complete

HostFiles, HostGnome, HostWindows, HostMenus, HostPorts, HostFonts, HostDialog, HostPackedFiles

70% Complete

HostCFrames, HostCmds, HostTextConv

50% Complete

HostClipboard, HostMechanisms

Dummy implementations

HostRegistry, HostTabFrames

Worth noting is that HostGnome is a new module. When this module is linked into the application it enables the graphical user interface. Without this module only command line applications can be created with BlackBox.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 09:39 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2538
Откуда: Россия, Ярославль
Иван Денисов писал(а):
а потом я вижу это из документации. Вот например возьмем кусочек из документации к Линкус-потру.

Тут описаны ВСЕ модули, которые изменяются при портировании, а именно System/Kernel, Host и привязки к либам. На том ВСЕ. Ничего больше не меняется. Никаких мета-хаков в стиле, который предлагает Илья, никаких сложностей с разбиением ядра, про что сказал Александр.
Ну вот смотрите, модуль является единицей компиляции дистрибуции и загрузки (динамической в т.ч.).
А вы сейчас ограничиваете возможности замены модуля только первыми двумя пунктами. И говорите, что так правильно.
Еще раз вам говорю, что в ситуации с пустым интерфейсом реализации - подсистема Host, как решение проблемы запуска ББ теряет свою исключительность. Я же не зря у вас спросил про кроссдевелопинг, вы этот вопрос проигнорировали.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 09:51 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Пётр, замена, может быть через мета-хаки, но сам компонентный подход Оминк предполагает установку и удаление компонентов, а также замену реализации простой заменой папки.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:01 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2538
Откуда: Россия, Ярославль
Иван, код секции BEGIN модуля StdLoader есть мета-хак.

Чтобы вернуть тред из оффтопа поясню, что в данном случае мы обсуждаем пересмотр внутренней структуры ББ.
Результатом этого пересмотра будет повышение уровня герметичности системного слоя.
Следствием повышения герметичности станет возможность заменить содержимое модулей и сами модули Host на альтернативные, от которых теперь не требуется сохранение интерфейса, а только лишь установка реализаций в абстрактный разъем => получается качественный переход Host => платформа.
У этого следствия есть множество практических применений.
Илья Ермаков предвосхитил одно из таких применений. Наличие N подсистем платформ которые лежат рядом и не пересекаются в пространстве имен подсистем.
В этом я с ним согласен, а мои эксперименты так же подтверждают такую возможность. Но. В данном треде я не декларирую такой цели, это всё уже дела будущего. В данном треде мы обсуждаем проблемы текущей сборки ББ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:02 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Пётр Кушнир писал(а):
Я же не зря у вас спросил про кроссдевелопинг, вы этот вопрос проигнорировали.
Тут все не так просто. Я не делал никакой настоящей кросс-разработки в том понимании как ты это представляешь. Я работал над тем, чтобы мой компонент работал на портированной версии каркаса. Работать работает, на столько на сколько сейчас GUI версия портирована. Основная проблема с петлей сейчас, чтобы и GUI и Actions крутились без загрузки проца и без тормозов одновременно.

При разработке сервера, я использовал LinTcp, который по сути был HostTcp и просто был заменой CommTcp, следовательно я совершенно не парился кросс-разработкой, поскольку при этом интерфейсы Comm все сохранялись. CommStreams уже содержит эти самые мета-хаки и указав LinTcp в качестве протокола, я получил работающий сервер на Linux.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:04 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2538
Откуда: Россия, Ярославль
Иван Денисов писал(а):
Пётр, замена, может быть через мета-хаки, но сам компонентный подход Оминк предполагает установку и удаление компонентов, а также замену реализации простой заменой папки.

Как происходит загрузка ББ? Модуль StdLoader грузит динамически, по имени модуля код модуля Init, который лежит в System, а импортирует непосредственно HostMenus.
Если осознать ситуацию, мы получим такой вопрос - почему StdLoader всегда грузит только Init, откуда тут хардкод? Почему модуль SystemInit не лежит непосредственно в Host?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:05 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Пётр Кушнир писал(а):
Иван, код секции BEGIN модуля StdLoader есть мета-хак.
Я не говорю, что их нет. В Comm и SQL эти приемы активно используются. Но это приемы уже для надстроек над базовым каркасом, который построен по иному принципу, а именно через реализации абстрактных классов через hook и через directory.

Пётр Кушнир писал(а):
только лишь установка реализаций в абстрактный разъем
Они и так это и делают! Те примеры, которые вы называете — это исключение из правил.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:06 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Пётр Кушнир писал(а):
Иван Денисов писал(а):
Пётр, замена, может быть через мета-хаки, но сам компонентный подход Оминк предполагает установку и удаление компонентов, а также замену реализации простой заменой папки.

Как происходит загрузка ББ? Модуль StdLoader грузит динамически, по имени модуля код модуля Init, который лежит в System, а импортирует непосредственно HostMenus.
Если осознать ситуацию, мы получим такой вопрос - почему StdLoader всегда грузит только Init, откуда тут хардкод? Почему модуль SystemInit не лежит непосредственно в Host?
Чтобы уменьшить порог вхождения! Чтобы не городить абстрактную реализацию для одной процедуры! Тут пытливые русские оказались педантичнее швейцарцев, я чувствую :)
Пётр, давай, этот вопрос зададим Марку Фраю, чтобы не строить догадок :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:08 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2538
Откуда: Россия, Ярославль
Иван Денисов писал(а):
Пётр Кушнир писал(а):
Я же не зря у вас спросил про кроссдевелопинг, вы этот вопрос проигнорировали.
Тут все не так просто. Я не делал никакой настоящей кросс-разработки в том понимании как ты это представляешь. Я работал над тем, чтобы мой компонент работал на портированной версии каркаса. Работать работает, на столько на сколько сейчас GUI версия портирована. Основная проблема с петлей сейчас, чтобы и GUI и Actions крутились без загрузки проца и без тормозов одновременно.
Я понимаю, я читал форум. Формировался бинарник под Windows, CrossBB со вшитыми HostXxx, он запускался под вайном, а оригиналы HostXxx заменялись на линукс-версию, и работа шла над внедрением GTK в тот же интерфейс. Проблема с петлей возникла потому, что принцип работы HostMenus не совпадал с принципом построения петель в WinApi. А HostMenus не позволял реализовать другой принцип, потому что HostMenus заточен на работу под Windows.
Иван Денисов писал(а):
При разработке сервера, я использовал LinTcp, который по сути был HostTcp и просто был заменой CommTcp, следовательно я совершенно не парился кросс-разработкой, поскольку при этом интерфейсы Comm все сохранялись. CommStreams уже содержит эти самые мета-хаки и указав LinTcp в качестве протокола, я получил работающий сервер на Linux.

О3 не взлетел, я так понимаю?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:11 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2538
Откуда: Россия, Ярославль
Иван Денисов писал(а):
Чтобы уменьшить порог вхождения! Чтобы не городить абстрактную реализацию для одной процедуры! Тут пытливые русские оказались педантичнее швейцарцев, я чувствую :)
Пётр, давай, этот вопрос зададим Марку Фраю, чтобы не строить догадок :)
Исторически сложившиеся причины интересны, но даже если все так, как вы говорите - осознания ситуации не произойдет. Потому, что это не ответ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:16 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2538
Откуда: Россия, Ярославль
Иван, я тут подумал, что возможно вас может задевать тот факт, что сейчас я описываю принципы, которые не использовались в вашем продукте, ББ под Linux.
Я ни в коем случае не делал попыток его критиковать, это крутой ББ под линукс. Но в данном треде призываю вас к отчуждению от своего продукта, в целях объективности.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:45 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 434
Откуда: Егорьевск
Илья Ермаков писал(а):
Info21 писал(а):
Да, мне тоже непонятно насчёт разноименных модулей.
Ведь всё равно нужно что-то сделать (прописать, перекомпилить(?)), чтобы на нужной платформе подключался нужный.
Общий ход мысли Петра отражает направление Потока Дао.


У меня, схематично, было так: пускач (EXE или ELF) выставляет признак, на какой ОС работаем, а потом уже при загрузке, допустим, абстрактного Files загружается, в зависимости от ОС, либо Host_winFiles, либо Host_linFiles и регистрирует свой Directory в Files, без перекомпиляций и прописываний.


HostFiles не может загружаться динамически.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:46 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Пётр Кушнир писал(а):
Я понимаю, я читал форум. Формировался бинарник под Windows, CrossBB со вшитыми HostXxx, он запускался под вайном, а оригиналы HostXxx заменялись на линукс-версию, и работа шла над внедрением GTK в тот же интерфейс.
Нет, Петр. Я работал не так, это был метод Евгения Темиргалеева. Я вначале заменял папки при запуске среды специальным скриптом, а потом, когда среда начала работать сама в себе необходимость в этом отпала и я работал в самой Linux-GUI среде.

Пётр Кушнир писал(а):
Проблема с петлей возникла потому, что принцип работы HostMenus не совпадал с принципом построения петель в WinApi. А HostMenus не позволял реализовать другой принцип, потому что HostMenus заточен на работу под Windows.
Нет, проблема не в HostMenus, а в том, что не нашлось специалиста по Linux который смог бы совместить прокрутку Gtk2 петли и прокрутку Actions, так чтобы не грузить проц и не подвисали Actions. В итоге начали грешить на Gtk2, и что надо писать сразу для иксов... короче, ответа нет.

Пётр Кушнир писал(а):
О3 не взлетел, я так понимаю?
Задача была сделать не Web-сервер, а сервер для распределенных вычислений. Для увеселения процесса, я сделал сначала веб-сервер для статической раздачи контента, который благополучно проработал две месяца для демонстрации. А потом я оптимизировал алгоритм одной задачи так, что необходимость паралелить отпала, а для другой нашел готовое решение в виде пакета GAMESS.

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

Пётр Кушнир писал(а):
Иван, я тут подумал, что возможно вас может задевать тот факт, что сейчас я описываю принципы, которые не использовались в вашем продукте, ББ под Linux. Я ни в коем случае не делал попыток его критиковать, это крутой ББ под линукс. Но в данном треде призываю вас к отчуждению от своего продукта, в целях объективности.
Во первых он не мой, я сделал мизерный вклад, это работа Оминк, Сергея и Александра. Поэтому вы Пётр меня тут нисколько не задеваете. Я объективно оцениваю, что если не будет единого видения идеи Оминк или единого понимания архитектуры их продукта, то коллективная работа по его поддержке будет подорвана и невозможна. Меня это огорчит :) поэтому не жалею времени на общение с вами.


Последний раз редактировалось Иван Денисов Пятница, 06 Декабрь, 2013 10:50, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:50 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 434
Откуда: Егорьевск
Иван Денисов писал(а):
Пётр Кушнир писал(а):
Я же не зря у вас спросил про кроссдевелопинг, вы этот вопрос проигнорировали.
Тут все не так просто. Я не делал никакой настоящей кросс-разработки в том понимании как ты это представляешь. Я работал над тем, чтобы мой компонент работал на портированной версии каркаса. Работать работает, на столько на сколько сейчас GUI версия портирована. Основная проблема с петлей сейчас, чтобы и GUI и Actions крутились без загрузки проца и без тормозов одновременно.

При разработке сервера, я использовал LinTcp, который по сути был HostTcp и просто был заменой CommTcp, следовательно я совершенно не парился кросс-разработкой, поскольку при этом интерфейсы Comm все сохранялись. CommStreams уже содержит эти самые мета-хаки и указав LinTcp в качестве протокола, я получил работающий сервер на Linux.


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:51 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Alexander Shiryaev писал(а):
Иван, лучше используй CommTCP вместо LinTcp. Не должно быть никакого LinTcp, в новых версиях Linux-порта его и нет.

Рассказывал как я делал до того, как вы Александр руку приложили :) Сейчас сервер не используется, поэтому я пока не переделывал под новые реализации.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 10:54 
Аватара пользователя

Зарегистрирован: Суббота, 26 Ноябрь, 2005 02:12
Сообщения: 434
Откуда: Егорьевск
Иван Денисов писал(а):
Пётр Кушнир писал(а):
Проблема с петлей возникла потому, что принцип работы HostMenus не совпадал с принципом построения петель в WinApi. А HostMenus не позволял реализовать другой принцип, потому что HostMenus заточен на работу под Windows.
Нет, проблема не в HostMenus, а в том, что не нашлось специалиста по Linux который смог бы совместить прокрутку Gtk2 петли и прокрутку Actions, так чтобы не грузить проц и не подвисали Actions. В итоге начали грешить на Gtk2, и что надо писать сразу для иксов... короче, ответа нет.

Да, так и есть.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 11:03 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Иван Кузьмицкий писал(а):
Конечная цель - упростить концепцию. Ясно очертить системный и гостевой слой. Щас там присутствуют макаронные вещи, в смысле свисающих тут и там артефактов :)

Вернемся к теме. Идея благородна и всячески поддерживаю!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Декабрь, 2013 11:08 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2930
Откуда: г. Ярославль
Иван Денисов писал(а):
Чтобы уменьшить порог вхождения! Чтобы не городить абстрактную реализацию для одной процедуры!
Сомневаюсь, что тут вообще можно думать про заботу о новичках. Есть мнение, что пытались банально успеть к очередной годовщине Великой Октябрьской Революции или какой-то более приземлённой дате :). ББ получил награду в 1994 году, не в этом ли дело?
А если серьёзно, ББ выглядит так, будто его кроили из двух важных концепций. Первая из них - это объектная оберон-ОС, к её реализации отнеслись серьёзно и она проработана прекрасно. Вторая из них - прокладка между первой концепцией и гостевой ОС, где возникают явные сложности с качественной проработкой абстракций самой ОС. По всей видимости, первая концепция важнее. Отсюда и все моменты с хостом.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 121 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.

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


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

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


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

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