OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 14 Июнь, 2021 21:32

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
СообщениеДобавлено: Вторник, 26 Январь, 2021 23:03 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4519
Откуда: Россия, Орёл
Ну разработчики ББ в курсе, зачем оно надо. Этот хук представяляет собой хак, который прикрывает наследников от просмотровщика интерфейсов. Для ранней истории ББ с закрытыми исходниками, это, наверно, имело смысл. Сейчас это создаёт только лишнюю зависимость от Kernel там, где она не нужна.

Предлагаю выпилить из Kernel этот тип и, соответственно, по всему ББ выпилить зависимости от него. Потерь -- никаких. Совместимость не нарушается никак.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 26 Январь, 2021 23:09 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9418
Откуда: Россия, Орёл
Вообще да. Никакой потребности в нём нет!

Кроме той косметической.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Январь, 2021 00:35 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4619
Откуда: Россия, Орёл
Согласен, для открытой разработки от этой фичи скорее не польза, а вред. Кому надо, тот в исходнике все равно интерфейс посмотрит, фича лишь заставляет лезть в исходник.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Январь, 2021 08:01 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3091
Возражений нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Январь, 2021 14:15 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 479
Ну, вступать в борьбу за сохранение этой фичи я бы не стал; однако на прощание выскажусь, что мне она нравится своей простотой, и скрывает лишнюю информацию от глаз прикладных программистов, упрощая им жизнь. Кроме того, использование Kernel.Hook как базового типа явно сигнализировало (читателю) о применении шаблона "Крюк" (или как там он называется) - т.е. "ищи реализацию где-то в другом модуле; реализация должна себя "повесить" на крюк где-то в переменных этого модуля; реализация, скорее всего, использует интерфейсы, которые объявляются в модулях, импортирующих данный (т.е. это обход запрета циклического импорта)". Выходит, и для системного программиста была польза от Kernel.Hook.

Ну и потом, это как тайный знак: позволяет отличить гуру от негуру 8)


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

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3091
Чаще всего название типа сигнализирует о применении шаблона Hook так или иначе.

Может кто-то ещё выскажется за сохранение данной особенности? Если нет, то уберём в скором времени.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 08 Апрель, 2021 10:21 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3091
Сделал предложенное измерение.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 08 Апрель, 2021 11:33 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4519
Откуда: Россия, Орёл
Иван Денисов писал(а):
Сделал предложенное измерение.

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

А вот это уже спорный вопрос.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 08 Апрель, 2021 15:12 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9418
Откуда: Россия, Орёл
Не надо ничего скрывать! Зачем?

Это эксперименты Оминк, в свете разных идеализаций 90-х на тему бинарной компонентости и проч. (даём пользователям чёрные ящики без исходников, половину системы объявляем недокументированной и т.п.)

Неявщина противоречит "главному курсу".


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 08 Апрель, 2021 16:17 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3091
Понял, будем поддерживать курс на свободное программное обеспечение.


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

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 479
Мы с Иваном Денисовым сейчас делаем две большие вещи: интегрируем плиточный менеджер оконный в ББ, и одновременно перестраиваем сруктуру репозитория кроссплатформенной сборки. И я скучаю по Kernel.Hook. Пришлось перетряхивать порядок загрузки модулей при загрузке ББ, и половина реализаций по шаблону "крюк" вылетела. То есть Host-модули не включены нигде в список импорта и не загружаются динамически - и все, крюк остается пустым. При этом ББ благополучно загружается. А затем, если повезет, произойдет авост NIL dereferencing.

Если есть базовый тип Kernel.Hook, то есть и возможность сделать верификатор: ему передается множество модулей, он выявляет все крюки и проверяет, что хотя бы одна реализация где-то в наборе модулей имеется. По крайней мере отчитывается: вот, в наборе такие-то абстрактные крюки, и к ним такие-то конкретные реализации. Это повышает надежность и управляемость системы в целом.

По крайней мере, пока нет этого чудесного верификатора, можно ручками сделать текстовый поиск Kernel.Hook и найти все абстрактные крюки, а потом уж ручками найти к каждому его реализацию и включить нужный модуль в набор.

Если изначальная мотивация у Бориса была уменьшить число зависимостей от Kernel, то предлагаю вернуть Hook в модуль Services

MODULE Services;
TYPE Hook* = POINTER TO ABSTRACT RECORD (Kernel.Hook) END

Борис Рюмшин писал(а):
Ну разработчики ББ в курсе, зачем оно надо. Этот хук представяляет собой хак, который прикрывает наследников от просмотровщика интерфейсов. Для ранней истории ББ с закрытыми исходниками, это, наверно, имело смысл. Сейчас это создаёт только лишнюю зависимость от Kernel там, где она не нужна.

Предлагаю выпилить из Kernel этот тип и, соответственно, по всему ББ выпилить зависимости от него. Потерь -- никаких. Совместимость не нарушается никак.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 14 Май, 2021 11:28 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3091
Может быть в Config проверять перечень важных системных хуков?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 14 Май, 2021 15:48 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4519
Откуда: Россия, Орёл
Честно не понял смысла проблемы.

Ну вот без изменений весь список зависимых от Kernel.Hook:
Вложение:
Снимок экрана в 2021-05-14 15-47-45.png
Снимок экрана в 2021-05-14 15-47-45.png [ 9.39 КБ | Просмотров: 491 ]

И?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 14 Май, 2021 15:52 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4519
Откуда: Россия, Орёл
Можно перечислить где-то и проверить на NIL. Временно поставить хоть в Config, как Иван предлагает.
Хуки, которые ставит подсистема Host не зависят от Kernel.Hook.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 14 Май, 2021 15:55 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4519
Откуда: Россия, Орёл
Kernel.Hook делался для того, чтобы прикрыть от внешних программистов внутреннюю кухню, чтобы не возникало желания подменить реализацию там.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 14 Май, 2021 16:27 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 479
Борис, вы льете мельницу на мою воду: ваш снимок - это потому, что у вас версия модулей, в которой до сих пор есть Kernel.Hook. Если Kernel.Hook нет как базового типа всех крюков - то вы этот список не построите одной командой.

И поправлю вас: по крайней мере один платформенный модуль, другие не проверял:

HostMechanisms.Hook = POINTER TO RECORD (Mechanisms.Hook(Kernel.Hook))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 14 Май, 2021 16:34 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4519
Откуда: Россия, Орёл
Про Механизмы я вспомнил, но исправлять не стал.
Список да есть. Пока. Но он не нужен. Я объяснил почему. Вы предлагаете не только вернуть всё в эти модули, но и в другие расставить? Это не имеет большого смысла, кроме сиюминутного удобства.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 14 Май, 2021 18:13 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3091
Думаю, что был бы полезен такой инструмент в виде расширения, который даёт анализ всех абстрактных записей и их расширений. И если слово Hook встречается в названии, то подкрашивает как-то, чтобы особо на эти расширения обращать вниманиние.
Никто не делал постоитель графов такого рода на основе баз исходных текстов программ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 14 Май, 2021 18:51 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2411
Откуда: Россия, Томск
Борис Рюмшин писал(а):
Kernel.Hook делался для того, чтобы прикрыть от внешних программистов внутреннюю кухню
*хукню.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ] 

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


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

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


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

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