Лидеры
Популярный контент
Показан контент с высокой репутацией 07.05.2020 во всех областях
-
1 баллПомните мост Рида? Ну так вот. Я тут изучаю 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! 😃
-
1 баллНуу ээ... мне стало скучно и я решил забить прогу под завязку: Использование: прога инвентарь путь_файла инвентарь - название компонента, или кусок адреса компонента подключенного к адаптеру. Либо можно использовать транспозер, тогда надо указать на какой из его сторон стоит инвентарь (up, down, west, east, south, north). https://pastebin.com/AJzcFu1M P.S. комп с программой только что взорвал реактор, потому скриншотов нет, хотя там просто консолька.
-
1 баллЕсть ведь механизмы, которые удаленно грузят чанки, вроде звездных врат, с ними никуда ездить не надо. А пропадание всяких катушек и одиноко стоящих роботов это норма и для ванили, просто моды дают больше возможностей. Есть 100% способ дюпать чанк на любой сборке модов или ванили, но я этот способ не дам, у вас документов нету. Способ гениально прост, до него может допереть кто угодно.
-
1 баллМайн стартует медленно, это беда. А то можно было бы запихнуть несколько конфигураций опенкомпов в докере, с сервера выдавать доступ к контейнерам и был бы самый достоверный эмулятор. Правда это еще клиент писать...
-
1 баллРобот сдвигается по прямой или спирали, при этом считает в переменной количество сдвигов себя как блока. При этом мы загружает чанк на несколько сек, потом отгружаем на несколько сек и повторяем это. Время фазы прогрузки чанка не должно быть кратно времени сдвига робота. Спустя некоторое количество итераций смотрим счетчик робота и реальное количество преодоленных блоков Такой способ по идее лучше движения по кругу, ибо исключает двойную ошибку(когда две и больше ошибки исправляются эффекты друг друга)
-
1 баллМожет стоит сделать некий "режим совместимости" с OpenOS программами и запускать их как консольные приложения, с виртуальным доступом к некоторым компонентам, типа gpu?
-
1 балл256 байт - это 256 раз по 256 значений. Это . Я думаю будет достаточно нелегко перебрать их все. Учитывая, подписаться можно на любой совершенно ID (сервер не скажет тебе сколько на этом канале клиентов), и сообщения могут идти не постоянно, а, скажем раз в две минуты, надо будет не только подписаться на канал, но и подождать немного. Если тратить на каждый канал по две минуты, это будет лет на полный перебор. " Чтобы придать всему проекту более традиционный вид, можно разбить ID на два поля - 56 байт логин и 200 байт пароль. Но согласись что это будет по сути то же самое. Каждый канал будет определяться уникальной комбинацией "логин + пароль", то есть теми же 256 байтами. Я решил не усложнять. Для публичного канала можно взять например ID "Evil-Reactor". Для приватного канала - ID "you will never guess this ID". И будет работать вполне хорошо. А еще надо учитывать, что ID не имеет ограничения по допустимым символам. Можно взять любые значения байтов, от 0 до 255. Например так: local id = string.char(1, 0, 0, 0, 0, 0, 200, 200, 200, 13, 14, 64, 89) ID из 13 байт. Причем часть вообще "непечатные".
-
1 баллАвтоматическое определение направления робота с геосканером Прознал я, что мои браться по IT-серверу страдают от того, что вынуждены каждый раз устанавливать робота с геосканером исключительно мордой на восток. Иначе, дескать, он, неразумный, не понимает, в каком направлении находятся прозондированные руды. Использовать же карту для навигации они не хотят, не смотря на уговоры Алекса. И я с ними согласен: ну ее к чОрту! Только слот занимает, а диапазон действия ограниченный. Но направление взгляда она должна указывать даже вне зоны действия карты. Но слот занимает... Что же делать... Нахрена попу баян, если есть колокола? Используй геосканер, брат. Зондируй 4 прилегающих к роботу столба: северный, западный, восточный и южный. Теперь проверяй блок перед мордой неразумного робота, не мне тебя учить, как это делается. И если впереди стоит блок, руби его и еще раз зондируй столбы. А ежели впереди блок отсутствует, то выруби его снизу и поставь вперед. Ведь ты же не на воздух поставил своего робота. И опять сканируй столбы. Что делать дальше, ты уже догадался: находишь различия в сканах блоков на уровне робота, и определяешь его ориентацию. И ежели его ориентация не вписывается в православный канон, ты данной тебе властью программиста и известной всем нам молитвой меняешь ориентацию робота на православную, лицом к восходящему светилу. Радуйся, брат! Ибо есть счастье на IT-сервере.
-
1 баллКак обрести счастье на IT-сервере “Не собирайте себе сокровищ на земле, где моль и ржа истребляют и где воры подкапывают и крадут, но собирайте себе сокровища на небе, где ни моль, ни ржа не истребляют и где воры не подкапываются и не крадут” (Матф.6:19-20). Часть первая. То измена, то засада. В последние два месяца я редко захожу в игру, в основном для проверки и поддержания привата. Даже форум редко просматриваю. Зайдя же в очередной раз на сервер после двухнедельного отсутствия в игре, я обнаружил себя на новом спавне, почти голым, в майке и трениках, без бура, джетпака и наношапочки. И самое печальное, без дома: /home не работал, и мой дом на карте тоже не просматривался. Да что об этом говорить – сама карта была совершенно новой. И я приуныл. И вот, стою я один, как Робинзон на острове, с комплектом железной брони и инструментов в инвентаре, но прямо сейчас я боюсь потерять даже их. Вокруг непроглядная ночь, наполненная голосами местной нечисти. А если очень сильно не повезет, можно даже погибнуть от лазера злодея на спавне. Стоящий на спавне сундочок Края кажется единственной надеждой спасти подаренное богами имущество. Но нет же, сундук не открывается, лишь выдается сообщение "У вас нет разрешение игрока прав администратора на использование предметов". Благо, форум подсказал мне про /enderchest. Я быстренько сложил свой примитивный скарб в виртуальный сундук, и стал неспешно оглядываться на спавне и ждать окончания ночи. И вот тут меня ждала вторая неожиданность – ночь не кончалась, время тянулось медленно, и это не фигура речи, это новая фишка сервера, как выяснилось. И я опять приуныл. Часть вторая. Спасение. Реально помогают лишь две вещи: голоса в ТОПах и программирование, как и заповедовал нам AlexCC, в этом он преуспел. Теоретически могли бы помочь друзья, но я не очень общительный человек, и в тот момент на сервере никого из игроков не было, да и друзья до сих пор сами буквально умирают от голода. На сервере находился только AlexCC, но я не стал тревожить его своим плачем. Даже Яхве не помогал евреям, пока те не вставали на путь исправления. За голоса я приобрел себе ПНВ, чтоб лучше видеть, наноботы, чтобы мягче падать, и несколько джетпаков, чтобы летать и не сильно заботиться об их зарядке, после чего, отбиваясь от зомбей и скелетов, стремительно закопался в гору недалеко от спавна и заприватил участок. Это сберегло мне время и душевное равновесие на старте игры. Потом я все же отклонился от праведной жизни, несколько раз сходив с киркой, а потом и буром в майн за рудами, построил батбокс для зарядки джетпака, а также всяческие дробилки-плавилки-сжималки-выжималки, скрафтил бур, пилу, и даже смог собрать свой первый компьютер, закупив для него лишь глину и кактусы. Сейчас же думаю, что на этом этапе я ошибался. Я не пробовал посчитать, но думаю, что стартовых денег достаточно для покупки ресурсов, необходимых для постройки первого хотя бы простого (или даже сложного) робота, способного к добыче ресурсов. Запрограммировать и отладить его можно в креативе, а можно просто взять одну из замечательных программ с форума computercraft.ru. А дальше лишь остается стоять рядом и, свернув окно майнкрафта, читать умные книжки, статьи и думать над следующими программами. И дом теперь тоже не хочется строить руками. Строительство должно быть автоматизировано. Всё. Всё в мире майнкрафта должно быть полностью и хорошенько томатизировано. Только в этом можно обрести счастье на IT-сервере. Смерти нет. Вайп не конец всему, если только всем для тебя не являлись сундуки, набитые рудой и выстроенный руками дворец. Твои программы и твои знания останутся с тобой и после вайпа, а робота даст администрация, насколько бы кровавой она ни была. Всё остальное должно прийти автоматически. В той горе, где я поселился, мне довелось узнать много всего интересного. Однажды, когда я жарил булыжник в электрической печке, не смотря на тщательно замурованные проходы, зашел ко мне человек в сияющем плаще. Ник его я не запомнил, хотя говорили мы с ним всю долгую ночь. Нет смысла пересказывать весь разговор, но запомнились некоторые его изречения: Блаженны нищие печками, ибо их есть царство IT. Блаженны ошибающиеся, ибо научатся. Блаженны спрашивающие, ибо они наследуют опыт IT. Блаженны алчущие и жаждущие знаний, ибо получат их. Блаженны помогающие, ибо они помощь получат. Блаженны думающие, ибо они программирование осилят. Блаженны программирующие, ибо они будут наречены сынами IT. Блаженны бегущие с серверов без OpenComputers, ибо их есть сервер IT. Блаженны вы, когда будут поносить вас и гнать и всячески неправедно злословить фанаты других серверов. Радуйтесь и веселитесь, ибо велика ваша награда на IT-сервере: так гнали и программистов, бывших прежде вас.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
