Лидеры
Популярный контент
Показан контент с высокой репутацией 25.02.2021 во всех областях
-
3 баллаОшибка "no such component" всегда возникает при попытке доступа к proxy компонента, записанному в переменную, если по какой-то причине сам компонент был физически отсоединён. А вот почему он отсоединился - фиг знает: либо сервак пролагал, либо с выгружающимися чанками проблема, либо возникает коллизия UUID'шников компонента (что маловероятно), либо вообще админ/сожитель своими кривыми ручонками пошарился. Исправить ситуацию можно путём периодического обновления proxy на актуальный через computer.uptime В любом случае ставлю последний счетверённый МОХ, что 108 строка ошибки просто "сдвинулась" в трейсе на единицу, и isAvailable тут ни при чём. Пруф:
-
2 баллаУ тебя опечатка в команде --- В общем, идея мне нравится - довольно стройная (как минимум в теории) архитектура с тремя уровнями устройств, связь между устройствами посредством различного оборудования благодаря унифицированному интерфейсу (что я делал-делал в своем OCNS, да не доделал), браузер, и так далее. Поэтому я решил даже немного почитать и поревьюить твой код - а он достаточно приличный, тем более для первого проекта Конечно, недочеты есть, и все, что я нашел, я отметил в твоем коде, который специально для этих целей форкнул: https://github.com/AtomicScience/racoon-dev Просто поищи по коду по меткам "REV:" Также не забудь посмотреть файлик "Общие замечания" в корне репозитория. Надеюсь, тебе будет полезно. P.S.: Учти, что это все, разумеется, не квинтэссенция знаний программистского ремесла, снизошедшая на тебя, смертного, откуда-то, кажется, из-за облаков, а просто мнение о твоем коде от чувака из интернета, построенное через призму субъективных предпочтений P.P.S.: Приглашаю других более-менее опытных участников форума к поддержке инициативы по разбору (хотя бы поверхностному) кода форумчан. Даже 10-15 минут беглого осмотра кода и выделения самых цепляющих моментов, мне кажется, окажутся серьезным подспорьем и новичкам, и старичкам. Спасибо!
-
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 балл
-
1 баллКстати, как насчет идеи использования графической библиотеки от MineOS как основы для браузера? https://github.com/IgorTimofeev/MineOS/wiki/GUI-API ECS`ом, де-факто, проделана вся необходимая работа, нужно лишь придумать способ создания файлов для страниц, да и это необязательно - в сети, где все друг другу доверяют, можно просто шарить lua-скрипты, которые будут рендерить страницы.
-
1 балл
-
1 баллКартинки еще не встраиваются? Или я тупой? <html> <head> <title>test</title> </head> <body> <img src="./test.pic"> </body> </html> это максимум что я получил:
-
1 балл@AtomicScience Спасибо. Посмотрел я ревью. Спасибо. Сейчас пойду исправлять. По поводу названий функций(getip, sendrec), это ещё с OpenNet осталось. Библиотека racoon.lua вообще отдельный случай, изначально она предполагалась для другого проекта, и неплохо бы для неё придумать нормальное название. Насколько я понял os.date() возвращает некую дату, начиная с 1970-го года, плюс прошедшее игровое время с момента создания мира. Дублирование функций в rn_<> файлах - они похожи, но есть маленькие, но значительные отличия. Например, при отправке сообщений через тунель, не используется порт. Сейчас внесу правки, пойду разбираться с гитхабом.
-
1 баллСамый простой способ создать тег - нажать на кнопку "Create a new release" После заполнения описания, последний коммит в текущей ветке будет отмечен меткой Твой код к ней можно в любой момент "перемотать" в специальном окошке: А еще к релизу будет автоматически добавлен архив с исходниками: --- Вообще, очень советую научиться активно использовать Git в разработке, делая коммиты постоянно, а не выкидывая кучу кода прям перед новым релизом - это выведет разработку на качественно новый уровень, сделает ее удобнее, и, что самое главное, позволит людям работать совместно с тобой - никто не будет рисковать делать какой-то пул-реквест, когда ты, условно говоря, в любой момент можешь принести коммит на 10 тысяч строк и все стереть. Делай небольшие коммиты с осмысленными названиями - поможет отслеживать прогресс и откатывать изменения, если что пойдет не так
-
1 баллА аквадискотека будет? А теперь серьёзно. Сразу скажу, код не читал в виду отсутствия времени. Но из описания сети возникло несколько вопросов: 1. Правильно ли я понял, что ЕнотоСеть в отличии от OpenNet имеет не древовидную структуру, а облачную? Т.е. в сети, состоящей более чем из двух роутеров возможны циклы. Каким образом планируется избегать зацикливания пакетов? 2. Маршрутизация в ON осуществлялась элементарно. Роутер, получив пакет, по IP получателя определял предназначен ли этот пакет связанному с ним клиенту. Если да, передавал пакет этому клиенту. Если нет, передавал пакет на уровень выше и это становилось головняком вышестоящего роутера. Как здесь? Предусмотрены ли таблицы маршрутизации? Заполняются ли они вручную или автоматически? С какой периодичностью обновляются? 3. Какова структура IP-адреса? Из описания понял, что это IP роутера + ID карты клиента. А кто выдает IP роутеру? Вышестоящий роутер? Но ведь сеть безуровневая.
-
1 балл
-
1 баллИспользование апи opennet обязательно должно начинаться с вызова getIP? Правильно ли реализован getIP? Там при каждом вызове происходит инициализация. Это может означать, что при каждом вызове ip будет разным https://github.com/AlexCatze/racoon-dev/blob/master/lib/opennet.lua#L16
-
1 баллТ.е. все программы, которые умеют работать с OpenNet будут работать с Racoon?
-
1 балл
-
1 баллПрямо таки сообщения Шрёдингера. Есть подозрение что это библиотека stem под OC не идеально написана. Хотя там много потенциальных мест отказа. В худшем случае, это фундаментальный косяк OC при работе с TCP сокетами и мне придётся всё таки написать HTTP версию стема.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
