ALeXeR 67 Опубликовано: 12 ноября, 2016 (изменено) Всем привет)Хочу продемонстрировать свою библиотеку для OpenOS, она берет свое начало как компонент API ядра ос, которую мы пишем с другом (пока что все в ступоре )Данная библиотека позволяет создавать виртуальны компоненты.А зачем они нужны?Например нужно создать подобие NFS (NetworkFileSystem), можно написать отдельныю систему, работающую под OpenOS, но как бы хотелось просто примонтировать его куда нибудь в дерево файловой системы, можно для этого изменить библиотеку filesystem, но это может повлиять на другие системы (например на подобие NFS от другого автора, уоторый тоже изменяет библиотеку filesystem, но имеет другой стандарт). А вместо этого можно создать виртуальный компонент, и сама OpenOS будет воспринимать его как реальный, и соответственно виртуальный компонент типа filesystem можно будет примонтировать и пользоватся как обычной ФС.Установка библиотеки:Код можно взять сдесь http://pastebin.com/2vixEPRc По идее комманда pastebin get 2vixEPRc /lib/vdevice.lua должна установить библиотеку, но я не пробовал (не ищу легких путей ) Также файлик будет прикреплен к теме Короче файл vdevice.lua с кодом библиотеки должен быть в /lib Использование: Для этого нужно подключить библиотеку; Создать таблицу с методами (функциями), ключи к ним должны быть в виде строки, эти методы будет содержать виртуальный компонент (как например component.redstone.setOutput()); Вызвать метод библиотеки addVDevice и передать в качестве параметра тип компонента (тип может быть как у руальных компонентов, так и кастомный) и созднную таблицу с методами, метод вернет адресс виртуального компонента. После выполнения данных действий будет создан виртуальный компонент, его можно удалить вызвав метод delVDevice и передасть в качестве параметра адресс виртуального устройства. Пример: В данном примере создается 2 компонента типа mycom, с методом hello который выводит на экран hello (кэп ), которые приобретают адресса #1 и #2, после чего производится определение типа по адрессу, вывод списка компонентов этого типа и вызов метода hello тремя способами. Всем спасибо за внимание) Если кто хаметит баги или недочеты - сообщайте плс) P.S. Либа по какой-то причине не прикрепилась в виде файла .lua поэтому все в архиве vdevice.tar.gz Изменено 12 ноября, 2016 пользователем ALeXeR 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 12 ноября, 2016 Например нужно создать подобие NFS (NetworkFileSystem), можно написать отдельныю систему, работающую под OpenOS, но как бы хотелось просто примонтировать его куда нибудь в дерево файловой системы, можно для этого изменить библиотеку filesystem, но это может повлиять на другие системы (например на подобие NFS от другого автора, уоторый тоже изменяет библиотеку filesystem, но имеет другой стандарт). А вместо этого можно создать виртуальный компонент, и сама OpenOS будет воспринимать его как реальный, и соответственно виртуальный компонент типа filesystem можно будет примонтировать и пользоватся как обычной ФС. Если либа нужна только для NFS, то можно обойтись и без нее. filesystem.mount(fs: table or string, path: string): boolean or nil, string Монтирует файловую систему по заданному пути. Первый параметр может быть прокси, адресом, или меткой файловой системы. Второй аргумент — путь до точки монтирования. Возвращает true если файловая система примонтирована, или nil с сообщением об ошибке в противном случае. -- /boot/10_devfs.lua require("filesystem").mount( setmetatable({ address = "f5501a9b-9c23-1e7a-4afe-4b65eed9b88a" }, { __index=function(tbl,key) local pass local passthrough = function() return pass end if key == "getLabel" then pass = "devfs" elseif key == "spaceTotal" or key == "spaceUsed" then pass = 0 elseif key == "isReadOnly" then pass = false else return require("devfs")[key] end return passthrough end }), "/dev") Фрагмент кода из исходников OpenOS. Тут создается виртуальная файловая система. Вообще либа полезная, но пример неудачный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ALeXeR Автор темы 67 Опубликовано: 12 ноября, 2016 (изменено) я привел NFS как пример) ну такое) я вообще ее переписал под OpenOS ради другой цели) Изменено 12 ноября, 2016 пользователем ALeXeR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 12 ноября, 2016 ради другой цели Ради какой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ALeXeR Автор темы 67 Опубликовано: 12 ноября, 2016 Аппаратное ускорение видео) знаю, это будет грузить сервер, но хочется замутить графический кластер) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 13 ноября, 2016 Одна проблема: такая либа уже есть. Давным-давно есть. Рабочая. https://github.com/OpenPrograms/gamax92-Programs/blob/master/vcomponent/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Quant 442 Опубликовано: 13 ноября, 2016 (изменено) Аппаратное ускорение видео) знаю, это будет грузить сервер, но хочется замутить графический кластер) То есть прилепленая интегральная схема из,например, SCM(Super Circuit Maker)? Изменено 13 ноября, 2016 пользователем Quant Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 13 ноября, 2016 Одна проблема: такая либа уже есть. Давным-давно есть. Рабочая. https://github.com/OpenPrograms/gamax92-Programs/blob/master/vcomponent/ У неё есть фатальный недостаток. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ALeXeR Автор темы 67 Опубликовано: 13 ноября, 2016 (изменено) Quant, ну типа к одному монитору прибиндить видеокарты нескольких компов, которые будут ждать сообщений от центрального и рендерить все это добро, тоесть задержка на вывод будет разпарралелена, тоесть пока один элемент кластера рисует один фрагмент, второй сразу же рисует второй фрагмент) А вот по поводу второй либы - что если допустим я создам компонент виртуальный а потом вставлю реальный с таким же адрессом? Изменено 13 ноября, 2016 пользователем ALeXeR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ItsMakar 1 Опубликовано: 22 января, 2022 В 13.11.2016 в 11:26, Totoro сказал: У неё есть фатальный недостаток. Какой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya 415 Опубликовано: 22 января, 2022 3 часа назад, ItsMakar сказал: Какой? https://en.wikipedia.org/wiki/Not_invented_here Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
logic 51 Опубликовано: 11 марта, 2023 (изменено) В 12.11.2016 в 23:47, ALeXeR сказал: Всем привет) Хочу продемонстрировать свою библиотеку для OpenOS, она берет свое начало как компонент API ядра ос, которую мы пишем с другом (пока что все в ступоре ) Данная библиотека позволяет создавать виртуальны компоненты. А зачем они нужны? Например нужно создать подобие NFS (NetworkFileSystem), можно написать отдельныю систему, работающую под OpenOS, но как бы хотелось просто примонтировать его куда нибудь в дерево файловой системы, можно для этого изменить библиотеку filesystem, но это может повлиять на другие системы (например на подобие NFS от другого автора, уоторый тоже изменяет библиотеку filesystem, но имеет другой стандарт). А вместо этого можно создать виртуальный компонент, и сама OpenOS будет воспринимать его как реальный, и соответственно виртуальный компонент типа filesystem можно будет примонтировать и пользоватся как обычной ФС. Установка библиотеки: Код можно взять сдесь http://pastebin.com/2vixEPRc По идее комманда pastebin get 2vixEPRc /lib/vdevice.lua должна установить библиотеку, но я не пробовал (не ищу легких путей ) Также файлик будет прикреплен к теме Короче файл vdevice.lua с кодом библиотеки должен быть в /lib Использование: Для этого нужно подключить библиотеку; Создать таблицу с методами (функциями), ключи к ним должны быть в виде строки, эти методы будет содержать виртуальный компонент (как например component.redstone.setOutput()); Вызвать метод библиотеки addVDevice и передать в качестве параметра тип компонента (тип может быть как у руальных компонентов, так и кастомный) и созднную таблицу с методами, метод вернет адресс виртуального компонента. После выполнения данных действий будет создан виртуальный компонент, его можно удалить вызвав метод delVDevice и передасть в качестве параметра адресс виртуального устройства. Пример: В данном примере создается 2 компонента типа mycom, с методом hello который выводит на экран hello (кэп ), которые приобретают адресса #1 и #2, после чего производится определение типа по адрессу, вывод списка компонентов этого типа и вызов метода hello тремя способами. Всем спасибо за внимание) Если кто хаметит баги или недочеты - сообщайте плс) P.S. Либа по какой-то причине не прикрепилась в виде файла .lua поэтому все в архиве vdevice.tar.gz 1 \u041a\u0431 · 438 загрузок кто помнит vcomponent? она вроде как пропала с github, покрайней мери я ее не нашел, но у меня она осталась незнаю почему решил про нее написать, просто так Изменено 11 марта, 2023 пользователем logic Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hohserg 197 Опубликовано: 15 апреля, 2023 https://github.com/OpenPrograms/gamax92-Programs/blob/52ddc2ebd4447a12ff929322ed6b85dec75a3047/vcomponent/vcomponent.lua 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах