Если использовать для этого отдельный сервис, то может и интерфейс взаимодействия приложений доработать?
Например, можно сделать по образцу D-BUS.
..bw
Общесистемный буфер обмена
RAM-диск Колибри(/rd/1/) как раз является такой папкой в памяти. А буфер предназначен для обмена данными между приложениями без необходимости вводить имена файлов.E-water wrote:А может лучше, своего рода, контейнер файлов? Ну типа папка, только её файлы в RAM.
Да, согласен. Это может делать и сам сервис.E-water wrote:Для текста, хорошо бы прогу, которая могла бы эммулируя нажатия клавиш впечатывать текст(тогда не нужно делать поддержку буффера в прогах, для того что бы вставить текст)
bw
Что плохо в текущей реализации интерфейса?
При чем здесь плохо, это разные вещи. Посмотри сначала.
Если бы я предложил позаимствовать COM/DCOM, ты бы сказал - чем плох текущий интерфейс? Это просто интерфейсы разного порядка, COM и D-BUS это протоколы высокго уровня, если угодно. Ты ведь не сравниваешь IP и HTTP протоколы? Чем IP хуже HTTP?
Вот например в IPC KOS предусмотрен интерфейс для доступа к сервисам по их именам или другим идентификатором (заранее известным), без дополнительных телодвижений вроде чтения pid из заранее подготовленного, на этот случай, файла?
..bw
Если бы я предложил позаимствовать COM/DCOM, ты бы сказал - чем плох текущий интерфейс? Это просто интерфейсы разного порядка, COM и D-BUS это протоколы высокго уровня, если угодно. Ты ведь не сравниваешь IP и HTTP протоколы? Чем IP хуже HTTP?
Вот например в IPC KOS предусмотрен интерфейс для доступа к сервисам по их именам или другим идентификатором (заранее известным), без дополнительных телодвижений вроде чтения pid из заранее подготовленного, на этот случай, файла?
..bw
bw
Ясно.
Вот новая версия, здесь есть вставка во все приложения через Ctrl-Alt-V.
Ясно.
Вот новая версия, здесь есть вставка во все приложения через Ctrl-Alt-V.
- Attachments
-
-
clip-0.2.7z (30.62 KiB)Downloaded 310 times
-
Прошло больше года...
Вопрос: Кто-нибудь занимается темой? Не то что есть - вставка текста через эмуляцию, а полноценным буфером?
Если у кого то на полпути и он вот-вот доделает, то я буду заниматься другими вопросами, благо их хватает.
Если желающих нет, то возьмусь за реализацию. Надо же к выходу следующей официальной версии сделать наконец буфер обмена по человечески.
З.Ы. Мне нравится идея процесса-сервера с буфером выделяемым посредством функции 68.22 (без участия функции 60).
Вопрос: Кто-нибудь занимается темой? Не то что есть - вставка текста через эмуляцию, а полноценным буфером?
Если у кого то на полпути и он вот-вот доделает, то я буду заниматься другими вопросами, благо их хватает.
Если желающих нет, то возьмусь за реализацию. Надо же к выходу следующей официальной версии сделать наконец буфер обмена по человечески.
З.Ы. Мне нравится идея процесса-сервера с буфером выделяемым посредством функции 68.22 (без участия функции 60).
Mario
Не геморойтесь с расшареной памятью, делайте в ядре. Компактнее, быстрее и намного проще.
Imho буфер обмена это функция оконной системы. Пока она часть ядра буфер тоже должен быть частью ядра.
Не геморойтесь с расшареной памятью, делайте в ядре. Компактнее, быстрее и намного проще.
Imho буфер обмена это функция оконной системы. Пока она часть ядра буфер тоже должен быть частью ядра.
а насколько это безопасно?Serge wrote:Imho буфер обмена это функция оконной системы
Albom
Даже надёжней чем расшареная память. Для неё нужна синхронизация доступа к данным, а в Колибри таких примитивов нет.
Т.е. если это ресурс статический и расшареный только на чтение: шрифт, битмап и т.п. будет работать замечательно, пока сервер не захочет изменить ресурс. Блокировки доступа нет. Единственный выход сделать счётчик версий для динамичных ресурсов и проверять до и после копирования в локальную память процесса.
P.S. Я вообще не вижу безопасного решения для расшареной памяти. Любой процесс с доступом на запись может забить на синхронизацию и прицип "сейчас другой джигит на красный свет ехать будет" не сработает. Джигит может оказаться дальтоником.
Даже надёжней чем расшареная память. Для неё нужна синхронизация доступа к данным, а в Колибри таких примитивов нет.
Т.е. если это ресурс статический и расшареный только на чтение: шрифт, битмап и т.п. будет работать замечательно, пока сервер не захочет изменить ресурс. Блокировки доступа нет. Единственный выход сделать счётчик версий для динамичных ресурсов и проверять до и после копирования в локальную память процесса.
P.S. Я вообще не вижу безопасного решения для расшареной памяти. Любой процесс с доступом на запись может забить на синхронизацию и прицип "сейчас другой джигит на красный свет ехать будет" не сработает. Джигит может оказаться дальтоником.
Serge
Буфер обмена не обязан быть частью оконной подсистемы. Он может передавать разные типы данных.
Ну, если уж на то пошло, что кто-то их не соблюдает, так ведь и система вообще не защищена от злого умысла. Пока что уродских действий больных на голову старателей не наблюдается. Я надеюсь и в дальнейшем таковых не будет.
З.Ы. Ну, так никто и не ответил - занимается кто-нибудь вопросом?
Я не согласен. Мы взяли курс на уход от принципа "все в ядро".Imho буфер обмена это функция оконной системы
Буфер обмена не обязан быть частью оконной подсистемы. Он может передавать разные типы данных.
Все решаемо, структура получится немного сложней, но все будет работать. Джигиты будут соблюдать правила, как и все!P.S. Я вообще не вижу безопасного решения для расшареной памяти. Любой процесс с доступом на запись может забить на синхронизацию и принцип "сейчас другой джигит на красный свет ехать будет" не сработает. Джигит может оказаться дальтоником.
Ну, если уж на то пошло, что кто-то их не соблюдает, так ведь и система вообще не защищена от злого умысла. Пока что уродских действий больных на голову старателей не наблюдается. Я надеюсь и в дальнейшем таковых не будет.
З.Ы. Ну, так никто и не ответил - занимается кто-нибудь вопросом?
Mario
Так опиши алгоритм. Я действительно не вижу относительно простого и безопасного решения. На строгое соблюдение ПДД не надеюсь. И самый законопослушный водитель может заглохнуть на перекрёстке.
Так опиши алгоритм. Я действительно не вижу относительно простого и безопасного решения. На строгое соблюдение ПДД не надеюсь. И самый законопослушный водитель может заглохнуть на перекрёстке.
Да, правильно. Но есть такие вещи, которые неплохо всё же было иметь в ядре... Вот моё сообщение в этой теме от 21 февраля 2008 года:Mario wrote:Мы взяли курс на уход от принципа "все в ядро".
Сделать системную ф-цию было бы хорошо. Потому что тогда работа с буфером будет стандартной и не потребуется дополнительных программ. Но данной реализацией, по моему мнению, должны заниматься разработчики ядра.
Хотя ранее (18 февраля 2008 года) я писал:Я вижу это так:
В ebx можно передавать адрес такой структуры:
dd ; номер подфункции (считать, записать)
dd ; тип содержимого (текст, битмап, список файлов)
dd ; объём содержимого в байтах
dd ; адрес, по которому располагаются данные
Список файлов можно сделать как в винде - файлы разделяются нулями, список заканчивается двойным нулём. Работать с таким списком очень удобно. И ещё хочу пояснить, что под словом "битмап" я понимаю файл bmp, а не только данные. Потому что из него можно извлечь размеры и глубину цвета.
Я и сейчас тоже за такую реализацию... Хотя сис. функцию использовать прощепо моему мнению, оптимальный вариант - приложение-монитор, выделяющее нужный объём памяти и указывающий какой тип информации хранится в буфере (текст, битмап, список файлов)
Albom
1)Трудозатраты на организацию взаимодействия через системные функции или через такой же код реализованный посредством макроса, приблизительно одинаковы. Только в последнем случае не придется трогать ядро.
2)Плодить баги дешевле на уровне приложения, поскольку вероятность грохнуть всю систему ниже. К тому же при появлении джигита не соблюдающего правила грохнуть и перезапустить поток-сервер отвечающий за механизм буфера обмена проще и быстрее, чем перезагружать всю систему, в которой на этот момент могут работать приложения, работу которых прерывать не желательно.
Не согласен.Хотя сис. функцию использовать проще
1)Трудозатраты на организацию взаимодействия через системные функции или через такой же код реализованный посредством макроса, приблизительно одинаковы. Только в последнем случае не придется трогать ядро.
2)Плодить баги дешевле на уровне приложения, поскольку вероятность грохнуть всю систему ниже. К тому же при появлении джигита не соблюдающего правила грохнуть и перезапустить поток-сервер отвечающий за механизм буфера обмена проще и быстрее, чем перезагружать всю систему, в которой на этот момент могут работать приложения, работу которых прерывать не желательно.
Mario
В данном случе это будет баг уровня системы. Падающий сервис не намного приятней упавшего ядра.
В худшем случае (не джигит а малолетнийдолбо... террорист) перезапускать сервер придётся постоянно. Вероятно вместе с задействованными приложениями. Защитить ядро намного проще.
В данном случе это будет баг уровня системы. Падающий сервис не намного приятней упавшего ядра.
В худшем случае (не джигит а малолетний
На аппаратном уровне через страницы или как-то по другому?Защитить ядро намного проще.
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
Kolibri is best operation system in the world!
Serge
От лобовой атаки значительными силами - брутфорса, ничто не спасает.
Не приятно согласен, но не фатально как в случае с ядром.Падающий сервис не намного приятней упавшего ядра
Таких вещей в системе предостаточно и без этого и даже текущее ядро можно уронить, в большинстве случаев это получается случайно. Дырки то все не исследованы, а даже не все известные заштопаны. А от малолетних и не совсем малолетних долботерористов не застрахованы даже более развитые системы. Единственно реальный выход - жесткий, я бы даже сказал жесточайший, контроль со стороны всего сообщества: раздача бананов и прекращение консультации.В худшем случае (не джигит а малолетний долбо... террорист) перезапускать сервер придётся постоянно. Вероятно вместе с задействованными приложениями.
От лобовой атаки значительными силами - брутфорса, ничто не спасает.
В том то и дело что если делать реализацию через ядро, то я сомневаюсь, что у меня хватит знаний о ядре, на реализацию полноценного буфера - только на один слот, с возможностью записи для всех. А вот для потока-сервиса я мог бы извернуться.Защитить ядро намного проще.
Who is online
Users browsing this forum: No registered users and 2 guests