Перейти к публикации
Форум - ComputerCraft

Totoro

Модераторы
  • Публикации

    1 638
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    193

Все публикации пользователя Totoro

  1. Totoro

    Отслеживание предметов

    А как часто у тебя происходит изменение количества предметов?
  2. Я уже давно понял одну простую истину. Главное - вообще сделать.
  3. Помните мост Рида? Ну так вот. Я тут изучаю 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 Чтобы получить полностью свой отдельный и независимый сервер STEM, достаточно будет просто запустить бинарник, получившийся после компиляции. Не забудьте также положить в папку с бинарником папки static и templates. Они нужны для веб-интерфейса. Сервер мультипоточный, и очень производительный. Должен тянуть довольно большие объемы трафика. Но точных бенчмарков я не проводил. Если есть желающие - пишите в IRC, скооперируемся и померяем. Веб-интерфейс Если перейти по ссылке на сервер STEM то вы увидите... какую-то хрень. Веб интерфейс еще не доделан, и пока просто показывает счетчик активных каналов и сессий в стиле Web 1.0. Доделать его и дополнить фишками - задача на будущее. Ну вот и все Мост в принципе уже полностью работоспособен. Что я хочу добавить в будущем: Клиент для Java / Rust (чтобы можно было подключаться к компу с телефонов на Android и с десктопов / серверов). Веб-интерфейс. Все идеи, пожелания, отчеты о багах пишите сюда, либо на issue трекер в репозитории. Enjoy!
  4. С технической точки зрения - в этой схеме много лишнего. Достаточно было бы интернет платы в компе пользователя и в компе сервера. Роутер можно выкинуть. Но с точки зрения фана - почему нет. Делай.
  5. Ну да, браузер и интранет это немного другое. Для того чтобы сделать внутриигровой интернет - надо наладить какую-то сетевую структуру на модемах. Основная цель такого интернета - это возможность передать данные с любого компьютера в сети на любой другой. Или хотябы между избранными "серверами" и их клиентами. Тут можно почитать про небезызвестный OpenNet и глянуть на децентрализованный лайтовый вариант - Zn. Браузер уже надо писать когда готова основная сеть. Когда компьютеры научатся передавать друг другу информацию, можно придумать специальный формат данных, который будет описывать интернет странички. Как HTML. Полная поддержка HTML в OpenComputers смысла не имеет, да и будет очень сложна в реализации. Имеет смысл свой, упрощенный формат, на подобии BB кодов. Пример можно посмотреть тут. Это информационная доска, которую мы делали для какого-то из серверов. Она умеет отрисовывать простейшее форматирование текста + гиперссылки. Почти то что нужно. Кроме того, для OpenNet (или CraftNet) был и более полноценный браузер. Мне его вроде показывал @Zer0Galaxy Не знаю, сохранились ли исходные коды. P.S. В принципе, для создания сети можно использовать и Stem. Например, организовывать сервера в сети в виде stem-каналов. Но в отличии от, например, OpenNet, который работал чисто на сетевых картах / модемах, каждый компьютер в такой сети должен будет обязательно иметь интернет-карту. Если это не проблема - то я только за.
  6. Бродят последнее время слухи, что мол Minecraft уже не торт, а форум совсем закис. Новички пошли особенно тупые, а старожилы - ленивые. Программы никто не пишет, OpenComputers никому не интерестен. И вообще, летом приедут четыре всадника Апокалипсиса и будет хаос, анархия, вайп всех серверов и форматирование сервера с форумом. На этом жизнерадостном фоне, предлагаю такую идею. А что если нам запустить небольшой дочерний проект? Что-нибудь на около-компьютерную и программерскую тему. Возможно что-нибудь игровое. Но не обязательно. Что-то для коллективного весёлого времяпровождения. Какой-нибудь долгоиграющий эвент, сервер какой-то игры, ММО для программистов... Короче, что вы думаете на этот предмет и какие интересные идеи приходят вам в голову?
  7. Totoro

    Новые горизонты

    Да вы что, Нео не такой. Он твинков в жизни не создавал. Он даже слова такого не знает.
  8. Что именно ты имеешь в виду?
  9. Totoro

    Новые горизонты

    На основе наблюдений.
  10. Totoro

    Новые горизонты

    Игровые сервера не нужны. По сути, те кто играет на наших серверах, и те кто пишет программы и общается на форуме - это два множества с очень маленькой областью пересечения.
  11. Все, подняли. Должно работать. Клиент на Java я на днях набросаю.
  12. Totoro

    Новые горизонты

    Интересный взгляд на мировую историю
  13. Отлично. Только в ближайшие два дня он может быть не доступен - технические работы на сервере. Не пугайтесь.
  14. Totoro

    Новые горизонты

    Но это все решается если есть желание. 1) Желание что-то делать - как бы и так есть, по определению. 2) Умение - приобретается путем изучения соответствующих материалов и практики. 3) Время - почти у всех есть свободное время. Хотябы немного. Или время потраченное на другую ерунду.
  15. Скандалы, интриги, расследования
  16. Как насчет повыкладывать скрины всяких неведомых хреней, которые возможно никогда не были достроены, но все равно прикольные? Дата центры, игровые клубы, OpenNet, монстро-проги и чудо-машины, с сервера или из сингла - несите все. Вспомним былые времена. Для затравки - змейка на голографическом проекторе, которую я делал в далеком 2014 году и никогда не доделал.
  17. Написано же там - "вики устарела". И ссылка даже есть на актуальную версию. Конкретно нужная статья: https://ocdoc.cil.li/api:component Более того, есть русский перевод (возможно немного устаревший, но тем не менее): https://minecraft-ru.gamepedia.com/OpenComputers/Component_API
  18. Можешь. Для этого не нужна настоящая многопоточность. Почитай про корутины в Луа, а также глянь на библиотечку threads из OpenOS.
  19. Totoro

    HackerRank

    Фингер тут неожиданно решил сдуть пыль со своего старого аккаунта и порешать задачки на HackerRank. А кто-нибудь еще им пользуется в настоящее время?
  20. Totoro

    HackerRank

    https://www.hackerrank.com Задачки для хакеров, кто не боится трудностей В наличии широкий выбор языков. От C++ до Lua, от Python до Scala. А вы боитесь трудностей? Уже в игре: @Fingercomp https://www.hackerrank.com/fingercomp @Totoro https://www.hackerrank.com/moonlightowl @danshat https://www.hackerrank.com/danshat @LeshaInc https://www.hackerrank.com/LeshaInc @folder https://www.hackerrank.com/folder Тематическая дискуссия - в IRC. Или пишите сюда.
  21. В случае ComputerCraft причины примерно те же. Можно тоже попробовать поиграть с os.sleep() с разной продолжительностью (ноль уже не поможет). Можно попробовать использовать хак типа такого: os.queueEvent("fakeEvent"); os.pullEvent(); Тоже внутри цикла. Про ComputerCraft я знаю меньше, руководствуюсь гуглом, так что тут надо экспериментировать.
  22. Программы на OpenComputers должны иногда переключаться на всякие свои внутренние задачи. Но пока твоя программа единовластно занимает поток выполнения - это невозможно. Отсюда ошибка "Too long without yielding" - то есть "Слишком долго без передачи управления". Чтобы позволить системе компьютера заниматься своими делами, необходимо добавить либо event.pull, либо os.sleep. Причем достаточно слипа на 0 секунд: os.sleep(0); Добавь это в любое место цикла - и проблема решится.
  23. Totoro

    Новые горизонты

    Но реклама же.... Okay...
  24. Ну просто это актуально только если ты уже знаешь Делфи, и тебе нужно найти работу. А начинать изучение программирования с Делфи - мне кажется - не самая лучшая идея. Это как запрыгнуть в списанный тепловоз стоящий на запасных путях. Там может быть комфортно, но далеко ты уже не уедешь. Руби - такой же уходящий язык как и Делфи. Луа - это очень нишевый скриптовый язык, который не все любят, почему-то. Scala - тоже язык который занял очень маленькую нишу - в основном интерпрайз / биг дата. В этой области 90% занято Java, и Scala удержалась за счет того, что под нее, на пике популярности, было создано несколько очень крутых фреймворков. ну а Rust - это новый язык, который только набирает темпы. У него довольно много конкуренции - тот же Go, поддерживаемый со спины корпорацией Google. Rust пользуется популярностью у программистов, и я думаю будет постепенно подниматься в рейтинге. (В этом году он занял Тор-1 позицию как "самый любимый язык" в опросе StackOverflow.) Delphi - это язык который держится в топе за счет большого объема кода, который был на нем написан в годы его расцвета. Но как несложно заметить, позиции он постепенно теряет. Основной плюс Делфи, который обычно называют - очень быстрая и удобная разработка десктопных приложений - стал относительно неактуален в последние годы, а больше нигде особенно Делфи не применим, так как есть конкуренты, которые делают это лучше и быстрее. В том же опросе от StackOverflow он попал в топ языков, которых программисты "боятся". Наряду с Visual Basic, Assembler, Perl, Cobol (и, почему-то, C и Lua =)). Какого черта в топе делает Visual Basic.NET - я вот не понимаю. Наверное черное шаманство Microsoft играет какую-то роль в этом загадочном факте.
×