Поиск по сайту
Результаты поиска по тегам 'код'.
Найдено 4 результата
-
Помните мост Рида? Ну так вот. Я тут изучаю Rust на досуге, и пишу мини проекты. Так и получился у меня... Stem Это интернет мост для OpenComputers. Что такое мост Для тех кто не знает что такое мост, и для чего он нужен: мост дает примерно такие же возможности как и linked карта. Он позволяет связать между собой компьютеры OpenComputers, где бы они не находились. Только мост реализует это через интернет карту. Однако по сравнению с linked картой есть один очень крутой плюс. Вы можете подключиться к своему OpenComputers компу не только с другого OpenComputers компа из Майнкрафта, но и из реального мира. Например с телефона. Или с вашего домашнего компьютера. Отличие от моста Рида Я немного по другому подошел к архитектуре проекта. Вместо попарного соединения, Stem реализует систему каналов. Работает это очень просто. Вы можете: 1) послать сообщение в канал X 2) подписаться на сообщения из канала X Количество подписчиков не ограничено. Количество клиентов которые могут посылать сообщения в канал тоже не ограничено. ID канала (по которому происходит подписка и отправка сообщений) служит заодно и паролем к нему. Поэтому если вы хотите создать публично доступный канал - просто опубликуйте его ID. А если хотите создать свой, приватный, канал - просто возьмите ID подлиннее и никому его не открывайте. ID - это последовательность любых байт длиной до 256. Число комбинаций (256 в степени 256) это огромное число, так что уникальных ключей хватит надолго. Пример local event = require('event') -- подключаем STEM local stem = require('stem') -- присоединяемся к серверу STEM local server = stem.connect('stem.fomalhaut.me') -- просим сервер присылать нам сообщения с канала 'my-channel-id' server:subscribe('my-channel-id') -- слушаем эвент 'stem_message' в цикле while true do local name, channel_id, message = event.pull('stem_message') if name ~= nil then print(channel_id, message) end end -- ...или регистрируем листенер event.listen('stem_message', function(_, channel_id, message) print(channel_id, message) end) -- мы можем посылать сообщение в канал -- (причем не обязательно быть подписанным на этот канал -- достаточно просто его ID) server:send('my-channel-id', 'hello there') -- просим сервер перестать присылать сообщение с канала server:unsubscribe('my-channel-id') -- полностью отключаемся от сервера STEM server:disconnect() Одновременно можно работать с несколькими серверами Stem и с любым количеством каналов. Библиотека stem.lua Библиотечку можно скачать напрямую по этой ссылке: https://gitlab.com/UnicornFreedom/stem/raw/master/stem.lua Либо установить через HPM: hpm install stem Подробная документация по командам библиотеки находится здесь. Сервер STEM Дефолтный сервер STEM запущен у меня на VPS по адресу: https://stem.fomalhaut.me/ Можете смело его использовать. Единственное, что это тестовый сервер пока. Может пропадать или менять протокол. Новости постараюсь писать сюда. Исходный код проекта находится тут: https://gitlab.com/UnicornFreedom/stem Вы можете скомпилировать его под свою систему и запустить где угодно. Настраивается сервер файлом stem.toml в корневой папке. Дефолтный конфиг может выглядеть так: [tcp] host = '127.0.0.1' port = 5733 [web] host = '127.0.0.1' port = 5780 [general] ping_interval = 60 Чтобы получить полностью свой отдельный и независимый сервер STEM, достаточно будет просто запустить бинарник, получившийся после компиляции. Не забудьте также положить в папку с бинарником папки static и templates. Они нужны для веб-интерфейса. Сервер мультипоточный, и очень производительный. Должен тянуть довольно большие объемы трафика. Но точных бенчмарков я не проводил. Если есть желающие - пишите в IRC, скооперируемся и померяем. 😃 Для того чтобы видеть логи сервера, используйте переменную окружения RUST_LOG. Например чтобы включить полное отображение всех логов: $ RUST_LOG=stem ./stem Веб-интерфейс Если перейти по ссылке на сервер STEM то вы увидите... веб-интерфейс. Веб интерфейс показывает счетчик активных каналов и сессий (клиентских подключений). Кроме того, он дает возможность подключиться к любому каналу STEM и поучаствовать в приеме-передаче сообщений прямо через сайт. Единственное ограничение - как ID канала, так и контент сообщений ограничивается тем, что можно закодировать в UTF-8. Ну вот и все Мост в принципе уже полностью работоспособен. Все идеи, пожелания, отчеты о багах пишите сюда, либо на issue трекер в репозитории. Если кто-нибудь хочет помочь с написанием клиента STEM на своём любимом языке программирования - обращайтесь ко мне в ЛС, IRC или пишите в этой теме. Написать клиент несложно - для примера можно глянуть на код библиотеки для OpenComputers. Она состоит всего из 150 строк кода. Enjoy! 😃
- 100 ответов
-
- 15
-
-
-
Доброго времени суток , недавно задумывался о том чтобы создать комнату для системы безопасности... Как и в любом стратегическом помещении в комнате должна быть кодовая дверь... посмотрел на OpenSecurity и тут понеслась... накидал основу +- пару часов на добавление плюшек и вот что получилось: >жмяк< . | pastebin get iA7jGLCd door | Как оно работает? > Для начала нужно установить аппарат на котором будет базироваться наша дверь : В моем случае это компьютер с характеристиками: > Далее собираем саму дверь: Обязательно: Door Controller. Keypad. Security Door. Дополнительно: Entity Detector. ЧатБокс (OpenTechnology) Запуск. > При первом запуске программы нужно ввести пароль который будет использоваться для открытия двери. Внимание!!! -! При запуске программы все двери закроются. -! При перезапуске программы пароль не сохраняется. -! При верном пароле откроются все двери подключенные к вашему аппарату. -! Не стоит подключать более 1 ЧатБокса , а также более 1 Entity Detector'a. Итог:
- 7 ответов
-
- 6
-
-
- OpenComputers
- OpenSecurity
-
(и ещё 2 )
Теги:
-
Нашел эту табличку на англоязычном форуме по OpenComputers. Картинка за авторством Eunomiac показывает весь 8-битный диапазон цветов, доступный для отображения на алмазном дисплее. Пользуясь схемой, легко подобрать цвета для вашего интерфейса, и тут же составить к ним шестнадцатеричный код.
-
Всем привет! Помните EnergyInfo? Так вот, я решил добавить туда проценты, но даже с такой лёгкой задачей у меня возникли проблемы( Прога не запускается и ругается на... local computer = require("computer") local component = require("component") local term = require("term") local os = require("os") local gpu = component.gpu local max = computer.maxEnergy local energy = computer.Energy local penergy = energy*100/max --тут ругается --Остальной код... print(penergy.."%") Помогите нубу, что тут не так и как должно быть? (Скрин ошибки https://yadi.sk/i/hLiR4h3asGHhz )