Лидеры
Популярный контент
Показан контент с высокой репутацией 07.06.2019 во всех областях
-
4 баллаЯ вот согласен с товарищем @Fingercomp почти по всем пунктам. Что касается "картошечки", то тут мне видится два пути. Либо ты презентуешь свою программу как ультра-мега утилиту, которая изменит жизни - и тогда она должна иметь хоть какое-то место собственно в жизни игроков форума. То есть она должна быть реально применима в как можно большем количестве случаев. То есть - никакого лишнего кода, все максимально удобно и максимально практично. "Картошечка". Либо ты презентуешь свою программу как творческий эксперимент, и проект для фана - и тогда она естественно будет практически никому не нужна. Но ты получаешь полную свободу творчества, костылизма, велосипедирования и построения какого угодно хаоса. "Сандбокс". А тут у нас "сандбокс", который пытается выдать себя за "картошечку", и при этом сыпет перлами вроде "комьюнити, без обид, ныне представляет из себя весьма жалкое зрелище" и "вы боитесь поднять голову выше банального пинг-понга пакетами между платками, а ваши низменные интересы ограничены фермами пшенца и картошечки на дронах и прочей ерунде уровня третьего класса церковно-приходской IT-школы", за то, что пользователи не увидели особенного смысла и пользы в презентованном творении.
-
3 баллаГоворить о ненужности программы, так как ею нельзя копать "картошечку", не ахинея ли великая? Проснись, народ! Майнкрафт не на одной картошке повязан! Не пропустили ли вы "sandbox" у игры в описании? Так можно говорить, что и OC не нужен, и кубики не нужны, и вообще всё не нужно и бессмысленно. А такое уже лечить нужно. Стримы нужны! Но не всякие: Сеть должна иметь нормальную топологию. Работать внутри <=400 блоках модема — ненормально. Потоки лучше тем, что юзеру не нужно мучаться с делением большого контента на пакеты, которые влезают в maxPacketSize. Если такого нет, это ненормально. На получателе последовательность пакетов должна быть такой же, как и на сервере. Если сначала придут 3 байта конца, а потом 8192 байта начала, это ненормально. Получатель должен получить все пакеты, которые отсылает отправитель. Если половина потеряется, а сеть не оповестит даже об этом получателя, это ненормально. Получатель не должен получать дубликаты пакетов. Если сообщение вдруг вырастает в 2 раза по размеру, это ненормально. В сети нужна какая-то защита от дудоса. Если кто-то в пещере делает вайл-тру-ду-сенд, и из-за этого никто другой не может юзать сеть, это ненормально. Наконец, необходимость набирать огромную кучу лишнего кода, есть тоже ненормально. Если для ответа так или иначе надо создать свой стрим, так почему ж не сделать это сразу в либе и отдать аргументом функции-листнеру? Да и одним бы стримом можно было бы справиться, как мне кажется, смысла во втором не вижу. Возможно, что-то из пунктов выше уже реализовано или реализовывается, пока я пишу этот пост. Я, к сожалению, знать об этом не могу, потому что качать какой-то архив с яндекс-диска — это близко к издевательству, а потому я этого и не делал. P. S. Если кто-то обижен тоном этого поста, прошу прощения. Очень понравилось это выступление.
-
2 баллаА зачем? Что дает рукопожатие и сессия? Это оверхед. Удобно ~= сложно. Ну и получаем дикий оверхед в виде создания и уничтожения нового стрима на каждый пакет. И да, ты все равно оперируешь пакетами (data) только через стрим, а не напрямую. Сессия (что ты вообще имеешь в виду под сессией?) по-прежнему не нужна. Пока чудес не наблюдается. Ждем. Тут главное не забывать, что мы все это творим в рамках майнкрафта. Картошечка на дронах - это наше все, и любая библиотека сильно выигрываешь, если она применима для картошечки. Если не применима - она остается уделом 2-х с половиной пользователей, которые пилят что-то глобальное свое. А такие пользователи обычно пишут свои велосипеды. Что касается связи компьютеров - недостатка в программах для этого нет. Есть, например: Zn - динамическая p2p сеть, которая обеспечит связь по цепочке компов, и проста в использовании как обычный modem. Не требует никакой конфигурации вообще. Stem - брокер сообщений на основе интернет плат. Мультиканальная передача сообщений откуда угодно и куда угодно, включая компы из реального мира. Опять таки - элементарен в использовании. Нуль настройки. И это я только свои проги упоминаю. Их так-то полно. Делали, и не один раз. OpenNet, например. Был и браузер и сайты. Но в рамках сервера Minecraft это затея "на поглазеть один раз". Особого практического применения нет. Ну вот тут я конечно же полностью согласен и поддерживаю. Как творческий эксперимент - программа офигенна. И объем работы проделан неплохой. Короче жду продолжения.
-
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 баллХорошо, уговорил, будет тебе русскоязычная документация, но ко второй версии, и вики на GitHub мне в этом поможет Может, еще какие предложения есть?
-
1 баллПросто автор овладел постиронией, а комьютини – нет.
-
1 баллВот именно - вы боитесь поднять голову выше банального пинг-понга пакетами между платками, а ваши низменные интересы ограничены фермами пшенца и картошечки на дронах и прочей ерунде уровня третьего класса церковно-приходской IT-школы. Когда на AtomicWars (дай бог ему здоровья и стабильной работы) вы задумаетесь над чем-то более глобальным, чем пароли на двери и бурение шахт друг-другу... на участках, вы так или иначе столкнетесь с необходимостью соединить ваши компьютеры, дронов и роботов в сеть. И именно тогда вы вспомните старину Атомика, который, словно Прометей, принес вам то, что изменит вашу жизнь навсегда. Запомните этот твит
-
1 баллТак, стало чуть понятнее. Это прогресс. Самый удобный способ, между прочим. Использование Git поднимет уровень разработки на одну ступеньку. А использование GitHub позволит разглядывать код онлайн, качать нужные части напрямую в OC (если надо) и не возиться с распаковкой архивов. После прочтения описания возникла еще пара вопросов. Этот стек решает проблему связи на больших расстояниях? То есть, строит ли он какую-то топологию сети, или работает чисто в пределах работы дефолтных сетевых карт? Выдавать IP адреса предполагается вручную? Не будет системы типа DHCP? Что будет если два узла в сети будут иметь одинаковый IP? Учитывая что закоментировано оно на английском языке, всё таки составит. Далеко не все владеют английским на нужном уровне. Выкладывая код на русскоязычный форум (особенно если это не форум профессиональных разработчиков, которые привыкли работать с английским), хорошо иметь русскоязычную документацию. До кода пока не добрался, так что будут еще вопросы.
-
1 баллДоброго времени суток. Еще достаточно давно я написал эту программу. Эта программа позволяет вам печатать 3D модели, которые были сгенерированы в кода из MagicVoxel и конвертером. Пользоваться программой достаточно просто: Для начала вам необходимо создать модель в MagicVoxel. Далее сохранить ее в формате .vox. Передать ссылку на данный файл в специальном конвертере. Получить текст модели, который нужно перенести в файл на компьютере из OpenComputers. Далее достаточно запустить мою программу и передать в нее ссылку на файл и ждать, пока она сама вам все распечатает. Ссылка на скачивание программы: http://pastebin.com/NuEi4gL8 Для тех кто ленивый: pastebin get NuEi4gL8 3dprint.lua Вот список аргументов, которые нужно передавать в программу. 3dprint name [time [count [number]]] name: путь к файлу с моделью. time: промежуток времени после которого начнется печататься следующий блок модели (нужно для того, что бы успеть достать предыдущую модель). По умолчанию - 2 секунды. count: количество копий модели которые нужно напечатать. По умолчанию - 1 копия. number: номер блока модели который нужно напечатать. Например если модель состоит из 3 блоков и вам нужно распечатать лишь второй, то тут нужно указать цифру, которой принадлежит этот блок. Это нужно, чтобы не печатать всю модель снова, ради одного блока. По умолчанию - печатает всю модель. Тут представлен вывод программы при печати: Прошу простить, что нет изображений. Создал пост буквально на коленках, для того чтобы поделиться своей наработкой. Как только будет побольше времени - дополню большим количеством скриншотов. P.S. Над осью все еще ведется работа. Олимпиады, диплом, работа и учеба не дают мне времени совсем. Эту программу, как я и написал ранее я создал еще очень давно. P.S.S. Буду рад, если кто-нибудь доработает оформление. Там есть несколько кривых \n, много лишних оповещений о текущей работе (лучше сделать вывод отдельно при включении debug режима), переконструировать аргументы в нормальный вид (Например: 3dprint -asd -s -c=10), добавить нормализацию модели, если в одной из блоков модели отсутствует хотя бы один shape, то игнорировать это. На данный момент там пишет ошибку.
Эта таблица лидеров рассчитана в Москва/GMT+03:00
