Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  07:37[Войти] | [Зарегистрироваться]
Обсуждение темы:
Оберон-технология: особенности и перспективы


Тематика обсуждения: Оберон-технология. Особенности, перспективы, практическое применение. 

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 6256 сообщений

Добавить свое сообщение

Отслеживать это обсуждение

Обсуждение из раздела
Школа ОБЕРОНА

<<<... | 2936—2927 | 2926—2917 | 2916—2907 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 334


№ 2926   20-02-2007 11:27 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2916« (Alexey Veselovsky)
___________________________

Гм... Об этом не знал. Насколько подробно в документации к BB это описано (если там есть что-то, то лучше там и почитаю, зачем замусоривать форум?)?

Посмотрите, как устроен модуль Files -- фабричные объекты dir, stdDir, и процедура SetDir.

Кстати, кроме этой процедуры там (почти) и нет исполнимого кода -- вся реализация в HostFiles, который в своем Init (в конце модуля) производит инсталляцию вызовом

  Files.SetDir(dir);

Как считаете, то что я предложил чуть ниже (про полное имя модуля) - имело бы смысл в ББ? Тем более что это же не моя идея, это стандартная практика поиска необходимых файлов и библиотек в разнообразных ОС.

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




№ 2925   20-02-2007 11:18 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2908« (Alexey Veselovsky)
___________________________

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

Кстати, в Обероне сделать несколько "виртуальных" Оберонов -- таки довольно несложно. Без потери производительности.


№ 2924   20-02-2007 10:24 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2922« (Сергей Губанов)
___________________________

Ответ на »сообщение 2905« (Alexey Veselovsky)

имею некую программу А (представленую каким-то множеством модулей), предположим выходит новая персия программы А (А')

В оберонах Вы имеете не программу А, а подсистему А.

Эта подсистема внутри себя делится, будем так говорить, на "каркас" и "плагины". Модули составляющие "каркас" в А и А' должны быть либо одинаковыми, либо в А' каркас может быть расширен путём добавления новых каркасных модулей; в то же время "модули-плагины" могут (и должны) иметь разные имена что бы их можно было загружать в различных комбинациях. Модули каркаса, понятно, не импортируют модули "плагинов", а загружают их динамически, по текстовому имени. В качестве примера смотрите подсистему Comm в BlackBox. Там "каркас" - это модуль CommStreams, а модули CommTCP и CommV24 - "плагины"; загружаются по их текстовым именам "CommTCP" и "CommV24".

А если имена плагинов совпадут? Например есть модуль-плагин некий TextEdit в двух разных подсистемах. И что тогда?

Кроме того, деление на каркас и плагины, опять таки условно.


№ 2923   20-02-2007 10:08 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2921« ()
___________________________

Ответ на »сообщение 2909« (Руслан Богатырев)
___________________________
рассуждения 2906-2909 не верны. В "класической ОС Oberon"  нет никаких проблнм ни в запуске двух копий одного приложения ни в запуске двух немного отличающихся копий. Пример к первой ситуации - одновременный просмотр / редактирование двух текстов с помощью Edit. Пример к второй ситуации - Edit и XE.
О необходимости учить матчасть даже не напоминаю.


А как там это реализовано?


№ 2922   20-02-2007 10:03 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2905« (Alexey Veselovsky)

имею некую программу А (представленую каким-то множеством модулей), предположим выходит новая персия программы А (А')

В оберонах Вы имеете не программу А, а подсистему А.

Эта подсистема внутри себя делится, будем так говорить, на "каркас" и "плагины". Модули составляющие "каркас" в А и А' должны быть либо одинаковыми, либо в А' каркас может быть расширен путём добавления новых каркасных модулей; в то же время "модули-плагины" могут (и должны) иметь разные имена что бы их можно было загружать в различных комбинациях. Модули каркаса, понятно, не импортируют модули "плагинов", а загружают их динамически, по текстовому имени. В качестве примера смотрите подсистему Comm в BlackBox. Там "каркас" - это модуль CommStreams, а модули CommTCP и CommV24 - "плагины"; загружаются по их текстовым именам "CommTCP" и "CommV24".



№ 2921   20-02-2007 09:57 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2909« (Руслан Богатырев)
___________________________
рассуждения 2906-2909 не верны. В "класической ОС Oberon"  нет никаких проблнм ни в запуске двух копий одного приложения ни в запуске двух немного отличающихся копий. Пример к первой ситуации - одновременный просмотр / редактирование двух текстов с помощью Edit. Пример к второй ситуации - Edit и XE.
О необходимости учить матчасть даже не напоминаю.
Сообщение не подписано


№ 2920   20-02-2007 08:30 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2918« (Руслан Богатырев)
___________________________

Ответ на »сообщение 2917« (Alexey Veselovsky)
___________________________

Выглядит логично, но где проходит граница между библиотечными (общими для разных приложений, но не системными, например OberonDotNET и OberonEclipse) и прикладными модулями (модулями конкретного приложения)? Если следовать логике, то после завершения приложения должен выгрузиться его головной модуль (с главной точкой входа) и остальной куст (остаток приложения). Но кто и где определяет этот куст? Когда остаются общие ресурсы, а когда они выгружаются?

С одной стороны - нигде. Модуль может быть выгружен если его экспорт в данный момент никто не использует (это подходит к большенству приложений). Если у нас ансамбль модулей из которых состоит прилоежние, то ясно что они могут (и будут) использовать экспорт друг друга. Поэтому, видимо, должен входить в состав приложения какой-то стандартизированный модуль. назовем его Control, который должен экспортировать по крайней мере процедуру Close, по вызову которой он инициирует завершение работы (разрав связей) с последующей выгрузкой своих модулей (входящих в это приложение). Возможно необходимо проверять, не подцепился ли к ним кто-то "лишний", использующий экспорт одного или нескольких модулей из состава этого приложения. Если кто-то подцепился, то тут уже есть варианты что делать (выгрузить его (послать ему Close если это приложение), или наоборот, самим не выгружаться)... Но именно что для приложений такие ситуации крайней редки.

Более того - как я понимаю, автоматического "выгружателя" модулей у нас нет, поэтому  поведение А' будет зависеть не только от того, запущена ли А в данный момент, но и от ИСТОРИИ запусков А и А'.

Правильно понимаете. Так что ежели нужно версионирование с последовательным запуском и полной "ручной" выгрузкой модулей приложения, то решения имеют место быть. А если одновременно несколько клонов и с автопилотированием загрузки, то извиняйте...

См. выше. Разве так нельзя?


№ 2919   20-02-2007 08:13 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2915« (Руслан Богатырев)
___________________________

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

Недостаток, разумеется на уровне ОС, а не языка.


№ 2918   20-02-2007 08:10 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2917« (Alexey Veselovsky)
___________________________

Ситуация симметрична в обоих случаях т.к. раз это библиотечный модуль, то его использовать могут не только наши А и А', но и какие-то другие программы(модули) поэтому при запуске А' вне засивимости от того запущена ли у нас А, в этом счетчике может оказаться как четное, так и не четное число.

Выглядит логично, но где проходит граница между библиотечными (общими для разных приложений, но не системными, например OberonDotNET и OberonEclipse) и прикладными модулями (модулями конкретного приложения)? Если следовать логике, то после завершения приложения должен выгрузиться его головной модуль (с главной точкой входа) и остальной куст (остаток приложения). Но кто и где определяет этот куст? Когда остаются общие ресурсы, а когда они выгружаются?

Более того - как я понимаю, автоматического "выгружателя" модулей у нас нет, поэтому  поведение А' будет зависеть не только от того, запущена ли А в данный момент, но и от ИСТОРИИ запусков А и А'.

Правильно понимаете. Так что ежели нужно версионирование с последовательным запуском и полной "ручной" выгрузкой модулей приложения, то решения имеют место быть. А если одновременно несколько клонов и с автопилотированием загрузки, то извиняйте...


№ 2917   20-02-2007 08:00 Ответить на это сообщение Ответить на это сообщение с цитированием
Ответ на »сообщение 2914« (Руслан Богатырев)
___________________________

Ответ на »сообщение 2911« (Alexey Veselovsky)
___________________________

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

Так Вам нужно одновременно запускать старую и новую версии или по очереди? Тут есть разница...

Предположим, что у нас есть библиотечный модуль CallCounter (библиотечный), экспортирующий процедуры Inc и Total -- то бишь простейший ресурс. Считаем, что поведение приложения зависит от того, четное значение счетчика или нет. Оба приложения полезут к счетчику и их поведение будет детерминировано при независимом исполнении и недетерминировано при одновременном. Чем спасает подход с указанием полного пути (или стратегией поиска) в этом элементарном случае?

Ситуация симметрична в обоих случаях т.к. раз это библиотечный модуль, то его использовать могут не только наши А и А', но и какие-то другие программы(модули) поэтому при запуске А' вне засивимости от того запущена ли у нас А, в этом счетчике может оказаться как четное, так и не четное число. Более того - как я понимаю, автоматического "выгружателя" модулей у нас нет, поэтому  поведение А' будет зависеть не только от того, запущена ли А в данный момент, но и от ИСТОРИИ запусков А и А'.


<<<... | 2936—2927 | 2926—2917 | 2916—2907 | ...>>>
Всего сообщений в теме: 6256; страниц: 626; текущая страница: 334


Добавить свое сообщение

Отслеживать это обсуждение

Дополнительная навигация:
Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру
  
Время на сайте: GMT минус 5 часов

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

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования