eu_tomat
-
Публикации
2 666 -
Зарегистрирован
-
Посещение
-
Победитель дней
331
Сообщения, опубликованные пользователем eu_tomat
-
-
Может, новые версии и работают, надо проверить. Но раньше одного лишь адаптера из OC было недостаточно.Разве? Вроде все работает и без OpenPeripheralIntegration.
-
Идет собрание общества рыболовов-любителей. Выступает председатель:
- Приближается время зимнего лова. Сколько будем брать водки? В позапрошлом году мы брали по одной бутылке на брата - потеряли удочки, в прошлом году брали по две - потеряли автобус. Что предлагаете?
Выходит один рыболов:
- Предлагаю в этом году взять по три, но удочки не брать и из автобуса не выходить.
-
2
-
-
@@Zer0Galaxy,@@LeshaInc, это похоже на неудачные попытки отладить код, и эти недочеты не очень существенны.
Проблема в другом месте.
Но об этом после приведения отступов в порядок, т.к. имеющиеся вызывают у меня головокружение. У автора, возможно, тоже – это объяснило бы странности в коде. А с отступами и ошибки станут виднее. И самому автору тоже.
-
Ты движешься в верном направлении. Осталось поправить отступы. Если лень заниматься отступами самостоятельно, то для этих случаев Добрая Администрация добавила Форматтер Lua-кода:https://pastebin.com/RPf0PFRP вот пастбин

-
1) Кинь код на pastebin или еще куда-нибудь, чтобы у всех, кто хочет помочь тебе, была возможность видеть код полностью. Иначе тяжело разбираться, что у тебя не работает.
2) Приведи отступы в порядок. Тяжело же разбираться с этим:

-
1
-
-
Этот вариант совершенно бесполезен. Нет смысла присваивать полю таблицы сначала nil, а затем требуемое значение. Зато при таком использовании переменной tempload начало таблицы не меняется, а файлы дописываются в ее конец.Всё равно не работает вот сделал очистку таблицы:
function getfiles(dir) for file in filesystem.list(dir) do tempload = tempload + 1 fileindex[tempload] = nil fileindex[tempload] = file end end
Этот вариант интереснее для отладки. Только я не вижу, что как там у тебя обновляется содержимое экрана. none тоже не выводится, и сохраняется старое содержимое директории? Или что там еще происходит?И другой вариант просто превращал все файлы в none:
for k in pairs (fileindex) do fileindex [k] = "none" end -
А функция чтения содержимого директории разве не должна очищать таблицу с именами перед занесением в нее новых?
-
Всё проверялось в настоящем OpenComputers-MC1.7.10-1.6.2.12-universal.jar@@eu_tomat, тестишь в эмуляторе или настоящем ОС?
Почемуто из майнкрафта у меня тоже выдаёт только nil. Либоя я делаю что-то не то, либо в OC HTTP запросы сломаны.
-
1
-
-
Создание еще одной темы не повысит твои шансы на получение ответа. Новая тема будет либо удалена, либо объединена со старой. В первой теме никто не отвечает, потому что твои последние посты не содержат вопроса. Есть лишь утверждения без конкретного кода.Как узнать размер файла на сервере 2 (ибо на первый не отвечают)
response метод возвращает nil и на гитхабе, и на яндексе, и в гугле, везде просто.
код наипростейший - local a = b.request("ya.ru")
local c = a.response(), b - component.internet
длины чанков получаются прекрасно через string.len, а общая длина до загрузки никак
Что должен делать твой «простейший код», вообще не понятно. Получать длину файла из заголовка? Так он этого не делает. А я уже показал, как получить длину файла из заголовка Код рабочий при условии, что сервер сразу же отдаёт Content-Length.
Как я уже говорил, сайт может вообще не отдать длину, как например, для http://google.com/
В случае страницы http://ya.ru мой код не работает потому, что страница по этому адресу не содержит контента, длина его нулевая, зато код ответа указывает на необходимость повторить запрос, но уже для нового адреса https://ya.ru, для которого уже возвращается нормальная длина в заголовке.
Что тебе мешает проанализировать информацию, возвращенную сайтом?

Видно, что код ответа 302, что означает переадресацию на новую страницу. Вытаскивай новый url из Location и повторяй запрос, который в нашем случае будет успешен, но это не обязательно. Возможна следующая переадресация, или страница может быть вообще не найдена. А если найдена, то не обязательно её длина будет сообщена в заголовке.

Не забудь почитать про коды ответов HTTP-сервера
-
Не верю! Если только так:table.sort(scores, function(lhs, rhs) return lhs[2] >= lhs[1] end)
table.sort(scores, function(lhs, rhs) return lhs[2] >= rhs[2] end)
Остальное, вроде, должно работать.-
1
-
-
Небольшое дополнение по автоматизации электростанции:
1) Для оперативного управления выработкой электроэнергии удобны транспозеры с буферным сундуком. Их использование позволит легко отвязать цикл закладки топлива в бойлер от цикла добычи угля.
2) В этом случае для управления роботом не требуется специальный сигнал к сбору угля, роботу достаточно лишь время от времени проверять наличие свободного места в буферном сундуке с углем.
3) Беспроводная связь между роботом и компьютером всё равно желательна на случай потери робота в зарослях фермы после отключения его по TLWY. Компьютер искать не требуется, он всегда на своём месте. Достаточно включить компьютер, а он по беспроводной карте сможет разбудить робота, помочь ему определить своё положение в пространстве и возобновить работу.
-
@@MrAbad, Кстати, на главной есть замечательная панелька с полезными ссылками. Среди них есть и ссылка на мод, а там найдёшь ссылки на описания всех API. -
-
-
Не должен, а имеешь возможность. Можешь вычитать длины чанков из общей длины, пока она не обнулится, а можешь суммировать длины чанков, пока сумма не достигнет общей длины. Как считаешь нужным, так и делай.то есть я должен вычитать длину чанков из общей длины чанков, и как эта длина закончится, то файл скачан, верно?
Любой браузер сколько-то времени ждёт как до начала загрузки страницы, так и до конца. Информация по сети передаётся пакетами. Если содержимое файла не вмещается в один пакет, то оно разбивается на несколько пакетов. Проходя по такой сложной сети, как Интернет, пакеты поступают в браузер с задержкой, причем неравномерной. Пакеты, потерявшиеся в пути, могут высылаться повторно. Теоретически, первый пакет может прийти позже остальных. На стороне клиента пакеты могут требовать упорядочения, дешифровки и декомпрессии, но то, что тебе выдаёт интернет-карта OpenComputers – это уже переработанная, буферизованная и готовая к использованию информация. Просто последовательно читай то, что она выдаёт. Требуется ждать – жди. Твой браузер тоже ждёт, и пакеты он получает тоже неравномерно.и из-за пустых чанков мой браузер может ожидать столько времени до начала скачки что ли?
Как я уже говорил, интернет-карту можно рассматривать как буфер, и ты не можешь точно узнать, какой чанк за какое время скачался, а если бы и знал точно, то неравномерное поступление пакетов из интернет-сети тоже не позволило бы тебе использовать эту формулу напрямую. Браузер не знает реальной скорости интернета, так как для него пакет приходит практически мгновенно. Не было пакета, и вдруг он пришёл! В пакете приходит не один байт, а сразу много, 1500 байт примерно.И вычислять скорость скачивания я должен по тому, какая длина чанка скачалась за определенное время? Т.е. по формуле U = S/T, где U - скорость, S - длина чанка, а T - время?
Переводя в термины OpenComputers: ты читаешь очередной чанк, а он пустой. Читаешь еще один, а он тоже пустой. На очередном тике ты получаешь долгожданный чанк, а потом снова ждешь. Поэтому в реальных браузерах и менеджерах закачки используется усреднение. Например, измеряешь, сколько байт пришло за последнюю секунду. Это позволит стрелке спидометра не скакать от нуля до бесконечности, а выдавать понятные для человека показания. А если скорость не очень нестабильная, и стрелка спидометра продолжает метаться, то можно увеличить интервал времени до нескольких секунд.
-
Можно, но содержимое заголовка формируется сервером, и если он не захочет, то Content-Length не выдаст даже под пытками.По идее, для того, чтобы узнать размер загружаемого файла, надо смотреть значение хидера Content-Length в HTTP запросе. Как это сделать? Думаю, можно воспользоваться методом response():number, string, table на объекте HTTP-запроса. Он как раз должен вернуть таблицу хидеров в конце.
Вот пример кода:
com = require("component") net = com.internet req = net.request("https://ya.ru") print( ({req.response()})[3]['Content-Length'][1] ) repeat s=req.read() if s then print( #s ) end until not sВыдаст общую длину, а потом длины чанков. Сумма длин чанков должна совпасть с длиной в заголовке.Но, например в заголовках ответа на запрос к "http://google.com"Content-Length отсутствует.
И как это мешает?но ведь если скачивать по чанкам, то скачивается пустой текст вида "", и только потом по чанкам весь текст
Данные в сети передаются пакетами разной длины. Можно, конечно, передавать в пакете по одному байту данных, но это крайне затратный способ.
Не знаю, почему принимаются пустые чанки, но они влияют только на количество чанков, а в остальном никак не мешают. Считать количество чанков нет никакого смысла. Для оценки времени до окончания загрузки имеют значение только длины чанков, но...
Мой тоже видит. Но не всегда. Если сервер не захочет, то и браузер будет в неведении до самого конца загрузки.ведь мой браузер как-то видит размер файла до закачки
-
1
-
-
А по байту-то скачивать зачем? Интернет слишком быстрый?Как узнать размер файла на сервере и скачивать его по байту?
-
Сложно быть игроком с админскими возможностями. Всегда тянет к админским полномочиям, но свою пользу и против других игроков.А ты попробуй Garry's mod там модинг настолько продвинулся то что можно уже кодить в игре на lua, только для этого права админа нужны что бы влиять на сервер и на клиенты других игроков)
Да, интересненько для начала. С Майном не сравнится, конечно, но недурно. JavaScript мне подходит, в целом он даже удобнее Lua.Думаю в такой теме кто-нибудь просто обязан упомянуть Screeps.
Русских гайдов по игре маловато, или я плохо искал. Английские тоже годятся, но времени на их понимание уходит раз в 10 больше. Можешь посоветовать какие-нибудь доступные материалы для новичка?
Еще хотелось бы бесплатно поиграть за пределами симуляции, чтобы оценить, стоит ли вообще завязываться на эту игрушку. С моим темпом игры на полное освоение API может уйти не один месяц.
Майн в отличие от screeps практически изучен. При желании развлечься – пролистываю старые записи, выбираю интересную в данный момент задачку, придумываю что-то новое и радуюсь жизни. Коротко и понятно.
P.S.: Надеюсь, форум сохранит эту тему и сообщения с конкретными предложениями. Даже при том, что альтернативы Майну пока не видно, всё-таки есть смысл время от времени поглядывать на горизонты.
-
1) Зависит от контекста фразы "создать файл". Уточни, что ты хочешь сделать. Можно вручную создать файл в редакторе, заполнить данными и сохранить их. А можно автоматически создавать файл из твоей выполняющейся программы.1) Как создать файл в OC?
2) Как работать с EEPROM?
2.2)Как научить его разговаривать с require()
2) Есть хороший гайд А что такое EEPROM и где оно живет?
3) А зачем тебе require в EEPROM? Стандартные библиотеки уже подключены и без require, а нестандартные откуда ты собираешься читать? Если с диска, то тогда проще будет просто загрузить OpenOS с диска и вообще не мучаться с EEPROM. Еще можно весь код, включая библиотеки, хранить в EEPROM, но тогда лучше обойтись без require, т. к. в EEPROM и так слишком тесно.
В каких-то экзотических случаях может быть полезным реализовать в EEPROM свой require, подгружающий библиотеки по сети, но этот вопрос уже далеко не нубский, и относится скорее к трюкам, чем к базовому использованию.
-
Два года общественность ждала этого момента! Но, кажется, момент прошёл почти незамеченным.Спустя 2 года: ничего не изменилось. Куда не тыкал.
Прошло чуть больше недели с момента этого сообщения, а реакции на него до сих пор нет. Видимо, лайкнуть пост недостаточно, чтобы обратить на него внимание. И пока не прошли еще два года, громку крикну:Адаптер пробуйте цеплять к редстоун-порту.
com = require"component" r = com.reactor_redstone_port print( r.getHeat(), r.getMaxHeat() )
-
3
-
-
Надеюсь, состязания роботов Unreal Tournament: Resurrection эволюционируют до подобной стратегии. Скажем, дадут тебе робота шахтёра-строителя на одном конце карты, а твоему оппоненту – на другом. И начнут эти роботы добывать ресурсы, строить базы, крафтить других роботов-шахтеров, -строителей, -воинов. Потом начнут беспощадно ходить друг к другу в гости, уводить заклятых друзей в рабство и, конечно же, «грабить корованы».у меня возникла идея в создании игры в жанре стратегии, RTS, где было бы кастомное управление при помощи программирования.
-
Я не встречал лучшего, чем Майнкрафт, субстрата для изучения программирования или просто для развлечения. Виртуальная реальность делает результаты программирования очень наглядными, а упрощенный кубический мир делает программирование доступным для начинающих. Простота и наглядность – вот преимущества Майна. Кто может с ним конкурировать?
Я, конечно же, ленив, и программ для Майна почти не пишу, предпочитая тратить силы на более насущные для себя задачи. Но когда хочется приятно развлечься в программировании, ничего лучше Майна я не вижу и постоянно возвращаюсь к собственным недоделанным проектам или нахожу какие-то новые приколюхи. То есть, лично для меня Майнкрафт ещё далеко не исчерпан. Еще много чего можно написать и дописать.
-
1
-
-
@@NEO, для начала сгодится, но для большей совместимости с HTML цвет в шестнадцатеричном виде лучше указать не через 0x, а #.
И пробел перед ld лишний.
-
1
-
-
Билдкрафт всегда радовал возможностью дешевой автоматизации, что очень радует на ранних стадиях игры. Но сейчас, когда всё необходимое для OC можно купить за UU, трубы и верстачки выглядят уже не столь соблазнительно.
Также билдкрафт радует возможностью питать компьютеры простыми двигателями до освоения резины. Но, опять же, при наличии UU есть более простой путь к получению как саженцев, так и первой резины.
Гейты, доступные в середине игры, раньше казались мне очень интересными, пока я не узнал о CC и OC. С тех пор я не вижу достойного применения гейтам.
Добыча нефти и её переработка в бензин добавляют разнообразия игре, но месторождения нефти обычно довольно редки и небогаты, поэтому даже в одиночной игре проще получается освоить ядерную энергетику, а редкие месторождения нефти – игнорировать.
Вспоминая о существовании на сервере маньяков, вычищающих прессы из метеоритов сразу после регенерации майнерс-миров, не удивлюсь, если те же маньяки опустошат и все запасы нефти. Думаю, имеет смысл увеличить количество нефтяных месторождений, чтобы всем хватило. Или хотя бы seed менять при каждой регенерации, что полезно и само по себе.
В общем, на робике BuildCraft выглядит не очень полезным модом. Немного фана добавит, скорее всего. Чуть-чуть.


Смена архитектуры на Lua 5.3
в Разные (отсортировать)
Опубликовано:
for k,v in pairs(computer.getArchitectures())do print(k,v)end -- 1 Lua 5.2 -- 2 Lua 5.3 -- n 2 print(computer.getArchitecture()) -- Lua 5.2 print( 1<<1 ) -- stdin:1: unexpected symbol near '<' print(computer.setArchitecture("Lua 5.3")) -- сразу запустилась перезагрузка компа print(computer.getArchitecture()) -- Lua 5.3 print( 1<<1 ) -- 2