Лидеры
Популярный контент
Показан контент с высокой репутацией 19.08.2021 в Сообщения
-
1 баллПредисловие: Недавно, по накурке, мне пришла идея написать браузер для OC. Браузер это конечно хорошо, но для его работы нужна сеть. Первое, что вспомнилось, это OpenNet. Но у него нашлось некоторое некоторое количество серьёзных недостатков(про них позже). Не найдя альтернативы, я пришёл к выводу, что нужно сделать новую сеть, которая будет похожа на OpenNet, но в которой не будет таких недостатков, какие есть в OpenNet. Собственно, о каких недостатках я говорю: 1) Ограниченность в рамках одного сервера. Для того что бы от сети был хоть какой то минимум пользы, ей нужны пользователи. Тяжело найти сервер, где хотя бы пяти людям будет интересна тематика OC. 2) Требования к структуре сети. Три уровня, не больше, не меньше. Первые два - роутеры, третий - клиенты. Роутеры первого уровня соединены с роутерами второго посредством спаренных карт, и с клиентами только через модемы. 3) Низкая надёжность. Стоит из роутера второго уровня вынуть спаренную карту, он сразу превратится в кирпич. 4) Сложность в развёртывании. Два вида роутеров, три вида библиотек. Отсутствие документации. Захотел сеть на даче - нужно участие владельца "коренных" роутеров. Ключевые особенности: Собственно сеть должна обладать такими свойствами: 1) Возможность бесшовно соединять несколько игровых серверов. 2) Иметь максимально простую структуру. 3) При разрыве связи между двумя частями сети, сеть должна "раскалываться" на две, а не ломаться. 4) Сеть должна иметь максимально простую структуру, и иметь хорошую документацию Процесс разработки: Обозначив основные моменты, я потихоньку начал писать сеть. За основу брал OpenNet. С кодом можно ознакомится на складе грязи(тут сама сеть, и ещё несколько программ, которые я использую при разработке). Что сделано: Собственно, сама библиотека, реализующая связь между узлами. Роутер. Библиотека, позволяющая работать в сети программам, заточенным под OpenNet. Браузер и HTTP-сервер, из за которого собственно, всё и началось. Вернее первая его версия. Теоретически(на практике мост, который я хочу использовать, себя странно ведёт) есть возможность устанавливать соединения между игровыми серверами. Инсталлер Что нужно сделать: DNS Интернет-сервер, и клиент под него Чат (клиент, сервер) Нормальный интерфейс. Шифрование пакетов Как это всё безобразие выглядит: И так, допустим, мне очень нужно развернуть сеть. Что мне для этого нужно: Ставим три компьютера. Один будет роутером, и два клиента. Пусть один клиент подключается к роутеру через модем, а второй через спаренную карту. Начинка роутера: И клиентов: Теперь ставим на все компьютеры OpenOS и файлы с репозитория. Можно воспользоваться инсталятором: wget https://raw.githubusercontent.com/AlexCatze/RacoonNet/master/installer.lua installer Начнём с настройки роутера. Запускаем "routconf", и первым делом конфигуратор попросит указать, через какую карту роутер будет подключатся к сети. Так как сети у нас пока нет, пропускаем этот момент. Теперь у нас спрашивают, какие карты будут использоваться для подключения клиентов к роутеру. Отвечаем: Теперь можно и запустить роутер. Пишем "router", и видим картину: Роутер ругнулся, что не имеет выхода в сеть, ну оно и понятно. Теперь настраиваем клиентов, вводим "rnconfig" на каждом из них: Сеть настроена, но что теперь с ней делать? Запускаем на одном компьютере "chat_server", на другом "chat <ip сервера>" . И можем поговорить сами с собой. Или можно посмотреть на браузер. Поднимаем сервер, "webserver", браузер "wr" и наслаждаемся. К стати, сеть называться RacoonNet(над названием я не заморачивался). Собственно, зачем эта тема: Т.к. изначально я собирался сделать только браузер, и вообще, это мой первый проект на Lua, я сам долго не выдержу. Понимаю что сеть сейчас практически является копией OpenNet`а. Я ищу людей, которые захотят помочь мне. Как то так.
-
1 баллВ далеком прошлом я начал делать хранилище вещей на ОС (пародия на АЕ2). Для этой задачи я хранил все данные в оперативной памяти. При увеличении размера хранилища у меня начало падать по нехватки памяти. Я решил выгружать все данные в различные файлики и так у меня родилась база данных (пародия на бд). Хранил каждый вид предмета в отдельном файлике, вроде все кул но тут идет большое но "открытие каждого файлика тратится 1 тик" и когда файликов много и тебе нужно найти какой-то определенный файл по какомуто филду то это будет длиться вечность. Для этого я перенял идею баз данных и создал индексы. Индексы у меня были самые примитивные, это тупо таблица ключ значение. Я начал добавлять индексы по всех полях по которых ищу. Все вроде работало и хранилище стало намного больше. И тут я долго ним пользовался, файликов поднакопилось и программа опять начала падать по нехватки ОЗУ. Индексы слишком большие и не влазят в память. А у меня в планах еще увеличивать хранилище. Так вот к чему я веду. У кого-то есть идеи как можно хранить индексы поярче в ОС? Меня там ограничивает что почти каждая команда требует 1 тик. Ничего не лезет в голову как решить эту проблему.
-
1 баллНужна помощь с модом OpenPeripheralAddons. Хочу связать очки с мостом, но как это сделать? В интернете вообще нету информации про это
-
1 балл
-
1 балл
-
1 баллДа, крайнее полезная вещь для управления реактором. Позволяет единственным адаптером и предметы перемещать, и температуру опрашивать. Но постоянный опрос всего подряд я считаю излишней нагрузкой на и без того перегруженный сервер. Для меня эта "сложность" выглядит непреодолимым препятствием. На практике синхронность операций не гарантирована даже на слабо нагруженных серверах. Непрерывное же поддержание синхронизации потребует как минимум удвоения количества необходимых действий, что полностью уничтожает полученное преимущество от использования второго компьютера. В сравнении со схемой на единственном компьютере суммарная полезная производительность даже немного снизится. Как ты предлагаешь решать эту "сложность" хотя бы в теории?
-
1 баллOpenperipheral в помощ. Он и на старой версии имеет метод getAllStacks. Я думаю он там есть. Просто автор не указал. Ибо сервер из старой ОС и малым ТПС это только мцскил. + внесу свою лепту в обсуждение. 2 компа могут почти одновременно забирать и возвращать целый конценсатор в реактор. Сложность только их вместе заставить работать
-
1 баллРеализуй btree индекс. https://db.grussell.org/imp.html https://www.codeproject.com/Articles/7410/Implementation-of-a-B-Tree-Database-Class
-
1 баллТакже можно использовать unmanaged диски - это позволит исключить почти что все временные затраты, связанные с задержками вызовов диска, поскольку почти все операции, кроме переноса головки на большое расстояние, выполняются на нем мгновенно
-
1 баллКлиентские скрипты я реализовывать не буду, что бы их латать никаких костылей не хватит. А вот серверные CGI будут.
-
1 баллКонечно, не просто так. Вероятность вылета повышается пропорционально нагрузке, создаваемой скриптом. А так как нагрузка ненулевая, то и вероятность вылета тоже всегда больше нуля. Но нагрузка играет значительную роль. В этом звёзды сходятся довольно часто. Если на лагающем сервере скрипт while true do end завершается по TLWY, то pcall не гарантирует устойчивости. Потому-то и не запускаем. Как и скрипты в браузере. Но я понял твой подход. Игрокам, требовательным к стабильности работы компьютера, такие скрипты не нужны. Но остальным, возможно, пригодятся. Только надо честно предупреждать о возможных последствиях.
-
1 баллэто не проблема "песочницы" непосредственно, TLWY может вылетать просто так, если сервер очень сильно тормозит. К тому же, это не проблема песочницы, а в целом внутриигровой среды OC. С таким же успехом можно запустить while true do end и говорить "а у меня комп сломался!!!".
-
1 баллГлавное, чтобы оператор АЭС не задумал посмотреть что-нибудь на рабочем компе. Иначе с реактором может случиться бо-ольшой бабах...
-
1 баллЕсть блокирующие вызовы, которые не вызывают TLWY, но позволяет в цикле выполнять код без задержки. Насколько помню, код вроде while true do computer.beep() end будет выполняться бесконечно, но мы можем подменить computer.beep на свой, с задержкой. А какая разница, как синтаксически выражен бесконечный цикл? Если компьютер не yield'ится - сам machine.lua выкинет TLWY, который отловится pcall'ом (не всегда, конечно, но в большинстве случаев отлавливается) Как раз поэтому есть TLWY, который поможет избежать выключения компьютера/бана от админа. Если компьютер вообще выключился - это должны были сойти все звезды, не вижу особых проблем. Если говорить о теории, то конечно, абсолютно гарантировать отлавливание TLWY нельзя, но на практике обычного pcall'а достаточно. Сайт этим и так подпортит себе репутацию.
-
1 баллА каким образом внутри пользовательского кода OpenComputers можно реализовать механику TLWY? Насколько я понимаю, в лучшем случае можно убить скрипт по исчерпании доступного ему времени, заданного в конфигурации мода или перехватить совершаемые им вызовы. А в худшем случае лагающий сервер выключит комп раньше. А ещё можно получить бан от админа. И кроме стандартного while true do end можно придумать много других скриптов с тем же эффектом. Как предлагаешь бороться с ними?
-
1 баллНу, то есть у песочницы есть куча нюансов и потенциальных уязвимостей, которые надо просчитать и реализовать в коде - отличная задача для старожилов форума, наверное. Да и от рассылки этих порно-баннеров это все равно никак не защитит
-
1 баллсделать внутри песочницы свой TLWY, блокирующие вызовы - подменить, стандартный while true do end отлавливается pcall'ом.
-
1 баллНу, доверенность призвана защищать не от вредительского кода типа filesystem.delete("/"), а скорее от недостоверной информации и спама. Вдруг кто-то начнет рассылать порно-баннеры, блокирующие компьютер бесконечным циклом?
-
1 баллстрого говоря, даже "доверенность" сети не обязательна. Просто запускать код в песочнице - и пусть делает там что хочет.
-
1 баллБыла у меня похожая разработка (месяца 3 назад делал) Умела сама регистрировать пользователей, роутеры, была встроенная система DNS, если интересно - могу скинуть
-
1 баллАктив, собственно как и обновления будут когда у меня будет время и силы. Это подразумевает что я не час в день, после 8 часов дистанционки, с кровью из глаз пытаюсь что-то накодить, а нормально сажусь, и спокойно могу целый день посвятить сетке. Скорее всего это будет ближе к лету, и то, если учебный год не продлят, лицей как никак. Если хочется актива вот прям здесь, сейчас, и много - если хотите, можете помочь с разработкой. А так, по крайней мере крупных апдейтов, скорее всего до лета не будет. Учёба, учёба и ещё раз учёба. А, ну и Genshin Impact ещё, конечно.
-
1 баллЛюди!? Тема умирает!!! Поднимаем АКТИВ!!! Встали-Сели Раз-Два-Раз-Два-Раз-Два-Раз-Два-Раз-Два-Раз-Два-Раз-Два-Раз! Уфф. . . Автор как там разработка?
-
1 баллОфигеть тут в чате понаписали за ночь!!! Представляю как это было:
-
1 балл
-
1 баллВозможно, bmp24 делался с целью понять, как устроен формат BMP. А для опенкомпов, как вы уже сказали, есть OCIF, и писать ей альтернативу будет не очень резонно.
-
1 баллНу да, точнее в OCIF (поддержка версий 5-7), он, все же, более адаптирован под особенности видеосистемы в OpenComputers. И bmp24, имхо, сыроват, он не всегда корректно открывает BMP файлы. Да и размер у них выше, что не очень эффективно, учитывая малые размеры жестких дисков и весьма ограниченную ОЗУ.
-
1 баллКартинки же в .pic? Если да, то я могу свой bmp24 в библиотеку перестроить, можно будет и бмп парсить)
-
1 баллКстати в качестве движка для браузера можно взять NyaDraw, по сути тот же Screen из Майноськи, но спокойно работает под OpenOS без зависимостей. Быстро рендерит странички (переносил я его изначально как часть своего браузера), позволяет рисовать фигуры, и (хе-хе) поддерживает картинки, так что браузеру их нужно только распарсить, вытянуть, и скормить движку. Ну и памяти он ест не сильно много))))
-
1 баллРазработка идёт плохо. Каникулы закончились, а это значит что с понедельника по пятницу с 8:30 до 16:00 у меня пары. А так как учусь я дистанционно, смерть учащегося не является уважительной причиной для неявки. Плюс домашнее. Касательно сети, сейчас пытаюсь пофиксить баг из за которого (очень редко, но это всё же происходить) дублируются пакеты. Параллельно думаю, как можно реализовать шифрование.
-
1 баллСэр Разраб Браузера, AlexCatze ! Просим Вас, рассказать как идёт разработка(Желательно со скринами) И ГДЕ НАШИ КАРТИНКИ ВСТРАЕМЫЕ В САЙТЫ???
-
1 балл@hohserg , на гитхаб, в ветку indev залил новую версию библиотеки с разбивкой больших пакетов. Там же лежит пример для работы с сетью из eeprom.
-
1 балл
-
1 баллЯ тут на днях попытался сделать саппорт этой сети для HoverHelm, запнулся на eeprom-клиентской-части)
-
1 баллПлохо. Сейчас не до майнкрафта. Когда есть время, потихоньку довожу до ума. Сайты создавать так же, как и раньше.
-
1 баллКак там дела с Браузером? На последней версии не совсем понял как создавать сайты. И жаль нету встраивания картинок!
-
1 баллСделаю обязательно, после того как сделаю разбиение больших пакетов на части. Сейчас на это особо нет времени. Учёба, плюс мне тут в руки попал HP HX4700, так что меня на время унесло.
-
1 балл
-
1 баллЯ пробовал менять в инсталляторе, не работало почему-то вот : https://pastebin.com/qHkbFt4e
-
1 баллТак то я выкатил уже версию 0.3, можешь поменять в инсталляторе. Хоть мне и пришло письмо, что бан сняли, на деле ничего не поменялось. Сейчас залью инсталлятор на гитхаб, и кину ссылку. UPD: Залил на гитхаб, вот ссылка https://raw.githubusercontent.com/AlexCatze/RacoonNet/master/installer.lua . В шапке тоже поменял.
-
1 баллЛЮДИ! Я Залил инсталлятор версии браузера 0.2 На Пастебин! https://pastebin.com/eN8xrumj или pastebin run eN8xrumj !!! Кто хотел поиграть скачивайте! (Инсталлер не мой, а создателя самого браузера, взял из другой темы! )
-
1 балл
-
1 баллда, это проблемма, когда я делал прямую ссылку на картинку OpenWebServer вылетал с ошибкой что то про это, я в конфиге поменять не догадался, щас попробую я думаю это не обязательно и картинки важнее!
-
1 баллЯ же сказал, пока не приоритетная цель. Есть задачи поважнее, наприпер обход ограничения на пакет в 8кБ, межсерверный мост, шифрование пакетов. И только потом собственный движок для браузера, и как следствие формы, картинки и шрифты.
-
1 балл
-
1 баллЭто если ты строишь многоуровневую сеть, WAN это простым языком, связь с вышестоящим роутером. Я не фотограф(
-
1 балл
-
1 балл
-
1 баллНекоторое время инсталятор работать не будет. Какой-то умник кинул на pastebin на меня жалобу, и без разбирательств, я получил бан. Сейчас буду подавать апелляцию. А так, на гитхабе вышла версия 0.3. Небольшое обновление, посвящённое, в основном, фиксам багов и небольшим изменениям в браузере. Изменения: -- Из репозитория удалено всё, не относящееся непосредственно к проекту. Зависимости ставятся инсталятором. -- Исправления багов -- Web-сервер можно закрыть нажатием кнопки "Q" -- Изменения в интерфейсе браузера. -- Браузер теперь поддерживает загрузку файлов. -- В браузер добавлена частичная поддержа атрибута "target" для тега "a". Установка его в значение download указывает браузеру, что файл нужно загрузить. -- В браузер добавлена возможность установить домашнюю страницу. -- Изменеия согласно рекомендациям товарища @AtomicScience
-
1 баллПланов менять API нет. Хотя всё может быть. Если не нужен продвинутый функционал(например, работа одновременно с несколькими картами) - можно использовать либу opennet.lua. Она эмулирует OpenNet, и её API меняться точно не будет. При этом основной функционал будет работать нормально.
-
1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
