Перейти к содержимому

Лидеры


Популярный контент

Показан контент с высокой репутацией 26.04.2021 в Сообщения

  1. 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`а. Я ищу людей, которые захотят помочь мне. Как то так.
  2. 1 балл
    Главное, чтобы оператор АЭС не задумал посмотреть что-нибудь на рабочем компе. Иначе с реактором может случиться бо-ольшой бабах...
  3. 1 балл
    Есть блокирующие вызовы, которые не вызывают TLWY, но позволяет в цикле выполнять код без задержки. Насколько помню, код вроде while true do computer.beep() end будет выполняться бесконечно, но мы можем подменить computer.beep на свой, с задержкой. А какая разница, как синтаксически выражен бесконечный цикл? Если компьютер не yield'ится - сам machine.lua выкинет TLWY, который отловится pcall'ом (не всегда, конечно, но в большинстве случаев отлавливается) Как раз поэтому есть TLWY, который поможет избежать выключения компьютера/бана от админа. Если компьютер вообще выключился - это должны были сойти все звезды, не вижу особых проблем. Если говорить о теории, то конечно, абсолютно гарантировать отлавливание TLWY нельзя, но на практике обычного pcall'а достаточно. Сайт этим и так подпортит себе репутацию.
  4. 1 балл
    строго говоря, даже "доверенность" сети не обязательна. Просто запускать код в песочнице - и пусть делает там что хочет.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...