NEO 541 Опубликовано: 27 ноября, 2016 (изменено) Привет всем! Вчера произошёл интересный момент, Дмитрий Бачило https://www.youtube.com/channel/UC5dgoavpIertLkNDDITDoBQ выпустил перевод фильма Revolution OS (Всем рекомендую смотреть), фильм об GNU, в начале был момент интервью с создателем ядра Линукса Линусом, так вот он сказал, операционная система должна упрощать разработку ПО, сегодня зашёл товарищ Программист135 выпустил тему ДНС, я естественно полез читать код и меня натолкнуло на мысль увидев строку кода - modem.send(dns_server, 19178, "dns_request", dns_address) , все мы понимает что она делает, я увидел очень узкое место всей библиотеки, а именно работа только с один способом передачи данных, самое просто и нативное, такую библиотеку нельзя использовать в OpenNet или других сетях без переделки, а лучше иметь программу сразу под несколько сред передачи данных, но поддерживать много версий тоже не хочется, а тем более мы программисты и должны всё автоматизировать и упрощать, тут возникла мысль связанная с словами Линуса, так как я знаком с разработкой сетевых приложений под реальные ОС я знаю что ОС очень, очень упрощает работу с ней, скрывая протоколы и всю нативность у себя в ядре, почему бы не сделать более простую но тем не менее эффективную доработку OpenOS которая будет управлять разными протоколами. Мне интересно выслушать чужие мнения. https://www.youtube.com/watch?v=n1F_MfLRlX0&t=1556s Изменено 27 ноября, 2016 пользователем NEO Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 27 ноября, 2016 Моё первое мнение - большие полотна текста, где код идёт вперемешку с пояснениями и ссылками, и всё разделено только запятыми, а-ля "поток сознания" - меня пугают. А вообще, что ты имеешь ввиду под "разными протоколами"? Сначала наверное надо стардартизировать способы передачи данных. Тогда и появится возможность объединить их в какой-то библиотеке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 27 ноября, 2016 (изменено) Моё первое мнение - большие полотна текста, где код идёт вперемешку с пояснениями и ссылками, и всё разделено только запятыми, а-ля "поток сознания" - меня пугают. А вообще, что ты имеешь ввиду под "разными протоколами"? Сначала наверное надо стардартизировать способы передачи данных. Тогда и появится возможность объединить их в какой-то библиотеке. Я уже как - то начинал что - то подобное писать. Что - то похожее на сокеты, но только там можно определить протокол. А ядро само создаст сокет и будет соответственно его для каждого протокола по своего обрабатывать. А конечная программа будет только send и receive вызывать. Изменено 27 ноября, 2016 пользователем NEO Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 27 ноября, 2016 По сути, ты собираешься воскресить и документировать OpenNet, а потом написать над ним обёртку. =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 27 ноября, 2016 По сути, ты собираешься воскресить и документировать OpenNet, а потом написать над ним обёртку. =) Не только для OpenNet. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 27 ноября, 2016 Не только для OpenNet. Для OpenNet и обычной передачи данных через модем. А других протоколов у нас вроде и нету. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ALeXeR 67 Опубликовано: 27 ноября, 2016 (изменено) как по мне надо дополнить ОпенОСь своим средством работы с сетевыми интерфейсами, да бы они имели общий интерфейс доступа но разное внутренне строение, то есть будут определенные базовые методы в каждом интерфейсе, но различные способы передачи, например OpenNET, другой ip2b и т д, это даст возможность писать сетевые приложения, не вдаваясь в специфику реализации того или иного сетевого интерфейса, чтоб для всех приложений они были одинаковы, но и при этом не отнимать саму специфику, например тот-же OpenNet, насколько я щнаю в нем есть метод getIP (или чтото в этом духе) нужно чтоб из специфической программы (например для подключения в опеннет сеть) были доступны все методы, а в сетевом интерфейсе все сводилось к общему стандарту, я совершал попытку замутить чтото подобное, но это были наброски на коленке ( http://pastebin.com/Xwc0VVBa - тут можно сие лицизреть), естественно это такая штука нужна, и ее надо разработать) Изменено 27 ноября, 2016 пользователем ALeXeR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 28 ноября, 2016 В принципе, да. Некий общий интерфейс, который с одной стороны могли бы использовать программы, а с другой стороны реализовывать разные имплементации сетей не помешал бы. Тут главное его не усложнять и сделать максимально простым и гибким. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Programist135 231 Опубликовано: 28 ноября, 2016 Ну вот, меня эта фразочка немного расстроила.. такую библиотеку нельзя использовать в OpenNet или других сетях без переделки, Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 28 ноября, 2016 Ну вот, меня эта фразочка немного расстроила.. Почему? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 28 ноября, 2016 (изменено) Сделал первые наброски, тебе такой вопрос, нужна - ли проверка состояния канала? https://gist.github.com/Avaja/95fffca7d0c9ed8ea5d1e1d0512d5c6d native.lua нужно положить по пути /bin/net. Изменено 28 ноября, 2016 пользователем NEO Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 28 ноября, 2016 (изменено) У меня вопрос собственно. Что это за хрень и почему мне надо 400 строчек кода, чтобы послать сообщение по сети? :P Вооружившить вот это цитатой из первого поста: "операционная система должна упрощать разработку ПО", я реквестирую пример использования этой хрени. Изменено 28 ноября, 2016 пользователем Totoro 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 28 ноября, 2016 У меня вопрос собственно. Что это за хрень и почему мне надо 400 строчек кода, чтобы послать сообщение по сети? :P Я пытался реализовать сокеты. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ALeXeR 67 Опубликовано: 28 ноября, 2016 думаю что сокеты лучше добавить в более высоком уровне адстракции, хотя можно и сшить аккуратно) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 29 ноября, 2016 думаю что сокеты лучше добавить в более высоком уровне адстракции, хотя можно и сшить аккуратно) В каком смысле? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ALeXeR 67 Опубликовано: 29 ноября, 2016 просто зачастую их реализуют на высоких уровнях, образуя потоки, но тут "смотря как смотреть") Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro 3 563 Опубликовано: 29 ноября, 2016 Осталась какая-то мелочь. Написать абстракцию полноценных потоков над корутинами, потом над ней абстракцию real-life сокетов, и будет готова сетевая библиотека нашей мечты! Наконец-то мы сможем сократить эту громоздкую конструкцию: modem.send(message) Ура, товарищи! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ALeXeR 67 Опубликовано: 29 ноября, 2016 думаю что эту систему стоит реализовать библиотекой (/lib/файл_библиотеки.lua), конфигурационные файлы, содержащщие в себе инфу о списке интерфейсов (/etc/файлы.cfg), и комманду для рабты с ней (чтото в роде ifconfig) библиотека создаст таблицу с интерфейсами и обьявит методы, эти методы не будут чемто примечательны, просто работа с таблицами, проверки и прочие, например: list(type) - вернет итератор для получения интерфейсов по типу если тот указать add(name,type,meth, ...) - добавляет интерфейс get(name) - получает интерфейс по имени set(name,meth, ...) - изменяет интерфейс ну и многие другие... также было бы не плохо регестрировать листенеры для событий интерфейсов (удаление, сообщение, добавление и т д) ну и генерировать сигналы при вызовах определенных методов А с самим струкетурой интерйеса надо будет еще подумать Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 29 ноября, 2016 А зачем? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 29 ноября, 2016 Осталась какая-то мелочь. Написать абстракцию полноценных потоков над корутинами, потом над ней абстракцию real-life сокетов, и будет готова сетевая библиотека нашей мечты! Наконец-то мы сможем сократить эту громоздкую конструкцию: modem.send(message) Ура, товарищи! Ну да, только эта строчка ограничивает тебя в радиусе 400 блоков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах